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:
parent
0629411966
commit
6517c8fb71
@ -7,15 +7,17 @@
|
|||||||
|
|
||||||
The project is hosted on a self-managed Gitea (`gitea.101010.cloud`).
|
The project is hosted on a self-managed Gitea (`gitea.101010.cloud`).
|
||||||
Environments (kickoff): Dev runs locally on contributors' machines;
|
Environments (kickoff): Dev runs locally on contributors' machines;
|
||||||
Test, Int, and Prod run as separate Compose stacks on the LEISINGER host
|
Test and Int run as separate Compose stacks on the operator's VPS
|
||||||
initially, with Prod moving to a dedicated host at go-live (architecture
|
(`188.245.116.44`, domains `test.dorfteich.cloud` / `int.dorfteich.cloud`);
|
||||||
must keep that move cheap). Contributors include AI coding sessions —
|
the Prod host (`dorfteich.online`) is decided at go-live — the VPS or a
|
||||||
gates must be automated and objective wherever possible.
|
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
|
## Decision
|
||||||
|
|
||||||
- **Gitea Actions** is the CI/CD system (GitHub-Actions-compatible syntax);
|
- **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
|
- **Images** are built once per change and promoted, never rebuilt per
|
||||||
stage: pushed to the **Gitea container registry**
|
stage: pushed to the **Gitea container registry**
|
||||||
(`gitea.101010.cloud/stwaidele/dorfteich-{web,api,collab}`), tagged with
|
(`gitea.101010.cloud/stwaidele/dorfteich-{web,api,collab}`), tagged with
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
# Deployment architecture
|
# Deployment architecture
|
||||||
|
|
||||||
Four stages, one Compose definition. Foundational decisions: ADR 0014
|
Four stages, one Compose definition. Foundational decisions: ADR 0014
|
||||||
(CI/CD), ADR 0015 (backup), kickoff topology decision (Dev local; Test, Int,
|
(CI/CD), ADR 0015 (backup), kickoff topology decision (Dev local on the
|
||||||
Prod on the LEISINGER host initially; Prod moves to a dedicated host at
|
developer's machine; Test and Int on the operator's VPS `188.245.116.44`;
|
||||||
go-live).
|
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
|
## The Compose stack
|
||||||
|
|
||||||
@ -40,10 +42,10 @@ Self-hosters without a proxy can enable the optional `caddy` Compose profile
|
|||||||
|
|
||||||
| Stage | Where | Domain | Purpose | Data |
|
| 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 |
|
| **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** | LEISINGER, `/home/DOCKER/dorfteich-test/` | `dorfteich-test.101010.cloud` | auto-deploy target of `main`; e2e suite runs here | reset-able; seeded |
|
| **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** | LEISINGER, `/home/DOCKER/dorfteich-int/` | `dorfteich-int.101010.cloud` | stable preview; manual/exploratory testing; release candidates | persistent test data |
|
| **Int** | VPS `188.245.116.44`, `/home/DOCKER/dorfteich-int/` | `int.dorfteich.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 |
|
| **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:
|
Stage layout follows the operator's Docker host convention:
|
||||||
compose file + `.env` under `/home/DOCKER/dorfteich-<stage>/`, bulk data
|
compose file + `.env` under `/home/DOCKER/dorfteich-<stage>/`, bulk data
|
||||||
|
|||||||
@ -14,9 +14,10 @@ Goal: empty but deployed. Monorepo scaffold (pnpm, ESLint/Prettier, Vitest,
|
|||||||
Playwright), NestJS api with `/healthz` + Prisma + first migration, React
|
Playwright), NestJS api with `/healthz` + Prisma + first migration, React
|
||||||
SPA shell with routing + i18n scaffold (ADR 0012), Dockerfiles + Compose
|
SPA shell with routing + i18n scaffold (ADR 0012), Dockerfiles + Compose
|
||||||
stack + dev overlay, Gitea Actions pipeline (lint/test/build → images →
|
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
|
**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`)
|
## M1 — Accounts & authentication (`auth`, `backend`, `frontend`)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user