Files
darkproxy/docker-compose.lock.yml
T
auto-ci 4bbc8284d0
Configuration validation / lint (push) Has been cancelled
Configuration validation / smoke (push) Has been cancelled
compose: add dark3proxy healthcheck for router stack
2026-03-09 17:25:57 -04:00

298 lines
9.3 KiB
YAML

services:
dark3proxy:
container_name: dark3proxy
build:
context: ./3proxy/.
platform: linux/amd64
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
dns:
- "10.5.0.6"
dns_search: internal.namespace #namespace used in internal DNS
environment:
YGG_CONNECT_WAIT_SECONDS: "8"
volumes:
- "./3proxy/first-instanse.cfg:/etc/3proxy/first-instanse.cfg"
- "./3proxy/second-instanse.cfg:/etc/3proxy/second-instanse.cfg"
- "./3proxy/yggdrasil.conf:/etc/yggdrasil/yggdrasil.conf"
restart: unless-stopped
healthcheck:
test: ["CMD", "bash", "-lc", "pgrep -f 'yggdrasil -useconffile' >/dev/null && pgrep -f '3proxy /etc/3proxy/second-instanse.cfg' >/dev/null && pgrep -f '3proxy /etc/3proxy/first-instanse.cfg' >/dev/null && pgrep -f 'python3 /usr/local/bin/socks_router.py' >/dev/null"]
interval: 30s
timeout: 10s
retries: 3
start_period: 45s
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
ports:
- "2000:1080" # primary host SOCKS via dark3proxy (externally reachable)
- "2002:8161" # 3proxy admin page
networks:
darkproxy:
ipv4_address: 10.5.0.8
i2pd_yggdrasil:
container_name: darki2p
build:
context: ./i2pd_yggdrasil_docker/src
dockerfile: Dockerfile
platform: linux/amd64
privileged: true
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- "./i2pd_yggdrasil_docker/src/entrypoint.sh:/entrypoint.sh:ro"
ports:
# I2P Service Ports
# - "2827:2827" # BOB Bridge
# - "4444:4444" # HTTP Proxy
# - "4447:4447" # SOCKS Proxy
- "2001:7070" # Webconsole
# - "7650:7650" # I2PControl
# - "7654:7654" # I2CP
# - "7656:7656" # SAM Bridge (TCP)
- "10765:10765" # Main I2P Listener
# [dns] section enabled in i2pd.conf; DNS port is 53 (accessible internally at 10.5.0.2:53)
# mapping to host is possible if desired, e.g. 10853:53/udp
# Yggdrasil Ports
- "10654:10654" # Yggdrasil Listener
environment:
tz: /run/secrets/tz
# Lower-intensity peer selection for faster readiness in lock workflow.
YGG_PEER_PARALLEL: "2"
YGG_PEER_PINGS: "3"
YGG_PEER_BEST: "4"
YGG_PEER_MAX_FROM_COUNTRY: "1"
YGG_PEER_PING_INTERVAL: "0.3"
YGG_CONNECT_WAIT_SECONDS: "20"
secrets:
- tz
restart: unless-stopped
healthcheck:
test: ["CMD", "bash", "-c", "pgrep i2pd && pgrep yggdrasil"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15m
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
mac_address: ce:22:b8:0e:6e:78
networks:
darkproxy:
ipv4_address: 10.5.0.2
tor_yggdrasil:
build:
context: ./tor_yggdrasil_docker
dockerfile: Dockerfile
platform: linux/amd64
# image: tor_yggdrasil:latest
# container_name: tor_over_yggdrasil
container_name: darktor
entrypoint: ["tor"]
command: ["-f", "/etc/tor/torrc"]
# platform removed; image is amd64-only
security_opt:
- no-new-privileges:true # Security enhancement - prevent privilege esca>
volumes:
- "./tor_yggdrasil_docker/torrc:/etc/tor/torrc:ro"
ports:
- "127.0.0.1:2006:9053/udp" # direct Tor DNSPort
restart: unless-stopped # Auto-restart unless manually stopped
dns:
- "10.5.0.6"
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
networks:
darkproxy:
ipv4_address: 10.5.0.7
alfis:
image: cofob/alfis
platform: linux/amd64
# platform removed; image is amd64 only
container_name: darkalfis
volumes:
- darkalfis_data:/storage
restart: unless-stopped
stop_grace_period: 10s
dns:
- "10.5.0.6"
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
networks:
darkproxy:
ipv4_address: 10.5.0.3
coredns:
# image: darkdns
build:
context: ./PopuraDNS
dockerfile: Dockerfile
platform: linux/amd64
container_name: darkdns
restart: unless-stopped
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
logging:
driver: "json-file"
options:
max-size: "10m" # Maximum log file size
max-file: "3" # Maximum of 3 rotating log files
networks:
darkproxy:
ipv4_address: 10.5.0.4
unbound:
container_name: darkunbound
image: mvance/unbound:latest
platform: linux/amd64
# platform removed; image is amd64-only
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
networks:
darkproxy:
ipv4_address: 10.5.0.5
volumes:
- type: bind
read_only: true
source: ./unbound/unbound.conf
target: /opt/unbound/etc/unbound/unbound.conf
- "./unbound/forward-records.conf:/opt/unbound/etc/unbound/forward-records.conf"
- "./unbound/a-records.conf:/opt/unbound/etc/unbound/a-records.conf"
# ports:
# - "5053:5053/tcp"
# - "5053:5053/udp"
# healthcheck:
# disable: true
restart: unless-stopped
pihole:
container_name: darkpihole
image: pihole/pihole:latest
platform: linux/amd64
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports:
# DNS Ports
- "53:53/tcp"
- "53:53/udp"
# Default HTTP Port
# - "80:80/tcp"
# Default HTTPs Port. FTL will generate a self-signed certificate
# - "443:443/tcp
# Uncomment the line below if you are using Pi-hole as your DHCP server
# - "67:67/udp"
# Uncomment the line below if you are using Pi-hole as your NTP server
# - "123:123/udp"
- "2003:80/tcp" # pihole web port
environment:
# Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
TZ: 'America/Detroit'
# WEBPASSWORD: 'set a secure password here or it will be random'
# FTLCONF_webserver_api_password: 'darkproxy'
# If using Docker's default `bridge` network setting the dns listening mode should be set to 'all'
# FTLCONF_dns_listeningMode: 'all'
PIHOLE_DNS_: 10.5.0.4
TEMPERATUREUNIT: f
WEBTHEME: lcars
WEBPASSWORD: darkproxy
FTLCONF_dns_upstreams: coredns
# Volumes store your data between container upgrades
volumes:
# For persisting Pi-hole's databases and common configuration file
- './pihole/etc-pihole:/etc/pihole'
# Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards. Needs environment variable FTLCONF_misc_etc_dnsmasq_d: 'true'
- './pihole/etc-dnsmasq.d:/etc/dnsmasq.d'
cap_add:
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
# Required if you are using Pi-hole as your DHCP server, else not needed
- NET_ADMIN
# Required if you are using Pi-hole as your NTP client to be able to set the host's system time
# - SYS_TIME
# Optional, if Pi-hole should get some more processing time
- SYS_NICE
restart: unless-stopped # Recommended but not required (DHCP needs NET_ADMIN)
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
healthcheck:
test: ["CMD", "dig", "+short", "+norecurse", "+timeout=2", "@127.0.0.1", "google.com"]
interval: 1m
timeout: 10s
retries: 3
start_period: 30s
networks:
darkproxy:
ipv4_address: 10.5.0.6
geth:
image: ethereum/client-go:latest
platform: linux/amd64
container_name: darkgeth
command:
- --syncmode=snap
- --http
- --http.addr=0.0.0.0
- --http.port=8545
- --http.api=eth,net,web3
- --cache=256
networks:
darkproxy:
ipv4_address: 10.5.0.10
restart: unless-stopped
stop_grace_period: 30s
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8545"]
interval: 30s
timeout: 10s
retries: 3
start_period: 120s
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
emc:
image: wg00/emercoin:0.8.4
platform: linux/amd64
container_name: darkemer
volumes:
- emc_data:/emc/data
- /etc/localtime:/etc/localtime:ro
command:
- -datadir=/emc/data
- -conf=/emc/emercoin.conf
- -printtoconsole
networks:
darkproxy:
ipv4_address: 10.5.0.9
restart: unless-stopped
stop_grace_period: 30s
volumes:
darkalfis_data:
name: darkalfis_data
emc_data:
name: emc_data
tor-data:
driver: local
networks:
darkproxy:
# name: darkproxy
enable_ipv6: true
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
- subnet: 2001:0BC5::/112
gateway: 2001:0BC5::1
secrets:
tz:
file: ./secrets/tz.txt
YGGDRASIL_GENERATE_KEYS:
file: ./secrets/YGGDRASIL_GENERATE_KEYS.txt