# INFRASTRUCTURE.md — Hosts, Deploy, Git Operational context for Fränky's environments. Read with `AGENTS.md`. --- ## Overview | | | |---|---| | vServer | **`boka`** — Debian 12 (bookworm), Webtropia Cloud VPS | | SSH | `ssh frank-schwenk.de` (resolves to boka) | | Local dev | **Arch Linux** — desktop + laptop | | Reverse proxy | **Traefik** — external Docker network `traefik`, TLS via `myresolver` | | Git | **Gitea** — `ssh://git@gitea.schwenk.online:2222/froxxxy/.git` | | Server app paths | `/home/frank//` (e.g. `/home/frank/schwenk.online`) | | Shared services | Traefik, Gitea + Runner, Immich, Portainer — **treat as fragile** | | Separate hosting | **`0012.de`** — Plesk webspace, FTP deploy — **not** boka Docker | --- ## Repo → Server Mapping | Local repo (`~/git/froxxxy/`) | Server path | Domain | |-------------------------------|-------------|--------| | schwenkonline | `/home/frank/schwenk.online` | schwenk.online | | ytrecap | `/home/frank/ytrecap.schwenk.online` | ytrecap.schwenk.online | | bringtake | `/home/frank/bringtake.schwenk.online` | bringtake.schwenk.online | | vfbred | `/home/frank/vfb.red` | vfb.red | | f12rocks | `/home/frank/f12.rocks` | f12.rocks | | eselhoefede | `/home/frank/eselhoefe.de` | eselhoefe.de | | mobea | `/home/frank/mobea.de` | mobea.de | | fussballdeical | `/home/frank/fussballdeical.schwenk.online` | fussballdeical.schwenk.online | | takeyourmeds | `/home/frank/medis.schwenk.online` | medis.schwenk.online | | sboa | `/home/frank/affen.schwenk.online` | affen.schwenk.online | Paths follow the pattern: clone on server under `/home/frank/`, often named after the public domain. --- ## Deploy (default) **Fränky deploys** unless the project explicitly grants agent autonomy (project `SOUL.md`, `README`, or chat instruction). ### Typical boka flow ```bash ssh frank-schwenk.de cd /home/frank/ git pull # build step if needed (npm run build, docker build, …) docker compose up -d ``` Build-before-up varies by project (e.g. Astro: `npm run build` then nginx serves `dist/`). ### 0012.de (webspace) - FTP deploy via project scripts — see `0012` repo - External observer / monitoring of boka — do not assume same deploy path as VPS --- ## Traefik Conventions Standard labels on app containers: ```yaml traefik.enable=true traefik.http.routers..rule=Host(`example.schwenk.online`) traefik.http.routers..entrypoints=websecure traefik.http.routers..tls.certresolver=myresolver ``` Networks: attach services to external network `traefik` for public ingress. --- ## Gitea Actions / CI Gitea runner is available on boka. Example workflow: `schwenkonline/.gitea/workflows/deploy.yml` (build, Playwright smoke, SSH deploy). **Use Gitea Actions / auto-deploy only with explicit approval** — do not add or trigger CI/CD pipelines without Fränky's OK. --- ## Shared Infrastructure — Hands Off Do not casually change or restart: - Traefik (routes all public HTTPS) - Gitea (source of truth) - Immich (photo library) - Portainer See `BOUNDARIES.md` for hard limits on `docker compose down` and config edits. --- ## Project-local overrides Global paths live here. **Machine- and project-specific** details belong in project `SOUL.md`: - App workdirs (`~/.local/share/…`) - External drive mounts (verify before scan) - Local service ports (e.g. local Immich vs. Immich on `boka`) - Multi-stack repo layout (CLI core vs. `compose.yaml` experiments) Template for project `SOUL.md`: ```markdown ## Infrastructure (project-local) - Workdir: … - Mounts: … - Local services: … - Repo layout: … ``` Agent: read this SOUL section on Tier 1/2 startup when present.