version: '3.8' services: # Home Server Agent home-server-agent: build: . container_name: home-server-agent ports: - "3000:3000" environment: - NODE_ENV=production - API_TOKEN=${API_TOKEN:-your-secret-token-here} - LOG_LEVEL=info - FRPC_CONFIG_PATH=${FRPC_CONFIG_PATH:-/app/data/frpc.toml} - FRPC_CONTAINER_NAME=${FRPC_CONTAINER_NAME:-frpc} volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./logs:/app/logs - ./data:/app/data networks: - game-network restart: unless-stopped depends_on: - minecraft - valheim - terraria # Minecraft Server minecraft: image: itzg/minecraft-server:latest container_name: gameserver-minecraft ports: - "25565:25565" environment: EULA: "TRUE" TYPE: "VANILLA" MEMORY: "2G" DIFFICULTY: "normal" SPAWN_PROTECTION: "0" MAX_PLAYERS: "20" ONLINE_MODE: "false" ALLOW_NETHER: "true" ANNOUNCE_PLAYER_ACHIEVEMENTS: "true" ENABLE_COMMAND_BLOCK: "true" FORCE_GAMEMODE: "false" GENERATE_STRUCTURES: "true" HARDCORE: "false" MAX_BUILD_HEIGHT: "256" MAX_TICK_TIME: "60000" SPAWN_ANIMALS: "true" SPAWN_MONSTERS: "true" SPAWN_NPCS: "true" VIEW_DISTANCE: "10" volumes: - minecraft-data:/data networks: - game-network restart: unless-stopped labels: - "game-server=minecraft" # Valheim Server valheim: image: lloesche/valheim-server:latest container_name: gameserver-valheim ports: - "2456:2456/udp" - "2457:2457/udp" environment: SERVER_NAME: "My Valheim Server" WORLD_NAME: "MyWorld" SERVER_PASS: "secret123" SERVER_PUBLIC: "false" ADMINLIST_IDS: "" BANNEDLIST_IDS: "" PERMITTEDLIST_IDS: "" volumes: - valheim-data:/config networks: - game-network restart: unless-stopped labels: - "game-server=valheim" # Terraria Server terraria: image: ryshe/terraria:latest container_name: gameserver-terraria ports: - "7777:7777" environment: WORLD: "MyWorld" PASSWORD: "secret123" MAXPLAYERS: "16" DIFFICULTY: "1" AUTOCREATE: "2" BANLIST: "" SECURE: "1" LANGUAGE: "en-US" volumes: - terraria-data:/world networks: - game-network restart: unless-stopped labels: - "game-server=terraria" # Optional: Portainer for Docker management portainer: image: portainer/portainer-ce:latest container_name: portainer ports: - "9000:9000" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - portainer-data:/data networks: - game-network restart: unless-stopped profiles: - management # Optional: Watchtower for automatic updates watchtower: image: containrrr/watchtower:latest container_name: watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock:ro environment: - WATCHTOWER_CLEANUP=true - WATCHTOWER_SCHEDULE=0 0 2 * * * # 2 AM daily networks: - game-network restart: unless-stopped profiles: - management volumes: minecraft-data: driver: local valheim-data: driver: local terraria-data: driver: local portainer-data: driver: local networks: game-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16