commit 673cb90bd05def819fe2aced2050e4fe1bebf58e Author: root Date: Tue Feb 17 23:36:28 2026 +0000 Выгрузка F7cloud_HPB diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e92a63c --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Конфиг с секретами — не выгружать в git +server.conf + +# Резервные копии и временные файлы +*.bak +*.swp +*~ +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..c835f4e --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# HPB — Nextcloud Spreed Signaling (f7cloud) + +Сервисы для стека Nextcloud Talk: signaling, Janus, NATS, coTURN. + +## Сервисы + +| Сервис | Описание | +|--------|----------| +| **signaling.service** | Nextcloud Talk signaling server | +| **janus.service** | Janus WebRTC gateway (MCU) | +| **nats-server.service** | NATS — обмен сообщениями | +| **coturn.service** | coTURN — STUN/TURN для WebRTC | + +## Установка unit-файлов + +```bash +sudo cp systemd/*.service /etc/systemd/system/ +sudo systemctl daemon-reload +sudo systemctl enable signaling janus nats-server coturn +sudo systemctl start signaling janus nats-server coturn +``` + +## Конфигурация + +- `server.conf` — конфиг signaling (создаётся вручную, в репозиторий не входит из соображений безопасности). +- Пример структуры конфига: см. `server.conf.example` (заполните секреты на сервере). + +## Зависимости конфигов + +- **signaling**: `/etc/f7cloud-spreed-signaling/server.conf` +- **nats-server**: `/etc/nats-server.conf` +- **coturn**: `/etc/turnserver.conf` +- **janus**: конфиг по умолчанию (часто `/etc/janus/janus.jcfg`) diff --git a/server.conf.example b/server.conf.example new file mode 100644 index 0000000..699c9c1 --- /dev/null +++ b/server.conf.example @@ -0,0 +1,43 @@ +# Пример конфигурации signaling. +# Скопируйте как server.conf и подставьте свои секреты. +# server.conf добавлен в .gitignore и в репозиторий не попадает. + +[server] +ratelimitRequestsPerSecond = 0 +ratelimitBurst = 0 + +[http] +listen = 127.0.0.1:8080 + +[app] +debug = false + +[sessions] +hashkey = YOUR_32_OR_64_BYTE_HEX_HASHKEY +blockkey = YOUR_16_24_OR_32_BYTE_HEX_BLOCKKEY + +[clients] +internalsecret = YOUR_INTERNAL_CLIENT_SECRET + +[backend] +backends = nextcloud-backend-0 +# allowall = true # только для тестов +secret = YOUR_NEXTCLOUD_BACKEND_SECRET +timeout = 10 +connectionsperhost = 8 + +[nextcloud-backend-0] +url = https://your-nextcloud.example +secret = YOUR_NEXTCLOUD_BACKEND_SECRET + +[nats] +url = nats://localhost:4222 + +[mcu] +type = janus +url = ws://127.0.0.1:8188 + +[turn] +apikey = YOUR_TURN_API_KEY +secret = YOUR_TURN_SHARED_SECRET +servers = turn:your-turn.example:9991?transport=udp,turn:your-turn.example:9991?transport=tcp diff --git a/systemd/coturn.service b/systemd/coturn.service new file mode 100644 index 0000000..e11c1e2 --- /dev/null +++ b/systemd/coturn.service @@ -0,0 +1,16 @@ +[Unit] +Description=coTURN STUN/TURN Server +Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1) +After=network.target + +[Service] +User=turnserver +Group=turnserver +Type=notify +ExecStart=/usr/bin/turnserver -c /etc/turnserver.conf --pidfile= +Restart=on-failure +InaccessibleDirectories=/home +PrivateTmp=yes + +[Install] +WantedBy=multi-user.target diff --git a/systemd/janus.service b/systemd/janus.service new file mode 100644 index 0000000..b9517eb --- /dev/null +++ b/systemd/janus.service @@ -0,0 +1,13 @@ +[Unit] +Description=Janus WebRTC gateway +After=network.target +Documentation=https://janus.conf.meetecho.com/docs/index.html + +[Service] +Type=forking +ExecStart=/usr/bin/janus --disable-colors --daemon --log-stdout +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/systemd/nats-server.service b/systemd/nats-server.service new file mode 100644 index 0000000..a45cf63 --- /dev/null +++ b/systemd/nats-server.service @@ -0,0 +1,15 @@ +[Unit] +Description=NATS Server +After=network.target ntp.service + +[Service] +PrivateTmp=true +Type=simple +ExecStart=/usr/sbin/nats-server -c /etc/nats-server.conf +ExecReload=/bin/kill -s HUP $MAINPID +ExecStop=/bin/kill -s SIGINT $MAINPID +User=nats +Group=nats + +[Install] +WantedBy=multi-user.target diff --git a/systemd/signaling.service b/systemd/signaling.service new file mode 100644 index 0000000..464861f --- /dev/null +++ b/systemd/signaling.service @@ -0,0 +1,43 @@ +[Unit] +Description=Nextcloud Talk signaling server + +[Service] +ExecStart=/usr/bin/signaling --config /etc/f7cloud-spreed-signaling/server.conf +User=_signaling +Group=_signaling +Restart=on-failure + +# Makes sure that /etc/signaling is owned by this service +ConfigurationDirectory=signaling + +# Hardening - see systemd.exec(5) +CapabilityBoundingSet= +ExecPaths=/usr/bin/signaling /usr/lib /usr/lib64 +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoExecPaths=/ +NoNewPrivileges=yes +PrivateDevices=yes +PrivateTmp=yes +PrivateUsers=yes +ProcSubset=pid +ProtectClock=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectHostname=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectProc=invisible +ProtectSystem=strict +RemoveIPC=yes +RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX +RestrictNamespaces=yes +RestrictRealtime=yes +RestrictSUIDSGID=yes +SystemCallArchitectures=native +SystemCallFilter=@system-service +SystemCallFilter=~ @privileged + +[Install] +WantedBy=multi-user.target