version: '3.8' # Phantom Protocol - Пользовательские сценарии # Готовые Docker контейнеры для различных случаев использования services: # Базовая Phantom сеть (5 узлов) phantom-node-1: image: phantom-protocol:latest container_name: phantom-node-1 hostname: phantom-node-1 networks: phantom-network: ipv4_address: 172.20.0.10 ports: - "8050:8050" environment: - PHANTOM_NODE_ID=node-1 - PHANTOM_LISTEN_PORT=8050 - PHANTOM_BOOTSTRAP_NODES= - PHANTOM_LOG_LEVEL=INFO volumes: - phantom-node-1-data:/var/lib/phantom restart: unless-stopped healthcheck: test: ["CMD", "/usr/local/bin/phantom-health-check"] interval: 30s timeout: 10s retries: 3 phantom-node-2: image: phantom-protocol:latest container_name: phantom-node-2 hostname: phantom-node-2 networks: phantom-network: ipv4_address: 172.20.0.11 ports: - "8051:8050" environment: - PHANTOM_NODE_ID=node-2 - PHANTOM_LISTEN_PORT=8050 - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050 - PHANTOM_LOG_LEVEL=INFO volumes: - phantom-node-2-data:/var/lib/phantom restart: unless-stopped depends_on: - phantom-node-1 phantom-node-3: image: phantom-protocol:latest container_name: phantom-node-3 hostname: phantom-node-3 networks: phantom-network: ipv4_address: 172.20.0.12 ports: - "8052:8050" environment: - PHANTOM_NODE_ID=node-3 - PHANTOM_LISTEN_PORT=8050 - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - PHANTOM_LOG_LEVEL=INFO volumes: - phantom-node-3-data:/var/lib/phantom restart: unless-stopped depends_on: - phantom-node-1 - phantom-node-2 phantom-node-4: image: phantom-protocol:latest container_name: phantom-node-4 hostname: phantom-node-4 networks: phantom-network: ipv4_address: 172.20.0.13 ports: - "8053:8050" environment: - PHANTOM_NODE_ID=node-4 - PHANTOM_LISTEN_PORT=8050 - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050,172.20.0.12:8050 - PHANTOM_LOG_LEVEL=INFO volumes: - phantom-node-4-data:/var/lib/phantom restart: unless-stopped depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 phantom-node-5: image: phantom-protocol:latest container_name: phantom-node-5 hostname: phantom-node-5 networks: phantom-network: ipv4_address: 172.20.0.14 ports: - "8054:8050" environment: - PHANTOM_NODE_ID=node-5 - PHANTOM_LISTEN_PORT=8050 - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050,172.20.0.12:8050,172.20.0.13:8050 - PHANTOM_LOG_LEVEL=INFO volumes: - phantom-node-5-data:/var/lib/phantom restart: unless-stopped depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 - phantom-node-4 # SOCKS5 прокси через Phantom phantom-socks5-proxy: build: context: . dockerfile: docker/Dockerfile.socks5-proxy container_name: phantom-socks5-proxy hostname: phantom-socks5-proxy networks: phantom-network: ipv4_address: 172.20.0.20 ports: - "8080:8080" # SOCKS5 прокси порт environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - PHANTOM_HOPS=3 - SOCKS5_LISTEN_PORT=8080 - SOCKS5_LISTEN_HOST=0.0.0.0 depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 restart: unless-stopped healthcheck: test: ["CMD", "nc", "-z", "localhost", "8080"] interval: 30s timeout: 5s retries: 3 # HTTP прокси через Phantom phantom-http-proxy: build: context: . dockerfile: docker/Dockerfile.http-proxy container_name: phantom-http-proxy hostname: phantom-http-proxy networks: phantom-network: ipv4_address: 172.20.0.21 ports: - "8888:8888" # HTTP прокси порт environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - PHANTOM_HOPS=3 - HTTP_PROXY_PORT=8888 - HTTP_PROXY_HOST=0.0.0.0 depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 restart: unless-stopped # VPN сервер через Phantom phantom-vpn-server: build: context: . dockerfile: docker/Dockerfile.vpn-server container_name: phantom-vpn-server hostname: phantom-vpn-server networks: phantom-network: ipv4_address: 172.20.0.25 ports: - "1194:1194/udp" # OpenVPN порт - "1194:1194/tcp" # TCP fallback environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - PHANTOM_HOPS=5 - VPN_NETWORK=10.8.0.0/24 - VPN_SERVER_IP=10.8.0.1 cap_add: - NET_ADMIN devices: - /dev/net/tun volumes: - phantom-vpn-certs:/etc/openvpn/certs - phantom-vpn-config:/etc/openvpn/config depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 restart: unless-stopped # DNS сервер для .phantom доменов phantom-dns-server: build: context: . dockerfile: docker/Dockerfile.dns-server container_name: phantom-dns-server hostname: phantom-dns-server networks: phantom-network: ipv4_address: 172.20.0.30 ports: - "53:53/udp" # DNS UDP - "53:53/tcp" # DNS TCP - "8053:8053" # DNS over HTTPS environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - DNS_LISTEN_PORT=53 - DNS_UPSTREAM=8.8.8.8,1.1.1.1 - PHANTOM_TLD_ENABLED=true volumes: - phantom-dns-config:/etc/phantom-dns - phantom-dns-cache:/var/cache/phantom-dns depends_on: - phantom-node-1 - phantom-node-2 restart: unless-stopped # Hidden Service для веб-сайтов phantom-hidden-service: build: context: . dockerfile: docker/Dockerfile.hidden-service container_name: phantom-hidden-service hostname: phantom-hidden-service networks: phantom-network: ipv4_address: 172.20.0.35 ports: - "8080:80" # Веб-сервер environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - HIDDEN_SERVICE_NAME=example - HIDDEN_SERVICE_PORT=80 - PHANTOM_HOPS=3 volumes: - phantom-hidden-service-keys:/var/lib/phantom/hidden-service - phantom-hidden-service-www:/var/www/html depends_on: - phantom-node-1 - phantom-node-2 - phantom-dns-server restart: unless-stopped # Exit Node для доступа к обычному интернету phantom-exit-node: build: context: . dockerfile: docker/Dockerfile.exit-node container_name: phantom-exit-node hostname: phantom-exit-node networks: phantom-network: ipv4_address: 172.20.0.40 environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - EXIT_NODE_ENABLED=true - EXIT_POLICY_ALLOW=80,443,22,21,25,110,143,993,995 - EXIT_POLICY_DENY=25,135,139,445,1433,3389 - BANDWIDTH_LIMIT=10MB cap_add: - NET_ADMIN depends_on: - phantom-node-1 - phantom-node-2 restart: unless-stopped # Мониторинг и веб-интерфейс phantom-monitor: build: context: . dockerfile: docker/Dockerfile.monitor container_name: phantom-monitor hostname: phantom-monitor networks: phantom-network: ipv4_address: 172.20.0.50 ports: - "8090:8090" # Веб-интерфейс мониторинга - "9090:9090" # Prometheus метрики environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - MONITOR_WEB_PORT=8090 - PROMETHEUS_PORT=9090 - MONITOR_REFRESH_INTERVAL=10 volumes: - phantom-monitor-data:/var/lib/phantom-monitor depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 - phantom-node-4 - phantom-node-5 restart: unless-stopped # Файловое хранилище через Phantom phantom-storage: build: context: . dockerfile: docker/Dockerfile.storage container_name: phantom-storage hostname: phantom-storage networks: phantom-network: ipv4_address: 172.20.0.60 ports: - "8070:8070" # API для загрузки/скачивания файлов environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - STORAGE_API_PORT=8070 - STORAGE_REDUNDANCY=3 - STORAGE_MAX_FILE_SIZE=100MB volumes: - phantom-storage-data:/var/lib/phantom-storage depends_on: - phantom-node-1 - phantom-node-2 - phantom-node-3 restart: unless-stopped # Мессенджер через Phantom phantom-messenger: build: context: . dockerfile: docker/Dockerfile.messenger container_name: phantom-messenger hostname: phantom-messenger networks: phantom-network: ipv4_address: 172.20.0.70 ports: - "8075:8075" # WebSocket API - "8076:8076" # HTTP API environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - MESSENGER_WS_PORT=8075 - MESSENGER_HTTP_PORT=8076 - MESSAGE_ENCRYPTION=AES-256-GCM - MESSAGE_TTL=3600 volumes: - phantom-messenger-data:/var/lib/phantom-messenger depends_on: - phantom-node-1 - phantom-node-2 restart: unless-stopped # Игровой сервер через Phantom phantom-game-server: build: context: . dockerfile: docker/Dockerfile.game-server container_name: phantom-game-server hostname: phantom-game-server networks: phantom-network: ipv4_address: 172.20.0.80 ports: - "25565:25565" # Minecraft сервер - "7777:7777" # Общий игровой порт environment: - PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8050,172.20.0.11:8050 - GAME_TYPE=minecraft - GAME_PORT=25565 - PHANTOM_HOPS=3 - PLAYER_ANONYMITY=true volumes: - phantom-game-data:/var/lib/phantom-game depends_on: - phantom-node-1 - phantom-node-2 restart: unless-stopped # Тестовый веб-сервер для демонстрации test-web-server: image: nginx:alpine container_name: test-web-server hostname: test-web-server networks: phantom-network: ipv4_address: 172.20.0.100 ports: - "8081:80" volumes: - ./examples/test-website:/usr/share/nginx/html:ro restart: unless-stopped networks: phantom-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 gateway: 172.20.0.1 volumes: # Данные узлов Phantom сети phantom-node-1-data: phantom-node-2-data: phantom-node-3-data: phantom-node-4-data: phantom-node-5-data: # Конфигурации сервисов phantom-vpn-certs: phantom-vpn-config: phantom-dns-config: phantom-dns-cache: phantom-hidden-service-keys: phantom-hidden-service-www: phantom-monitor-data: phantom-storage-data: phantom-messenger-data: phantom-game-data: # Дополнительные конфигурации для различных сценариев x-phantom-common: &phantom-common image: phantom-protocol:latest networks: - phantom-network restart: unless-stopped healthcheck: test: ["CMD", "/usr/local/bin/phantom-health-check"] interval: 30s timeout: 10s retries: 3 # Профили для различных сценариев использования # Использование: docker-compose --profile up # Профиль: Базовая сеть # docker-compose --profile basic up x-basic-profile: &basic-profile profiles: - basic # Профиль: Прокси сервисы # docker-compose --profile proxy up x-proxy-profile: &proxy-profile profiles: - proxy - full # Профиль: VPN сервисы # docker-compose --profile vpn up x-vpn-profile: &vpn-profile profiles: - vpn - full # Профиль: Веб-сервисы # docker-compose --profile web up x-web-profile: &web-profile profiles: - web - full # Профиль: Полная инфраструктура # docker-compose --profile full up x-full-profile: &full-profile profiles: - full