Files
Phantom/release/docker-compose.user-scenarios.yml

470 lines
12 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 <profile-name> 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