- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Единый deploy.sh и Forgejo workflow с выбором stack/service; compose параметризован для параллельного test без потери prod-volume. Co-authored-by: Cursor <cursoragent@cursor.com> |
||
| .forgejo/workflows | ||
| secrets | ||
| .env.example | ||
| .gitignore | ||
| compose.yaml | ||
| deploy.sh | ||
| README.md | ||
postilga-deploy
Прод/тест конфиг Postilga: compose.yaml, deploy.sh, шаблон .env.
Деплой через Forgejo Actions на self-hosted runner (postilga-host).
Код приложений — в postilga-backend / postilga-frontend (клоны рядом, в git deploy-репо не входят).
Layout на Beelink
Предпочтительный (два контура):
~/apps/postilga/
prod/ ← clone postilga-deploy @ main
compose.yaml
deploy.sh
.env
backend/ ← postilga-backend @ main
frontend/ ← postilga-frontend @ main
downloads/
backups/
test/ ← тот же deploy-репо, отдельный .env
…
backend/ ← @ testing
frontend/ ← @ testing
Пока живёт legacy: ~/apps/postilga/ сразу с compose.yaml — ./deploy.sh --stack prod это понимает.
Compose project: postilga_prod / postilga_test.
Ветки приложений: prod → main, test → testing.
Переменные стека (.env)
Для prod можно ничего не менять — дефолты совпадают с текущим контуром:
| Переменная | Prod (default) | Test (пример) |
|---|---|---|
POSTILGA_CONTAINER_PREFIX |
postilga |
postilga-test |
POSTILGA_FRONTEND_PORT |
4010 |
4020 |
POSTILGA_BACKEND_PORT |
4011 |
4021 |
POSTILGA_POSTGRES_VOLUME |
postilga-postgres-data |
postilga-test-postgres-data |
POSTILGA_UPLOADS_VOLUME |
postilga-uploads |
postilga-test-uploads |
APP_FRONTEND_BASE_URL |
https://postilga.ru |
https://test.postilga.ru |
Не переименовывайте prod volume names — иначе compose создаст пустые тома.
Деплой
Forgejo: Actions → Deploy Postilga → stack + service.
Вручную:
cd ~/apps/postilga/prod # или legacy ~/apps/postilga
./deploy.sh --stack prod --service all
./deploy.sh --stack test --service backend
Скрипт: flock → update repos → backup Postgres → compose build/up → healthcheck.
Медиа и Android APK
Медиа — Docker volume uploads (backend RW, frontend RO).
APK sideload: ./downloads → /app/downloads во frontend.
# с машины разработчика (postilga-mobile)
npm run android:release:publish
Bootstrap test (один раз)
mkdir -p ~/apps/postilga/test
cd ~/apps/postilga/test
git clone ssh://git@git.postilga.ru:2222/vladimir/postilga-deploy.git .
git clone ssh://git@git.postilga.ru:2222/vladimir/postilga-backend.git backend
git clone ssh://git@git.postilga.ru:2222/vladimir/postilga-frontend.git frontend
cd backend && git checkout -B testing origin/testing || git checkout -B testing main
cd ../frontend && git checkout -B testing origin/testing || git checkout -B testing main
cd ..
cp .env.example .env
# выставить test-порты/volume/prefix/URL из таблицы выше
mkdir -p downloads secrets backups
chmod +x deploy.sh
./deploy.sh --stack test --service all
Потом nginx + certbot для test.postilga.ru → 127.0.0.1:4020.
Миграция legacy → prod/
Не обязательно сразу. Когда будете готовы:
mkdir -p ~/apps/postilga
# осторожно: остановить контейнеры, перенести каталог в prod/,
# проверить volume names в .env, поднять ./deploy.sh --stack prod