# PaperClip PaperClip ist eine Plattform zur Orchestrierung von KI-Agenten, die über Docker und Caddy betrieben wird. Dieses Repository enthält die Infrastruktur, um PaperClip inklusive Caddy (Reverse-Proxy) und einer Postgres-Datenbank auf einem neuen Server auszurollen. ## Architektur * **Reverse Proxy:** Caddy * **Datenbank:** Postgres 17 * **Anwendung:** PaperClip (via `ghcr.io/paperclipai/paperclip:latest`) Alle Volumes werden als lokale Mounts unter `/opt/PaperClip-Data/` auf dem Host abgelegt. ## Installation & Deployment Um das System auf einem neuen Server (z. B. Hetzner CX23) aufzusetzen, klone das Repository nach `/opt/PaperClip` und führe das Master-Deployment-Skript als `root` aus. ```bash # Repository klonen sudo mkdir -p /opt/PaperClip sudo git clone https://git.orfel.de/Jannik/PaperClip.git /opt/PaperClip # Setup & Deploy sudo bash /opt/PaperClip/deploy_script.sh ``` Das Skript ist idempotent und kümmert sich um: * Die Installation von Docker, age und fail2ban. * Das Einrichten des Swaps und der Cronjobs (für automatische Updates). * Das Entschlüsseln der `.env`-Dateien mit age. * Das Starten von Caddy, Postgres und PaperClip. ## Umgebungsvariablen hinzufügen oder ändern Die Umgebungsvariablen liegen lokal unter `services/paperclip/.env`. Da dieses File per `.gitignore` ausgeschlossen ist (aus Sicherheitsgründen), wird stattdessen `.env.age` in das Repository gepusht. Sobald du Änderungen an deiner lokalen `.env` machst, musst du diese neu verschlüsseln, bevor du den Commit erstellst: ```bash age -r -o services/paperclip/.env.age services/paperclip/.env ```