revert coturn container, use Snikket built-in TURN instead

The snikket_server image includes a TURN server that is enabled by default
(SNIKKET_TWEAK_TURNSERVER=1). A separate coturn container conflicts on port
3478 and adds unnecessary complexity for a standard deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
bvn13 2026-02-28 09:53:13 +03:00
parent 4e316e9566
commit 9d463e5f96
4 changed files with 0 additions and 67 deletions

View File

@ -10,7 +10,6 @@ XMPP-сервер на базе [Snikket](https://snikket.org/) (обёртка
| `snikket_proxy` | `snikket/snikket-web-proxy:stable` | Веб-прокси (nginx) | | `snikket_proxy` | `snikket/snikket-web-proxy:stable` | Веб-прокси (nginx) |
| `snikket_certs` | `snikket/snikket-cert-manager:stable` | Автоматическое получение TLS-сертификатов (Let's Encrypt) | | `snikket_certs` | `snikket/snikket-cert-manager:stable` | Автоматическое получение TLS-сертификатов (Let's Encrypt) |
| `snikket_portal` | `snikket/snikket-web-portal:stable` | Веб-портал для управления пользователями и инвайтами | | `snikket_portal` | `snikket/snikket-web-portal:stable` | Веб-портал для управления пользователями и инвайтами |
| `snikket_turn` | `coturn/coturn:latest` | TURN/STUN-сервер для голосовых и видеозвонков |
| `s3_upload_handler` | собирается из `./s3-upload-handler` | Обработчик загрузки файлов — принимает файлы от XMPP-клиентов и сохраняет в S3 | | `s3_upload_handler` | собирается из `./s3-upload-handler` | Обработчик загрузки файлов — принимает файлы от XMPP-клиентов и сохраняет в S3 |
| `postgres` | `postgres:15` | База данных PostgreSQL для Prosody | | `postgres` | `postgres:15` | База данных PostgreSQL для Prosody |
@ -87,7 +86,6 @@ cp secrets.env.example secrets.env
| `AWS_ACCESS_KEY_ID` | Ключ доступа AWS/S3 | | `AWS_ACCESS_KEY_ID` | Ключ доступа AWS/S3 |
| `AWS_SECRET_ACCESS_KEY` | Секретный ключ AWS/S3 | | `AWS_SECRET_ACCESS_KEY` | Секретный ключ AWS/S3 |
| `POSTGRES_PASSWORD` | Пароль PostgreSQL | | `POSTGRES_PASSWORD` | Пароль PostgreSQL |
| `TURN_SECRET` | Shared secret для TURN-аутентификации (должен совпадать между coturn и Prosody). Генерация: `openssl rand -hex 32` |
### S3 Upload Handler (environment) ### S3 Upload Handler (environment)

View File

@ -61,34 +61,6 @@ services:
PRESIGN_EXPIRE: "3600" PRESIGN_EXPIRE: "3600"
restart: "unless-stopped" restart: "unless-stopped"
snikket_turn:
container_name: snikket-turn
image: coturn/coturn:latest
network_mode: host
env_file:
- snikket.conf
- secrets.env
volumes:
- snikket_data:/snikket:ro
entrypoint: ["/bin/sh", "-c"]
command: >-
turnserver
--use-auth-secret
--static-auth-secret=$$TURN_SECRET
--realm=$$SNIKKET_DOMAIN
--listening-port=3478
--tls-listening-port=5349
--cert=/snikket/letsencrypt/live/$$SNIKKET_DOMAIN/fullchain.pem
--pkey=/snikket/letsencrypt/live/$$SNIKKET_DOMAIN/privkey.pem
--min-port=49152
--max-port=65535
--fingerprint
--no-cli
--log-file=stdout
restart: "unless-stopped"
depends_on:
- snikket_certs
postgres: postgres:
container_name: snikket-postgres container_name: snikket-postgres
image: postgres:17 image: postgres:17

View File

@ -26,7 +26,6 @@ modules_disabled = {
modules_enabled = { modules_enabled = {
"http_upload_external"; "http_upload_external";
"external_services";
} }
-- URL of the external upload service that handles S3 interaction. -- URL of the external upload service that handles S3 interaction.
@ -45,35 +44,3 @@ http_upload_external_expire_after = 3600
-- Max file size in bytes (10 MB) -- Max file size in bytes (10 MB)
http_upload_external_file_size_limit = 10485760 http_upload_external_file_size_limit = 10485760
----------------------------------------------------------------------
-- TURN/STUN for voice/video calls (via mod_external_services)
-- Credentials are generated on-the-fly using TURN REST API (RFC 8489 §9.2)
-- Shared secret must match TURN_SECRET in secrets.env
----------------------------------------------------------------------
external_services = {
{
type = "stun";
host = os.getenv("SNIKKET_DOMAIN");
port = 3478;
transport = "udp";
},
{
type = "turn";
host = os.getenv("SNIKKET_DOMAIN");
port = 3478;
transport = "udp";
secret = os.getenv("TURN_SECRET");
algorithm = "turn";
ttl = 86400;
},
{
type = "turns";
host = os.getenv("SNIKKET_DOMAIN");
port = 5349;
transport = "tcp";
secret = os.getenv("TURN_SECRET");
algorithm = "turn";
ttl = 86400;
},
};

View File

@ -5,7 +5,3 @@ AWS_SECRET_ACCESS_KEY=change-me
# PostgreSQL secrets # PostgreSQL secrets
POSTGRES_PASSWORD=change-me POSTGRES_PASSWORD=change-me
# TURN server shared secret (used by both coturn and Prosody mod_external_services)
# Generate with: openssl rand -hex 32
TURN_SECRET=change-me