43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# 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 <DEIN_AGE_PUBLIC_KEY> -o services/paperclip/.env.age services/paperclip/.env
|
|
```
|