Документация: сверка README и deploy/*.md с кодом
- README: test без порта на хосте (только через домен, Secure-cookie), прод из реестра (build-push + docker compose up -d), лимиты перебора и регистраций, dev_admin.py в списке dev-кода, структура репозитория, раздел о бэкапах, отличия test от prod; отмечены известные проблемы (#69, #71, #72, #73). - deploy/README.md: три сервиса (app + tunnel + backup), источники ключа туннеля для Pi, test и dev-туннеля, слот 9000 у временного прода. - deploy/pi/README.md: контейнер backup, fail-fast по секретам, ADMIN_PASSWORD только при первом создании админа (#73), порядок обновления. - deploy/vps/README.md: туннель-контейнер вместо autossh, сниппет (edge), единые имена файлов в примере сборки сертификатов, дописывать authorized_keys через >>. - deploy/backup/README.md: первый бэкап на новом Pi, выбор снимка с данными при восстановлении (#74), метка keep, --no-pre-restore, служебные команды, причины unhealthy. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
This commit is contained in:
+19
-6
@@ -2,12 +2,13 @@
|
||||
|
||||
На Pi нужны только **ДВА файла**: `docker-compose.yml` и `.env`. Репозиторий, сборка и файл
|
||||
ключа туннеля не нужны:
|
||||
- образы (`app` + `tunnel`) тянутся из Gitea-реестра (`pull_policy: always`);
|
||||
- образы (`app` + `tunnel` + `backup`) тянутся из Gitea-реестра (`pull_policy: always`);
|
||||
- приватный ключ туннеля лежит в `.env` как `TUNNEL_KEY_B64` (base64).
|
||||
|
||||
`docker compose up` поднимает два контейнера: `app` (FastAPI+SPA, портов на хост нет) и
|
||||
`tunnel` (`ssh -R 9000:app:8000` к VPS). Публичная точка — VPS, домен `forbiddenstars.ru`
|
||||
(Pi за CGNAT — туннель стучится наружу сам).
|
||||
`docker compose up` поднимает три контейнера: `app` (FastAPI+SPA, портов на хост нет),
|
||||
`tunnel` (`ssh -R 9000:app:8000` к VPS, стартует после `healthy` у `app`) и `backup` (restic,
|
||||
см. раздел «Бэкапы»). Публичная точка — VPS, домен `forbiddenstars.ru` (Pi за CGNAT — туннель
|
||||
стучится наружу сам).
|
||||
|
||||
---
|
||||
|
||||
@@ -86,6 +87,14 @@ IMAGE_REGISTRY=gitea.arseniev.info/notbigghost # уже значение по
|
||||
IMAGE_TAG=latest
|
||||
```
|
||||
`APP_ENV` (форсится в `production`) и `VPS_TUNNEL_PORT` (прод → 9000) не трогать.
|
||||
Блок `BACKUP_*` можно оставить пустым: бэкапы включаются позже, по
|
||||
[`deploy/backup/README.md`](../backup/README.md).
|
||||
|
||||
> В production приложение **не стартует**, если `SECRET_KEY` дефолтный или короче 32
|
||||
> символов, а `ADMIN_PASSWORD` пустой или дефолтный (при `ADMIN_BOOTSTRAP_ENABLED=true`).
|
||||
> `ADMIN_USERNAME`/`ADMIN_PASSWORD` применяются **только при первом создании** админа: если
|
||||
> потом поменять их в `.env`, у существующего админа ничего не изменится, а штатной смены
|
||||
> пароля админа на проде пока нет (задача #73).
|
||||
|
||||
## 4. Запуск
|
||||
```bash
|
||||
@@ -94,7 +103,8 @@ docker compose up -d # pull_policy: always → тянет обр
|
||||
docker compose ps # app healthy → поднимется tunnel
|
||||
docker compose logs -f tunnel # ждём строку: [tunnel] -R 9000:app:8000 -> tunnel@...
|
||||
```
|
||||
На старте контейнер сам применит миграции, засидит справочники и создаст админа из `.env`.
|
||||
На старте контейнер сам применит миграции, засидит справочники и создаст админа из `.env`
|
||||
(если админа ещё нет).
|
||||
|
||||
## 5. Проверка
|
||||
- Открой `https://forbiddenstars.ru` — должно отдать приложение (не заглушку).
|
||||
@@ -103,9 +113,12 @@ docker compose logs -f tunnel # ждём строку: [tunnel] -R 9000:a
|
||||
|
||||
## Обновление
|
||||
```bash
|
||||
# Pi: docker compose exec backup fs-backup run --tag before-update # по желанию, если бэкапы включены
|
||||
# ПК: .\scripts\build-push.ps1
|
||||
# Pi: docker compose up -d # always-pull подтянет свежий образ
|
||||
# Pi: docker compose up -d # always-pull подтянет свежие образы
|
||||
```
|
||||
Если в новой версии менялся `docker-compose.yml` или `.env.example`, сначала скачайте
|
||||
свежий `docker-compose.yml` (шаг 3) и допишите новые переменные в `.env`.
|
||||
|
||||
## Автозапуск после перезагрузки
|
||||
Уже обеспечен: `systemctl enable docker` + `restart: unless-stopped`. После `sudo reboot`
|
||||
|
||||
Reference in New Issue
Block a user