# Deploy — spaceshell.ru Front nginx (`proxy`) → landing container, plus `/download/spacesh.dmg`. ## Layout on the server (`$SSH_REMOTE_DIR`, e.g. `/opt/spacesh`) ``` docker-compose.yaml # synced by CI proxy.conf # synced by CI download/spacesh.dmg # uploaded locally via `make deploy-dmg` ``` ## One-time server setup ```bash # The landing image lives in a private registry — log the server in once: docker login git.realmanual.ru mkdir -p $SSH_REMOTE_DIR/download ``` ## What runs where - **Landing image + compose deploy** → automatic in `.gitea/workflows/build.yaml` on push to `landing/**`. CI builds/pushes the image, scps `deploy/*` to the server, then `docker compose pull && up -d`. - **DMG** → built on macOS, uploaded by hand: `make deploy-dmg` (sets the stable `download/spacesh.dmg`). Tauri can't build a macOS bundle in CI. The same command also publishes a **versioned** copy to the Gitea package registry (`Packages` tab) when `GITEA_TOKEN` is set: ```bash GITEA_TOKEN= make deploy-dmg # server + Gitea Packages make publish-dmg GITEA_TOKEN= # build + Gitea Packages only ``` Published at `{GITEA_URL}/api/packages/{GITEA_OWNER}/generic/spacesh//spacesh-.dmg` (override `GITEA_URL`/`GITEA_OWNER`/`GITEA_PKG` if needed). Version comes from `tauri.conf.json`, bumped on every `make dmg`. Without `GITEA_TOKEN` the publish step is skipped (server copy still happens). ## Gitea secrets required `SSH_HOST`, `SSH_USER`, `SSH_REMOTE_DIR`, `SSH_KEY` (private key, key-based auth).