Reorganised deployment scripts and added rollback functionality. Updated documentation and workflow for container image builds.
This commit is contained in:
@@ -68,9 +68,17 @@ Die produktive Infrastruktur besteht aus einem Hetzner-Server, einer festen
|
||||
IPv4, Firewall und einem persistenten Volume. Der Docker-Stack enthält nur die
|
||||
App, Nginx/Certbot und den Wartungscontainer für Deutschland- und
|
||||
Niederlande-Routendaten; Kartenkacheln werden nicht selbst gehostet.
|
||||
Gitea Actions testet jeden Stand und veröffentlicht App und
|
||||
Routingdaten-Builder für Commits auf `main` als Container-Images. Der
|
||||
Produktionsserver klont keinen Quellcode und baut keine Anwendung.
|
||||
|
||||
Die beiden lokalen, von Git ignorierten Konfigurationsdateien sind bereits
|
||||
angelegt:
|
||||
Die beiden lokalen, von Git ignorierten Konfigurationsdateien werden aus ihren
|
||||
Vorlagen angelegt:
|
||||
|
||||
```bash
|
||||
cp infra/opentofu/terraform.tfvars.example infra/opentofu/terraform.tfvars
|
||||
cp deploy/.env.production.example deploy/.env.production
|
||||
```
|
||||
|
||||
- `infra/opentofu/terraform.tfvars`: hier den Hetzner-Cloud-Read/Write-Token
|
||||
eintragen und `admin_cidrs` bei Bedarf auf die aktuelle öffentliche IP
|
||||
@@ -89,19 +97,26 @@ tofu output server_ipv4
|
||||
cd ../..
|
||||
```
|
||||
|
||||
Sobald `server_ipv4` ausgegeben wurde, kann der manuelle DNS-A-Record
|
||||
Vor dem ersten Deployment müssen Gitea Actions, ein Docker-fähiger Runner sowie
|
||||
die Action-Secrets `REGISTRY_USERNAME` und `REGISTRY_TOKEN` eingerichtet sein.
|
||||
Der Token benötigt Schreibzugriff auf Packages. Sobald `server_ipv4` ausgegeben
|
||||
wurde, kann der manuelle DNS-A-Record
|
||||
`watermaps.incoso.eu` auf diese IPv4 gesetzt werden. Das erste Deployment darf
|
||||
bereits vor der DNS-Propagation laufen:
|
||||
bereits vor der DNS-Propagation laufen, sobald die Action die Images des
|
||||
aktuellen Commits veröffentlicht hat:
|
||||
|
||||
```bash
|
||||
./deploy/scripts/upload-and-deploy.sh \
|
||||
WATERMAPS_REGISTRY_USERNAME=kevin_janssen \
|
||||
WATERMAPS_REGISTRY_TOKEN='<read-only-package-token>' \
|
||||
./deploy/scripts/upload-and-deploy.sh \
|
||||
--identity ~/.ssh/watermaps_hetzner_ed25519
|
||||
```
|
||||
|
||||
Dabei werden die vollständigen Geofabrik-Extrakte für Deutschland und die
|
||||
Niederlande auf dem persistenten Server-Volume geladen und der lokale
|
||||
Routingindex erstellt. Vor dem SSL-Livegang liefert Port 80 außer
|
||||
ACME-Challenges nur 404.
|
||||
Der Registry-Token wird nur an `docker login --password-stdin` übertragen und
|
||||
nicht Teil der Projektkonfiguration. Das Skript überträgt ausschließlich die
|
||||
Deployment-Dateien. Der Server zieht die commitgenauen Images, fixiert deren
|
||||
Digests und lädt beim ersten Start die Geofabrik-Extrakte auf das persistente
|
||||
Volume. Vor dem SSL-Livegang liefert Port 80 außer ACME-Challenges nur 404.
|
||||
|
||||
Erst wenn der DNS-A-Record propagiert ist, wird HTTPS mit dem finalen manuellen
|
||||
Befehl aktiviert:
|
||||
|
||||
Reference in New Issue
Block a user