====== 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