Snikket на своём Docker или готовый хостинг: что выбрать
Что нужно, чтобы поставить Snikket в Docker самому: домен, DNS, порты, host-сеть, обновления и резервные копии — и когда проще взять готовый хостинг.
Коротко
Поставить Snikket самому можно: официальный способ — Docker и docker compose на Linux-сервере. Для этого нужны домен с тремя DNS-записями, открытые порты (включая большой диапазон UDP для звонков), машина, где Snikket может занять сетевые порты хоста, и время на обновления и резервные копии. Если всё это вам интересно или уже привычно — ставьте сами. Если нужен просто работающий сервер для семьи или команды, разумнее готовый хостинг: официальный Snikket Hosting или сервер под ключ у нас.
Ниже — честный список того, что потребуется, по официальной документации Snikket.
Что нужно для установки Snikket в Docker
Сервер
- Linux с доступом по SSH или к терминалу: VPS, свой сервер или даже Raspberry Pi. Поддерживаются 64-битный Linux и ARMv7/ARMv8, включая Raspberry Pi 2, 3 и 4.
- Память: разработчики рекомендуют от 1 ГБ RAM.
- Docker 20.10.10 или новее и плагин
docker compose. Debian 10 и Raspbian 10 на ARM несовместимы: контейнеры падают с ошибкой «Operation Not Permitted», лечится обновлением до Debian 11. - Публичный IP-адрес. Дома придётся пробросить порты на роутере.
Docker здесь не одна из опций, а единственный поддерживаемый способ установки. Альтернативы вроде Podman существуют, но разработчики Snikket их не развивают и не поддерживают официально.
Домен и DNS
Нужен домен, на котором вы можете создавать поддомены. Если сервер будет жить на chat.example.com, понадобятся три записи:
chat.example.com. A 203.0.113.123
groups.chat.example.com. CNAME chat.example.com.
share.chat.example.com. CNAME chat.example.com.
groups отвечает за групповые чаты, share — за обмен файлами. Запись AAAA добавляют, если у сервера есть IPv6. Если на домене раньше работал другой XMPP-сервер, удалите старые SRV-записи — они мешают.
Порты
| Порт | Протокол | Зачем |
|---|---|---|
| 80, 443 | TCP | Веб-панель, сертификаты, обмен файлами |
| 5222 | TCP | Подключение приложений к серверу |
| 5269 | TCP | Связь с другими XMPP-серверами (федерация) |
| 5000 | TCP | Прокси для передачи файлов |
| 3478, 3479 | TCP и UDP | STUN/TURN для звонков |
| 5349, 5350 | TCP и UDP | STUN/TURN для звонков поверх TLS |
| 49152–65535 | UDP | Ретрансляция аудио и видео (TURN) |
Порт 80 обязателен: через него Let's Encrypt проверяет домен перед выпуском сертификата. Диапазон TURN — около 16 тысяч портов; его можно сузить настройками SNIKKET_TWEAK_TURNSERVER_MIN_PORT и SNIKKET_TWEAK_TURNSERVER_MAX_PORT.
Сеть хоста
В официальном docker-compose.yml все четыре контейнера — сервер, веб-панель, веб-прокси и менеджер сертификатов — запущены с network_mode: host. Это значит, что Snikket напрямую занимает порты машины. Последствия:
- если на сервере уже работает сайт на 80/443, Snikket придётся спрятать за обратный прокси: перевести его веб на порты 5080/5443 (
SNIKKET_TWEAK_HTTP_PORT,SNIKKET_TWEAK_HTTPS_PORT) и настроить проксирование; - XMPP, STUN и TURN через обычный HTTP-прокси не пропустить — эти порты должны смотреть наружу напрямую;
- два Snikket на одной машине с одним IP-адресом в таком режиме конфликтуют.
Последнее мы проверили на себе: чтобы держать много серверов Snikket на одном адресе, нам пришлось отказаться от host-режима, разносить подключения по имени сервера и выносить ретранслятор звонков в отдельный общий сервис. Для одной домашней установки это не нужно, но показывает, насколько Snikket рассчитан на «одна машина — один сервер».
Установка Snikket в Docker: основные шаги
- Добавьте DNS-записи и откройте порты.
- Создайте каталог
/etc/snikketи скачайте в него официальныйdocker-compose.yml. - Создайте рядом файл
snikket.confс двумя обязательными строками:SNIKKET_DOMAIN=chat.example.comиSNIKKET_ADMIN_EMAIL=you@example.com. Почта нужна для связи с администратором и регистрации в Let's Encrypt. - Запустите
docker compose up -d. Snikket сам получит сертификаты Let's Encrypt и будет их продлевать. - Создайте приглашение администратора:
docker exec snikket create-invite --admin --group default. Откройте ссылку и войдите — дальше приглашения для остальных создаются в веб-панели.
Если сертификат не выпускается, журнал смотрят командой docker compose exec snikket_certs cat /var/log/letsencrypt/errors.log. Не перезапускайте выпуск десятки раз подряд: у Let's Encrypt строгие лимиты.
Что будет после установки: обслуживание
Установка — разовая работа. Дальше сервер нужно содержать.
Обновления
Snikket обновляется вручную:
cd /etc/snikket
docker compose pull
docker compose up -d
О новых версиях разработчики пишут в блоге и соцсетях, а сервер сам присылает администратору уведомление. Текущую версию показывает docker exec snikket prosodyctl about | head -n1. Перед обновлением на старых ARM-системах стоит свериться с разделом о совместимости в документации.
Резервные копии
Отдельной инструкции по резервному копированию в официальной документации Snikket мы не нашли — это остаётся на вас. Из устройства установки видно, что копировать нужно минимум два места: Docker-том snikket_data (данные сервера) и каталог /etc/snikket с настройками. Копию полезно хранить на другой машине и хотя бы раз проверить, что из неё действительно восстанавливается работающий сервер.
Мониторинг и мелочи
Кто-то должен заметить, что диск заполнился, сертификат не продлился или после обновления провайдер закрыл порт. Для энтузиаста это часть удовольствия. Для того, кто ставил сервер ради семейного чата, — источник звонков «у меня ничего не приходит».
Когда ставить Snikket самому
Своя установка — хороший выбор, если:
- у вас уже есть VPS или домашний сервер, и вы уверенно работаете с Docker, DNS и файрволом;
- нужен свой домен, нестандартные настройки или полный доступ к серверу;
- обслуживание вас не пугает, а интересует.
Для такого случая официальная документация Snikket — подробная и понятная, начинайте с руководства по быстрой установке.
Когда разумнее готовый хостинг
Хостинг имеет смысл, если сервер нужен как инструмент, а не как хобби: семье, друзьям, небольшой команде, где никто не хочет быть администратором. Приложения и возможности при этом те же — это тот же Snikket.
Варианты:
- Snikket Hosting — официальный хостинг от разработчиков Snikket. По их странице на 11.10.2026: один тип сервера на 10 активных пользователей (больше — по запросу), цена — 6 $ в месяц или меньше в зависимости от региона, валюты и налогов, пробный период 14 дней, сервис размещён в Германии.
- Сервер под ключ у нас — отдельный сервер Snikket с адресом вида
semya.pl3.store, до 20 участников, 890 ₽ в месяц или 8 900 ₽ в год, первые 14 дней бесплатно. Обновления Snikket, сертификаты, DNS, порты и ретранслятор звонков — на нас. Свой домен пока подключить нельзя.
| Свой Docker | Готовый хостинг | |
|---|---|---|
| Домен и DNS | Ваши, настраиваете сами | Адрес выдаёт сервис |
| Порты и сеть | Открываете сами, Snikket занимает порты хоста | Настроены |
| Обновления | Вручную, по уведомлению | Делает сервис |
| Резервные копии | Сами | Зависит от сервиса — уточняйте |
| Полный доступ к серверу | Да | Нет, только веб-панель администратора |
| Деньги | Аренда сервера и домена | Подписка |
Если выбрали хостинг, следующий шаг — разобраться с приложением и перевезти семью из WhatsApp. О том, кому подходит свой сервер, — на странице для небольших команд, а что такое XMPP и Snikket — в простом объяснении.
Источники
Частые вопросы
Можно ли установить Snikket без Docker?
Официально — нет. В FAQ Snikket сказано, что единственный поддерживаемый способ установки сейчас — Docker. Другие варианты существуют, но разработчики их не развивают.
Сколько памяти нужно серверу Snikket?
Разработчики рекомендуют машину минимум с 1 ГБ оперативной памяти, чтобы установка и работа шли без проблем. Подходят 64-битный Linux и ARM-устройства, включая Raspberry Pi 2, 3 и 4.
Какие порты нужно открыть для Snikket?
TCP 80, 443, 5222, 5269 и 5000; TCP и UDP 3478–3479 и 5349–5350 для звонков; UDP 49152–65535 для ретрансляции аудио и видео (TURN). Список — в официальной документации Snikket о файрволе.
Как обновить Snikket в Docker?
В каталоге установки выполните docker compose pull и затем docker compose up -d. О новых версиях сервер сам присылает уведомления администратору.