commit 37d42cebe7cf29c2fdc56504ef61c7e5e22310e3 Author: Thodi Date: Thu May 14 11:23:02 2026 +0200 Initaler Commit - Glados Docker YMLs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fdbf274 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Alles ignorieren +* + +# Außer compose files +!**/docker-compose.yml +!**/compose.yml + +# Und die gitignore selbst +!.gitignore diff --git a/dockerProxy/compose.yml b/dockerProxy/compose.yml new file mode 100644 index 0000000..506d2ba --- /dev/null +++ b/dockerProxy/compose.yml @@ -0,0 +1,40 @@ +services: + docker-proxy: + image: tecnativa/docker-socket-proxy + container_name: docker_proxy + restart: unless-stopped + environment: + - CONTAINERS=1 + - LOGS=1 + - STATS=1 + - NETWORKS=1 + - VOLUMES=1 + - IMAGES=1 + - EVENTS=1 + - INFO=1 + - VERSION=1 + - NODES=1 + - POST=0 + - DELETE=0 + - AUTH=0 + - SECRETS=0 + - SERVICES=0 + - TASKS=0 + - PLUGINS=0 + - PUID=1000 + - PGID=1000 + - TZ=Europe/Berlin + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: + - docker_proxy_net + ulimits: + nproc: 65535 + nofile: + soft: 65535 + hard: 65535 + +networks: + docker_proxy_net: + name: docker_proxy_net + driver: bridge diff --git a/dozzle/compose.yml b/dozzle/compose.yml new file mode 100644 index 0000000..6907aef --- /dev/null +++ b/dozzle/compose.yml @@ -0,0 +1,38 @@ +services: + dozzle: + image: amir20/dozzle:latest + container_name: dozzle + restart: unless-stopped + environment: + - TZ=Europe/Berlin + - DOZZLE_AUTH_PROVIDER=simple + - DOZZLE_REMOTE_HOST=tcp://docker_proxy:2375 + - DOZZLE_LEVEL=info + - TAILSIZE=300 + ports: + - 8866:8080 + volumes: + - /srv/docker/dozzle/data:/data + networks: + - docker_proxy_net + deploy: + resources: + limits: + cpus: '0.2' + memory: 256M + healthcheck: + test: ["CMD", "/dozzle", "healthcheck"] + interval: 30s + timeout: 30s + retries: 5 + start_period: 30s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +networks: + docker_proxy_net: + external: true + name: docker_proxy_net diff --git a/gitea/compose.yml b/gitea/compose.yml new file mode 100644 index 0000000..9ef60ea --- /dev/null +++ b/gitea/compose.yml @@ -0,0 +1,76 @@ +services: + gitea-db: + image: postgres:16 + container_name: gitea_db + restart: unless-stopped + environment: + - TZ=Europe/Berlin + - POSTGRES_USER=${GITEA_DB_USER} + - POSTGRES_PASSWORD=${GITEA_DB_PASSWORD} + - POSTGRES_DB=${GITEA_DB_NAME} + volumes: + - /srv/docker/gitea/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${GITEA_DB_USER}"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + deploy: + resources: + limits: + cpus: '1.0' + memory: 512M + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - TZ=Europe/Berlin + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=gitea-db:5432 + - GITEA__database__NAME=${GITEA_DB_NAME} + - GITEA__database__USER=${GITEA_DB_USER} + - GITEA__database__PASSWD=${GITEA_DB_PASSWORD} + - GITEA__server__DOMAIN=gitea.thodirr.net + - GITEA__server__ROOT_URL=http://192.168.178.35:3030 + - GITEA__server__SSH_DOMAIN=gitea.thodirr.net + - GITEA__server__SSH_PORT=2222 + volumes: + - /srv/docker/gitea/data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - 3030:3000 + - 2222:22 + depends_on: + gitea-db: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 60s + deploy: + resources: + limits: + cpus: '2.0' + memory: 1G + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +networks: + default: + name: gitea_net diff --git a/plex/compose.yml b/plex/compose.yml new file mode 100755 index 0000000..433c820 --- /dev/null +++ b/plex/compose.yml @@ -0,0 +1,57 @@ +services: + plex: + image: lscr.io/linuxserver/plex:latest + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + container_name: plex + network_mode: host + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Berlin + - VERSION=public + devices: + - /dev/dri:/dev/dri + volumes: + - /srv/docker/plex:/config + - /mnt/datengrab:/Datengrab + - /srv/docker/plex/tmp-transcode/:/transcode + - /srv/docker/plex/plex-tmp-downloads:/plex-tmp-downloads + - /mnt/usb1-2:/Datengrab_USB + restart: unless-stopped + + plex-db-backup: + container_name: plex_db_backup + image: keinos/sqlite3:latest + restart: always + user: "1000:100" + volumes: + - "/volume1/docker/plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases:/db_source:ro" + - "/volume1/docker/backups/plex:/backup" + # WICHTIG: Wir überschreiben den Entrypoint, damit wir eine Endlosschleife nutzen können + entrypoint: ["/bin/sh", "-c"] + command: > + "sleep 10; + while true; do + TIMESTAMP=$(date +%Y%m%d-%H%M); + BACKUP_FILE=/backup/plex_backup_$$TIMESTAMP.sql; + echo \"$(date): Starte Plex-Sicherung nach $$BACKUP_FILE...\"; + + # Nutzung des -readonly Flags statt URI + sqlite3 -readonly /db_source/com.plexapp.plugins.library.db \".backup $$BACKUP_FILE\"; + + if [ $? -eq 0 ]; then + echo \"$(date): Sicherung erfolgreich abgeschlossen.\"; + find /backup -name 'plex_backup_*.sql' -mmin +10080 -delete; + else + echo \"$(date): FEHLER beim Backup!\"; + # Falls eine leere Datei entstanden ist, löschen wir sie + [ -f \"$$BACKUP_FILE\" ] && [ ! -s \"$$BACKUP_FILE\" ] && rm \"$$BACKUP_FILE\"; + fi; + + echo \"$(date): Nächster Run in 24 Stunden.\"; + sleep 86400; + done" diff --git a/uptimekuma/compose.yml b/uptimekuma/compose.yml new file mode 100644 index 0000000..a3d08db --- /dev/null +++ b/uptimekuma/compose.yml @@ -0,0 +1,25 @@ +services: + uptime-kuma: + image: louislam/uptime-kuma:1 + container_name: uptime_kuma + restart: unless-stopped + ports: + - 3001:3001 + volumes: + - /srv/docker/uptimekuma/data:/app/data + deploy: + resources: + limits: + cpus: '0.5' + memory: 256M + healthcheck: + test: ["CMD", "extra/healthcheck"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" diff --git a/vikunja/compose.yml b/vikunja/compose.yml new file mode 100644 index 0000000..93b1fd5 --- /dev/null +++ b/vikunja/compose.yml @@ -0,0 +1,33 @@ +services: + vikunja-db: + image: mariadb:10 + container_name: vikunja_db + command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci + environment: + - TZ=Europe/Berlin + - MYSQL_ROOT_PASSWORD=${VIKUNJA_DB_ROOT_PASSWORD} + - MYSQL_USER=${VIKUNJA_DB_USER} + - MYSQL_PASSWORD=${VIKUNJA_DB_PASSWORD} + - MYSQL_DATABASE=${VIKUNJA_DB_NAME} + volumes: + - /srv/docker/vikunja/db:/var/lib/mysql + restart: unless-stopped + + vikunja: + image: vikunja/vikunja:latest + container_name: vikunja + ports: + - 3456:3456 + environment: + - TZ=Europe/Berlin + - VIKUNJA_DATABASE_HOST=vikunja-db + - VIKUNJA_DATABASE_TYPE=mysql + - VIKUNJA_DATABASE_USER=${VIKUNJA_DB_USER} + - VIKUNJA_DATABASE_PASSWORD=${VIKUNJA_DB_PASSWORD} + - VIKUNJA_DATABASE_NAME=${VIKUNJA_DB_NAME} + - VIKUNJA_SERVICE_PUBLICURL=https://vikunja.thodirr.net/ + volumes: + - /srv/docker/vikunja/files:/app/vikunja/files + depends_on: + - vikunja-db + restart: unless-stopped