Add initial docker-compose.yml files to git

This commit is contained in:
Stefan Heyn 2026-02-04 18:24:22 +00:00
commit f368da8bf9
7 changed files with 233 additions and 0 deletions

23
.gitignore vendored Normal file
View file

@ -0,0 +1,23 @@
.env
portainer_data
# Environment Files (alle .env im Projekt)
*.env
# Docker Named Volumes / Datenverzeichnisse
*_data/
*-data/
data/
logs/
mysql/
postgres_data/
n8n_data/
letsencrypt/
# Logs
*.log
# Temporäre Dateien
*.tmp
.DS_Store
Thumbs.db

View file

@ -0,0 +1,60 @@
version: '3.8'
services:
forgejo:
image: codeberg.org/forgejo/forgejo:10.0.0-rootless # Rootless = sicherer
container_name: forgejo
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432
- GITEA__database__NAME=forgejo
- GITEA__database__USER=forgejo
- GITEA__database__PASSWD=${DB_PASSWORD}
- GITEA__server__DOMAIN=${DOMAIN_NAME}
- GITEA__server__ROOT_URL=https://${DOMAIN_NAME}/
- GITEA__server__HTTP_PORT=3000
- GITEA__server__SSH_DOMAIN=${DOMAIN_NAME}
- GITEA__server__SSH_PORT=222
- TZ=${TIMEZONE}
volumes:
- forgejo_data:/data
- /etc/timezone:/etc/timezone:ro
ports:
- "3000:3000" # Web UI
- "222:22" # SSH (nicht 22, da Host SSH läuft!)
depends_on:
postgres:
condition: service_healthy
networks:
- forgejo-net
- npm-network
postgres:
image: postgres:16-alpine
container_name: forgejo-db
restart: unless-stopped
environment:
- POSTGRES_USER=forgejo
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=forgejo
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U forgejo -d forgejo"]
interval: 10s
retries: 5
networks:
- forgejo-net
volumes:
forgejo_data:
postgres_data:
networks:
forgejo-net:
internal: true
npm-network:
external: true

64
n8n/docker-compose.yml Normal file
View file

@ -0,0 +1,64 @@
version: '3.8'
services:
n8n:
image: n8nio/n8n:1.76.1 # Aktuelle stabile Version (Pinning empfohlen!)
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=${TIMEZONE}
- TZ=${TIMEZONE}
# Datenbank-Verbindung
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${DB_NAME}
- DB_POSTGRESDB_USER=${DB_USER}
- DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
# Webhook/Proxy Settings (Wichtig für externe Erreichbarkeit)
- N8N_HOST=${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${DOMAIN_NAME}/
# Auto-Cleanup (Verhindert Datenbank-Explosion)
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=336 # Behalte Daten für 14 Tage (336 Stunden)
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000 # Max 50k Einträge
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
networks:
- n8n-net
- npm-network
postgres:
image: postgres:16-alpine # Neueste stabile Postgres Version
container_name: n8n-db
restart: always
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 5
networks:
- n8n-net
volumes:
n8n_data:
postgres_data:
networks:
n8n-net:
internal: true
npm-network:
external: true

18
npm/docker-compose.yml Normal file
View file

@ -0,0 +1,18 @@
services:
app:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- 80:80
- 81:81
- 443:443
volumes:
- ./data:/data # Hier liegt Ihre database.sqlite drin!
- ./letsencrypt:/etc/letsencrypt
networks:
- npm-network
networks:
npm-network:
external: true

View file

@ -0,0 +1,26 @@
version: '3.8'
services:
documentserver:
image: onlyoffice/documentserver:8.3.0 # Pinne Version statt 'latest'
container_name: onlyoffice-documentserver
restart: unless-stopped
ports:
- "8084:80"
environment:
- JWT_ENABLED=${JWT_ENABLED}
- JWT_SECRET=${JWT_SECRET}
- JWT_HEADER=${JWT_HEADER}
- JWT_IN_BODY=${JWT_IN_BODY}
- TZ=${TIMEZONE}
# OnlyOffice braucht oft etwas mehr Ressourcen für Rendering
deploy:
resources:
limits:
memory: 2G # Optional: Begrenzt RAM-Nutzung
networks:
- npm-network # Für NPM-Proxy
networks:
npm-network:
external: true

View file

@ -0,0 +1,16 @@
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- portainer_data:/data
ports:
- 9443:9443
volumes:
portainer_data:

26
spdf/docker-compose.yml Normal file
View file

@ -0,0 +1,26 @@
version: '3.8'
services:
stirling-pdf:
image: frooodle/s-pdf:0.44.1 # Beispiel: stabile Version pinnen, nicht 'latest'
container_name: stirling-pdf
restart: unless-stopped
ports:
- "9080:8080"
environment:
# Nur wenn du wirklich zusätzliche Security-Features deaktivieren willst
- DOCKER_ENABLE_SECURITY=${DOCKER_ENABLE_SECURITY}
- TZ=${TIMEZONE}
volumes:
# Named Volumes für persistente Daten / Konfiguration
- s-pdf-trainingData:/usr/share/tesseract-ocr/4.00/tessdata
- s-pdf-extraConfigs:/configs
- s-pdf-customFiles:/customFiles
# Optional leichte Härtung
security_opt:
- no-new-privileges:true
volumes:
s-pdf-trainingData:
s-pdf-extraConfigs:
s-pdf-customFiles: