# 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=<token-with-package:write> make deploy-dmg   # server + Gitea Packages
  make publish-dmg GITEA_TOKEN=<token>                      # build + Gitea Packages only
  ```

  Published at `{GITEA_URL}/api/packages/{GITEA_OWNER}/generic/spacesh/<version>/spacesh-<version>.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).
