Files
craftvia/deploy/garage.toml
msolarczekandClaude Opus 5 cadaedc6cc L10b Betrieb & Aufräumen: Deploy – craftvia-worker, CI-Testjob, DEPLOY.md, Certvia-Doku archiviert
- docker-compose.coolify(.prebuilt).yml: Service craftvia-worker (Target worker, Chromium,
  shm_size 1gb, gleiche Härtung), Craftvia-Variablen für app und worker.
- Dockerfile: worker-Stage mit HOME=/home/app (Chromium-Profil für non-root); lokaler
  docker build der Targets runner und worker erfolgreich, PDF-Erzeugung im Image geprüft.
- .env.example/.env.prod.example/.env.coolify.example: alle Craftvia-Variablen inkl. RLS,
  KI-Provider, PDF_CHROMIUM_PATH, OFFLINE_MAX_DAYS, API_RATE_LIMIT_*, AI_GENERATION_RETENTION_DAYS,
  AI_MONTHLY_TOKEN_LIMIT.
- CI (.github, .gitea): Job gate mit Postgres (pgvector) und Redis als Service: migrate deploy,
  seed, Passwort für craftvia_app, tsc, lint, build, npm run test.
- docs/craftvia/DEPLOY.md (aus den Certvia-Deploy-Docs abgeleitet): Architektur, Domains, Secrets,
  Worker, Migrationen, RLS-Aktivierung, Backup/Restore, KI, Rate Limits, Aufbewahrung, Smoke,
  Update/Rollback. build-and-push-images.sh baut craftvia-worker.
- Certvia-/ISMS-Dokumente aus docs/ nach docs/_certvia-archiv/ (mit README); Verweise in README.md
  und Skript-Kommentaren angepasst.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 18:19:19 +02:00

35 lines
1.5 KiB
TOML

# Garage-Objektspeicher — Basiskonfiguration (Single-Node pro Environment).
# Gehört zur MinIO→Garage-Migration, siehe docs/_certvia-archiv/KONZEPT-garage-migration.md (§5).
#
# WICHTIG — KEINE Secrets in dieser Datei (sie ist im Repo eingecheckt):
# rpc_secret ← wird zur Laufzeit aus GARAGE_RPC_SECRET gelesen
# admin_token ← wird zur Laufzeit aus GARAGE_ADMIN_TOKEN gelesen
# Der Garage-Daemon übernimmt beide Werte aus der Umgebung (Coolify-Env). Beide
# NICHT über ${…} referenzieren, sondern literal in Coolify setzen (Interpolationsfalle).
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
# LMDB-Metadaten-Engine (Default, robust für Single-Node).
db_engine = "lmdb"
# Single-Node: eine Kopie (D5). Multi-Node/Replikation ist eine spätere Ausbaustufe.
replication_factor = 1
# RPC nur clusterintern. rpc_public_addr = loopback genügt für den Single-Node:
# das Provisioning spricht die Admin-API (HTTP 3903), nicht den RPC-Port — es braucht
# daher keine dienstübergreifende RPC-Adresse. Hält zugleich den `garage status`-
# Healthcheck (verbindet auf rpc_public_addr) unabhängig von Compose-DNS.
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
[s3_api]
# Region beidseitig us-east-1 (D2) — deckt sich mit dem App-Default (S3_REGION).
s3_region = "us-east-1"
api_bind_addr = "[::]:3900"
[admin]
# Admin-API (Bucket-/Key-/Layout-Verwaltung, /health). Nur clusterintern, admin_token
# aus der Env. 3902 (Web) wird nicht benötigt und bewusst nicht gebunden.
api_bind_addr = "[::]:3903"