NAS Частное развертывание
NAS (Network Attached Storage) — это мини-сервер, предназначенный для управления файлами. Он напрямую подключает жесткие диски к локальной сети (LAN) и обеспечивает доступ к файлам, резервное копирование, совместное использование, создание снимков нескольких версий, мультимедийные сервисы и т. д., без выполнения обычных вычислительных задач.
Распространенные производители NAS:
- Synology
- Lenovo Personal Cloud / Extreme Space / UGREEN
- Western Digital My Cloud
- ...
Доменное имя не требуется, частное развертывание
Видео по локальному развертыванию на NAS
В видео демонстрируется использование встроенной программы настройки VoceSpace в VoceChat для получения скрипта развертывания.
Если вы хотите развернуть только VoceSpace, пожалуйста, загрузите скрипт развертывания и ознакомьтесь с разделом о ручном развертывании VoceSpace ниже.
Загрузка скрипта развертывания
Нажмите ниже, чтобы загрузить скрипт оболочки.
NAS.sh
Описание скрипта:
- Загружает все необходимые образы Docker
- Автоматически создает контейнеры
- Не использует прокси
Ручное выполнение развертывания скрипта
Вам не нужно вносить никаких изменений вручную, просто выполните с помощью sh
1# Войдите на ваш сервер
2ssh your.account@your.nas.ip
3
4# Выполните от имени root
5sudo -i
6
7# Скопируйте скрипт в deploy.sh и сохраните с выходом (:wq)
8vim ./deploy.sh
9
10# Предоставьте права на выполнение
11chmod 644 ./deploy.sh
12
13# Выполните скрипт
14sh ./deploy.sh
После завершения выполнения вы увидите эти контейнеры
- redis
- vocespace
- livekit-server

Контейнер VoceSpace может не запуститься из-за отсутствия прав на чтение/запись для vocespace.conf.json
Добавление прав на чтение/запись для vocespace.conf.json
vocespace.conf.json находится в том же месте, где вы выполняли скрипт. Если вы посмотрите логи контейнера, вы должны увидеть строку: /app/vocespace.conf.json: Permission denied
1chmod 644 ./vocespace.conf.json
После предоставления прав перезапустите контейнер VoceSpace
Доступ к локальной сети
Если вы дошли до этого шага, это означает, что вы завершили локальную установку, все контейнеры запущены нормально, но все еще используются протоколы http и ws, что не позволяет нормально общаться. Давайте продолжим.

Копирование нового VoceSpace
Щелкните правой кнопкой мыши на vocespace, выберите опцию копирования для создания нового vocespace. Нам нужно изменить исходный порт 3008 на 3006. Конечно, вы можете выбрать другой порт, главное, чтобы он не был занят и не был портом 3008.


Копирование нового livekit-server
Также нам нужно скопировать новый контейнер livekit-server, потому что нам нужно добавить два параметра, чтобы обеспечить, что сервис WebRTC не будет проходить через внешнюю сеть. Добавьте следующие две переменные окружения. Не вводите неправильный IP!
- LIVEKIT_NODE_IP = your.nas.server.ip
- LIVEKIT_RTC_USE_EXTERNAL_IP = false

Удаление предыдущих контейнеров
После завершения копирования вы можете удалить предыдущие контейнеры VoceSpace и livekit-server

Настройка обратного прокси Nginx
Запрос IP-адреса VoceSpace в Docker
Следующая команда может запросить IP всех контейнеров, найдите IP VoceSpace и запомните его
1# Войдите как root
2sudo -i
3# Запрос IP
4docker ps -q | xargs -n 1 docker inspect -f '{{.Name}}: {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

Настройка прокси
Откройте панель управления, выберите портал входа в систему, нажмите «Дополнительно», нажмите «Обратный прокси-сервер».

Далее добавьте новую конфигурацию и сохраните.
- Источник
- Протокол: HTTPS
- Имя хоста: не нужно указывать
- Порт: 3008
- Назначение
- Протокол: HTTP
- Имя хоста: это IP вашего vocespace в docker
- Порт 3000

Добавление конфигурации RTC
Далее нам нужно изменить конфигурацию nginx, добавив конфигурацию RTC, чтобы обновить протокол ws до wss.
# Перейдите в site-enabled nginx
cd /usr/local/etc/nginx/sites-enabled
# Измените конфигурацию обратного прокси сервера
vim server.ReverseProxy.conf
Когда вы откроете этот файл, он должен выглядеть так
1server {
2 listen 3008 ssl default_server;
3 listen [::]:3008 ssl default_server;
4
5 server_name _;
6
7 include /usr/syno/etc/www/certificate/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4/cert.conf*;
8
9 include /usr/syno/etc/security-profile/tls-profile/config/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4.conf*;
10
11 proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
12
13 location / {
14
15 proxy_connect_timeout 60;
16
17 proxy_read_timeout 60;
18
19 proxy_send_timeout 60;
20
21 proxy_intercept_errors off;
22
23 proxy_http_version 1.1;
24
25 proxy_set_header Upgrade $http_upgrade;
26
27 proxy_set_header Connection $connection_upgrade;
28
29 proxy_set_header Host $http_host;
30
31 proxy_set_header X-Real-IP $remote_addr;
32
33 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
34
35 proxy_set_header X-Forwarded-Proto $scheme;
36
37 proxy_pass http://172.17.0.2:3000;
38
39 }
40
41 error_page 403 404 500 502 503 504 /dsm_error_page;
42
43 location /dsm_error_page {
44 internal;
45 root /usr/syno/share/nginx;
46 rewrite (.*) /error.html break;
47 allow all;
48 }
49
50}
Далее добавьте следующую конфигурацию в строке перед location / {
1location /rtc {
2
3 proxy_pass http://127.0.0.1:7880;
4
5 proxy_http_version 1.1;
6
7 proxy_set_header Upgrade $http_upgrade;
8
9 proxy_set_header Connection "Upgrade";
10
11 proxy_set_header Host $host;
12
13}
После завершения нажмите ESC, введите :wq для сохранения и выхода
Полный файл конфигурации выглядит следующим образом:
1server {
2 listen 3008 ssl default_server;
3 listen [::]:3008 ssl default_server;
4
5 server_name _;
6
7 include /usr/syno/etc/www/certificate/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4/cert.conf*;
8
9 include /usr/syno/etc/security-profile/tls-profile/config/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4.conf*;
10
11 proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
12
13 location /rtc {
14
15 proxy_pass http://127.0.0.1:7880;
16
17 proxy_http_version 1.1;
18
19 proxy_set_header Upgrade $http_upgrade;
20
21 proxy_set_header Connection "Upgrade";
22
23 proxy_set_header Host $host;
24
25 }
26
27 location / {
28
29 proxy_connect_timeout 60;
30
31 proxy_read_timeout 60;
32
33 proxy_send_timeout 60;
34
35 proxy_intercept_errors off;
36
37 proxy_http_version 1.1;
38
39 proxy_set_header Upgrade $http_upgrade;
40
41 proxy_set_header Connection $connection_upgrade;
42
43 proxy_set_header Host $http_host;
44
45 proxy_set_header X-Real-IP $remote_addr;
46
47 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
48
49 proxy_set_header X-Forwarded-Proto $scheme;
50
51 proxy_pass http://172.17.0.2:3000;
52
53 }
54
55 error_page 403 404 500 502 503 504 /dsm_error_page;
56
57 location /dsm_error_page {
58 internal;
59 root /usr/syno/share/nginx;
60 rewrite (.*) /error.html break;
61 allow all;
62 }
63
64}
Перезагрузка nginx
Проверка файла конфигурации VoceSpace и перезапуск контейнера VoceSpace
Далее нам просто нужно убедиться, что файл конфигурации VoceSpace правильный, и перезапустить контейнер VoceSpace
1vim /volume1/share/data/vocespace.conf.json
В файле конфигурации обратите внимание:
- URL в livekit должен быть:
wss://your.server.ip:3008, это 3008, а не 7880
- Host в redis должен быть:
your.server.ip
Например:
1{
2 "livekit": {
3 "key": "APIQLeUrXGujRQk",
4 "secret": "fWHUA2CQlfi1iG4L3YqWKIhXuF9aqvlO5uTWAuHoLKm",
5 "url": "wss://192.168.31.249:3008"
6 },
7 "codec": "vp9",
8 "resolution": "1080p",
9 "maxBitrate": 3000000,
10 "maxFramerate": 30,
11 "priority": "medium",
12 "redis": {
13 "enabled": true,
14 "host": "192.168.31.249",
15 "port": 6379,
16 "password": "vocespace",
17 "db": 0
18 },
19 "server_url": "192.168.31.249",
20 "host_token": "vocespace",
21 "license": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImhhbkBwcml2b2NlLmNvbSIsImV4cGlyZXNfYXQiOjE3NzkyNzg0MDAsImNyZWF0ZWRfYXQiOjE3NDc3NDI0MDAsImRvbWFpbnMiOiIqIiwibGltaXQiOiJwcm8iLCJpZCI6IjZkZjgyMTMyLTIyODQtNGY2MS1iYmZhLWZkZmU4YmMzMWE2NyJ9.PiagYRDWSpzhIdbnY-pp8QeOf5Ij7neV8RMEafDgVT4"
22}
После того как вы убедитесь, что в конфигурации нет проблем, перезапустите контейнер VoceSpace и войдите в систему. Если вы видите следующий экран, поздравляем, вы успешно завершили настройку доступа к локальной сети

Устранение неполадок
Ограниченный доступ к RTC
Ограниченный доступ к RTC обычно возникает по двум причинам:
-
Неправильная конфигурация Vocesspace
-
Недостаточная конфигурация сервера, препятствующая корректному запуску службы.
Для решения этих проблем рассмотрите возможность обновления конфигурации сервера (минимум 2 ядра и 2 ГБ ОЗУ). При проблемах с конфигурацией проверьте файл vocesspace.conf.json, чтобы определить, не является ли конфигурация livekit.url неправильной.
Доступ к внешним портам
Настройка маршрутизатора на NAS может препятствовать внешнему доступу. В этом случае необходимо добавить правила для портов.

| port |
type |
ingress/egress |
allow ip |
| 3008 |
tcp |
ingress |
0.0.0.0/0 Ipv4 |
| 3008 |
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 |
| 6379 |
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 |