Update topology: non-prod stages on the VPS, Prod host decided at go-live

Kickoff update by the project owner: test.dorfteich.cloud and
int.dorfteich.cloud run on the VPS 188.245.116.44 (DNS for
*.dorfteich.cloud and *.dorfteich.online already points there); the
Prod host for dorfteich.online is chosen at go-live. Dev runs locally
via Docker. Affects deployment.md, roadmap.md, and ADR 0014; the
matching Gitea issues (#8, #9, #87, #89) were updated in place.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Claude Fable 5 2026-07-04 15:20:58 +02:00
parent 0629411966
commit 6517c8fb71
3 changed files with 19 additions and 14 deletions

View File

@ -7,15 +7,17 @@
The project is hosted on a self-managed Gitea (`gitea.101010.cloud`).
Environments (kickoff): Dev runs locally on contributors' machines;
Test, Int, and Prod run as separate Compose stacks on the LEISINGER host
initially, with Prod moving to a dedicated host at go-live (architecture
must keep that move cheap). Contributors include AI coding sessions —
gates must be automated and objective wherever possible.
Test and Int run as separate Compose stacks on the operator's VPS
(`188.245.116.44`, domains `test.dorfteich.cloud` / `int.dorfteich.cloud`);
the Prod host (`dorfteich.online`) is decided at go-live — the VPS or a
dedicated host — so the architecture must keep that choice and any later
move cheap. Contributors include AI coding sessions — gates must be
automated and objective wherever possible.
## Decision
- **Gitea Actions** is the CI/CD system (GitHub-Actions-compatible syntax);
an act_runner runs on LEISINGER with Docker access.
an act_runner runs on the VPS (`188.245.116.44`) with Docker access.
- **Images** are built once per change and promoted, never rebuilt per
stage: pushed to the **Gitea container registry**
(`gitea.101010.cloud/stwaidele/dorfteich-{web,api,collab}`), tagged with

View File

@ -1,9 +1,11 @@
# Deployment architecture
Four stages, one Compose definition. Foundational decisions: ADR 0014
(CI/CD), ADR 0015 (backup), kickoff topology decision (Dev local; Test, Int,
Prod on the LEISINGER host initially; Prod moves to a dedicated host at
go-live).
(CI/CD), ADR 0015 (backup), kickoff topology decision (Dev local on the
developer's machine; Test and Int on the operator's VPS `188.245.116.44`;
the Prod host is decided at go-live — the architecture must keep that
choice and any later move cheap). DNS status: `*.dorfteich.online` and
`*.dorfteich.cloud` already point to the VPS.
## The Compose stack
@ -40,10 +42,10 @@ Self-hosters without a proxy can enable the optional `caddy` Compose profile
| Stage | Where | Domain | Purpose | Data |
| --- | --- | --- | --- | --- |
| **Dev** | contributor machine | `localhost` | feature work; hot reload via `compose.dev.yml` overlay (source mounts, vite dev server) | fixtures/seed script |
| **Test** | LEISINGER, `/home/DOCKER/dorfteich-test/` | `dorfteich-test.101010.cloud` | auto-deploy target of `main`; e2e suite runs here | reset-able; seeded |
| **Int** | LEISINGER, `/home/DOCKER/dorfteich-int/` | `dorfteich-int.101010.cloud` | stable preview; manual/exploratory testing; release candidates | persistent test data |
| **Prod** | LEISINGER initially → dedicated host at go-live | `dorfteich.online` | public flagship instance | real data; full backup + mirror |
| **Dev** | contributor machine (e.g. the operator's MacBook), Docker Desktop | `localhost` | feature work; hot reload via `compose.dev.yml` overlay (source mounts, vite dev server) | fixtures/seed script |
| **Test** | VPS `188.245.116.44`, `/home/DOCKER/dorfteich-test/` | `test.dorfteich.cloud` | auto-deploy target of `main`; e2e suite runs here | reset-able; seeded |
| **Int** | VPS `188.245.116.44`, `/home/DOCKER/dorfteich-int/` | `int.dorfteich.cloud` | stable preview; manual/exploratory testing; release candidates | persistent test data |
| **Prod** | host decided at go-live (M8): the VPS or a dedicated host | `dorfteich.online` | public flagship instance | real data; full backup + mirror |
Stage layout follows the operator's Docker host convention:
compose file + `.env` under `/home/DOCKER/dorfteich-<stage>/`, bulk data

View File

@ -14,9 +14,10 @@ Goal: empty but deployed. Monorepo scaffold (pnpm, ESLint/Prettier, Vitest,
Playwright), NestJS api with `/healthz` + Prisma + first migration, React
SPA shell with routing + i18n scaffold (ADR 0012), Dockerfiles + Compose
stack + dev overlay, Gitea Actions pipeline (lint/test/build → images →
deploy Test → e2e smoke → promote Int), stage setup on LEISINGER.
deploy Test → e2e smoke → promote Int), stage setup on the VPS
(`188.245.116.44`).
**Exit criterion**: a commit to `main` automatically reaches
`dorfteich-test.101010.cloud` and shows a styled "hello" shell.
`test.dorfteich.cloud` and shows a styled "hello" shell.
## M1 — Accounts & authentication (`auth`, `backend`, `frontend`)