services: # --- CORE INFRASTRUCTURE --- # Reverse Proxy to handle incoming traffic and SSL caddy: image: caddy:latest container_name: caddy restart: always ports: - "4533:4533" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config # Automatically updates your Docker containers to the latest images watchtower: image: containrrr/watchtower:latest container_name: watchtower restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock # --- DEVELOPMENT & PRODUCTIVITY --- # VS Code in the browser code-server: image: lscr.io/linuxserver/code-server:latest container_name: code-server restart: always environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - PASSWORD=mimiAL64.68 # Consider moving this to a .env file for security volumes: - /home/miles/code-config:/config - /home/miles/projects:/config/workspace # Self-hosted Git service gitea: image: gitea/gitea:latest container_name: gitea restart: always environment: - GITEA__server__ROOT_URL=http://raspberrypi.tail46eacb.ts.net:4533/git/ volumes: - /home/miles/gitea-data:/data # Virtual whiteboard for sketching and diagrams excalidraw: image: excalidraw/excalidraw:latest container_name: excalidraw restart: always # --- KNOWLEDGE & DASHBOARD --- # Centralized dashboard for all your services homarr: image: ghcr.io/homarr-labs/homarr:latest container_name: homarr restart: always volumes: - /home/miles/homarr-data:/appdata # Personal knowledge base and hierarchical note-taking trilium: image: triliumnext/notes:latest container_name: trilium restart: always environment: - TRILIUM_BASE_URL=notes - TRILIUM_PORT=8082 volumes: - /home/miles/trilium-data:/home/node/trilium-data # --- MEDIA & ENTERTAINMENT --- # Music streaming server (Subsonic compatible) navidrome: image: deluan/navidrome:latest container_name: navidrome restart: always environment: - ND_BASEURL=/music - ND_MUSICFOLDER=/music volumes: - /home/miles/navidrome-data:/data - /home/miles/navidrome-music:/music # Game ROM manager and browser-based emulator romm: image: rommapp/romm:latest container_name: romm restart: always environment: - ROMM_BASE_URL=/roms - ROMM_PORT=8080 - REDIS_HOST=romm-redis depends_on: - romm-redis volumes: - /home/miles/roms:/roms - /home/miles/romm-data:/data # Cache database for RomM romm-redis: image: redis:alpine container_name: romm-redis restart: always # --- UTILITIES --- # Push notification service (Pub-Sub) ntfy: image: binwiederhier/ntfy:latest container_name: ntfy restart: always command: serve volumes: - /home/miles/ntfy-cache:/var/cache/ntfy # Torrent client with Web UI qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent restart: always environment: - WEBUI_PORT=8081 volumes: - /home/miles/qbittorrent-config:/config - /home/miles/downloads:/downloads # Persistent volumes for Caddy configuration volumes: caddy_data: caddy_config: