Compare commits

..

1 Commits

Author SHA1 Message Date
Renovate Bot
0ce4723d79 Update docker.io/homeassistant/home-assistant Docker tag to v2025.7.2 2025-07-14 14:32:06 +00:00
23 changed files with 262 additions and 169 deletions

View File

@@ -0,0 +1,36 @@
# MinIO Object Storage Service Configuration
services:
minio:
# Basic container configuration
container_name: minio
image: docker.io/minio/minio:RELEASE.2025-04-22T22-12-26Z
restart: unless-stopped
# Runtime command and user permissions
command: server --console-address ":9001" /data
user: ${PUID}:${PGID}
# Environment variables for authentication and configuration
environment:
- MINIO_ROOT_USER=${MINIO_ROOT_USER} # Admin username
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} # Admin password
- MINIO_SERVER_URL=${MINIO_SERVER_URL} # Server endpoint
- MINIO_BROWSER_REDIRECT_URL=${MINIO_BROWSER_REDIRECT_URL} # Console URL
# Persistent data storage
volumes:
- ${APPDATA_PATH}/minio/data:/data # Maps host directory to container
# Network ports (API:9000, Console:9001)
ports:
- ${API_PORT}:9000 # MinIO API port
- ${CONSOLE_PORT}:9001 # MinIO Console port
# Network configuration
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses pre-existing network

View File

@@ -9,3 +9,12 @@ services:
# Network port configuration
ports:
- ${PORT}:8080 # Maps host port to Adminer web interface
# Network configuration
networks:
- backend # Connects to backend network
# External network definition
networks:
backend:
external: true # Uses pre-existing backend network

View File

@@ -1,30 +1,19 @@
# Caddy with Cloudflare DDNS and CrowdSec Security
services:
# CrowdSec - Security automation service that protects from attacks
crowdsec:
image: ghcr.io/crowdsecurity/crowdsec:v1.6.10
container_name: crowdsec
image: ghcr.io/crowdsecurity/crowdsec:v1.6.10 # Official CrowdSec image
restart: unless-stopped # Auto-restart unless explicitly stopped
# Environment configuration
environment:
- BOUNCER_KEY_CADDY=${CROWDSEC_API_KEY} # API key for Caddy integration
- GID=${GID} # Group ID for file permissions
- COLLECTIONS=${COLLECTIONS} # Security collections to enable
# Persistent storage volumes
- BOUNCER_KEY_CADDY=${CROWDSEC_API_KEY}
- GID=${GID}
- COLLECTIONS=${COLLECTIONS}
volumes:
- ${APPDATA_PATH}/caddy/crowdsec-acquis.d:/etc/crowdsec/acquis.d # Log parsers
- ${APPDATA_PATH}/caddy/crowdsec-db:/var/lib/crowdsec/data/ # Security database
- ${APPDATA_PATH}/caddy/crowdsec-config:/etc/crowdsec/ # Configuration files
- ${APPDATA_PATH}/caddy/caddy-logs:/var/log/caddy:ro # Read-only log access
# Networks
- ${APPDATA_PATH}/caddy/crowdsec-acquis.d:/etc/crowdsec/acquis.d
- ${APPDATA_PATH}/caddy/crowdsec-db:/var/lib/crowdsec/data/
- ${APPDATA_PATH}/caddy/crowdsec-config:/etc/crowdsec/
- ${APPDATA_PATH}/caddy/caddy-logs:/var/log/caddy:ro
networks:
proxy:
ipv4_address: 172.30.0.3
# Health check configuration
- frontend
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget --spider --quiet --tries=1 --timeout=5 http://localhost:8080/health > /dev/null 2>&1 || exit 1"]
interval: 30s
@@ -32,50 +21,31 @@ services:
retries: 3
start_period: 30s
# Caddy web server with Cloudflare DDNS integration
caddy:
image: docker.io/ryuupendragon/caddy-cloudflare-ddns-crowdsec:2.10.0
container_name: caddy
image: docker.io/ryuupendragon/caddy-cloudflare-ddns-crowdsec:2.10.0 # Custom Caddy image with Cloudflare, DDNS and CrowdSec plugins
restart: unless-stopped # Auto-restart on failure
# Service dependencies
depends_on:
crowdsec:
condition: service_healthy # Requires working CrowdSec before starting
# Required network capabilities
condition: service_healthy
cap_add:
- NET_ADMIN # Needed for network-level operations
# Environment configuration
- NET_ADMIN
environment:
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN} # Cloudflare API token for DNS updates
- CROWDSEC_API_KEY=${CROWDSEC_API_KEY} # Security key for CrowdSec integration
# Persistent storage volumes
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
- CROWDSEC_API_KEY=${CROWDSEC_API_KEY}
volumes:
- ${APPDATA_PATH}/caddy/caddy-file:/etc/caddy # Caddyfile configuration
- ${APPDATA_PATH}/caddy/caddy-config:/config # Automatic HTTPS certificates
- ${APPDATA_PATH}/caddy/caddy-data:/data # Site data and assets
- ${APPDATA_PATH}/caddy/caddy-logs:/logs # Access logs
- ${APPDATA_PATH}/caddy/caddy-srv:/srv # Served content
# Network ports
- ${APPDATA_PATH}/caddy/caddy-file:/etc/caddy
- ${APPDATA_PATH}/caddy/caddy-config:/config
- ${APPDATA_PATH}/caddy/caddy-data:/data
- ${APPDATA_PATH}/caddy/caddy-logs:/logs
- ${APPDATA_PATH}/caddy/caddy-srv:/srv
ports:
- ${HTTP_PORT}:80 # HTTP traffic
- ${HTTPS_PORT}:443 # HTTPS traffic
- ${HTTPS_PORT}:443/udp # QUIC/HTTP3 support
# Networks
- ${HTTP_PORT}:80
- ${HTTPS_PORT}:443
- ${HTTPS_PORT}:443/udp
networks:
proxy:
ipv4_address: 172.30.0.2
- frontend
restart: unless-stopped
networks:
proxy:
name: proxy
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/16
gateway: 172.30.0.1
frontend:
external: true

View File

@@ -1,30 +1,19 @@
# Caddy with CrowdSec Security
services:
# CrowdSec - Security automation service that protects from attacks
crowdsec:
image: ghcr.io/crowdsecurity/crowdsec:v1.6.10
container_name: crowdsec
image: ghcr.io/crowdsecurity/crowdsec:v1.6.10 # Official CrowdSec image
restart: unless-stopped # Auto-restart unless explicitly stopped
# Environment configuration
environment:
- BOUNCER_KEY_CADDY=${CROWDSEC_API_KEY} # API key for Caddy integration
- GID=${GID} # Group ID for file permissions
- COLLECTIONS=${COLLECTIONS} # Security collections to enable
# Persistent storage volumes
- BOUNCER_KEY_CADDY=${CROWDSEC_API_KEY}
- GID=${GID}
- COLLECTIONS=${COLLECTIONS}
volumes:
- ${APPDATA_PATH}/caddy/crowdsec-acquis.d:/etc/crowdsec/acquis.d # Log parsers
- ${APPDATA_PATH}/caddy/crowdsec-db:/var/lib/crowdsec/data/ # Security database
- ${APPDATA_PATH}/caddy/crowdsec-config:/etc/crowdsec/ # Configuration files
- ${APPDATA_PATH}/caddy/caddy-logs:/var/log/caddy:ro # Read-only log access
# Networks
- ${APPDATA_PATH}/caddy/crowdsec-acquis.d:/etc/crowdsec/acquis.d
- ${APPDATA_PATH}/caddy/crowdsec-db:/var/lib/crowdsec/data/
- ${APPDATA_PATH}/caddy/crowdsec-config:/etc/crowdsec/
- ${APPDATA_PATH}/caddy/caddy-logs:/var/log/caddy:ro
networks:
proxy:
ipv4_address: 172.30.0.3
# Health check configuration
- frontend
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget --spider --quiet --tries=1 --timeout=5 http://localhost:8080/health > /dev/null 2>&1 || exit 1"]
interval: 30s
@@ -32,49 +21,30 @@ services:
retries: 3
start_period: 30s
# Caddy web server with CrowdSec security
caddy:
image: docker.io/ryuupendragon/caddy-crowdsec:2.10.0
container_name: caddy
image: docker.io/ryuupendragon/caddy-crowdsec:2.10.0 # Custom Caddy image with CrowdSec plugins
restart: unless-stopped # Auto-restart on failure
# Service dependencies
depends_on:
crowdsec:
condition: service_healthy # Requires working CrowdSec before starting
# Required network capabilities
condition: service_healthy
cap_add:
- NET_ADMIN # Needed for network-level operations
# Environment configuration
- NET_ADMIN
environment:
- CROWDSEC_API_KEY=${CROWDSEC_API_KEY} # Security key for CrowdSec integration
# Persistent storage volumes
- CROWDSEC_API_KEY=${CROWDSEC_API_KEY}
volumes:
- ${APPDATA_PATH}/caddy/caddy-file:/etc/caddy # Caddyfile configuration
- ${APPDATA_PATH}/caddy/caddy-config:/config # Automatic HTTPS certificates
- ${APPDATA_PATH}/caddy/caddy-data:/data # Site data and assets
- ${APPDATA_PATH}/caddy/caddy-logs:/logs # Access logs
- ${APPDATA_PATH}/caddy/caddy-srv:/srv # Served content
# Network ports
- ${APPDATA_PATH}/caddy/caddy-file:/etc/caddy
- ${APPDATA_PATH}/caddy/caddy-config:/config
- ${APPDATA_PATH}/caddy/caddy-data:/data
- ${APPDATA_PATH}/caddy/caddy-logs:/logs
- ${APPDATA_PATH}/caddy/caddy-srv:/srv
ports:
- ${HTTP_PORT}:80 # HTTP traffic
- ${HTTPS_PORT}:443 # HTTPS traffic
- ${HTTPS_PORT}:443/udp # QUIC/HTTP3 support
# Networks
- ${HTTP_PORT}:80
- ${HTTPS_PORT}:443
- ${HTTPS_PORT}:443/udp
networks:
proxy:
ipv4_address: 172.30.0.2
- frontend
restart: unless-stopped
networks:
proxy:
name: proxy
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/16
gateway: 172.30.0.1
frontend:
external: true

View File

@@ -17,3 +17,12 @@ services:
# Network port configuration
ports:
- ${SERVER_PORT}:3000 # Maps host port to Forgejo web interface
# Network configuration
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses pre-existing frontend network

View File

@@ -23,6 +23,10 @@ services:
ports:
- ${PORT}:4321 # Maps host port to container
# Network configuration
networks:
- internal # Connects to internal network
# Health check configuration
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=3", "--spider", "http://localhost:4321/api/health"]
@@ -30,3 +34,8 @@ services:
timeout: 10s # Check timeout
retries: 5 # Allowed retries
start_period: 15s # Initial delay before checks
# External network definition
networks:
internal:
external: true # Uses pre-existing internal network

View File

@@ -25,6 +25,10 @@ services:
ports:
- ${DB_PORT}:3306 # Maps host port to MariaDB
# Network configuration
networks:
- backend # Connects to backend network
# Health check configuration
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
@@ -67,3 +71,15 @@ services:
ports:
- ${SERVER_PORT}:3000
- ${SSH_PORT}:22
# Network configuration
networks:
- frontend # Connects to frontend network
- backend # Connects to backend network
# Internal network definition
networks:
frontend:
external: true # Uses pre-existing frontend network
backend:
external: true # Uses pre-existing backend network

View File

@@ -21,6 +21,10 @@ services:
ports:
- ${DB_PORT}:5432 # Maps host port to PostgreSQL
# Network configuration
networks:
- backend # Connects to backend network
# Health check configuration
healthcheck:
test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"]
@@ -61,3 +65,15 @@ services:
ports:
- ${SERVER_PORT}:3000 # Maps host port to Gitea web interface
- ${SSH_PORT}:22 # Maps host port to Gitea SSH
# Network configuration
networks:
- frontend # Connects to frontend network
- backend # Connects to backend network
# External network definition
networks:
frontend:
external: true # Uses pre-existing frontend network
backend:
external: true # Uses pre-existing backend network

View File

@@ -18,3 +18,12 @@ services:
# Network port configuration
ports:
- ${PORT}:80 # Maps host port to Gotify web interface
# Network configuration
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses pre-existing frontend network

View File

@@ -50,3 +50,12 @@ services:
ports:
- ${PORT}:8000 # Web interface port
- ${SMTP_PORT}:2525 # SMTP port for email
# Network configuration
networks:
- frontend # Connects to frontend network
# External network configuration
networks:
frontend:
external: true # Uses pre-existing frontend network

View File

@@ -3,13 +3,23 @@ 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
image: docker.io/homeassistant/home-assistant:2025.7.2
restart: unless-stopped
# Persistent storage and system configuration
volumes:
- ${APPDATA_PATH}/homeassistant/config:/config # Configuration files
- /etc/localtime:/etc/localtime:ro # Sync host timezone for proper logging
- /etc/localtime:/etc/localtime:ro # Sync host timezone
# Network port configuration
ports:
- ${PORT}:8123 # Web interface port
# Network configuration
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses pre-existing frontend network

View File

@@ -1,42 +0,0 @@
# MinIO Object Storage Service Configuration
services:
# MinIO Server Service
minio:
# Basic container configuration
container_name: minio
image: docker.io/minio/minio:RELEASE.2025-06-13T11-33-47Z # 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
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
volumes:
- ${APPDATA_PATH}/minio/data:/data # Maps host directory to container
# Network ports
ports:
- ${API_PORT}:9000 # MinIO API port
# 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
# Environment configuration
environment:
- CONSOLE_MINIO_SERVER=http://minio:9000 # Points to MinIO server
# Network ports
ports:
- ${CONSOLE_PORT}:9090 # Web console access port

View File

@@ -20,6 +20,8 @@ services:
# Network configuration
ports:
- ${DB_PORT}:5432 # PostgreSQL port
networks:
- backend # Connects to backend network
# Health monitoring
healthcheck:
@@ -46,6 +48,8 @@ services:
# Network configuration
ports:
- ${VALKEY_PORT}:6379 # Valkey port
networks:
- backend # Connects to backend network
# Health monitoring
healthcheck:
@@ -57,17 +61,14 @@ services:
# 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
condition: service_healthy
# Environment variables
environment:
@@ -96,15 +97,15 @@ services:
# Network configuration
ports:
- ${APP_PORT}:80
networks:
- frontend # Connects to frontend network
- backend # Connects to backend network
# 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
@@ -134,3 +135,15 @@ services:
# Persistent storage configuration
volumes:
- ${APPDATA_PATH}/nextcloud/app:/var/www/html
# Network configuration
networks:
- frontend # Connects to frontend network
- backend # Connects to backend network
# External network definitions
networks:
frontend:
external: true # Uses pre-existing network
backend:
external: true # Uses pre-existing network

View File

@@ -24,6 +24,8 @@ services:
# Network configuration
ports:
- ${DB_PORT}:3306 # MariaDB port
networks:
- backend # Connects to backend network
# Health monitoring
healthcheck:
@@ -80,3 +82,13 @@ services:
ports:
- ${SERVER_PORT}:6157 # Web interface port
- 2222:2222 # SSH port for Git operations
networks:
- frontend # Connects to frontend network
- backend # Connects to backend network
# External network definitions
networks:
frontend:
external: true # Uses pre-existing network
backend:
external: true # Uses pre-existing network

View File

@@ -20,6 +20,8 @@ services:
# Network configuration
ports:
- ${DB_PORT}:5432 # PostgreSQL port
networks:
- backend # Connects to backend network
# Health monitoring
healthcheck:
@@ -76,3 +78,13 @@ services:
ports:
- ${SERVER_PORT}:6157 # Web interface port
- 2222:2222 # SSH port for Git operations
networks:
- frontend # Connects to frontend network
- backend # Connects to backend network
# External network definitions
networks:
frontend:
external: true # Uses pre-existing network
backend:
external: true # Uses pre-existing network

View File

@@ -22,3 +22,10 @@ services:
# Network configuration
ports:
- ${PORT}:5487 # Web interface port
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses pre-existing network

View File

@@ -38,9 +38,16 @@ services:
# Network configuration
ports:
- ${PORT}:5232 # DAV service port
networks:
- frontend # Connects to frontend network
# Health monitoring
healthcheck:
test: curl -f http://127.0.0.1:5232 || exit 1 # Simple HTTP check
interval: 30s # Check every 30 seconds
retries: 3 # Allow 3 failures before marking unhealthy
# External network definition
networks:
frontend:
external: true # Uses pre-existing network

View File

@@ -27,3 +27,10 @@ services:
# Network configuration
ports:
- ${PORT}:8080 # Web interface port
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses existing Docker network

View File

@@ -18,3 +18,10 @@ services:
# Network configuration
ports:
- ${PORT}:8282 # Web interface port
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses existing Docker network

View File

@@ -13,3 +13,10 @@ services:
# Network configuration
ports:
- ${PORT}:3001 # Web dashboard port
networks:
- frontend # Connects to frontend network
# External network definition
networks:
frontend:
external: true # Uses existing Docker network