x-logging: &default-logging driver: "json-file" options: max-size: "200k" max-file: "10" networks: default: ipam: config: - subnet: 10.10.0.0/24 xray: ipam: config: - subnet: 10.10.1.0/24 volumes: adguard: warp: services: up: image: mercurykd/vpnbot-ng:1.1 build: context: dockerfile dockerfile: nginx.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/upstream.conf:/etc/nginx/nginx.conf - ./config/deny:/etc/nginx/deny - ./scripts/start_upstream.sh:/start_upstream.sh - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./logs/:/logs/ ports: - 443:443/tcp - 443:443/udp hostname: upstream container_name: upstream-${VER} depends_on: php: condition: service_healthy ng: condition: service_started ad: condition: service_started ss: condition: service_started xr: condition: service_started oc: condition: service_started np: condition: service_started env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_upstream.sh"] networks: default: ipv4_address: 10.10.0.10 logging: *default-logging ng: image: mercurykd/vpnbot-ng:1.1 build: context: dockerfile dockerfile: nginx.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/nginx.conf:/etc/nginx/nginx.conf - ./config/override.conf:/etc/nginx/override.conf - ./config/location.conf:/etc/nginx/location.conf - ./config/nginx_default.conf:/nginx_default.conf - ./scripts/start_ng.sh:/start_ng.sh - ./certs/:/certs/ - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./logs/:/logs/ - ./app/webapp:/app ports: - 80:80 hostname: nginx container_name: nginx-${VER} env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_ng.sh"] networks: default: ipv4_address: 10.10.0.2 xray: ipv4_address: 10.10.1.2 logging: *default-logging depends_on: php: condition: service_healthy php: image: mercurykd/vpnbot-php:1.7 build: dockerfile: dockerfile/php.dockerfile args: image: ${IMAGE} ports: - 127.0.0.1:8081:8080 volumes: - ./config/.profile:/root/.ashrc:ro - ./config/php.ini:/etc/php81/php.ini - ./config/:/config/ - ./certs/:/certs/ - ./ssh:/ssh - ./app:/app - ./logs/:/logs/ - ./scripts/start_php.sh:/start_php.sh - ./scripts/check_file.sh:/check_file.sh - ./version:/version - ./mirror:/mirror - ./.env:/mirror/.env - ./update:/update - ./.git:/.git - ./singbox_windows:/singbox - ./docker-compose.override.yml:/docker/compose - /var/run/docker.sock:/var/run/docker.sock:ro environment: IP: ${IP} VER: ${VER} env_file: - path: ./.env required: true # default - path: ./override.env required: false hostname: php container_name: php-${VER} # restart: unless-stopped stop_grace_period: 1s command: ["/bin/sh", "/start_php.sh"] working_dir: /app networks: default: ipv4_address: 10.10.0.7 extra_hosts: - "host.docker.internal:host-gateway" logging: *default-logging healthcheck: test: ["CMD", "/bin/sh", "/check_file.sh"] interval: 5s timeout: 5s retries: 5 service: image: mercurykd/vpnbot-php:1.7 build: dockerfile: dockerfile/php.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/php.ini:/etc/php81/php.ini - ./config/:/config/ - ./certs/:/certs/ - ./ssh:/ssh - ./app:/app - ./logs/:/logs/ - ./version:/version - ./update:/update - ./.git:/.git - ./scripts/start_service.sh:/start_service.sh - ./docker-compose.override.yml:/docker/compose - /var/run/docker.sock:/var/run/docker.sock:ro environment: IP: ${IP} VER: ${VER} env_file: - path: ./.env required: true # default - path: ./override.env required: false hostname: service container_name: service-${VER} # restart: unless-stopped stop_grace_period: 1s command: ["/bin/sh", "/start_service.sh"] working_dir: /app networks: default: ipv4_address: 10.10.0.15 logging: *default-logging depends_on: - up - ng - php - wg - wg1 - ad - tg - xr - oc - np - proxy - ss wg: image: mercurykd/vpnbot-wg:1.1 build: dockerfile: dockerfile/wireguard.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/wg0.conf:/etc/wireguard/wg0.conf - ./config/pac.json:/pac.json - ./scripts/start_wg.sh:/start_wg.sh - ./scripts/reset_wg.sh:/reset_wg.sh - ./scripts/block_torrent.sh:/block_torrent.sh - ./scripts/block_exchange.sh:/block_exchange.sh - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config hostname: wireguard container_name: wireguard-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false environment: ADDRESS: ${WGADDRESS} cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun stop_grace_period: 1s command: ["/bin/sh", "/start_wg.sh"] networks: default: ipv4_address: 10.10.0.4 logging: *default-logging wg1: image: mercurykd/vpnbot-wg:1.1 build: dockerfile: dockerfile/wireguard.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/wg1.conf:/etc/wireguard/wg0.conf - ./config/pac.json:/pac.json - ./scripts/start_wg.sh:/start_wg.sh - ./scripts/reset_wg.sh:/reset_wg.sh - ./scripts/block_torrent.sh:/block_torrent.sh - ./scripts/block_exchange.sh:/block_exchange.sh - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config hostname: wireguard1 container_name: wireguard1-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false environment: ADDRESS: ${WG1ADDRESS} cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun stop_grace_period: 1s command: ["/bin/sh", "/start_wg.sh"] networks: default: ipv4_address: 10.10.0.14 logging: *default-logging ad: image: mercurykd/vpnbot-ad:1.4 build: dockerfile: dockerfile/adguard.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - type: volume target: /opt/adguardhome/work source: adguard - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./config/:/config/ - ./certs/:/certs/ - ./logs/:/logs/ - ./scripts/start_ad.sh:/start_ad.sh hostname: adguard container_name: adguard-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s networks: default: ipv4_address: 10.10.0.5 cap_add: - NET_ADMIN entrypoint: ["/bin/sh", "/start_ad.sh"] logging: *default-logging tg: image: mercurykd/vpnbot-tg:1.1 build: dockerfile: dockerfile/telegram.dockerfile volumes: - ./config/.profile:/root/.ashrc:ro - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./scripts/start_tg.sh:/start_tg.sh - ./config/mtprotosecret:/mtprotosecret hostname: telegram container_name: mtproto-${VER} depends_on: php: condition: service_healthy environment: IP: ${IP} env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_tg.sh"] networks: default: ipv4_address: 10.10.0.8 logging: *default-logging xr: image: mercurykd/vpnbot-xr:1.5 build: dockerfile: dockerfile/xray.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./config/xray.json:/xray.json - ./scripts/start_xray.sh:/start_xray.sh - ./logs:/logs hostname: xray container_name: xray-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_xray.sh"] networks: default: ipv4_address: 10.10.0.9 xray: ipv4_address: 10.10.1.9 logging: *default-logging oc: image: mercurykd/vpnbot-oc:1.2 build: dockerfile: dockerfile/ocserv.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./config:/etc/ocserv - ./certs:/certs - ./scripts/start_oc.sh:/start_oc.sh hostname: ocserv container_name: openconnect-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_oc.sh"] cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun networks: default: ipv4_address: 10.10.0.11 logging: *default-logging np: image: mercurykd/vpnbot-np:1.2 build: dockerfile: dockerfile/naive.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./config:/config - ./certs:/certs - ./scripts/start_np.sh:/start_np.sh hostname: naive container_name: naive-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_np.sh"] cap_add: - NET_ADMIN networks: default: ipv4_address: 10.10.0.12 logging: *default-logging wp: image: mercurykd/vpnbot-wp:1.4 build: dockerfile: dockerfile/warp.dockerfile args: image: ${IMAGE} cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun volumes: - ./config/.profile:/root/.bashrc:ro - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./config:/config - ./certs:/certs - ./scripts/start_wp.sh:/start_wp.sh - warp:/var/lib/cloudflare-warp hostname: warp container_name: warp-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_wp.sh"] networks: default: ipv4_address: 10.10.0.13 logging: *default-logging proxy: image: mercurykd/vpnbot-ss:1.2 build: dockerfile: dockerfile/shadowsocks.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/sslocal.json:/config.json - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./scripts/start_proxy.sh:/start_proxy.sh hostname: proxy container_name: proxy-${VER} depends_on: php: condition: service_healthy networks: default: ipv4_address: 10.10.0.3 environment: TZ: ${TZ} env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_proxy.sh"] logging: *default-logging ss: image: mercurykd/vpnbot-ss:1.2 build: dockerfile: dockerfile/shadowsocks.dockerfile args: image: ${IMAGE} volumes: - ./config/.profile:/root/.ashrc:ro - ./config/ssserver.json:/config.json - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./scripts/start_ss.sh:/start_ss.sh hostname: shadowsocks container_name: shadowsocks-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_ss.sh"] networks: default: ipv4_address: 10.10.0.6 logging: *default-logging io: image: mercurykd/vpnbot-io:1.0 build: dockerfile: dockerfile/iodine.dockerfile volumes: - ./config/.profile:/root/.ashrc:ro - ./ssh:/ssh - ./config/sshd_config:/etc/ssh/sshd_config - ./scripts/start_io.sh:/start_io.sh hostname: iodine cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun container_name: iodine-${VER} depends_on: php: condition: service_healthy env_file: - path: ./.env required: true # default - path: ./override.env required: false stop_grace_period: 1s command: ["/bin/sh", "/start_io.sh"] networks: default: ipv4_address: 10.10.0.16 logging: *default-logging