====== TrueConf ====== Системные требования: https://trueconf.ru/support/system-requirements.html Ключ привязан к: * Доменному имени * Hard disk size * Serial number (SMART) * MAC address of the network card (MAC) * Physical memory (MEM) size Документация: https://docs.trueconf.com/server/en/\\ База знаний: https://trueconf.com/blog/knowledge-base ===== Установка ===== ==== Linux ==== https://trueconf.ru/downloads/linux.html#linux-distr\\ https://trueconf.ru/blog/baza-znaniy/kak-za-15-minut-razvernut-sistemu-videokonferenczij-na-baze-os-linux.html === Debian 11 === apt install curl gnupg2 -y echo "deb http://deb.trueconf.com/debian bullseye non-free" > /etc/apt/sources.list.d/trueconf.list curl http://deb.trueconf.com/client/packages.trueconf.key | apt-key add - apt update && apt install trueconf-server -y ++++ Docker (неактуально) | ==== Docker ==== https://trueconf.ru/blog/baza-znaniy/kak-zapustit-trueconf-server-v-docker-kontejnere.html\\ https://hub.docker.com/r/trueconf/trueconf-server Примерный docker-compose.yaml version: '3.7' services: trueconf: image: trueconf/trueconf-server:stable container_name: trueconf restart: unless-stopped environment: ADMIN_USER: admin ADMIN_PASSWORD: password ServerID: XXXXXX Serial: XXXX-XXXX-XXXX ServerName: trueconf.domain.ru ports: - 80:80 - 443:443 - 4307:4307 - 53000-55000:53000-55000/udp volumes: - /home/$USER/trueconf/server:/opt/trueconf/server/var/lib - /home/$USER/trueconf/ssl:/ssl При запуске ошибка: ERROR: for trueconf UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=70) ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information. If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60). Решение: в каталоге с ''docker-compose.yml'' создать файл ''.env''. Содержимое: #.env COMPOSE_HTTP_TIMEOUT=200 ++++ ===== Настройка ===== ==== Реверс-прокси ==== Из переписки с техподдержкой: Могу привести рабочий пример настройки Nginx: (в инструкции использован TCS в докер так как ранее клиентам предоставлял данную инструкцию конкретно для контейнера) В случаи если Nginx и TCS сервер находятся на разных машинах менять стандартные порты 443 и 80 на кастомные нет смысла. 1) Докер контейнер sudo docker run -d -p 8888:80 -p 4443:443 -p 4307:4307 -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=12345 -v /home/$USER/trueconf/server:/opt/trueconf/server/var/lib trueconf/trueconf-server:stable 2) Прослушиваемые порты на хостовой машине с докер контейнером TCS netstat -nltp tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 6701/docker-proxy tcp 0 0 0.0.0.0:4443 0.0.0.0:* LISTEN 6722/docker-proxy 3) Порты настроенные в веб панели TCS, 80 и 443 (сертификат SSL в NGINX и в TCS используется одинаковый *.tcsupport.loc ) 4) Конфиг Nginx server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/cert/server.crt; ssl_certificate_key /etc/cert/server.key; root /var/www/html; index index.html index.htm; server_name docker.tcsupport.loc; location / { proxy_pass https://127.0.0.1:4443; proxy_ssl_verify off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location /websocket/ { proxy_pass http://127.0.0.1:4307/websocket/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } } TCP соединение поднимается на 443 порт (то есть на Nginx). WebRTC работает, Rest запросы тоже. ==== Нет соединения с сервером (через реверс-прокси) ==== Вопрос: при попытке подключиться к конференции браузером, выдаётся ошибка «Нет соединения с сервером». Почему?\\ {{:service:pasted:20220325-100058.png}} Ответ техподдержки: Скорее всего, не ходят веб-сокеты. ++++ Соберите дамп из консоли браузера: | {{:service:pasted:20220325-100132.png}} {{:service:pasted:20220325-100146.png}} ++++ Пришлите полученный .har файл. ===== SSL-сертификат ===== Пути # сам сертификат /opt/trueconf/server/etc/webmanager/ssl/server.cer # ключ /opt/trueconf/server/etc/webmanager/ssl/server.key Если сертификат выбран уже свой через веб-конфигуратор, то сертификат будет называться ''custom.crt'', а ключ ''custom.key''. Конфиги: ''/opt/trueconf/server/etc/webmanager/opt'' Listen 80 Define ssl_port 443 SSLEngine On SSLCertificateFile "/opt/trueconf/server/etc/webmanager/ssl/server.crt" SSLCertificateKeyFile "/opt/trueconf/server/etc/webmanager/ssl/server.key" SSLProtocol +TLSv1.2 +TLSv1.3 SSLCipherSuite "${ssl_cipher_suite}" SSLHonorCipherOrder on SSLCompression off SSLSessionTickets off ==== Выпуск SSL-сертификата ==== ++++ Выпуск делается один раз, больше не надо | # Остановить веб-сервис, чтобы не занимал 80-й порт systemctl stop trueconf-web # Выпустить сертификат certbot certonly --standalone --keep --agree-tos --expand -m ssl@example.com -d tconf.example.com # Saving debug log to /var/log/letsencrypt/letsencrypt.log # Plugins selected: Authenticator standalone, Installer None # Requesting a certificate for tconf.example.com # Performing the following challenges: # http-01 challenge for tconf.example.com # Waiting for verification... # Cleaning up challenges # IMPORTANT NOTES: # - Congratulations! Your certificate and chain have been saved at: # /etc/letsencrypt/live/tconf.example.com/fullchain.pem # Your key file has been saved at: # /etc/letsencrypt/live/tconf.example.com/privkey.pem # Your certificate will expire on 2023-03-20. To obtain a new or # tweaked version of this certificate in the future, simply run # certbot again. To non-interactively renew *all* of your # certificates, run "certbot renew" # Скопировать сертификаты и дать права Труконфу cp /etc/letsencrypt/live/tconf.example.com/cert.pem /opt/trueconf/server/etc/webmanager/ssl/custom.crt cp /etc/letsencrypt/live/tconf.example.com/privkey.pem /opt/trueconf/server/etc/webmanager/ssl/custom.key chown trueconf:trueconf /opt/trueconf/server/etc/webmanager/ssl/custom.* # Запустить веб-сервис systemctl start trueconf-web [[https://trueconf.ru/blog/baza-znaniy/sozdanie-sertifikata-lets-encrypt-na-linux.html|Создание сертификата «Let’s Encrypt» на Linux]] ++++ ==== Обновление SSL-сертификата ==== Настройка автообновления в systemd.timer [Unit] Description=Run certbot weekly [Timer] # В 8:30 по понедельникам OnCalendar=Mon *-*-* 08:30:00 #RandomizedDelaySec=43200 Persistent=true [Install] WantedBy=timers.target [Unit] Description=Certbot Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html Documentation=https://certbot.eff.org/docs [Service] Type=oneshot ExecStart=/usr/bin/certbot -q renew \ --pre-hook 'systemctl stop trueconf-web' \ --deploy-hook 'cp /etc/letsencrypt/live/tconf.example.com/cert.pem /opt/trueconf/server/etc/webmanager/ssl/custom.crt && cp /etc/letsencrypt/live/tconf.example.com/privkey.pem /opt/trueconf/server/etc/webmanager/ssl/custom.key && chown trueconf:trueconf /opt/trueconf/server/etc/webmanager/ssl/custom.*' \ --post-hook 'systemctl start trueconf-web' PrivateTmp=true [[https://habr.com/ru/post/535930/|Systemd для продолжающих. Part 1 — Запуск юнитов по временным событиям]]\\ https://eff-certbot.readthedocs.io/en/stable/using.html#certbot-command-line-options