# CI/CD (Gitea Actions) – Auto Deploy ## Goal Every push to `main` should: - sync the repo to the production server - build Docker images on the server - restart containers - run health checks This repository uses a **remote SSH deployment** from Gitea Actions. ## Required Gitea Actions Secrets Configure these in Gitea: **Repo → Settings → Actions → Secrets** ### Deployment (SSH) - `DEPLOY_HOST` – production server IP/hostname - `DEPLOY_USER` – SSH user (e.g. `administrator`) - `DEPLOY_PATH` – absolute path where the repo is synced on the server (e.g. `/home/administrator/pounce`) - `DEPLOY_SSH_KEY` – private key for SSH access - `DEPLOY_SUDO_PASSWORD` – sudo password for `DEPLOY_USER` (used non-interactively) ### App Secrets (Backend) Used to generate `/data/pounce/env/backend.env` on the server. - `DATABASE_URL` - `SECRET_KEY` - `SMTP_PASSWORD` - `STRIPE_SECRET_KEY` - `STRIPE_WEBHOOK_SECRET` - `GOOGLE_CLIENT_SECRET` - `GH_OAUTH_SECRET` - `CZDS_USERNAME` - `CZDS_PASSWORD` ## Server Requirements - `sudo` installed - `docker` installed - `DEPLOY_USER` must be able to run docker via `sudo` (pipeline uses `sudo -S docker ...`) ## Notes - Secrets are written to `/data/pounce/env/backend.env` on the server with restricted permissions. - Frontend build args are supplied in the workflow (`NEXT_PUBLIC_API_URL`, `BACKEND_URL`). ## Trigger This file change triggers CI. - runner dns fix validation - redeploy after runner fix - runner re-register