DaydreamMods

DaydreamMods

Эксплуатация

Что смотреть, когда сайт молчит, таймер не уходит или файл не скачивается.

Состояние процессов

systemctl status daydreammods-web daydreammods-api --no-pager
journalctl -u daydreammods-web -n 80 --no-pager
journalctl -u daydreammods-api -n 80 --no-pager

Веб должен слушать 3000, API — 4000. Проверка с самой машины:

curl -sI http://127.0.0.1:3000 | head
curl -sI http://127.0.0.1:4000/health || true

Таймер вместо тарифов

Страница /subscription читает sales_open_at из site_settings на каждый запрос. Если таймер всё ещё идёт, в базе лежит будущая дата либо значение не строка и код взял запасной SALES_OPEN_AT из .env.

Проверка:

psql "$DATABASE_URL" -c "select key, value from site_settings where key = 'sales_open_at';"

Дата в прошлом по времени сервера — витрина. Дата в будущем — таймер. Часовой пояс в строке обязателен, например 2026-10-04T13:00:00+03:00.

Скачивание

  • Нет активной подписки или тариф не включает сборку — кабинет получит отказ «Нет доступа».
  • Версия не published — её нет в списке.
  • Ключ local:…, а файла нет в PACK_STORAGE_DIR — API ответит, что файл на сервере не найден.
  • Токен старше 10 минут или уже использован — «ссылка недействительна».
  • S3 не настроен и ключ не начинается с local: — API отдаёт текстовую заглушку, это не архив сборки.

Загрузка ZIP зависла

Полоса — это отправка из браузера. Если она замирает около минуты на большом файле, режет nginx: client_body_timeout или proxy_read_timeout. Для /api/admin/upload выставлены час и 1 ГБ. После правки nginx нужен nginx -t и systemctl reload nginx. Оборванная загрузка файл не создаёт, её начинают заново.

Почта «не пришла»

Смотрят журнал процесса. Строка [mail:dev] значит, SMTP не задан и письмо только залогировано. Иначе смотрят отказ SMTP (логин, порт 587, пароль приложения).

Доступы

Домен, VPS, кабинет Robokassa, почтовый ящик и бакет должны быть на DaydreamMods, не на личном аккаунте разработчика. Пароль root и первичный пароль администратора после сдачи меняют. В документацию и в git их не пишут.