Основы

Snikket на своём Docker или готовый хостинг: что выбрать

Что нужно, чтобы поставить Snikket в Docker самому: домен, DNS, порты, host-сеть, обновления и резервные копии — и когда проще взять готовый хостинг.

Обновлено · 6 мин чтения

Коротко

Поставить 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, 443TCPВеб-панель, сертификаты, обмен файлами
5222TCPПодключение приложений к серверу
5269TCPСвязь с другими XMPP-серверами (федерация)
5000TCPПрокси для передачи файлов
3478, 3479TCP и UDPSTUN/TURN для звонков
5349, 5350TCP и UDPSTUN/TURN для звонков поверх TLS
49152–65535UDPРетрансляция аудио и видео (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: основные шаги

  1. Добавьте DNS-записи и откройте порты.
  2. Создайте каталог /etc/snikket и скачайте в него официальный docker-compose.yml.
  3. Создайте рядом файл snikket.conf с двумя обязательными строками: SNIKKET_DOMAIN=chat.example.com и SNIKKET_ADMIN_EMAIL=you@example.com. Почта нужна для связи с администратором и регистрации в Let's Encrypt.
  4. Запустите docker compose up -d. Snikket сам получит сертификаты Let's Encrypt и будет их продлевать.
  5. Создайте приглашение администратора: 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. О новых версиях сервер сам присылает уведомления администратору.