quiel

Установка у себя

Что нужно, чтобы поднять quiel на своём сервере.

quiel ставится на свой сервер. Ниже — что для этого нужно и обо что спотыкаются.

Что требуется

КомпонентТребованиеПочему именно так
ВебNode 22, обычный серверный процессNext.js с серверными действиями
Realtimeпостоянный процесс с WebSocketздесь живут агенты и диспетчер
PostgreSQL16
Redis7обмен между сервисами и очереди
ХранилищеS3-совместимоефайлы спецификаций
ПочтаSMTPбез неё не войти: вход идёт по ссылке на почту

Serverless не подойдёт

Realtime держит живые соединения с агентами часами. Вариант «весь проект на облачных функциях» не работает: веб уедет, а протокол агентов останется без дома.

Домены

Нужно два имени, а не одно:

  • основное — сама платформа;
  • отдельное для хранилища файлов.

Второе не прихоть: браузер кладёт документы прямо в хранилище по подписанной ссылке, а подпись считается от имени хоста и пути. Под общим доменом на префиксе она не сойдётся, и загрузка документов не заработает.

Порядок

  1. Поднять сервисы через docker compose.
  2. Выпустить сертификаты до установки конфигурации nginx, отдельным шагом, а не плагином certbot: плагин перепишет конфигурацию сам.
  3. Поставить конфигурацию nginx, проверить nginx -t, перезагрузить.
  4. Прогнать миграции базы.
  5. Проверить снаружи, а не изнутри.

Обо что спотыкаются

Собрано по собственным граблям, а не по общим соображениям.

Сервис, которого нет, не жалуется. Стенд месяц числился рабочим с неподнявшимся realtime: веб без него открывается, просто нет живых обновлений. Проверяйте, что здоровы все контейнеры, а не что «сайт открылся».

Переменная, объявленная в одном месте, нужна в двух. Дважды за день настройка не доезжала до контейнера, и оба раза это выглядело не как поломка, а как странное поведение: то раздел GitHub сообщал, что приложение не настроено, то Telegram отвечал «платформа недоступна». Сверяйте список переменных, которые читает код, со списком в compose.

Приватный ключ не монтируйте файлом. Выкладка идёт с удалением лишнего, и файл исчезнет при первом же деплое — так и произошло. Ключ передаётся значением переменной.

Проксирование через чужой CDN мешает выпуску сертификата. На время выпуска домен должен смотреть на сервер напрямую.

Резервные копии

В составе есть задание, которое снимает дамп базы и кладёт его в хранилище. Проверьте, что оно действительно отрабатывает: непроверенная резервная копия — это не резервная копия.

На этой странице