TKControl Server на одном хосте¶
Установка на Debian 10.
Перед началом установки обновите список пакетов и установите необходимые библиотеки:
sudo apt update -y
sudo apt install -y git gnupg2 make gcc python3-pip libsasl2-dev python-dev libldap2-dev libssl-dev
Установка¶
Mongo DB¶
Импортируйте публичный gpg ключ mongodb:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
Добавьте mongodb в список репозиториев:
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Обновите список пакетов и установите mongodb:
sudo apt update -y sudo apt install -y mongodb-org
Добавьте mongodb в автозапуск и включите службу:
sudo systemctl enable mongod sudo systemctl start mongod
Rabbit MQ¶
Установите Rabbit MQ Server:
sudo apt install -y rabbitmq-server
Добавьте rabbitmq в автозапуск и включите службу:
sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server
SaltStack¶
Установите Salt Master и Salt Api:
sudo apt install -y salt-master salt-api
Добавьте salt-master и salt-api в автозапуск и включите службы:
sudo systemctl enable salt-master salt-api sudo systemctl start salt-master salt-api
Websockify¶
Установите websockify:
sudo apt install -y websockify
VNC Repeater¶
Склонируйте репозиторий uvncrepeater-ac:
git clone https://github.com/tenchman/uvncrepeater-ac
Запустите сборку приложения:
sudo make -C uvncrepeater-ac install
Добавьте пользователя для uvncrepeater:
sudo useradd -s /sbin/nologin uvncrep
Nginx JWT Module¶
Установка из исходных файлов¶
Установите версии модулей в переменные окружения:
export NGINX_VERSION=1.14.2 && \ export JANSSON_VERSION=2.10 && \ export LIBJWT_VERSION=1.9.0
Установите необходимые библиотеки для сборки исходных файлов:
sudo apt install -y build-essential sudo apt install -y wget unzip git cmake check autoconf libtool openssl libssl-dev libpcre3 libpcre3-dev zlib1g zlib1g-dev libxml2 libxml2-dev libxslt-dev libgd-dev google-perftools libgoogle-perftools-dev libperl-dev
Установите nginx:
sudo apt install -y nginx=$NGINX_VERSION-2+deb10u4
Остановите и отключите nginx:
sudo systemctl stop nginx sudo systemctl disable nginx
Установите библиоткеу для работы с JSON:
wget https://github.com/akheron/jansson/archive/v$JANSSON_VERSION.zip && \ unzip v$JANSSON_VERSION.zip && \ rm v$JANSSON_VERSION.zip && \ cd jansson-$JANSSON_VERSION && \ cmake . -DJANSSON_BUILD_SHARED_LIBS=1 -DJANSSON_BUILD_DOCS=OFF && \ make && \ make check && \ sudo make install && \ cd ..
Установите библиотеку для работы с JWT токенами:
wget https://github.com/benmcollins/libjwt/archive/v$LIBJWT_VERSION.zip && \ unzip v$LIBJWT_VERSION.zip && \ rm v$LIBJWT_VERSION.zip && \ cd libjwt-$LIBJWT_VERSION && \ autoreconf -i && \ ./configure && \ make all && \ sudo make install && \ cd ..
Загрузите nginx модуль для работы с JWT токенами:
git clone https://github.com/TeslaGov/ngx-http-auth-jwt-module
Соберите nginx с необходимыми модулями:
wget http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz && \ tar -xzf nginx-$NGINX_VERSION.tar.gz && \ rm nginx-$NGINX_VERSION.tar.gz && \ cd nginx-$NGINX_VERSION # Конфигурируем nginx модули ./configure --add-dynamic-module=../ngx-http-auth-jwt-module \ --prefix=/usr/share/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=www-data \ --group=www-data \ --build=Ubuntu \ --http-client-body-temp-path=/var/lib/nginx/body \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --http-scgi-temp-path=/var/lib/nginx/scgi \ --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ --with-pcre \ --with-pcre-jit \ --with-compat \ --with-file-aio \ --with-threads \ --with-http_addition_module \ --with-http_auth_request_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_image_filter_module=dynamic \ --with-http_mp4_module \ --with-http_random_index_module \ --with-http_realip_module \ --with-http_slice_module \ --with-http_ssl_module \ --with-http_sub_module \ --with-http_stub_status_module \ --with-http_xslt_module=dynamic \ --with-http_v2_module \ --with-http_secure_link_module \ --with-mail=dynamic \ --with-mail_ssl_module \ --with-stream=dynamic \ --with-stream_realip_module \ --with-stream_ssl_module \ --with-stream_ssl_preread_module \ --with-debug \ --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-mcUg8N/nginx-$NGINX_VERSION=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2'\ --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' # Билдим nginx make && \ sudo make install && \ cd .. # Выполняем unlink конфигурации старых модулей sudo unlink /etc/nginx/modules-enabled/50-mod-http-auth-pam.conf && \ sudo unlink /etc/nginx/modules-enabled/50-mod-http-dav-ext.conf && \ sudo unlink /etc/nginx/modules-enabled/50-mod-http-echo.conf && \ sudo unlink /etc/nginx/modules-enabled/50-mod-http-geoip.conf && \ sudo unlink /etc/nginx/modules-enabled/50-mod-http-subs-filter.conf && \ sudo unlink /etc/nginx/modules-enabled/50-mod-http-upstream-fair.conf # Добавляем конфигурацию для jwt модуля echo "load_module modules/ngx_http_auth_jwt_module.so;" | sudo tee /etc/nginx/modules-enabled/http-auth-jwt.conf
Обновите динамические библиотеки:
sudo /sbin/ldconfig
TKControl¶
Установите пакеты tkcontrol модулей:
sudo pip3 install --prefix /usr/local \ --index-url http://pypi.accentos.ru/ \ --trusted-host pypi.accentos.ru \ tkcontrol-auth \ tkcontrol-backend \ tkcontrol-dbadapter \ tkcontrol-modules \ tkcontrol-configure \ tkcontrol-services
Добавьте ссылку на gunicorn:
sudo ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn
Настройка¶
Для системы будут использоваться следующие порты:
Модуль | Порты |
---|---|
proxy | 80 |
salt-master | 4505 4506 |
vnc-repeater | 5500 5900 |
rabbitmq | 5672 |
backend, frontend | 8001 |
auth | 8002 |
db_adapter | 8003 |
salt-api | 8004 |
novnc-proxy | 8081 |
mongodb | 27017 |
Добавьте hostnames в
/etc/hosts
:127.0.0.1 localhost db dbadapter backend auth mq saltstack vnc-repeater novnc-proxy
Запустите команды для конфигурации сервисов:
sudo tkcontrol-auth configure --with-systemd && \ sudo tkcontrol-backend configure --with-systemd && \ sudo tkcontrol-dbadapter configure --with-systemd && \ sudo tkcontrol-services configure --with-systemd && \ sudo tkcontrol-configure websockify --with-systemd && \ sudo tkcontrol-configure vnc-repeater --with-systemd && \ sudo tkcontrol-configure salt-master --with-patch && \ sudo tkcontrol-configure proxy && \ sudo tkcontrol-configure ipresolver
Запуск¶
Перезапустите службы salt-master и salt-api:
sudo systemctl restart salt-master sudo systemctl restart salt-api
Запустите vnc-repeater:
sudo systemctl enable tkcontrol-vnc-repeater sudo systemctl start tkcontrol-vnc-repeater
Запустите novnc-proxy:
sudo systemctl enable tkcontrol-websockify sudo systemctl start tkcontrol-websockify
Запустите tkcontrol-auth:
sudo systemctl enable tkcontrol-auth sudo systemctl start tkcontrol-auth
Запустите tkcontrol-dbadapter:
sudo systemctl enable tkcontrol-dbadapter sudo systemctl start tkcontrol-dbadapter
Запустите tkcontrol-backend:
sudo systemctl enable tkcontrol-backend sudo systemctl start tkcontrol-backend
Запустите tkcontrol-services:
sudo systemctl enable tkcontrol-services sudo systemctl start tkcontrol-services
Запустите nginx-proxy:
sudo systemctl enable nginx sudo systemctl start nginx