Docker + Caddy
Caddy проще, чем Nginx, потому что он может автоматически запрашивать сертификаты.
Вам необходимо сначала запустить контейнер проекта, а затем установить и настроить Caddy, иначе запрос сертификата может завершиться неудачей.
1. Копирование базовой конфигурации
Ниже приведена базовая конфигурация для VoceSpace. Вам необходимо скопировать эту конфигурацию перед запуском контейнера и указать её при запуске.
Настройки по умолчанию: "key": "devkey", "secret": "secret" работают нормально. Однако, если вы хотите повысить безопасность и стабильность, вы можете сгенерировать пару ключ/секрет на размещенном сервере LiveKit.
(Необязательно) Как получить key и secret?
1{
2 "livekit": {
3 "key": "devkey",
4 "secret": "secret",
5 "url": "wss://your.server.name" // modify ⚠️
6 },
7 "codec": "vp9",
8 "resolution": "1080p",
9 "maxBitrate": 3000000,
10 "maxFramerate": 30,
11 "priority": "medium",
12 "redis": {
13 "enabled": true,
14 "host": "your.ip", // modify ⚠️
15 "port": 6379,
16 "password": "vocespace",
17 "db": 0
18 },
19 "serverUrl": "your.server.name", // modify ⚠️
20 "hostToken": "vocespace",
21 "license": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImhhbkBwcml2b2NlLmNvbSIsImV4cGlyZXNfYXQiOjQ4OTEzMzQ0MDAsImNyZWF0ZWRfYXQiOjE3MzU2NjA4MDAsImRvbWFpbnMiOiIqIiwibGltaXQiOiJmcmVlIiwiaWQiOiI2NGUyMjYwZS0xMzQwLTQxNjQtOWNmZC0zMGUwMjhlYTg0ZWQifQ.T0vIHUCxv9j75lb92RDDaegpPO9W9hxWEXqZVidwL0E"
22}
WARNING
your.ip: IP-адрес хост-машины пользователя, который можно просмотреть с помощью команды ifconfig | grep inet.
1inet 127.0.0.1 netmask 0xff000000
2inet 192.168.31.138 netmask 0xffffff00 broadcast 192.168.31.255
В этом примере 192.168.31.138 — это IP-адрес вашей хост-машины.
your.server.name: Доменное имя, используемое для развертывания
2. Развертывание приложения с помощью Docker
Получение образа VoceSpace
VoceSpace содержит два типа образов:
- amd:
privoce/vocespace:latest
- arm:
privoce/vocespace:latest_arm
Поэтому для выбора вам необходимо знать текущую архитектуру вашего сервера. См.: справка - просмотр архитектуры вашего Linux
1# amd
2docker pull privoce/vocespace:latest
3# arm
4docker pull privoce/vocespace:latest_arm
Запуск контейнера
Вам необходимо сначала запустить контейнер проекта, а затем установить и настроить Caddy, иначе запрос сертификата может завершиться неудачей.
1docker run -d \
2 -p 3000:3000 \
3 -v ${PWD}/vocespace.conf.json:/app/vocespace.conf.json \
4 --name vocespace \
5 privoce/vocespace:latest
NOTE
-p 3000:3000:Сопоставьте порт 3000 контейнера с портом 3000 хост-машины.
-v ${PWD}/vocespace.conf.json:/app/vocespace.conf.json: Монтирование конфигурации
--name:Присвоение имени контейнеру упрощает последующее управление.
3. Установка и настройка Caddy
INFO
Ниже приведен метод установки для Ubuntu/Debian
Для других типов обратитесь к: Caddy install
3.1 Установка Caddy
1sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
2curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
3curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
4sudo apt update
5sudo apt install caddy
3.2 Настройка Caddy
Caddy поддерживает несколько способов настройки, а также напрямую поддерживает использование конфигурационных файлов в стиле nginx.
WARNING
Пожалуйста, убедитесь, что вы приобрели доменное имя и выполнили DNS-разрешение
1vim /etc/caddy/Caddyfile
1your.server.name { # modify ⚠️
2 # webrtc
3 handle /rtc* {
4 reverse_proxy localhost:7880 {
5 header_up Host {host}
6 header_up Upgrade {http.request.header.Upgrade}
7 header_up Connection {http.request.header.Connection}
8 header_up X-Real-IP {remote_host}
9 header_up X-Forwarded-For {remote_host}
10 header_up X-Forwarded-Proto {scheme}
11 }
12 }
13
14 handle /socket.io/* {
15 reverse_proxy localhost:3000 {
16 header_up Host {host}
17 header_up Upgrade {http.request.header.Upgrade}
18 header_up Connection {http.request.header.Connection}
19 header_up X-Real-IP {remote_host}
20 header_up X-Forwarded-For {remote_host}
21 header_up X-Forwarded-Proto {scheme}
22 }
23 }
24
25 # main app https
26 handle {
27 reverse_proxy localhost:3000 {
28 header_up Host {host}
29 header_up Upgrade {http.request.header.Upgrade}
30 header_up Connection {http.request.header.Connection}
31 header_up X-Real-IP {remote_host}
32 header_up X-Forwarded-For {remote_host}
33 header_up X-Forwarded-Proto {scheme}
34 }
35 }
36
37 # log optional
38 #log {
39 # output file /var/log/caddy/your.server.name.log
40 # level DEBUG
41 #}
42}
4. Запуск livekit-server
Аналогично локальному развертыванию, для поддержки WebRTC также необходимо запустить livekit-server. Вы можете загрузить и запустить livekit, как при локальном развертывании, или использовать Docker для развертывания
Загрузка livekit-server
1curl -sSL https://get.livekit.io | bash
После загрузки сервер обычно будет расположен в /usr/local/bin/livekit-server
Создание конфигурации
Мы предоставляем минимальный шаблон конфигурации, который поможет вам быстро развернуть систему. Сначала создайте файл конфигурации vim /etc/livekit.yml
1port: 7880
2bind_addresses:
3 - "0.0.0.0"
4rtc:
5 tcp_port: 7881
6 port_range_start: 50000
7 port_range_end: 60000
8 use_external_ip: true
9 enable_loopback_candidate: false
10# optional
11turn:
12 enabled: false
13 domain: turn.vocespace.xyz
14 tls_port: 5349
15 udp_port: 3478
16 external_tls: true
17keys:
18 devkey: secret
Запуск в фоновом режиме с помощью nohup
С помощью команды nohup вы можете запустить livekit-server в фоновом режиме и выводить логи в файл /usr/local/bin/logs/livekit_output.log для удобного просмотра
1nohup /usr/local/bin/livekit-server --config /etc/livekit.yml > /usr/local/bin/logs/livekit_output.log 2>&1 &
5. Загрузка и запуск Redis
1brew install redis
2brew services start redis -- --requirepass "vocespace" --bind 0.0.0.0 --protected-mode no --daemonize yes
Перезапуск Caddy и автозапуск при загрузке
1systemctl stop caddy
2systemctl enabled caddy
3systemctl start caddy
Инструкции по работе с облачными серверами
Настройка групп безопасности/брандмауэров
При использовании облачных серверов, таких как Alibaba Cloud, Tencent Cloud, Google Cloud и т.д., необходимо настроить группы безопасности/брандмауэры сервера
| port |
type |
ingress/egress |
allow ip |
| 3000 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
| 3000 |
tcp |
egress |
0.0.0.0/0 Ipv4 |
| 7880 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
| 7881 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
| 80 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
| 443 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
| 50000~60000 |
udp |
ingress |
0.0.0.0/0 Ipv4 |
| 6379 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
Перезапуск Caddy и автозапуск при загрузке
1systemctl stop caddy
2systemctl enabled caddy
3systemctl start caddy