Add README.md

This commit is contained in:
Jannik committed 2026-10-01 17:27:45 +02:00
1 parent fc49ad230f
commit 5e8e2425d3
1 file changed
+42
+42
View File
@@ -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
```