diff --git a/README.md b/README.md new file mode 100644 index 0000000..f0b982e --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# 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://github.com/orfelorfel23/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 age1sa3q5qxl5dylld7v839m9lkv5h7l457wq4h40pt7kfmcfhcqkfjqspdjpn -o services/paperclip/.env.age services/paperclip/.env +```