| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- # ============================================
- # V2Ray + Nginx + Cloudflare - Modular Setup
- # ============================================
- # All configuration is read from the root .env file
- # This is a multi-protocol setup supporting VLESS-WS, VLESS-gRPC, and VMess-WS
- # ============================================
- # Shared network for all services
- networks:
- v2ray-network:
- driver: bridge
- # Shared volumes
- volumes:
- nginx-certs:
- driver: local
- nginx-html:
- driver: local
- acme-data:
- driver: local
- services:
- # ============================================
- # NGINX Service - Reverse Proxy
- # ============================================
- nginx:
- image: nginx:${NGINX_VERSION:-1.22}
- container_name: ${NGINX_CONTAINER_NAME:-nginx}
- restart: ${RESTART_POLICY:-always}
- ports:
- - "${HTTP_PORT:-80}:80"
- - "${HTTPS_PORT:-443}:443"
- volumes:
- - /var/run/docker.sock:/tmp/docker.sock:ro
- - ./configs:/etc/nginx/conf.d
- - nginx-certs:/etc/nginx/certs
- - ./vhost:/etc/nginx/vhost.d
- - nginx-html:/usr/share/nginx/html
- - ./logs/nginx:/var/log/nginx
- networks:
- - v2ray-network
- labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
- healthcheck:
- test: ["CMD", "nginx", "-t"]
- interval: 30s
- timeout: 10s
- retries: 3
- # ============================================
- # Docker-Gen Service - Auto Config Generator
- # ============================================
- dockergen:
- image: jwilder/docker-gen:${DOCKER_GEN_VERSION:-0.9}
- container_name: ${DOCKERGEN_CONTAINER_NAME:-dockergen}
- restart: ${RESTART_POLICY:-always}
- command: >-
- -notify-sighup ${NGINX_CONTAINER_NAME:-nginx} -watch
- ${TEMPLATE_PATH:-/etc/docker-gen/templates/nginx.tmpl}
- ${OUTPUT_PATH:-/etc/nginx/conf.d/default.conf}
- volumes:
- - /var/run/docker.sock:/tmp/docker.sock:ro
- - ./configs/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl
- - ./configs:/etc/nginx/conf.d
- - nginx-certs:/etc/nginx/certs
- - ./vhost:/etc/nginx/vhost.d
- - nginx-html:/usr/share/nginx/html
- - ./logs/docker-gen:/var/log/docker-gen
- networks:
- - v2ray-network
- depends_on:
- - nginx
- labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.docker_gen: "true"
- # ============================================
- # ACME Companion - SSL Certificate Manager
- # ============================================
- nginx-proxy-acme:
- image: nginxproxy/acme-companion:${ACME_VERSION:-2.2}
- container_name: ${ACME_CONTAINER_NAME:-nginx-proxy-acme}
- restart: ${RESTART_POLICY:-always}
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock:ro
- - acme-data:/etc/acme.sh
- - ./configs:/etc/nginx/conf.d
- - nginx-certs:/etc/nginx/certs
- - ./vhost:/etc/nginx/vhost.d
- - nginx-html:/usr/share/nginx/html
- - ./logs/acme:/var/log/acme
- environment:
- - DEFAULT_EMAIL=${LETSENCRYPT_EMAIL:[email protected]}
- - NGINX_PROXY_CONTAINER=${NGINX_CONTAINER_NAME:-nginx}
- - NGINX_DOCKER_GEN_CONTAINER=${DOCKERGEN_CONTAINER_NAME:-dockergen}
- - ACME_CA_URI=${ACME_CA_URI:-https://acme-v02.api.letsencrypt.org/directory}
- - DEBUG=${DEBUG:-0}
- networks:
- - v2ray-network
- depends_on:
- - nginx
- - dockergen
- # ============================================
- # V2Ray Service - Multi-Protocol Proxy Server
- # ============================================
- v2ray:
- image: v2fly/v2fly-core:${V2RAY_VERSION:-v4.45.2}
- container_name: ${V2RAY_CONTAINER_NAME:-v2ray}
- restart: ${RESTART_POLICY:-always}
- environment:
- # V2Ray AEAD setting
- - v2ray.vmess.aead.forced=${V2RAY_VMESS_AEAD_FORCED:-false}
- # nginx-proxy configuration - VIRTUAL_HOST is the key for routing
- - VIRTUAL_HOST=${DOMAIN:-your-domain.com}
- - LETSENCRYPT_HOST=${DOMAIN:-your-domain.com}
- - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL:[email protected]}
- # Use VLESS WS port as the default VIRTUAL_PORT
- - VIRTUAL_PORT=${VLESS_WS_PORT:-1310}
- volumes:
- - ./v2ray/config:/etc/v2ray:ro
- - ./logs/v2ray:/var/log/v2ray
- networks:
- - v2ray-network
- depends_on:
- - nginx
|