No results
3
Infrastruktur
SurfaceScratcher edited this page 2026-05-18 07:41:00 +02:00
Infrastruktur
Server
| Server | Typ | Zweck |
|---|---|---|
| Produktions-Server | VDS (78 GB, 1 vCPU) | Alle Dienste inkl. CI/CD |
| (geplant) Raspberry Pi 5 | ARM64 | Android-CI-Builds |
Hinweis: Der CI-Server hat begrenzte Disk-Kapazität (78 GB). Docker-Images und Forgejo-Packages müssen regelmäßig bereinigt werden.
Dienste (selbst gehostet)
| Dienst | URL | Zweck |
|---|---|---|
| Forgejo | git.mrrm.de |
Git + Container Registry + Wiki |
| Drone CI | ci.mrrm.de |
CI/CD Pipelines |
| Keycloak | auth.mrrm.de |
Identity Provider |
| Traefik | intern | Reverse Proxy + TLS |
| Portainer | intern | Docker Management |
| Grafana + Prometheus | intern | Monitoring |
| Loki | intern | Log-Aggregation |
| Uptime Kuma | intern | Uptime-Monitoring |
Container Registry
Images in der Forgejo-eigenen Registry:
git.mrrm.de/admin-mrrm/mrrmlabapp/api:latest
git.mrrm.de/admin-mrrm/mrrmlabapp/web:latest
git.mrrm.de/admin-mrrm/mrrmlabapp/ocr:latest
git.mrrm.de/admin-mrrm/mrrmlabapp/android-builder:latest
git.mrrm.de/admin-mrrm/mrrmlabapp/fdroid-server:latest
Nur latest-Tags werden behalten (kein SHA-Tagging) um Speicher zu sparen.
Disk-Space-Management
Wenn der Server voll läuft:
# Docker-Images bereinigen
docker image prune -a
# Alte Package-Versionen in Forgejo löschen (via API)
# → Siehe CI/CD-Wiki für Cleanup-Skript
# Gitea tmp bereinigen
sudo rm -rf /var/lib/docker/volumes/gitea_gitea-data/_data/gitea/tmp/*
# Ungenutzte Volumes
docker volume prune
Swap
Auf dem CI-Server ist eine /swapfile-ci (4 GB) für speicherintensive Builds eingerichtet.
F-Droid Server
Setup-Dokumentation: infra/fdroid/SETUP.md
Pfade auf dem Server:
/opt/server-stack/hosts/prod-alt/mrrmlabapp/fdroid/
config.yml # fdroidserver-Konfiguration (enthält Keystore-Passwort!)
keystore.p12 # F-Droid Repo-Signing-Key (NICHT der App-Signing-Key)
repo/ # Signierte APKs + generierter Index
metadata/ # App-Metadaten + Changelogs
update.sh # Script: fdroid update + Cleanup
nginx.conf # Nginx-Konfiguration
Backup & Restore
- restic → QNAP (
sftp:qnap-backup:/share/Backup - Server/restic-repo), täglicher Timer (03:30), geteiltes Repo mit Host-Tagging - QNAP-NAS ist tagsüber ausgeschaltet, startet nur fürs nächtliche Backup-Fenster —
resticq-Operationen tagsüber schlagen mitNo route to hostfehl - mrrmlabapp-DB-Backup + Restore-Test: siehe Restore-Mrrmlabapp-DB
- Paperless-Backup + Restore-Test: siehe Restore-Paperless