- 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>
35 lines
1.5 KiB
TOML
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"
|