diff --git a/gitea-runner/docker-compose-multi.yml b/gitea-runner/docker-compose-multi.yml index 0c306f5..925853b 100644 --- a/gitea-runner/docker-compose-multi.yml +++ b/gitea-runner/docker-compose-multi.yml @@ -1,61 +1,42 @@ -# Gitea Multiple Actions Runners Configuration services: - # First Gitea Runner Instance gitea_runner1: - # Basic container configuration container_name: gitea_runner1 image: docker.io/gitea/act_runner:0.2.12 restart: unless-stopped - - # Runner configuration environment variables environment: - CONFIG_FILE: /config.yaml # Path to configuration file - GITEA_INSTANCE_URL: "${INSTANCE_URL}" # URL of Gitea instance - GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" # Registration token - GITEA_RUNNER_NAME: "${RUNNER_NAME1}" # Display name for first runner - - # Persistent storage and docker socket configuration + CONFIG_FILE: /config.yaml + GITEA_INSTANCE_URL: "${INSTANCE_URL}" + GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" + GITEA_RUNNER_NAME: "${RUNNER_NAME1}" volumes: - - ./config.yaml:/config.yaml # Shared configuration file - - ./data1:/data # Dedicated data directory for runner1 - - /var/run/docker.sock:/var/run/docker.sock # Docker socket for container jobs + - ./config.yaml:/config.yaml + - ./data1:/data + - /var/run/docker.sock:/var/run/docker.sock - # Second Gitea Runner Instance gitea_runner2: - # Basic container configuration container_name: gitea_runner2 image: docker.io/gitea/act_runner:0.2.12 restart: unless-stopped - - # Runner configuration environment variables environment: - CONFIG_FILE: /config.yaml # Path to configuration file - GITEA_INSTANCE_URL: "${INSTANCE_URL}" # URL of Gitea instance - GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" # Registration token - GITEA_RUNNER_NAME: "${RUNNER_NAME2}" # Display name for second runner - - # Persistent storage and docker socket configuration + CONFIG_FILE: /config.yaml + GITEA_INSTANCE_URL: "${INSTANCE_URL}" + GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" + GITEA_RUNNER_NAME: "${RUNNER_NAME2}" volumes: - - ./config.yaml:/config.yaml # Shared configuration file - - ./data2:/data # Dedicated data directory for runner2 - - /var/run/docker.sock:/var/run/docker.sock # Docker socket for container jobs + - ./config.yaml:/config.yaml + - ./data2:/data + - /var/run/docker.sock:/var/run/docker.sock - # Third Gitea Runner Instance gitea_runner3: - # Basic container configuration container_name: gitea_runner3 image: docker.io/gitea/act_runner:0.2.12 restart: unless-stopped - - # Runner configuration environment variables environment: - CONFIG_FILE: /config.yaml # Path to configuration file - GITEA_INSTANCE_URL: "${INSTANCE_URL}" # URL of Gitea instance - GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" # Registration token - GITEA_RUNNER_NAME: "${RUNNER_NAME3}" # Display name for third runner - - # Persistent storage and docker socket configuration + CONFIG_FILE: /config.yaml + GITEA_INSTANCE_URL: "${INSTANCE_URL}" + GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" + GITEA_RUNNER_NAME: "${RUNNER_NAME3}" volumes: - - ./config.yaml:/config.yaml # Shared configuration file - - ./data3:/data # Dedicated data directory for runner3 - - /var/run/docker.sock:/var/run/docker.sock # Docker socket for container jobs + - ./config.yaml:/config.yaml + - ./data3:/data + - /var/run/docker.sock:/var/run/docker.sock diff --git a/gitea-runner/docker-compose.yml b/gitea-runner/docker-compose.yml index ca84831..d327aec 100644 --- a/gitea-runner/docker-compose.yml +++ b/gitea-runner/docker-compose.yml @@ -1,20 +1,14 @@ -# Gitea Actions Runner Configuration services: gitea_runner: - # Basic container configuration container_name: gitea_runner image: docker.io/gitea/act_runner:0.2.12 restart: unless-stopped - - # Runner configuration environment variables environment: - CONFIG_FILE: /config.yaml # Path to configuration file - GITEA_INSTANCE_URL: "${INSTANCE_URL}" # URL of Gitea instance - GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" # Registration token - GITEA_RUNNER_NAME: "${RUNNER_NAME}" # Display name for runner - - # Persistent storage and docker socket configuration + CONFIG_FILE: /config.yaml + GITEA_INSTANCE_URL: "${INSTANCE_URL}" + GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" + GITEA_RUNNER_NAME: "${RUNNER_NAME}" volumes: - - ./config.yaml:/config.yaml # Runner configuration file - - ./data:/data # Persistent runner data - - /var/run/docker.sock:/var/run/docker.sock # Docker socket for container jobs + - ./config.yaml:/config.yaml + - ./data:/data + - /var/run/docker.sock:/var/run/docker.sock diff --git a/gotify/docker-compose.yml b/gotify/docker-compose.yml index ea56237..7e90d34 100644 --- a/gotify/docker-compose.yml +++ b/gotify/docker-compose.yml @@ -1,20 +1,12 @@ -# Gotify Push Notification Server Configuration services: gotify: - # Basic container configuration container_name: gotify image: ghcr.io/gotify/server:2.6.3 restart: unless-stopped - - # Application environment configuration environment: - - TZ=${TZ} # Timezone configuration - - GOTIFY_REGISTRATION=${GOTIFY_REGISTRATION} # Allow/disallow new user registration - - # Persistent storage configuration + - TZ=${TZ} + - GOTIFY_REGISTRATION=${GOTIFY_REGISTRATION} volumes: - - ${APPDATA_PATH}/gotify/config:/app/data # Configuration and database storage - - # Network port configuration + - ${APPDATA_PATH}/gotify/config:/app/data ports: - - ${PORT}:80 # Maps host port to Gotify web interface + - ${PORT}:80 diff --git a/healthchecks/docker-compose.yml b/healthchecks/docker-compose.yml index a1109f8..822d034 100644 --- a/healthchecks/docker-compose.yml +++ b/healthchecks/docker-compose.yml @@ -1,52 +1,33 @@ -# Healthchecks.io Monitoring Service Configuration services: healthchecks: - # Basic container configuration container_name: healthchecks image: ghcr.io/linuxserver/healthchecks:3.10.20250714 restart: unless-stopped - - # User and system configuration environment: - # System settings - - PUID=${PUID} # User ID - - PGID=${PGID} # Group ID - - TZ=${TZ} # Timezone - - # Site configuration - - SITE_ROOT=${SITE_ROOT} # Base URL - - SITE_NAME=${SITE_NAME} # Site display name - - SITE_LOGO_URL=${SITE_LOGO_URL} # Custom logo URL - - # Email server configuration - - DEFAULT_FROM_EMAIL=${DEFAULT_FROM_EMAIL} # Sender address - - EMAIL_HOST=${EMAIL_HOST} # SMTP server - - EMAIL_PORT=${EMAIL_PORT} # SMTP port - - EMAIL_HOST_USER=${EMAIL_HOST_USER} # SMTP username - - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD} # SMTP password - - EMAIL_USE_TLS=${EMAIL_USE_TLS} # Enable TLS - - EMAIL_USE_SSL=${EMAIL_USE_SSL} # Enable SSL - - PING_EMAIL_DOMAIN=${PING_EMAIL_DOMAIN} # Email domain for pings - - # Authentication and security - - SUPERUSER_EMAIL=${SUPERUSER_EMAIL} # Admin email - - SUPERUSER_PASSWORD=${SUPERUSER_PASSWORD} # Admin password - - SECRET_KEY=${SECRET_KEY} # Cryptographic secret - - REGISTRATION_OPEN=${REGISTRATION_OPEN} # Allow new registrations - - # Integration settings - - APPRISE_ENABLED=${APPRISE_ENABLED} # Enable Apprise notifications - - DISCORD_CLIENT_ID=${DISCORD_CLIENT_ID} # Discord integration - - DISCORD_CLIENT_SECRET=${DISCORD_CLIENT_SECRET} # Discord secret - - # Debugging - - DEBUG=${DEBUG} # Debug mode - - # Persistent storage configuration + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + - SITE_ROOT=${SITE_ROOT} + - SITE_NAME=${SITE_NAME} + - SITE_LOGO_URL=${SITE_LOGO_URL} + - DEFAULT_FROM_EMAIL=${DEFAULT_FROM_EMAIL} + - EMAIL_HOST=${EMAIL_HOST} + - EMAIL_PORT=${EMAIL_PORT} + - EMAIL_HOST_USER=${EMAIL_HOST_USER} + - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD} + - EMAIL_USE_TLS=${EMAIL_USE_TLS} + - EMAIL_USE_SSL=${EMAIL_USE_SSL} + - PING_EMAIL_DOMAIN=${PING_EMAIL_DOMAIN} + - SUPERUSER_EMAIL=${SUPERUSER_EMAIL} + - SUPERUSER_PASSWORD=${SUPERUSER_PASSWORD} + - SECRET_KEY=${SECRET_KEY} + - REGISTRATION_OPEN=${REGISTRATION_OPEN} + - APPRISE_ENABLED=${APPRISE_ENABLED} + - DISCORD_CLIENT_ID=${DISCORD_CLIENT_ID} + - DISCORD_CLIENT_SECRET=${DISCORD_CLIENT_SECRET} + - DEBUG=${DEBUG} volumes: - - ${APPDATA_PATH}/healthchecks/config:/config # Configuration storage - - # Network port configuration + - ${APPDATA_PATH}/healthchecks/config:/config ports: - - ${PORT}:8000 # Web interface port - - ${SMTP_PORT}:2525 # SMTP port for email + - ${PORT}:8000 + - ${SMTP_PORT}:2525 diff --git a/homeassistant/docker-compose.yml b/homeassistant/docker-compose.yml index 7067b09..0822be7 100644 --- a/homeassistant/docker-compose.yml +++ b/homeassistant/docker-compose.yml @@ -1,20 +1,12 @@ -# Home Assistant Smart Home Platform Configuration services: homeassistant: - # Basic container configuration container_name: homeassistant - image: docker.io/homeassistant/home-assistant:2025.7.2 # Official Home Assistant image - restart: unless-stopped # Auto-restart on failure - - # Network configuration (host mode for full local network access) - network_mode: host # Required for discovering local devices and integrations - - # Persistent storage and system configuration + image: docker.io/homeassistant/home-assistant:2025.7.2 + restart: unless-stopped + network_mode: host volumes: - - ${APPDATA_PATH}/homeassistant/config:/config # Configuration files - - /etc/localtime:/etc/localtime:ro # Sync host timezone for proper logging - - # Health check configuration + - ${APPDATA_PATH}/homeassistant/config:/config + - /etc/localtime:/etc/localtime:ro healthcheck: test: "curl --connect-timeout 10 --silent -f http://127.0.0.1:8123/ || exit 1" interval: 45s diff --git a/minio/docker-compose.yml b/minio/docker-compose.yml index fd8df7c..e834e4e 100644 --- a/minio/docker-compose.yml +++ b/minio/docker-compose.yml @@ -1,54 +1,33 @@ -# MinIO Object Storage Service Configuration services: - # MinIO Server Service minio: - # Basic container configuration container_name: minio - image: docker.io/minio/minio:RELEASE.2025-07-18T21-56-31Z # Official MinIO image - restart: unless-stopped # Auto-restart on failure - - # Runtime command and user permissions - command: server /data # Start in server mode - user: ${PUID}:${PGID} # Run as specified user/group - - # Environment variables for authentication and configuration + image: docker.io/minio/minio:RELEASE.2025-07-18T21-56-31Z + restart: unless-stopped + command: server /data + user: ${PUID}:${PGID} environment: - - MINIO_ROOT_USER=${MINIO_ROOT_USER} # Admin username - - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} # Admin password - - MINIO_SERVER_URL=${MINIO_SERVER_URL} # Public server endpoint URL - - MINIO_BROWSER_REDIRECT_URL=${MINIO_BROWSER_REDIRECT_URL} # Web console redirect URL - - # Persistent data storage + - MINIO_ROOT_USER=${MINIO_ROOT_USER} + - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} + - MINIO_SERVER_URL=${MINIO_SERVER_URL} + - MINIO_BROWSER_REDIRECT_URL=${MINIO_BROWSER_REDIRECT_URL} volumes: - - ${APPDATA_PATH}/minio/data:/data # Maps host directory to container - - # Network ports + - ${APPDATA_PATH}/minio/data:/data ports: - - ${API_PORT}:9000 # MinIO API port - - # Health check configuration + - ${API_PORT}:9000 healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s timeout: 5s retries: 5 - # MinIO Console Service (separate from main server) minio-console: - # Basic container configuration container_name: minio-console - image: ghcr.io/georgmangold/console:v1.8.1 # Community console UI - restart: unless-stopped # Auto-restart on failure - - # Service dependencies + image: ghcr.io/georgmangold/console:v1.8.1 + restart: unless-stopped depends_on: minio: condition: service_healthy - - # Environment configuration environment: - - CONSOLE_MINIO_SERVER=http://minio:9000 # Points to MinIO server - - # Network ports + - CONSOLE_MINIO_SERVER=http://minio:9000 ports: - - ${CONSOLE_PORT}:9090 # Web console access port + - ${CONSOLE_PORT}:9090 diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index 378257c..893a024 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -1,136 +1,81 @@ -# Nextcloud with PostgreSQL and Valkey Configuration services: - # PostgreSQL Database Service nextcloud_db: - # Basic container configuration container_name: nextcloud_db image: docker.io/library/postgres:17.5 restart: unless-stopped - - # Database credentials environment: - - POSTGRES_USER=${POSTGRES_USER} # Database username - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # Database password - - POSTGRES_DB=${POSTGRES_DB} # Database name - - # Persistent storage configuration + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} volumes: - - ${APPDATA_PATH}/nextcloud/db:/var/lib/postgresql/data # Database files - - # Network configuration + - ${APPDATA_PATH}/nextcloud/db:/var/lib/postgresql/data ports: - - ${DB_PORT}:5432 # PostgreSQL port - - # Health monitoring + - ${DB_PORT}:5432 healthcheck: test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"] - start_period: 10s # Initial delay - interval: 10s # Check frequency - timeout: 5s # Timeout duration - retries: 3 # Retry attempts + start_period: 10s + interval: 10s + timeout: 5s + retries: 3 - # Valkey (Redis-compatible) Cache Service nextcloud_valkey: - # Basic container configuration container_name: nextcloud_valkey image: docker.io/valkey/valkey:8.1.3 restart: unless-stopped - - # Runtime configuration - command: valkey-server --save 60 1 --requirepass ${VALKEY_PASSWORD} # Persistence and auth - - # Persistent storage configuration + command: valkey-server --save 60 1 --requirepass ${VALKEY_PASSWORD} volumes: - - ${APPDATA_PATH}/nextcloud/valkey:/data # Valkey data - - # Network configuration + - ${APPDATA_PATH}/nextcloud/valkey:/data ports: - - ${VALKEY_PORT}:6379 # Valkey port - - # Health monitoring + - ${VALKEY_PORT}:6379 healthcheck: test: ["CMD-SHELL", "echo 'auth ${VALKEY_PASSWORD}\nping' | valkey-cli | grep PONG"] - start_period: 20s # Initial delay - interval: 30s # Check frequency - retries: 5 # Retry attempts - timeout: 3s # Timeout duration + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s - # Nextcloud Application Service nextcloud_app: - # Basic container configuration image: docker.io/library/nextcloud:31.0.7 container_name: nextcloud_app restart: unless-stopped - - # Service dependencies depends_on: nextcloud_db: - condition: service_healthy # Requires healthy database + condition: service_healthy nextcloud_valkey: - condition: service_healthy # Requires healthy valkey - - # Environment variables + condition: service_healthy environment: - # Database configuration - - POSTGRES_HOST=nextcloud_db:5432 # PostgreSQL host and port - - POSTGRES_DB=${POSTGRES_DB} # Database name - - POSTGRES_USER=${POSTGRES_USER} # Database username - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # Database password - - # Redis/Valkey cache configuration - - REDIS_HOST=nextcloud_valkey # Valkey hostname - - REDIS_HOST_PORT=6379 # Valkey port - - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} # Valkey authentication - - # PHP performance tuning - - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} # Memory allocation - - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} # Max upload size - - # Security settings - - APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP} # IP address handling - - # Persistent storage configuration + - POSTGRES_HOST=nextcloud_db:5432 + - POSTGRES_DB=${POSTGRES_DB} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - REDIS_HOST=nextcloud_valkey + - REDIS_HOST_PORT=6379 + - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} + - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} + - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} + - APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP} volumes: - ${APPDATA_PATH}/nextcloud/app:/var/www/html - - # Network configuration ports: - ${APP_PORT}:80 - # Nextcloud Cron Service nextcloud_cron: - # Basic container configuration image: docker.io/library/nextcloud:31.0.7 container_name: nextcloud_cron restart: unless-stopped - - # Service dependencies depends_on: - nextcloud_app - - # Entry point entrypoint: /cron.sh - - # Environment variables environment: - # Database configuration - - POSTGRES_HOST=nextcloud_db:5432 # PostgreSQL host and port - - POSTGRES_DB=${POSTGRES_DB} # Database name - - POSTGRES_USER=${POSTGRES_USER} # Database username - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # Database password - - # Redis/Valkey cache configuration - - REDIS_HOST=nextcloud_valkey # Valkey hostname - - REDIS_HOST_PORT=6379 # Valkey port - - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} # Valkey authentication - - # PHP performance tuning - - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} # Memory allocation - - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} # Max upload size - - # Security settings - - APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP} # IP address handling - - # Persistent storage configuration + - POSTGRES_HOST=nextcloud_db:5432 + - POSTGRES_DB=${POSTGRES_DB} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - REDIS_HOST=nextcloud_valkey + - REDIS_HOST_PORT=6379 + - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} + - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} + - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} + - APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP} volumes: - ${APPDATA_PATH}/nextcloud/app:/var/www/html