Files
2025-11-11 11:47:15 +01:00

88 lines
2.1 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ensure_root
detect_pkg_manager
pkg_install curl
echo ""
read -p "Instanz Nummer (z.B. 1, 2, 3...): " INSTANCE
BASE="/srv/docker/services/paperless-$INSTANCE"
$SUDO mkdir -p "$BASE/data" "$BASE/media" "$BASE/consume"
cd "$BASE"
PORT=$((8100 + INSTANCE))
echo "Web-Port wird: $PORT"
echo ""
echo "Paperless Variante:"
echo " 1) Paperless-NGX (ohne KI)"
echo " 2) Paperless-AI (mit KI/RAG)"
read -p "Auswahl (1/2): " MODE
if [[ "$MODE" == "2" ]]; then
read -p "KI Backend URL (z.B. http://127.0.0.1:11434): " AI_URL
read -p "Memory Server URL (z.B. http://127.0.0.1:8085): " MEMORY_URL
fi
echo ""
echo "Instanz $INSTANCE ersetzen ohne Daten zu löschen?"
read -p "(y/n): " REPLACE
if [[ "$REPLACE" =~ ^[Yy]$ ]]; then
$SUDO docker compose down || true
fi
if [[ "$MODE" == "1" ]]; then
cat > docker-compose.yml <<EOF
services:
paperless-$INSTANCE:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless-$INSTANCE
restart: unless-stopped
ports:
- "$PORT:8000"
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./consume:/usr/src/paperless/consume
environment:
TZ=Europe/Berlin
EOF
fi
if [[ "$MODE" == "2" ]]; then
cat > docker-compose.yml <<EOF
services:
paperless-$INSTANCE:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless-$INSTANCE
restart: unless-stopped
ports:
- "$PORT:8000"
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./consume:/usr/src/paperless/consume
environment:
TZ=Europe/Berlin
paperless-ai-$INSTANCE:
image: clusterzx/paperless-ai:latest
container_name: paperless-ai-$INSTANCE
restart: unless-stopped
environment:
PAPERLESS_AI_OPENAI_API_BASE_URL: "$AI_URL"
PAPERLESS_AI_EMBEDDING_MODEL: "nomic-embed-text"
PAPERLESS_AI_CHAT_MODEL: "qwen2.5:0.5b"
PAPERLESS_AI_MEMORY_SERVER_URL: "$MEMORY_URL"
TZ: Europe/Berlin
EOF
fi
$SUDO docker compose up -d
echo ""
echo "✅ Instanz $INSTANCE installiert!"
echo "Web UI: http://<server-ip>:$PORT"