Автоматическая установка самохостируемого стека SimpleX Chat: SMP-relay, XFTP-сервер файлов и TURN-сервер для голосовых звонков.
Один скрипт — полностью рабочий приватный мессенджер на вашем сервере.
Без регистрации. Без телефонных номеров. Без слежки.
curl -fsSL https://raw.githubusercontent.com/ntorgov/simplex_bundle/refs/heads/master/installer.sh | bashСкрипт задаст несколько вопросов (адрес сервера, порты, квота) и запустит всё автоматически.
| Сервис | Образ | Назначение | Порт по умолчанию |
|---|---|---|---|
| SMP Server | simplexchat/smp-server |
Relay для доставки сообщений | 993 (IMAPS) |
| XFTP Server | simplexchat/xftp-server |
Передача файлов и медиа | 995 (POP3S) |
| coturn | coturn/coturn |
STUN/TURN для голосовых звонков | 3478 |
Порты 993 и 995 выбраны намеренно — они относятся к почтовым протоколам и практически не блокируются провайдерами, в отличие от стандартного порта SimpleX 5223.
- Linux-сервер (Ubuntu 20.04+ рекомендуется)
- Docker (
>= 20.x) docker-composeили плагинdocker composeopenssl(обычно предустановлен)- Публичный IP-адрес или домен
- Проверяет зависимости — docker, docker-compose, openssl
- Интерактивно спрашивает параметры: адрес сервера, порты, квоту хранилища
- Генерирует случайный пароль для TURN-сервера
- Создаёт
~/simplex/docker-compose.ymlи~/simplex/credentials.txt - Скачивает образы и запускает контейнеры
- Выводит готовые строки для вставки в приложение SimpleX Chat
После установки откройте необходимые порты:
ufw allow 993/tcp # SMP relay
ufw allow 995/tcp # XFTP файлы
ufw allow 3478/tcp # TURN (голос)
ufw allow 3478/udp # TURN (голос)
ufw allow 49152:65535/udp # TURN медиа-диапазонПосле успешной установки скрипт выведет готовые адреса. Добавьте их в SimpleX Chat:
Настройки → Сеть и серверы → SMP-серверы (и XFTP аналогично):
smp://<fingerprint>@your-server.com:993
xftp://<fingerprint>@your-server.com:995
Точные адреса с fingerprint смотрите в логах:
docker logs simplex-smp 2>&1 | grep "Server address" docker logs simplex-xftp 2>&1 | grep "Server address"
Настройки → Конфиденциальность и безопасность → WebRTC ICE серверы → отключить дефолтные → добавить:
turn:simplex:ВАШ_ПАРОЛЬ@your-server.com:3478?transport=udp
turn:simplex:ВАШ_ПАРОЛЬ@your-server.com:3478?transport=tcp
stun:your-server.com:3478
Пароль хранится в ~/simplex/credentials.txt.
cd ~/simplex
# Статус
docker compose ps
# Логи всех сервисов
docker compose logs -f
# Логи конкретного сервиса
docker compose logs -f smp-server
# Остановить
docker compose down
# Обновить образы
docker compose pull && docker compose up -d~/simplex/
├── docker-compose.yml # конфигурация сервисов
├── credentials.txt # пароли и адреса (chmod 600)
├── smp/
│ ├── config/ # ключи и конфиг SMP сервера
│ └── logs/ # логи и данные SMP
├── xftp/
│ ├── config/ # ключи и конфиг XFTP сервера
│ ├── logs/ # логи XFTP
│ └── files/ # хранилище файлов
⚠️ Сделайте резервную копиюsmp/config/ca.key— это CA-ключ вашего SMP сервера. При его потере клиенты потеряют доверие к серверу и нужно будет перенастраивать подключения.
- TURN-пароль генерируется случайно при каждой установке (
openssl rand) credentials.txtсоздаётся с правами600(только владелец)- SMP и XFTP серверы используют собственные TLS-сертификаты (генерируются автоматически при первом запуске)
- Содержимое сообщений и файлов недоступно серверу — сквозное шифрование на стороне клиента
Работает ли это в России?
Да. Порты 993 и 995 относятся к почтовым протоколам (IMAPS/POP3S) и почти никогда не блокируются. Порт 5223 (стандартный для SimpleX) блокируется — поэтому мы его не используем.
Нужен ли домен или хватит IP?
Хватит IP. Укажите просто IP-адрес сервера при установке.
Что с push-уведомлениями?
Push-уведомления в SimpleX реализованы через серверы simplex.im. Если они недоступны — переключите в приложении режим на «Периодически»: приложение будет само опрашивать ваш SMP-сервер без обращения к сторонним серверам.
Как узнать fingerprint моего SMP сервера?
docker logs simplex-smp 2>&1 | grep "Server address"MIT — делайте что хотите, упоминание приветствуется.
Сделано с ❤️ для тех, кто ценит приватность