Scaffold nginx + deploy-hook stack for playground.schwenk.online, Gitea cursor workflow, directory-based public/ content, and boka bootstrap via git clone. Co-authored-by: Cursor <cursoragent@cursor.com>
3.7 KiB
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/<repo>.git |
| Server app paths | /home/frank/<domain>/ (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 |
| playground | /home/frank/playground.schwenk.online |
playground.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
ssh frank-schwenk.de
cd /home/frank/<project>
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
0012repo - External observer / monitoring of boka — do not assume same deploy path as VPS
Traefik Conventions
Standard labels on app containers:
traefik.enable=true
traefik.http.routers.<name>.rule=Host(`example.schwenk.online`)
traefik.http.routers.<name>.entrypoints=websecure
traefik.http.routers.<name>.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.yamlexperiments)
Template for project SOUL.md:
## Infrastructure (project-local)
- Workdir: …
- Mounts: …
- Local services: …
- Repo layout: …
Agent: read this SOUL section on Tier 1/2 startup when present.