470 lines
12 KiB
YAML
470 lines
12 KiB
YAML
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
|
||
|