version: '3.8' # Updated to use newer Go-based images for builds; placeholder for future dynamic tag adjustments services: tor: image: torproject/tor:latest container_name: 4nk-tor hostname: tor.4nk.local ports: - "9050:9050" - "9051:9051" volumes: - ./modules/tor/conf/tor.conf:/etc/tor/torrc:ro - ./modules/tor/data:/var/lib/tor - ./modules/tor/log:/var/log/tor networks: 4nk_network: ipv4_address: 172.20.0.10 restart: unless-stopped bitcoin: image: ruimarinho/bitcoin-core:latest container_name: 4nk-bitcoin hostname: bitcoin.4nk.local ports: - "38333:38333" - "38332:38332" - "29000:29000" volumes: - ./modules/bitcoin/data:/home/bitcoin/.bitcoin - ./modules/bitcoin/conf/bitcoin.conf:/home/bitcoin/.bitcoin/bitcoin.conf:ro - ./modules/bitcoin/logs:/home/bitcoin/.bitcoin/logs networks: 4nk_network: ipv4_address: 172.20.0.11 restart: unless-stopped depends_on: - tor blindbit: image: 4nk-node-blindbit:latest container_name: 4nk-blindbit hostname: blindbit.4nk.local ports: - "8000:8000" environment: - HOST=0.0.0.0:8000 - CHAIN=signet - SYNC_START_HEIGHT=1 - MAX_PARALLEL_TWEAK_COMPUTATIONS=4 - MAX_PARALLEL_REQUESTS=4 - TWEAKS_ONLY=0 - TWEAKS_FULL_BASIC=1 - TWEAKS_FULL_WITH_DUST_FILTER=1 - TWEAKS_CUT_THROUGH_WITH_DUST_FILTER=1 command: ["/main", "--datadir", "/blindbit"] working_dir: / volumes: - ./modules/blindbit/conf/blindbit.toml:/blindbit/blindbit.toml:ro - ./modules/blindbit/data:/blindbit - ./modules/blindbit/logs:/blindbit/logs networks: 4nk_network: ipv4_address: 172.20.0.12 restart: unless-stopped depends_on: - bitcoin healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8000"] interval: 30s timeout: 10s retries: 3 start_period: 40s sdk_storage: image: 4nk-node-sdk_storage:dev container_name: 4nk-sdk-storage hostname: sdk-storage.4nk.local ports: - "8081:8081" volumes: - ./modules/sdk_storage/conf/sdk_storage.conf:/usr/local/bin/sdk_storage.conf:ro - ./modules/sdk_storage/log:/app/logs networks: 4nk_network: ipv4_address: 172.20.0.13 restart: unless-stopped depends_on: - blindbit healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8081"] interval: 30s timeout: 10s retries: 3 start_period: 40s sdk_relay1: image: 4nk-node-sdk_relay1:dev container_name: 4nk-sdk-relay1 hostname: sdk-relay1.4nk.local ports: - "8090:8090" - "8091:8091" environment: - RELAY_RPC_USER=bitcoin - RELAY_RPC_PASSWORD=bitcoin volumes: - ./modules/sdk_relay1/conf/sdk_relay1.conf:/home/bitcoin/.conf:ro - ./modules/sdk_relay1/logs:/home/bitcoin/logs working_dir: /home/bitcoin networks: 4nk_network: ipv4_address: 172.20.0.14 restart: unless-stopped depends_on: - sdk_storage healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8091"] interval: 30s timeout: 10s retries: 3 start_period: 40s sdk_relay2: image: 4nk-node-sdk_relay2:dev container_name: 4nk-sdk-relay2 hostname: sdk-relay2.4nk.local ports: - "8092:8090" - "8093:8091" environment: - RELAY_RPC_USER=bitcoin - RELAY_RPC_PASSWORD=bitcoin volumes: - ./modules/sdk_relay2/conf/sdk_relay2.conf:/home/bitcoin/.conf:ro - ./modules/sdk_relay2/logs:/home/bitcoin/logs working_dir: /home/bitcoin networks: 4nk_network: ipv4_address: 172.20.0.15 restart: unless-stopped depends_on: - sdk_storage healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8091"] interval: 30s timeout: 10s retries: 3 start_period: 40s sdk_relay3: image: 4nk-node-sdk_relay3:dev container_name: 4nk-sdk-relay3 hostname: sdk-relay3.4nk.local ports: - "8094:8090" - "8095:8091" environment: - RELAY_RPC_USER=bitcoin - RELAY_RPC_PASSWORD=bitcoin volumes: - ./modules/sdk_relay3/conf/sdk_relay3.conf:/home/bitcoin/.conf:ro - ./modules/sdk_relay3/logs:/home/bitcoin/logs working_dir: /home/bitcoin networks: 4nk_network: ipv4_address: 172.20.0.16 restart: unless-stopped depends_on: - sdk_storage healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8091"] interval: 30s timeout: 10s retries: 3 start_period: 40s sdk_signer: image: 4nk-node-sdk_signer:dev container_name: 4nk-sdk-signer hostname: sdk-signer.4nk.local ports: - "9090:9090" volumes: - ./modules/sdk_signer/conf/sdk_signer.conf:/usr/local/bin/sdk_signer.conf:ro - ./modules/sdk_signer/data:/app/data - ./modules/sdk_signer/logs:/usr/src/app/logs networks: 4nk_network: ipv4_address: 172.20.0.17 restart: unless-stopped depends_on: - sdk_relay1 - sdk_relay2 - sdk_relay3 healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:9090"] interval: 30s timeout: 10s retries: 3 start_period: 40s ihm_client: image: 4nk-node-ihm_client:dev container_name: 4nk-ihm-client hostname: ihm-client.4nk.local ports: - "8080:80" - "3003:3003" volumes: - ./modules/ihm_client/logs:/var/log/ihm_client networks: 4nk_network: ipv4_address: 172.20.0.18 restart: unless-stopped depends_on: - sdk_signer healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost"] interval: 30s timeout: 10s retries: 3 start_period: 40s miniback-postgres: image: postgres:15 container_name: miniback-postgres hostname: miniback-postgres.4nk.local environment: - POSTGRES_USER=miniback - POSTGRES_PASSWORD=minibackpassword - POSTGRES_DB=miniback volumes: - miniback_pg_data:/var/lib/postgresql/data networks: 4nk_network: ipv4_address: 172.20.0.30 restart: unless-stopped ports: - "5432:5432" miniback: image: 4nk-node-miniback:dev container_name: miniback hostname: miniback.4nk.local env_file: - ./projects/lecoffre/lecoffre-back-mini/conf/lecoffre-back-mini_env.conf depends_on: - miniback-postgres networks: 4nk_network: ipv4_address: 172.20.0.31 restart: unless-stopped volumes: - ./projects/lecoffre/lecoffre-back-mini/logs:/logs - ./projects/lecoffre/lecoffre-back-mini/conf/lecoffre-back-mini_env.conf:/app/.env:ro coffre_front: image: lecoffre-front:dev container_name: coffre-front hostname: coffre-front.4nk.local volumes: - ./projects/lecoffre/lecoffre-front/logs:/logs networks: 4nk_network: ipv4_address: 172.20.0.32 restart: unless-stopped coffre_back_mini: image: lecoffre-back-mini:dev container_name: coffre-back-mini hostname: coffre-back-mini.4nk.local networks: 4nk_network: ipv4_address: 172.20.0.33 restart: unless-stopped nginx: image: nginx:1.25 container_name: 4nk-nginx hostname: nginx.4nk.local ports: - "80:80" volumes: - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./conf/nginx/sites-enabled:/etc/nginx/sites-enabled:ro - ./log/nginx:/var/log/nginx networks: 4nk_network: ipv4_address: 172.20.0.40 restart: unless-stopped # IA locale: Ollama + AnythingLLM ollama: image: ollama/ollama:latest container_name: 4nk-ollama hostname: ollama.4nk.local ports: - "11434:11434" environment: - OLLAMA_HOST=0.0.0.0 volumes: - ./modules/local_IA/data:/root/.ollama - ./modules/local_IA/logs:/var/log/ollama networks: 4nk_network: ipv4_address: 172.20.0.50 restart: unless-stopped anythingllm: image: mintplexlabs/anythingllm:latest container_name: 4nk-anythingllm hostname: anythingllm.4nk.local ports: - "3001:3001" environment: - SERVER_PORT=3001 - OLLAMA_URL=http://ollama.4nk.local:11434 volumes: - ./modules/local_IA/conf:/app/config - ./modules/local_IA/data:/app/storage - ./modules/local_IA/logs:/app/logs networks: 4nk_network: ipv4_address: 172.20.0.51 depends_on: - ollama restart: unless-stopped # Profil monitoring: Loki + Promtail + Grafana loki: image: grafana/loki:2.9.0 container_name: 4nk-loki ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml volumes: - ./log/loki-config.yaml:/etc/loki/local-config.yaml:ro - loki_data:/loki networks: 4nk_network: ipv4_address: 172.20.0.41 restart: unless-stopped promtail: image: grafana/promtail:2.9.0 container_name: 4nk-promtail command: -config.file=/etc/promtail/config.yml volumes: - ./log/promtail-config.yml:/etc/promtail/config.yml:ro - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/log/docker:/var/log/docker:ro - ./modules:/workspace/modules:ro - ./projects:/workspace/projects:ro - ./log:/workspace/logs:ro networks: 4nk_network: ipv4_address: 172.20.0.42 restart: unless-stopped depends_on: - loki grafana: image: grafana/grafana:10.0.0 container_name: 4nk-grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s/grafana - GF_SERVER_SERVE_FROM_SUB_PATH=true volumes: - grafana_data:/var/lib/grafana - ./log/grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro - ./log/grafana-dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml:ro - ./log/dashboards:/etc/grafana/provisioning/dashboards/dashboards:ro networks: 4nk_network: ipv4_address: 172.20.0.43 restart: unless-stopped depends_on: - loki # Profil outils de développement et diagnostic devtools: image: alpine:3.19 container_name: 4nk-devtools command: ["sh", "-c", "sleep infinity"] tty: true stdin_open: true volumes: - ./log:/workspace/logs - ./modules:/workspace/modules:ro - ./projects:/workspace/projects:ro networks: 4nk_network: ipv4_address: 172.20.0.44 restart: unless-stopped healthcheck: test: ["CMD", "sh", "-lc", "apk info >/dev/null 2>&1"] interval: 30s timeout: 5s retries: 3 volumes: miniback_pg_data: networks: 4nk_network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 4nk_projects_net: driver: bridge ipam: config: - subnet: 172.21.0.0/16