88 lines
2.1 KiB
Bash
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"
|