8.2.18 Розгортання корпоративного чат-серверу Zulip
Zulip — сучасна система командної комунікації з відкритим кодом, що поєднує переваги потокового обговорення з асинхронними темами повідомлень. Розгортання в Docker забезпечує швидку та відтворювану інсталяцію без необхідності налаштовувати залежності вручну (PostgreSQL, RabbitMQ, Redis, memcached тощо).
Підготовка сервера
Вимоги
- Віртуальний або Виділений сервер;
- Мінімальні ресурси: 2 vCPU, 4 ГБ RAM, 20 ГБ SSD;
- Доступ root або користувач з правами
sudo
; - Обов’язкова наявність Docker і Docker Compose.
Змінні, які потрібно замінити
DOMAIN_NAME
— ваше доменне ім’я (наприклад,chat.example.com
);ADMIN_EMAIL
— email адміністратора Zulip;POSTGRES_PASSWORD
,RABBITMQ_PASSWORD
,REDIS_PASSWORD
,MEMCACHED_PASSWORD
— паролі сервісів;SECRET_KEY
— випадковий рядок із 50 символів (DjangoSECRET_KEY
);
Безпека
Обмежимо доступ до непризначених для публіки портів, дозволивши лише необхідні.
UFW:
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
iptables:
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P INPUT DROP
Установка
Створимо директорію проєкту:
mkdir ~/zulip && cd ~/zulip
Клонуємо репозиторій docker-zulip
:
git clone https://github.com/zulip/docker-zulip.git
cd docker-zulip
Файл docker-compose.yml
містить конфігурацію для 5 контейнерів: Zulip, PostgreSQL, Redis, RabbitMQ, memcached.
Порада: згенерувати секретні ключі можна так:
openssl rand -base64 40 | tr -d '/+=' | head -c 50
Відредагуйте файл docker-compose.yml
, знайдіть секцію environment
у блоці zulip
і заповніть змінні:
services:
zulip:
image: zulip/docker-zulip:10.4-0 # актуальний тег
environment:
- SETTING_EXTERNAL_HOST=DOMAIN_NAME
- SETTING_ZULIP_ADMINISTRATOR=ADMIN_EMAIL
- POSTGRES_PASSWORD=POSTGRES_PASSWORD
- SECRETS_postgres_password=POSTGRES_PASSWORD
- RABBITMQ_DEFAULT_PASS=RABBITMQ_PASSWORD
- SECRETS_rabbitmq_password=RABBITMQ_PASSWORD
- REDIS_PASSWORD=REDIS_PASSWORD
- SECRETS_redis_password=REDIS_PASSWORD
- SECRETS_secret_key=SECRET_KEY
- SSL_CERTIFICATE_GENERATION=certbot
Увага: після першого запуску змінити паролі сервісів можна лише вручну або при пересозданні томів.
Завантаження образів та запуск Zulip
Виконайте команди для завантаження образів і запуску сервісу у фоновому режимі:
sudo docker compose pull
sudo docker compose up -d
Створення організації
Запустіть команду для отримання посилання на реєстрацію:
sudo docker compose exec -u zulip zulip \
"/home/zulip/deployments/current/manage.py generate_realm_creation_link"
Відкрийте згенероване посилання у браузері та створіть обліковий запис:
Перевірка роботи
- Перевірте статус контейнерів:
docker compose ps
- Відкрийте
https://<DOMAIN_NAME>/
і увійдіть під обліковим записом адміністратора.
- Перевірте логи в меню Administration → Server logs.
Поширені помилки
Помилка | Причина | Рішення |
---|---|---|
port 5432 is already allocated |
Локально запущений PostgreSQL | Зупиніть службу postgresql або змініть порт у docker-compose.yml . |
502 Bad Gateway / self‑signed cert | Сертифікат Let’s Encrypt ще не згенеровано | Дочекайтесь завершення Certbot або тимчасово використовуйте HTTP. |
django.core.exceptions.ImproperlyConfigured: SECRET_KEY |
Не задано SECRETS_secret_key |
Згенеруйте ключ, додайте у docker-compose.yml , перезапустіть сервіс. |
Нестача RAM, черга “worker not running” | Недостатньо памʼяті для мультипроцесорних workerів | Встановіть QUEUE_WORKERS_MULTIPROCESS=false або збільшіть RAM. |
Офіційна документація