Files
Phantom/release/docker-compose.extended.yml

362 lines
11 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.
# Phantom Protocol Extended Infrastructure
# Полная анонимная интернет-инфраструктура с DNS, Hidden Services и Exit Nodes
version: '3.8'
networks:
phantom-network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
phantom-internal:
driver: bridge
internal: true
ipam:
config:
- subnet: 172.21.0.0/16
volumes:
phantom-dns-data:
phantom-hs1-data:
phantom-hs2-data:
phantom-hs3-data:
phantom-exit1-data:
phantom-exit2-data:
phantom-registry-data:
phantom-monitor-data:
services:
# Phantom DNS Servers (2 экземпляра для отказоустойчивости)
phantom-dns-1:
build:
context: .
dockerfile: docker/Dockerfile.dns
container_name: phantom-dns-1
hostname: dns1.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.1.10
ports:
- "5353:5353/udp" # DNS
- "8053:8053/tcp" # Управление
volumes:
- phantom-dns-data:/var/lib/phantom
- ./logs/dns1:/var/log/phantom
environment:
- PHANTOM_NODE_ID=dns1
- PHANTOM_DNS_PORT=5353
- PHANTOM_DNS_BIND_ADDR=0.0.0.0
- PHANTOM_DNS_LOG_LEVEL=INFO
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.11:6881,172.20.1.12:6881
restart: unless-stopped
healthcheck:
test: ["CMD", "/usr/local/bin/phantom-dns-healthcheck.sh"]
interval: 30s
timeout: 10s
retries: 3
phantom-dns-2:
build:
context: .
dockerfile: docker/Dockerfile.dns
container_name: phantom-dns-2
hostname: dns2.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.1.11
ports:
- "5354:5353/udp" # DNS
- "8054:8053/tcp" # Управление
volumes:
- phantom-dns-data:/var/lib/phantom
- ./logs/dns2:/var/log/phantom
environment:
- PHANTOM_NODE_ID=dns2
- PHANTOM_DNS_PORT=5353
- PHANTOM_DNS_BIND_ADDR=0.0.0.0
- PHANTOM_DNS_LOG_LEVEL=INFO
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.12:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
# Hidden Services (.phantom сайты)
phantom-hs-welcome:
build:
context: .
dockerfile: docker/Dockerfile.hidden-service
container_name: phantom-hs-welcome
hostname: welcome.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.2.10
phantom-internal:
ipv4_address: 172.21.2.10
ports:
- "8080:8080/tcp" # Управление
volumes:
- phantom-hs1-data:/var/lib/phantom
- ./logs/hs-welcome:/var/log/phantom
- ./sites/welcome:/var/lib/phantom/hidden-service/www
environment:
- PHANTOM_NODE_ID=hs-welcome
- PHANTOM_HS_NAME=phantom-welcome
- PHANTOM_HS_LOCAL_PORT=80
- PHANTOM_HS_INTRO_POINTS=3
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
phantom-hs-forum:
build:
context: .
dockerfile: docker/Dockerfile.hidden-service
container_name: phantom-hs-forum
hostname: forum.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.2.11
phantom-internal:
ipv4_address: 172.21.2.11
ports:
- "8081:8080/tcp" # Управление
volumes:
- phantom-hs2-data:/var/lib/phantom
- ./logs/hs-forum:/var/log/phantom
- ./sites/forum:/var/lib/phantom/hidden-service/www
environment:
- PHANTOM_NODE_ID=hs-forum
- PHANTOM_HS_NAME=phantom-forum
- PHANTOM_HS_LOCAL_PORT=80
- PHANTOM_HS_INTRO_POINTS=3
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
phantom-hs-marketplace:
build:
context: .
dockerfile: docker/Dockerfile.hidden-service
container_name: phantom-hs-marketplace
hostname: market.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.2.12
phantom-internal:
ipv4_address: 172.21.2.12
ports:
- "8082:8080/tcp" # Управление
volumes:
- phantom-hs3-data:/var/lib/phantom
- ./logs/hs-marketplace:/var/log/phantom
- ./sites/marketplace:/var/lib/phantom/hidden-service/www
environment:
- PHANTOM_NODE_ID=hs-marketplace
- PHANTOM_HS_NAME=phantom-marketplace
- PHANTOM_HS_LOCAL_PORT=80
- PHANTOM_HS_INTRO_POINTS=5 # Больше intro points для популярного сайта
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
# Exit Nodes (2 экземпляра в разных "юрисдикциях")
phantom-exit-us:
build:
context: .
dockerfile: docker/Dockerfile.exit-node
container_name: phantom-exit-us
hostname: exit-us.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.3.10
ports:
- "1080:1080/tcp" # SOCKS5
- "3128:3128/tcp" # HTTP прокси
- "5353:5353/udp" # DNS resolver
- "8083:8081/tcp" # Управление
volumes:
- phantom-exit1-data:/var/lib/phantom
- ./logs/exit-us:/var/log/phantom
- ./configs/exit-policies/us.policy:/var/lib/phantom/exit-node/policies/exit.policy
environment:
- PHANTOM_NODE_ID=exit-us
- PHANTOM_EXIT_NAME=phantom-exit-us
- PHANTOM_EXIT_CONTACT=admin-us@phantom.local
- PHANTOM_EXIT_COUNTRY=US
- PHANTOM_EXIT_BANDWIDTH_LIMIT=52428800 # 50 MB/s
- PHANTOM_EXIT_MAX_CONNECTIONS=2000
- PHANTOM_EXIT_ENABLE_SOCKS5=true
- PHANTOM_EXIT_ENABLE_HTTP=true
- PHANTOM_EXIT_ENABLE_DNS=true
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
cap_add:
- NET_ADMIN # Для iptables
phantom-exit-eu:
build:
context: .
dockerfile: docker/Dockerfile.exit-node
container_name: phantom-exit-eu
hostname: exit-eu.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.3.11
ports:
- "1081:1080/tcp" # SOCKS5
- "3129:3128/tcp" # HTTP прокси
- "5354:5353/udp" # DNS resolver
- "8084:8081/tcp" # Управление
volumes:
- phantom-exit2-data:/var/lib/phantom
- ./logs/exit-eu:/var/log/phantom
- ./configs/exit-policies/eu.policy:/var/lib/phantom/exit-node/policies/exit.policy
environment:
- PHANTOM_NODE_ID=exit-eu
- PHANTOM_EXIT_NAME=phantom-exit-eu
- PHANTOM_EXIT_CONTACT=admin-eu@phantom.local
- PHANTOM_EXIT_COUNTRY=EU
- PHANTOM_EXIT_BANDWIDTH_LIMIT=52428800 # 50 MB/s
- PHANTOM_EXIT_MAX_CONNECTIONS=2000
- PHANTOM_EXIT_ENABLE_SOCKS5=true
- PHANTOM_EXIT_ENABLE_HTTP=true
- PHANTOM_EXIT_ENABLE_DNS=true
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
cap_add:
- NET_ADMIN # Для iptables
# Service Registry - каталог .phantom сайтов
phantom-registry:
build:
context: .
dockerfile: docker/Dockerfile.registry
container_name: phantom-registry
hostname: registry.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.4.10
phantom-internal:
ipv4_address: 172.21.4.10
ports:
- "8085:8080/tcp" # Веб-интерфейс
- "8086:8081/tcp" # API
volumes:
- phantom-registry-data:/var/lib/phantom
- ./logs/registry:/var/log/phantom
environment:
- PHANTOM_NODE_ID=registry
- PHANTOM_REGISTRY_NAME=phantom-registry
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
# Phantom Browser - клиент для доступа к .phantom сайтам
phantom-browser:
build:
context: .
dockerfile: docker/Dockerfile.browser
container_name: phantom-browser
hostname: browser.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.5.10
ports:
- "8087:8080/tcp" # Веб-интерфейс браузера
- "9050:9050/tcp" # SOCKS5 прокси для внешних приложений
volumes:
- ./logs/browser:/var/log/phantom
environment:
- PHANTOM_NODE_ID=browser
- PHANTOM_DNS_SERVERS=172.20.1.10:5353,172.20.1.11:5353
- PHANTOM_EXIT_NODES=172.20.3.10:1080,172.20.3.11:1080
- PHANTOM_KADEMLIA_BOOTSTRAP=172.20.1.10:6881,172.20.1.11:6881
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
- phantom-exit-us
- phantom-exit-eu
# Monitoring Dashboard
phantom-monitor:
build:
context: .
dockerfile: docker/Dockerfile.monitor
container_name: phantom-monitor
hostname: monitor.phantom.local
networks:
phantom-network:
ipv4_address: 172.20.6.10
ports:
- "8090:8080/tcp" # Веб-интерфейс мониторинга
- "9090:9090/tcp" # Prometheus метрики
volumes:
- phantom-monitor-data:/var/lib/phantom
- ./logs:/var/log/phantom:ro # Только чтение логов
environment:
- PHANTOM_MONITOR_REFRESH_INTERVAL=30
- PHANTOM_MONITOR_NODES=dns1:172.20.1.10:8053,dns2:172.20.1.11:8053,hs-welcome:172.20.2.10:8080,hs-forum:172.20.2.11:8080,hs-marketplace:172.20.2.12:8080,exit-us:172.20.3.10:8083,exit-eu:172.20.3.11:8084,registry:172.20.4.10:8086
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
- phantom-hs-welcome
- phantom-hs-forum
- phantom-hs-marketplace
- phantom-exit-us
- phantom-exit-eu
- phantom-registry
# Load Balancer для DNS
phantom-dns-lb:
image: nginx:alpine
container_name: phantom-dns-lb
networks:
phantom-network:
ipv4_address: 172.20.7.10
ports:
- "53:53/udp" # Стандартный DNS порт
- "8088:8080/tcp" # Статус балансировщика
volumes:
- ./docker/nginx/dns-lb.conf:/etc/nginx/nginx.conf:ro
restart: unless-stopped
depends_on:
- phantom-dns-1
- phantom-dns-2
# Дополнительные конфигурации
x-phantom-node-common: &phantom-node-common
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
security_opt:
- no-new-privileges:true
read_only: false
tmpfs:
- /tmp:noexec,nosuid,size=100m