This commit is contained in:
Nicolas Cantu 2025-09-12 16:29:10 +02:00
parent f44f6cdd4e
commit a7311c9f12
21 changed files with 1301 additions and 708 deletions

View File

@ -0,0 +1,14 @@
host=blindbit-oracle.modules.4nk-local:8000
chain=signet
rpc_endpoint=http://bitcoin.modules.4nk-local:38332
cookie_path=/home/bitcoin/.bitcoin/signet/.cookie
rpc_user=
rpc_pass=
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

View File

@ -1,3 +1,9 @@
# Configuration IHM Client pour 4NK_node # Configuration IHM Client pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
# Configuration pour l'interface utilisateur # Configuration pour l'interface utilisateur
U32_MAX=4294967295
BASEURL=http://ihm.client.modules.4nk-local
BOOTSTRAPURL=["http://i1.sdk-relay.4nk-local:8090"]
STORAGEURL=http://sdk-storage.modules.4nk-local/storage
BLINDBITURL=http://blindbit.modules.4nk-local:8000
DEFAULTAMOUNT=1000

View File

@ -0,0 +1,5 @@
GF_SECURITY_ADMIN_PASSWORD=admin
GF_USERS_ALLOW_SIGN_UP=false
GF_SERVER_ROOT_URL=http://grafana.grafanalocal:3000
GF_SERVER_SERVE_FROM_SUB_PATH=false

View File

@ -1,11 +1,25 @@
# Configuration Host API pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
POSTGRES_USER=postgres POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres POSTGRES_PASSWORD=postgres
POSTGRES_DB=4nk_ia POSTGRES_DB=4nk_db
DATABASE_URL=postgresql+psycopg://postgres:postgres@postgres.data.modules.4nk-local:5432/4nk_ia MINIO_BUCKET=4nk-bucket
ANYLLM_API_KEY=dummy_key
NEO4J_AUTH=neo4j/neo4j
DATABASE_URL=postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres.data.modules.4nk-local:5432/$POSTGRES_DB
REDIS_URL=redis://redis.data.modules.4nk-local:6379/0 REDIS_URL=redis://redis.data.modules.4nk-local:6379/0
MINIO_ENDPOINT=4nk-ia-minio.4nk-local:9000
MINIO_BUCKET=4nk-bucket
ANYLLM_BASE_URL=http://4nk-ia-anythingllm.4nk-local:3001
ANYLLM_API_KEY=dummy_key
OLLAMA_BASE_URL=http://4nk-ia-ollama.4nk-local:11434
OPENSEARCH_URL=http://4nk-ia-opensearch.4nk-local:9200
NEO4J_URL=bolt://4nk-ia-neo4j.4nk-local:7687
NEO4J_AUTH=neo4j/neo4j
# Configuration de l'API
API_HOST=0.0.0.0
API_PORT=8000
API_WORKERS=4
LOG_LEVEL=INFO LOG_LEVEL=INFO
LOG_FORMAT=json LOG_FORMAT=json
# Sécurité
SECRET_KEY=your_secret_key_here SECRET_KEY=your_secret_key_here
ACCESS_TOKEN_EXPIRE_MINUTES=30 ACCESS_TOKEN_EXPIRE_MINUTES=30

View File

@ -1,12 +1,16 @@
# Configuration Worker pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
POSTGRES_USER=postgres POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres POSTGRES_PASSWORD=postgres
POSTGRES_DB=4nk_ia POSTGRES_DB=4nk_db
DATABASE_URL=postgresql+psycopg://postgres:postgres@postgres.data.modules.4nk-local:5432/4nk_ia MINIO_BUCKET=4nk-bucket
ANYLLM_API_KEY=dummy_key
NEO4J_AUTH=neo4j/neo4j
DATABASE_URL=postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres.data.modules.4nk-local:5432/$POSTGRES_DB
REDIS_URL=redis://redis.data.modules.4nk-local:6379/0 REDIS_URL=redis://redis.data.modules.4nk-local:6379/0
ANYLLM_API_KEY=4nk-anyllm-key MINIO_ENDPOINT=4nk-ia-minio.4nk-local:9000
OLLAMA_BASE_URL=http://ollama.ia.modules.4nk-local:11434 MINIO_BUCKET=4nk-bucket
OPENSEARCH_URL=http://opensearch.data.modules.4nk-local:9200 ANYLLM_BASE_URL=http://4nk-ia-anythingllm.4nk-local:3001
NEO4J_URL=bolt://neo4j.data.modules.4nk-local:7687 ANYLLM_API_KEY=dummy_key
NEO4J_AUTH=neo4j/4nkneo4j OLLAMA_BASE_URL=http://4nk-ia-ollama.4nk-local:11434
OPENSEARCH_URL=http://4nk-ia-opensearch.4nk-local:9200
NEO4J_URL=bolt://4nk-ia-neo4j.4nk-local:7687
NEO4J_AUTH=neo4j/neo4j

View File

@ -0,0 +1,7 @@
RELAY_RPC_USER=
RELAY_RPC_PASSWORD=
COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
relay_rpc_user=
relay_rpc_password=
cookie_path=/home/bitcoin/.bitcoin/signet/.cookie

View File

@ -0,0 +1,7 @@
RELAY_RPC_USER=
RELAY_RPC_PASSWORD=
COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
relay_rpc_user=
relay_rpc_password=
cookie_path=/home/bitcoin/.bitcoin/signet/.cookie

View File

@ -0,0 +1,7 @@
RELAY_RPC_USER=
RELAY_RPC_PASSWORD=
COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
relay_rpc_user=
relay_rpc_password=
cookie_path=/home/bitcoin/.bitcoin/signet/.cookie

View File

View File

@ -1,4 +1,28 @@
# Configuration LeCoffre Back Mini pour 4NK_node # Configuration LeCoffre Back Mini pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs OVH_SMS_SERVICE_NAME=
SMS_FACTOR_TOKEN=
MAILCHIMP_LIST_ID=
STRIPE_WEBHOOK_SECRET=
STRIPE_STANDARD_SUBSCRIPTION_PRICE_ID=
STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID=
STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID=
STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID=
APP_HOST=http://0.0.0.0
PORT=8080
NEXT_PUBLIC_4NK_URL=http://ihm.client.modules.4nk-local
NEXT_PUBLIC_FRONT_APP_HOST=http://coffre-front.4nk-local:3000
NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1
NEXT_PUBLIC_IDNOT_CLIENT_ID=
NEXT_PUBLIC_BACK_API_PROTOCOL=http
NEXT_PUBLIC_BACK_API_HOST=localhost
BACK_API_PORT=8080
BACK_API_ROOT_URL=/api
BACK_API_VERSION=/v1
IDNOT_ANNUARY_BASE_URL=https://qual-api.notaires.fr/annuaire
DB_HOST=0.0.0.0
DB_PORT=5432
DB_NAME=miniback
DB_USER=miniback
DB_PASSWORD=minibackpassword DB_PASSWORD=minibackpassword
LOG_LEVEL=debug LOG_LEVEL=debug

View File

@ -1,6 +1,10 @@
# Configuration LeCoffre Front pour 4NK_node # Configuration LeCoffre Front pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
NEXT_PUBLIC_4NK_URL=http://ihm.client.modules.4nk-local:3003 NEXT_PUBLIC_4NK_URL=http://ihm.client.modules.4nk-local:3003
NEXT_PUBLIC_FRONT_APP_HOST=http://0.0.0.0:3000 NEXT_PUBLIC_FRONT_APP_HOST=http://0.0.0.0:3000
NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1 NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1
NEXT_PUBLIC_BACK_API_PROTOCOL=http://
NEXT_PUBLIC_BACK_API_HOST=0.0.0.0
NEXT_PUBLIC_BACK_API_PORT=8080
NEXT_PUBLIC_BACK_API_ROOT_URL=/api
NEXT_PUBLIC_BACK_API_VERSION=/v1

56
create_individual_compose.sh Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
set -e
ROOT=$(pwd)
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
# Mapping des chemins vers les noms de services
declare -A SERVICE_MAP=(
["4nk-local/dnsmasq"]="dnsmasq.4nk-local"
["4nk-local/modules/tor"]="tor.modules.4nk-local"
["4nk-local/modules/bitcoin"]="bitcoin.modules.4nk-local"
["4nk-local/modules/blindbit-oracle"]="blindbit-oracle.modules.4nk-local"
["4nk-local/modules/sdk-storage"]="sdk-storage.modules.4nk-local"
["4nk-local/modules/sdk-relay/i1"]="i1.sdk-relay.modules.4nk-local"
["4nk-local/modules/sdk-relay/i2"]="i2.sdk-relay.modules.4nk-local"
["4nk-local/modules/sdk-relay/i3"]="i3.sdk-relay.modules.4nk-local"
["4nk-local/modules/client/sdk-signer"]="sdk-signer.client.modules.4nk-local"
["4nk-local/modules/client/ihm"]="ihm.client.modules.4nk-local"
["4nk-local/modules/ia/ollama"]="ollama.ia.modules.4nk-local"
["4nk-local/modules/ia/anythingsqlite"]="anythingsqlite.ia.modules.4nk-local"
["4nk-local/modules/ia/host-api"]="host-api.ia.modules.4nk-local"
["4nk-local/modules/ia/worker"]="worker.ia.modules.4nk-local"
["4nk-local/modules/grafana/loki"]="loki.grafana.modules.4nk-local"
["4nk-local/modules/grafana/prometheus"]="prometheus.grafana.modules.4nk-local"
["4nk-local/modules/grafana/promtail"]="promtail.grafana.modules.4nk-local"
["4nk-local/modules/grafana/grafana"]="grafana.grafana.modules.4nk-local"
["4nk-local/modules/nginx-proxy"]="nginx-proxy.modules.4nk-local"
["4nk-local/modules/data/postgres"]="postgres.data.modules.4nk-local"
["4nk-local/modules/data/redis"]="redis.data.modules.4nk-local"
["4nk-local/modules/data/minio"]="minio.data.modules.4nk-local"
["4nk-local/modules/data/neo4j"]="neo4j.data.modules.4nk-local"
["4nk-local/modules/data/opensearch"]="opensearch.data.modules.4nk-local"
["4nk-local/projects/lecoffre/front"]="front.lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/ia"]="ia.lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/back-mini"]="back-mini.lecoffre.projects.4nk-local"
)
# Créer les docker-compose.yml individuels
for path in "${!SERVICE_MAP[@]}"; do
service_name="${SERVICE_MAP[$path]}"
compose_file="$ROOT/$path/docker-compose.yml"
echo "Création de $compose_file pour $service_name"
cat > "$compose_file" << COMPOSE_EOF
services:
$service_name:
extends:
file: $GLOBAL_COMPOSE
service: $service_name
COMPOSE_EOF
echo "$compose_file créé"
done
echo "Tous les docker-compose.yml individuels ont été créés"

94
create_simple_compose.sh Executable file
View File

@ -0,0 +1,94 @@
#!/bin/bash
set -e
ROOT=$(pwd)
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
# Mapping des chemins vers les noms de services et leurs réseaux
declare -A SERVICE_MAP=(
["4nk-local/dnsmasq"]="dnsmasq.4nk-local|dnsmasq.4nk-local"
["4nk-local/modules/tor"]="tor.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/bitcoin"]="bitcoin.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/blindbit-oracle"]="blindbit-oracle.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-storage"]="sdk-storage.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i1"]="i1.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i2"]="i2.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i3"]="i3.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/client/sdk-signer"]="sdk-signer.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/client/ihm"]="ihm.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/ia/ollama"]="ollama.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/anythingsqlite"]="anythingsqlite.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/host-api"]="host-api.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/worker"]="worker.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/grafana/loki"]="loki.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/prometheus"]="prometheus.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/promtail"]="promtail.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/grafana"]="grafana.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/nginx-proxy"]="nginx-proxy.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/data/postgres"]="postgres.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/redis"]="redis.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/minio"]="minio.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/neo4j"]="neo4j.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/opensearch"]="opensearch.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/projects/lecoffre/front"]="front.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/ia"]="ia.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/back-mini"]="back-mini.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
)
# Créer les docker-compose.yml individuels simples
for path in "${!SERVICE_MAP[@]}"; do
IFS='|' read -r service_name network_name <<< "${SERVICE_MAP[$path]}"
compose_file="$ROOT/$path/docker-compose.yml"
echo "Création de $compose_file pour $service_name"
# Créer le fichier simple avec extends
cat > "$compose_file" << EOF
services:
$service_name:
extends:
file: $GLOBAL_COMPOSE
service: $service_name
networks:
$network_name:
name: 4nk_node_$network_name
driver: bridge
ipam:
config:
- subnet: $(get_subnet_for_network $network_name)
gateway: $(get_gateway_for_network $network_name)
EOF
echo "$compose_file créé"
done
# Fonction pour obtenir le subnet selon le réseau
get_subnet_for_network() {
case $1 in
"dnsmasq.4nk-local") echo "172.30.0.0/16" ;;
"modules.4nk-local") echo "172.31.0.0/16" ;;
"ia.modules.4nk-local") echo "172.31.2.0/16" ;;
"grafana.modules.4nk-local") echo "172.31.3.0/16" ;;
"data.modules.4nk-local") echo "172.31.4.0/16" ;;
"client.modules.4nk-local") echo "172.31.5.0/16" ;;
"lecoffre.projects.4nk-local") echo "172.31.6.0/16" ;;
*) echo "172.31.0.0/16" ;;
esac
}
# Fonction pour obtenir la gateway selon le réseau
get_gateway_for_network() {
case $1 in
"dnsmasq.4nk-local") echo "172.30.0.1" ;;
"modules.4nk-local") echo "172.31.0.1" ;;
"ia.modules.4nk-local") echo "172.31.2.1" ;;
"grafana.modules.4nk-local") echo "172.31.3.1" ;;
"data.modules.4nk-local") echo "172.31.4.1" ;;
"client.modules.4nk-local") echo "172.31.5.1" ;;
"lecoffre.projects.4nk-local") echo "172.31.6.1" ;;
*) echo "172.31.0.1" ;;
esac
}
echo "Tous les docker-compose.yml individuels ont été créés"

View File

@ -1,4 +1,4 @@
version: '3.8' # docker-compose configuration (version key removed)
x-4nk-extra-hosts: &x-4nk-extra-hosts x-4nk-extra-hosts: &x-4nk-extra-hosts
extra_hosts: extra_hosts:
@ -48,724 +48,115 @@ x-4nk-extra-hosts: &x-4nk-extra-hosts
- "back-mini.lecoffre.projects.4nk-local:172.31.6.34" - "back-mini.lecoffre.projects.4nk-local:172.31.6.34"
- "ia.lecoffre.projects.4nk-local:172.31.6.33" - "ia.lecoffre.projects.4nk-local:172.31.6.33"
services: services:
# ==================== DNS ====================
dnsmasq.4nk-local: dnsmasq.4nk-local:
image: andyshinn/dnsmasq:2.78 extends:
container_name: dnsmasq.4nk-local file: ./compose/infra.yml
hostname: dnsmasq.4nk-local service: dnsmasq.4nk-local
ports:
- "5354:53/udp"
- "5354:53/tcp"
volumes:
- ./4nk-local/dnsmasq/conf/dnsmasq.conf:/etc/dnsmasq.conf:ro
networks:
dnsmasq.4nk-local:
ipv4_address: 172.30.0.1
modules.4nk-local:
sdk-relay.modules.4nk-local:
ia.modules.4nk-local:
grafana.modules.4nk-local:
data.modules.4nk-local:
client.modules.4nk-local:
lecoffre.projects.4nk-local:
restart: unless-stopped
privileged: true
# ==================== MODULES > DATA ====================
postgres.data.modules.4nk-local: postgres.data.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: postgres:16 file: ./compose/data.yml
container_name: 4nk-ia-postgres.4nk-local service: postgres.data.modules.4nk-local
hostname: 4nk-ia-postgres.4nk-local
env_file:
- ./4nk-local/modules/data/postgres/conf/.env
volumes:
- ./4nk-local/modules/data/postgres/data:/var/lib/postgresql/data
- ./4nk-local/modules/data/postgres/logs:/var/log/postgresql
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d 4nk_db"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.11
redis.data.modules.4nk-local: redis.data.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: redis:7 file: ./compose/data.yml
container_name: 4nk-ia-redis.4nk-local service: redis.data.modules.4nk-local
hostname: 4nk-ia-redis.4nk-local
command: ["redis-server", "--appendonly", "yes"]
volumes:
- ./4nk-local/modules/data/redis/data:/data
- ./4nk-local/modules/data/redis/logs:/var/log/redis
ports:
- "6379:6379"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.12
minio.data.modules.4nk-local: minio.data.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: minio/minio:latest file: ./compose/data.yml
container_name: minio.data.modules.4nk-local service: minio.data.modules.4nk-local
hostname: minio.data.modules.4nk-local
command: server /data --console-address ":9001"
env_file:
- ./4nk-local/modules/data/minio/conf/.env
volumes:
- ./4nk-local/modules/data/minio/data:/data
- ./4nk-local/modules/data/minio/logs:/var/log/minio
ports:
- "9000:9000"
- "9001:9001"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.13
neo4j.data.modules.4nk-local: neo4j.data.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: neo4j:5 file: ./compose/data.yml
container_name: neo4j.data.modules.4nk-local service: neo4j.data.modules.4nk-local
hostname: neo4j.data.modules.4nk-local
env_file:
- ./4nk-local/modules/data/neo4j/conf/.env
volumes:
- ./4nk-local/modules/data/neo4j/data:/data
- ./4nk-local/modules/data/neo4j/logs:/var/log/neo4j
ports:
- "7474:7474"
- "7687:7687"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.14
opensearch.data.modules.4nk-local: opensearch.data.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: opensearchproject/opensearch:2.14.0 file: ./compose/data.yml
container_name: opensearch.data.modules.4nk-local service: opensearch.data.modules.4nk-local
hostname: 4nk-ia-opensearch.4nk-local
environment:
- discovery.type=single-node
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=OpenSearch2025!
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./4nk-local/modules/data/opensearch/data:/usr/share/opensearch/data
- ./4nk-local/modules/data/opensearch/logs:/var/log/opensearch
ports:
- "9200:9200"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.15
# ==================== MODULES ====================
tor.modules.4nk-local: tor.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: dperson/torproxy:latest file: ./compose/modules.yml
container_name: tor.modules.4nk-local service: tor.modules.4nk-local
hostname: tor.modules.4nk-local
ports:
- "9050:9050"
- "9051:9051"
networks:
modules.4nk-local:
ipv4_address: 172.31.0.10
restart: unless-stopped
bitcoin.modules.4nk-local: bitcoin.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: ruimarinho/bitcoin-core:latest file: ./compose/modules.yml
container_name: bitcoin.modules.4nk-local service: bitcoin.modules.4nk-local
hostname: bitcoin.modules.4nk-local
entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if grep -q '172.20.0.11' /proc/net/fib_trie 2>/dev/null; then break; fi; sleep 1; done; exec /entrypoint.sh bitcoind"]
ports:
- "38332:38332"
- "29000:29000"
volumes:
- ./4nk-local/modules/bitcoin/data:/home/bitcoin/.bitcoin
- ./4nk-local/modules/bitcoin/conf/bitcoin.conf:/home/bitcoin/.bitcoin/bitcoin.conf
- ./4nk-local/modules/bitcoin/logs:/home/bitcoin/.bitcoin/logs
networks:
modules.4nk-local:
ipv4_address: 172.31.0.11
restart: unless-stopped
depends_on:
- tor.modules.4nk-local
blindbit-oracle.modules.4nk-local: blindbit-oracle.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/blindbit-oracle:dev file: ./compose/modules.yml
container_name: blindbit-oracle.modules.4nk-local service: blindbit-oracle.modules.4nk-local
hostname: blindbit-oracle.modules.4nk-local
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\"","--"]
ports:
- "8000:8000"
command: [ "/main", "--datadir", "/blindbit-oracle" ]
working_dir: /
volumes:
- ./4nk-local/modules/blindbit-oracle/data:/blindbit-oracle
- ./4nk-local/modules/blindbit-oracle/conf/blindbit.toml:/blindbit-oracle/blindbit.toml:ro
- ./4nk-local/modules/blindbit-oracle/logs:/blindbit-oracle/logs
# Accès au répertoire Bitcoin pour le cookie RPC
- ./modules/bitcoin/data:/home/bitcoin/.bitcoin:ro
networks:
modules.4nk-local:
ipv4_address: 172.31.0.12
restart: unless-stopped
depends_on:
- bitcoin.modules.4nk-local
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8000" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
- host=blindbit-oracle.modules.4nk-local:8000
- chain=signet
- rpc_endpoint=http://bitcoin.modules.4nk-local:38332
- cookie_path=/home/bitcoin/.bitcoin/signet/.cookie
- rpc_user=
- rpc_pass=
- 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
sdk-storage.modules.4nk-local: sdk-storage.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/sdk_storage:dev file: ./compose/modules.yml
container_name: sdk-storage.modules.4nk-local service: sdk-storage.modules.4nk-local
hostname: sdk-storage.modules.4nk-local
ports:
- "8081:8080"
volumes:
- ./4nk-local/modules/sdk-storage/conf/sdk_storage.conf:/usr/local/bin/sdk_storage.conf:ro
- ./4nk-local/modules/sdk-storage/logs:/app/logs
networks:
modules.4nk-local:
ipv4_address: 172.31.0.13
restart: unless-stopped
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8080" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES > RELAY ====================
i1.sdk-relay.modules.4nk-local: i1.sdk-relay.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/sdk_relay:dev file: ./compose/modules.yml
container_name: i1.sdk-relay.modules.4nk-local service: i1.sdk-relay.modules.4nk-local
hostname: i1.sdk-relay.modules.4nk-local
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""]
ports:
- "8090:8090"
- "8091:8091"
environment:
- RELAY_RPC_USER=
- RELAY_RPC_PASSWORD=
- COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
- relay_rpc_user=
- relay_rpc_password=
- cookie_path=/home/bitcoin/.bitcoin/signet/.cookie
volumes:
- ./4nk-local/modules/sdk-relay/i1/conf/1.sdk-relay.modulesconf:/home/bitcoin/.conf:ro
- ./4nk-local/modules/sdk-relay/i1/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
sdk-relay.modules.4nk-local:
ipv4_address: 172.31.1.11
restart: unless-stopped
depends_on:
- blindbit-oracle.modules.4nk-local
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8090/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
i2.sdk-relay.modules.4nk-local: i2.sdk-relay.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/sdk_relay:dev file: ./compose/modules.yml
container_name: i2.sdk-relay.modules.4nk-local service: i2.sdk-relay.modules.4nk-local
hostname: i2.sdk-relay.modules.4nk-local
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""]
ports:
- "8092:8090"
- "8093:8091"
environment:
- RELAY_RPC_USER=
- RELAY_RPC_PASSWORD=
- COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
- relay_rpc_user=
- relay_rpc_password=
- cookie_path=/home/bitcoin/.bitcoin/signet/.cookie
volumes:
- ./4nk-local/modules/sdk-relay/i2/conf/sdk_relay2.conf:/home/bitcoin/.conf:ro
- ./4nk-local/modules/sdk-relay/i2/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
sdk-relay.modules.4nk-local:
ipv4_address: 172.31.1.12
restart: unless-stopped
depends_on:
- blindbit-oracle.modules.4nk-local
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8090/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
i3.sdk-relay.modules.4nk-local: i3.sdk-relay.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/sdk_relay:dev file: ./compose/modules.yml
container_name: i3.sdk-relay.modules.4nk-local service: i3.sdk-relay.modules.4nk-local
hostname: i3.sdk-relay.modules.4nk-local
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""]
ports:
- "8094:8090"
- "8095:8091"
environment:
- RELAY_RPC_USER=
- RELAY_RPC_PASSWORD=
- COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
- relay_rpc_user=
- relay_rpc_password=
- cookie_path=/home/bitcoin/.bitcoin/signet/.cookie
volumes:
- ./4nk-local/modules/sdk-relay/i3/conf/sdk_relay3.conf:/home/bitcoin/.conf:ro
- ./4nk-local/modules/sdk-relay/i3/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
sdk-relay.modules.4nk-local:
ipv4_address: 172.31.1.13
restart: unless-stopped
depends_on:
- blindbit-oracle.modules.4nk-local
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8090/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES > CLIENT MODES ====================
sdk-signer.client.modules.4nk-local: sdk-signer.client.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/sdk_signer:dev file: ./compose/modules.yml
container_name: sdk-signer.client.modules.4nk-local service: sdk-signer.client.modules.4nk-local
hostname: sdk-signer.client.modules.4nk-local
ports:
- "9093:9090"
volumes:
- ./4nk-local/modules/client/sdk-signer/conf/sdk_signer.conf:/usr/local/bin/sdk_signer.conf:ro
- ./4nk-local/modules/client/sdk-signer/data:/app/data
- ./4nk-local/modules/client/sdk-signer/logs:/usr/src/app/logs
networks:
client.modules.4nk-local:
ipv4_address: 172.31.5.11
restart: unless-stopped
depends_on:
- sdk-storage.modules.4nk-local
- i1.sdk-relay.modules.4nk-local
- i2.sdk-relay.modules.4nk-local
- i3.sdk-relay.modules.4nk-local
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:9090" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
ihm.client.modules.4nk-local: ihm.client.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/ihm_client:dev file: ./compose/modules.yml
container_name: ihm.client.modules.4nk-local service: ihm.client.modules.4nk-local
hostname: ihm.client.modules.4nk-local
ports:
- "8080:80"
- "3003:3003"
volumes:
- ./4nk-local/modules/client/ihm/logs:/var/log/ihm_client
- ./4nk-local/modules/client/ihm/conf/.env:/app/.env:ro
networks:
client.modules.4nk-local:
ipv4_address: 172.31.5.12
restart: unless-stopped
depends_on:
- sdk-storage.modules.4nk-local
- i1.sdk-relay.modules.4nk-local
- i2.sdk-relay.modules.4nk-local
- i3.sdk-relay.modules.4nk-local
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
- U32_MAX=4294967295
- BASEURL=http://ihm.client.modules.4nk-local
- BOOTSTRAPURL=["http://i1.sdk-relay.4nk-local:8090"]
- STORAGEURL=http://sdk-storage.modules.4nk-local/storage
- BLINDBITURL=http://blindbit.modules.4nk-local:8000
- DEFAULTAMOUNT=1000
# ==================== MODULES > IA ====================
ollama.ia.modules.4nk-local: ollama.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: ollama/ollama:latest file: ./compose/ia.yml
container_name: ollama.ia.modules.4nk-local service: ollama.ia.modules.4nk-local
hostname: ollama.ia.modules.4nk-local
volumes:
- ./4nk-local/modules/ia/ollama/data:/root/.ollama
- ./4nk-local/modules/ia/ollama/logs:/var/log/ollama
ports:
- "11435:11434" # Port modifié pour éviter les conflits
environment:
- OLLAMA_HOST=0.0.0.0
restart: unless-stopped
profiles: ["production", "development"]
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.11
anythingsqlite.ia.modules.4nk-local: anythingsqlite.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: mintplexlabs/anythingllm:latest file: ./compose/ia.yml
container_name: anythingsqlite.ia.modules.4nk-local service: anythingsqlite.ia.modules.4nk-local
hostname: anythingsqlite.ia.modules.4nk-local
environment:
- DISABLE_AUTH=true
- STORAGE_DIR=/app/server/storage
depends_on:
- ollama.ia.modules.4nk-local
ports:
- "3001:3001"
volumes:
- ./4nk-local/modules/ia/anythingsqlite/data:/app/server/storage
- ./4nk-local/modules/ia/anythingsqlite/logs:/var/log/anythingllm
restart: unless-stopped
profiles: ["production", "development"]
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.12
host-api.ia.modules.4nk-local: host-api.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
build: file: ./compose/ia.yml
context: ./docker/host-api service: host-api.ia.modules.4nk-local
dockerfile: Dockerfile
container_name: host-api.ia.modules.4nk-local
hostname: host-api.ia.modules.4nk-local
labels:
- logging=promtail
- project=4nk_ia_back
env_file:
- ./4nk-local/modules/ia/host-api/conf/.env
environment:
DATABASE_URL: postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres.data.modules.4nk-local:5432/$POSTGRES_DB
REDIS_URL: redis://redis.data.modules.4nk-local:6379/0
MINIO_ENDPOINT: 4nk-ia-minio.4nk-local:9000
MINIO_BUCKET: 4nk-bucket
ANYLLM_BASE_URL: http://4nk-ia-anythingllm.4nk-local:3001
ANYLLM_API_KEY: dummy_key
OLLAMA_BASE_URL: http://4nk-ia-ollama.4nk-local:11434
OPENSEARCH_URL: http://4nk-ia-opensearch.4nk-local:9200
NEO4J_URL: bolt://4nk-ia-neo4j.4nk-local:7687
NEO4J_AUTH: neo4j/neo4j
# Configuration de l'API
API_HOST: 0.0.0.0
API_PORT: 8000
API_WORKERS: 4
LOG_LEVEL: INFO
LOG_FORMAT: json
# Sécurité
SECRET_KEY: your_secret_key_here
ACCESS_TOKEN_EXPIRE_MINUTES: 30
volumes:
- ./4nk-local/modules/ia/host-api/data:/app
- ./4nk-local/modules/ia/host-api/logs:/app/logs
ports:
- "8001:8000" # Port externe 8001 pour éviter les conflits
depends_on:
postgres.data.modules.4nk-local:
condition: service_healthy
redis.data.modules.4nk-local:
condition: service_started
minio.data.modules.4nk-local:
condition: service_started
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.13
worker.ia.modules.4nk-local: worker.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
build: file: ./compose/ia.yml
context: ./ service: worker.ia.modules.4nk-local
dockerfile: docker/worker/Dockerfile
container_name: worker.ia.modules.4nk-local
hostname: worker.ia.modules.4nk-local
labels:
- logging=promtail
- project=4nk_ia_back
env_file:
- ./4nk-local/modules/ia/worker/conf/.env
environment:
DATABASE_URL: postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres.data.modules.4nk-local:5432/$POSTGRES_DB
REDIS_URL: redis://redis.data.modules.4nk-local:6379/0
MINIO_ENDPOINT: 4nk-ia-minio.4nk-local:9000
MINIO_BUCKET: 4nk-bucket
ANYLLM_BASE_URL: http://4nk-ia-anythingllm.4nk-local:3001
ANYLLM_API_KEY: dummy_key
OLLAMA_BASE_URL: http://4nk-ia-ollama.4nk-local:11434
OPENSEARCH_URL: http://4nk-ia-opensearch.4nk-local:9200
NEO4J_URL: bolt://4nk-ia-neo4j.4nk-local:7687
NEO4J_AUTH: neo4j/neo4j
volumes:
- ./4nk-local/modules/ia/worker/data:/app
- ./4nk-local/modules/ia/worker/logs:/app/logs
depends_on:
- host-api.ia.modules.4nk-local
restart: unless-stopped
profiles: ["production"]
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.14
# ==================== MODULES >GRAFANA ====================
loki.grafana.modules.4nk-local: loki.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: grafana/loki:2.9.0 file: ./compose/grafana.yml
container_name: loki.grafana.modules.4nk-local service: loki.grafana.modules.4nk-local
hostname: loki.grafana.modules.4nk-local
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
volumes:
- ./4nk-local/modules/grafana/loki/conf/loki-config.yaml:/etc/loki/local-config.yaml:ro
- ./4nk-local/modules/grafana/loki/data:/loki
- ./4nk-local/modules/grafana/loki/logs:/var/log/loki
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.51
restart: unless-stopped
prometheus.grafana.modules.4nk-local: prometheus.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: prom/prometheus:v2.54.1 file: ./compose/grafana.yml
container_name: prometheus.grafana.modules.4nk-local service: prometheus.grafana.modules.4nk-local
hostname: prometheus.grafana.modules.4nk-local
ports:
- "9092:9091"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
volumes:
- ./4nk-local/modules/grafana/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./4nk-local/modules/grafana/prometheus/data:/prometheus
- ./4nk-local/modules/grafana/prometheus/logs:/var/log/prometheus
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.52
restart: unless-stopped
promtail.grafana.modules.4nk-local: promtail.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: grafana/promtail:2.9.0 file: ./compose/grafana.yml
container_name: promtail.grafana.modules.4nk-local service: promtail.grafana.modules.4nk-local
hostname: promtail.grafana.modules.4nk-local
command: -config.file=/etc/promtail/config.yml
volumes:
- ./4nk-local/modules/grafana/promtail/conf/promtail-config.yml:/etc/promtail/config.yml:ro
- ./4nk-local/modules/grafana/promtail/logs:/var/log/promtail
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/log/docker:/var/log/docker:ro
- ./4nk-local/modules:/workspace/modules:ro
- ./4nk-local/projects:/workspace/projects:ro
- ./4nk-local/modules/grafana/grafana/logs:/workspace/logs:ro
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.53
restart: unless-stopped
depends_on:
- loki.grafana.modules.4nk-local
grafana.grafana.modules.4nk-local: grafana.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: grafana/grafana:10.0.0 file: ./compose/grafana.yml
container_name: grafana.grafana.modules.4nk-local service: grafana.grafana.modules.4nk-local
hostname: grafana.grafana.modules.4nk-local
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
- GF_SERVER_ROOT_URL=http://grafana.grafanalocal:3000
- GF_SERVER_SERVE_FROM_SUB_PATH=false
volumes:
- ./4nk-local/modules/grafana/grafana/data:/var/lib/grafana
- ./4nk-local/modules/grafana/grafana/conf/grafana.ini:/etc/grafana/grafana.ini:ro
- ./4nk-local/modules/grafana/grafana/conf/datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro
- ./4nk-local/modules/grafana/grafana/conf/dashboards:/etc/grafana/provisioning/dashboards:ro
- ./4nk-local/modules/grafana/grafana/logs:/var/log/grafana
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.50
restart: unless-stopped
depends_on:
- loki.grafana.modules.4nk-local
- prometheus.grafana.modules.4nk-local
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES OTHER ====================
nginx-proxy.modules.4nk-local: nginx-proxy.modules.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: nginx:alpine file: ./compose/modules.yml
container_name: nginx-proxy.modules.4nk-local service: nginx-proxy.modules.4nk-local
hostname: nginx-proxy.modules.4nk-local
ports:
- "443:443"
volumes:
- ./4nk-local/modules/nginx-proxy/conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./4nk-local/modules/nginx-proxy/certs/local.crt:/etc/nginx/certs/local.crt:ro
- ./4nk-local/modules/nginx-proxy/certs/local.key:/etc/nginx/certs/local.key:ro
- ./4nk-local/modules/nginx-proxy/logs:/var/log/nginx
networks:
modules.4nk-local:
ipv4_address: 172.31.0.60
restart: unless-stopped
# ==================== PROJECTS > LECOFFRE ====================
front.lecoffre.projects.4nk-local: front.lecoffre.projects.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/lecoffre-front:ajanin file: ./compose/projects.yml
container_name: front.lecoffre.projects.4nk-local service: front.lecoffre.projects.4nk-local
hostname: front.lecoffre.projects.4nk-local
volumes:
- ./4nk-local/projects/lecoffre/front/logs:/logs
- ./4nk-local/projects/lecoffre/front/conf/.env.4nk-local:/leCoffre-front/.env.4nk-local:ro
networks:
lecoffre.projects.4nk-local:
ipv4_address: 172.31.6.32
restart: unless-stopped
depends_on:
- back-mini.lecoffre.projects.4nk-local
- ihm.client.modules.4nk-local
- sdk-signer.client.modules.4nk-local
environment:
- NEXT_PUBLIC_4NK_URL=http://ihm.client.modules.4nk-local:3003
- NEXT_PUBLIC_FRONT_APP_HOST=http://0.0.0.0:3000
- NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
- NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1
- NEXT_PUBLIC_BACK_API_PROTOCOL=http://
- NEXT_PUBLIC_BACK_API_HOST=0.0.0.0
- NEXT_PUBLIC_BACK_API_PORT=8080
- NEXT_PUBLIC_BACK_API_ROOT_URL=/api
- NEXT_PUBLIC_BACK_API_VERSION=/v1
ia.lecoffre.projects.4nk-local: ia.lecoffre.projects.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/4nk-ia-front:dev file: ./compose/projects.yml
container_name: ia.lecoffre.projects.4nk-local service: ia.lecoffre.projects.4nk-local
hostname: ia.lecoffre.projects.4nk-local
volumes:
- ./4nk-local/projects/lecoffre/ia/logs:/logs
networks:
lecoffre.projects.4nk-local:
ipv4_address: 172.31.6.33
ia.modules.4nk-local:
ipv4_address: 172.31.2.15
restart: unless-stopped
depends_on:
- host-api.ia.modules.4nk-local
back-mini.lecoffre.projects.4nk-local: back-mini.lecoffre.projects.4nk-local:
<<: *x-4nk-extra-hosts extends:
image: git.4nkweb.com/4nk/lecoffre-back-mini:dev file: ./compose/projects.yml
container_name: back-mini.lecoffre.projects.4nk-local service: back-mini.lecoffre.projects.4nk-local
hostname: back-mini.lecoffre.projects.4nk-local
volumes:
- ./4nk-local/projects/lecoffre/back-mini/conf/.env:/app/.env:ro
networks:
lecoffre.projects.4nk-local:
ipv4_address: 172.31.6.34
restart: unless-stopped
environment:
- OVH_SMS_SERVICE_NAME=sms-tt802880-1
- SMS_FACTOR_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4NzgzNiIsImlhdCI6MTcwMTMzOTY1Mi45NDUzOH0.GNoqLb5MDBWuniNlQjbr1PKolwxGqBZe_tf4IMObvHw
- MAILCHIMP_LIST_ID=a48d9ad852
- STRIPE_WEBHOOK_SECRET=
- STRIPE_STANDARD_SUBSCRIPTION_PRICE_ID=price_1P66fuP5xh1u9BqSHj0O6Uy3
- STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID=price_1P9NsRP5xh1u9BqSFgkUDbQY
- STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID=price_1P66RqP5xh1u9BqSuUzkQNac
- STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID=price_1P9NpKP5xh1u9BqSApFogvUB
- APP_HOST=http://0.0.0.0
- PORT=8080
- NEXT_PUBLIC_4NK_URL=http://ihm.client.modules.4nk-local
- NEXT_PUBLIC_FRONT_APP_HOST=http://coffre-front.4nk-local:3000
- NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
- NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1
- NEXT_PUBLIC_IDNOT_CLIENT_ID=4501646203F3EF67
- NEXT_PUBLIC_BACK_API_PROTOCOL=http
- NEXT_PUBLIC_BACK_API_HOST=localhost
- BACK_API_PORT=8080
- BACK_API_ROOT_URL=/api
- BACK_API_VERSION=/v1
- IDNOT_ANNUARY_BASE_URL=https://qual-api.notaires.fr/annuaire
- DB_HOST=0.0.0.0
- DB_PORT=5432
- DB_NAME=miniback
- DB_USER=miniback
- DB_PASSWORD=minibackpassword
- LOG_LEVEL=debug
# Networks
networks: networks:
dnsmasq.4nk-local: dnsmasq.4nk-local:
driver: bridge driver: bridge

732
docker-compose.yml.bak_optB Normal file
View File

@ -0,0 +1,732 @@
# docker-compose configuration (version key removed)
x-4nk-extra-hosts: &x-4nk-extra-hosts
extra_hosts:
# 4nk-local (172.30.0.0/16)
- "dnsmasq.4nk-local:172.30.0.1"
# modules.4nk-local (172.31.0.0/16)
- "tor.modules.4nk-local:172.31.0.10"
- "bitcoin.modules.4nk-local:172.31.0.11"
- "blindbit-oracle.modules.4nk-local:172.31.0.12"
- "sdk-storage.modules.4nk-local:172.31.0.13"
- "sdk-relay1.modules.4nk-local:172.31.0.14"
- "sdk-relay2.modules.4nk-local:172.31.0.15"
- "sdk-relay3.modules.4nk-local:172.31.0.16"
- "nginx-proxy.modules.4nk-local:172.31.0.60"
# sdk-relay.modules.4nk-local (172.31.1.0/16)
- "i1.sdk-relay.modules.4nk-local:172.31.1.11"
- "i2.sdk-relay.modules.4nk-local:172.31.1.12"
- "i3.sdk-relay.modules.4nk-local:172.31.1.13"
# ia.modules.4nk-local (172.31.2.0/16)
- "ollama.ia.modules.4nk-local:172.31.2.11"
- "anythingsqlite.ia.modules.4nk-local:172.31.2.12"
- "host-api.ia.modules.4nk-local:172.31.2.13"
- "worker.ia.modules.4nk-local:172.31.2.14"
# grafana.modules.4nk-local (172.31.3.0/16)
- "loki.grafana.modules.4nk-local:172.31.3.51"
- "prometheus.grafana.modules.4nk-local:172.31.3.52"
- "promtail.grafana.modules.4nk-local:172.31.3.53"
- "grafana.grafana.modules.4nk-local:172.31.3.50"
# data.modules.4nk-local (172.31.4.0/16)
- "postgres.data.modules.4nk-local:172.31.4.11"
- "redis.data.modules.4nk-local:172.31.4.12"
- "minio.data.modules.4nk-local:172.31.4.13"
- "neo4j.data.modules.4nk-local:172.31.4.14"
- "opensearch.data.modules.4nk-local:172.31.4.15"
# client.modules.4nk-local (172.31.5.0/16)
- "sdk-signer.client.modules.4nk-local:172.31.5.11"
- "ihm.client.modules.4nk-local:172.31.5.12"
# projects.4nk-local (172.31.6.0/16)
- "front.lecoffre.projects.4nk-local:172.31.6.32"
- "back-mini.lecoffre.projects.4nk-local:172.31.6.34"
- "ia.lecoffre.projects.4nk-local:172.31.6.33"
services:
# ==================== DNS ====================
dnsmasq.4nk-local:
image: andyshinn/dnsmasq:2.78
container_name: dnsmasq.4nk-local
hostname: dnsmasq.4nk-local
ports:
- "5354:53/udp"
- "5354:53/tcp"
volumes:
- ./4nk-local/dnsmasq/conf/dnsmasq.conf:/etc/dnsmasq.conf:ro
networks:
dnsmasq.4nk-local:
ipv4_address: 172.30.0.1
modules.4nk-local:
sdk-relay.modules.4nk-local:
ia.modules.4nk-local:
grafana.modules.4nk-local:
data.modules.4nk-local:
client.modules.4nk-local:
lecoffre.projects.4nk-local:
restart: unless-stopped
privileged: true
# ==================== MODULES > DATA ====================
postgres.data.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: postgres:16
container_name: 4nk-ia-postgres.4nk-local
hostname: 4nk-ia-postgres.4nk-local
env_file:
- ./4nk-local/modules/data/postgres/conf/.env
volumes:
- ./4nk-local/modules/data/postgres/data:/var/lib/postgresql/data
- ./4nk-local/modules/data/postgres/logs:/var/log/postgresql
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d 4nk_db"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.11
redis.data.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: redis:7
container_name: 4nk-ia-redis.4nk-local
hostname: 4nk-ia-redis.4nk-local
command: ["redis-server", "--appendonly", "yes"]
volumes:
- ./4nk-local/modules/data/redis/data:/data
- ./4nk-local/modules/data/redis/logs:/var/log/redis
ports:
- "6379:6379"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.12
minio.data.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: minio/minio:latest
container_name: minio.data.modules.4nk-local
hostname: minio.data.modules.4nk-local
command: server /data --console-address ":9001"
env_file:
- ./4nk-local/modules/data/minio/conf/.env
volumes:
- ./4nk-local/modules/data/minio/data:/data
- ./4nk-local/modules/data/minio/logs:/var/log/minio
ports:
- "9000:9000"
- "9001:9001"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.13
neo4j.data.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: neo4j:5
container_name: neo4j.data.modules.4nk-local
hostname: neo4j.data.modules.4nk-local
env_file:
- ./4nk-local/modules/data/neo4j/conf/.env
volumes:
- ./4nk-local/modules/data/neo4j/data:/data
- ./4nk-local/modules/data/neo4j/logs:/var/log/neo4j
ports:
- "7474:7474"
- "7687:7687"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.14
opensearch.data.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: opensearchproject/opensearch:2.14.0
container_name: opensearch.data.modules.4nk-local
hostname: 4nk-ia-opensearch.4nk-local
environment:
- discovery.type=single-node
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=OpenSearch2025!
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./4nk-local/modules/data/opensearch/data:/usr/share/opensearch/data
- ./4nk-local/modules/data/opensearch/logs:/var/log/opensearch
ports:
- "9200:9200"
restart: unless-stopped
networks:
data.modules.4nk-local:
ipv4_address: 172.31.4.15
# ==================== MODULES ====================
tor.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: dperson/torproxy:latest
container_name: tor.modules.4nk-local
hostname: tor.modules.4nk-local
env_file:
- ./4nk-local/modules/tor/conf/.env
ports:
- "9050:9050"
- "9051:9051"
networks:
modules.4nk-local:
ipv4_address: 172.31.0.10
restart: unless-stopped
bitcoin.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: ruimarinho/bitcoin-core:latest
container_name: bitcoin.modules.4nk-local
hostname: bitcoin.modules.4nk-local
env_file:
- ./4nk-local/modules/bitcoin/conf/.env
entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if grep -q '172.20.0.11' /proc/net/fib_trie 2>/dev/null; then break; fi; sleep 1; done; exec /entrypoint.sh bitcoind"]
ports:
- "38332:38332"
- "29000:29000"
volumes:
- ./4nk-local/modules/bitcoin/data:/home/bitcoin/.bitcoin
- ./4nk-local/modules/bitcoin/conf/bitcoin.conf:/home/bitcoin/.bitcoin/bitcoin.conf
- ./4nk-local/modules/bitcoin/logs:/home/bitcoin/.bitcoin/logs
networks:
modules.4nk-local:
ipv4_address: 172.31.0.11
restart: unless-stopped
depends_on:
- tor.modules.4nk-local
blindbit-oracle.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/blindbit-oracle:dev
container_name: blindbit-oracle.modules.4nk-local
hostname: blindbit-oracle.modules.4nk-local
env_file:
- ./4nk-local/modules/blindbit-oracle/conf/.env
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\"","--"]
ports:
- "8000:8000"
command: [ "/main", "--datadir", "/blindbit-oracle" ]
working_dir: /
volumes:
- ./4nk-local/modules/blindbit-oracle/data:/blindbit-oracle
- ./4nk-local/modules/blindbit-oracle/conf/blindbit.toml:/blindbit-oracle/blindbit.toml:ro
- ./4nk-local/modules/blindbit-oracle/logs:/blindbit-oracle/logs
- ./modules/bitcoin/data:/home/bitcoin/.bitcoin:ro
networks:
modules.4nk-local:
ipv4_address: 172.31.0.12
restart: unless-stopped
depends_on:
- bitcoin.modules.4nk-local
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8000" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
sdk-storage.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/sdk_storage:dev
container_name: sdk-storage.modules.4nk-local
hostname: sdk-storage.modules.4nk-local
env_file:
- ./4nk-local/modules/sdk-storage/conf/.env
ports:
- "8081:8080"
volumes:
- ./4nk-local/modules/sdk-storage/conf/sdk_storage.conf:/usr/local/bin/sdk_storage.conf:ro
- ./4nk-local/modules/sdk-storage/logs:/app/logs
networks:
modules.4nk-local:
ipv4_address: 172.31.0.13
restart: unless-stopped
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8080" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES > RELAY ====================
i1.sdk-relay.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/sdk_relay:dev
container_name: i1.sdk-relay.modules.4nk-local
hostname: i1.sdk-relay.modules.4nk-local
env_file:
- ./4nk-local/modules/sdk-relay/i1/conf/.env
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""]
ports:
- "8090:8090"
- "8091:8091"
volumes:
- ./4nk-local/modules/sdk-relay/i1/conf/1.sdk-relay.modulesconf:/home/bitcoin/.conf:ro
- ./4nk-local/modules/sdk-relay/i1/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
sdk-relay.modules.4nk-local:
ipv4_address: 172.31.1.11
restart: unless-stopped
depends_on:
- blindbit-oracle.modules.4nk-local
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8090/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
i2.sdk-relay.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/sdk_relay:dev
container_name: i2.sdk-relay.modules.4nk-local
hostname: i2.sdk-relay.modules.4nk-local
env_file:
- ./4nk-local/modules/sdk-relay/i2/conf/.env
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""]
ports:
- "8092:8090"
- "8093:8091"
volumes:
- ./4nk-local/modules/sdk-relay/i2/conf/sdk_relay2.conf:/home/bitcoin/.conf:ro
- ./4nk-local/modules/sdk-relay/i2/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
sdk-relay.modules.4nk-local:
ipv4_address: 172.31.1.12
restart: unless-stopped
depends_on:
- blindbit-oracle.modules.4nk-local
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8090/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
i3.sdk-relay.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/sdk_relay:dev
container_name: i3.sdk-relay.modules.4nk-local
hostname: i3.sdk-relay.modules.4nk-local
env_file:
- ./4nk-local/modules/sdk-relay/i3/conf/.env
entrypoint: ["/bin/sh","-c","for i in $(seq 1 300); do if getent hosts bitcoin.modules.4nk-local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""]
ports:
- "8094:8090"
- "8095:8091"
volumes:
- ./4nk-local/modules/sdk-relay/i3/conf/sdk_relay3.conf:/home/bitcoin/.conf:ro
- ./4nk-local/modules/sdk-relay/i3/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
sdk-relay.modules.4nk-local:
ipv4_address: 172.31.1.13
restart: unless-stopped
depends_on:
- blindbit-oracle.modules.4nk-local
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8090/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES > CLIENT MODES ====================
sdk-signer.client.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/sdk_signer:dev
container_name: sdk-signer.client.modules.4nk-local
hostname: sdk-signer.client.modules.4nk-local
env_file:
- ./4nk-local/modules/client/sdk-signer/conf/.env
ports:
- "9093:9090"
volumes:
- ./4nk-local/modules/client/sdk-signer/conf/sdk_signer.conf:/usr/local/bin/sdk_signer.conf:ro
- ./4nk-local/modules/client/sdk-signer/data:/app/data
- ./4nk-local/modules/client/sdk-signer/logs:/usr/src/app/logs
networks:
client.modules.4nk-local:
ipv4_address: 172.31.5.11
restart: unless-stopped
depends_on:
- sdk-storage.modules.4nk-local
- i1.sdk-relay.modules.4nk-local
- i2.sdk-relay.modules.4nk-local
- i3.sdk-relay.modules.4nk-local
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:9090" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
ihm.client.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/ihm_client:dev
container_name: ihm.client.modules.4nk-local
hostname: ihm.client.modules.4nk-local
env_file:
- ./4nk-local/modules/client/ihm/conf/.env
ports:
- "8080:80"
- "3003:3003"
volumes:
- ./4nk-local/modules/client/ihm/logs:/var/log/ihm_client
- ./4nk-local/modules/client/ihm/conf/.env:/app/.env:ro
networks:
client.modules.4nk-local:
ipv4_address: 172.31.5.12
restart: unless-stopped
depends_on:
- sdk-storage.modules.4nk-local
- i1.sdk-relay.modules.4nk-local
- i2.sdk-relay.modules.4nk-local
- i3.sdk-relay.modules.4nk-local
healthcheck:
test: [ "CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES > IA ====================
ollama.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: ollama/ollama:latest
container_name: ollama.ia.modules.4nk-local
hostname: ollama.ia.modules.4nk-local
env_file:
- ./4nk-local/modules/ia/ollama/conf/.env
volumes:
- ./4nk-local/modules/ia/ollama/data:/root/.ollama
- ./4nk-local/modules/ia/ollama/logs:/var/log/ollama
ports:
- "11435:11434" # Port modifié pour éviter les conflits
restart: unless-stopped
profiles: ["production", "development"]
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.11
anythingsqlite.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: mintplexlabs/anythingllm:latest
container_name: anythingsqlite.ia.modules.4nk-local
hostname: anythingsqlite.ia.modules.4nk-local
env_file:
- ./4nk-local/modules/ia/anythingsqlite/conf/.env
depends_on:
- ollama.ia.modules.4nk-local
ports:
- "3001:3001"
volumes:
- ./4nk-local/modules/ia/anythingsqlite/data:/app/server/storage
- ./4nk-local/modules/ia/anythingsqlite/logs:/var/log/anythingllm
restart: unless-stopped
profiles: ["production", "development"]
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.12
host-api.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts
build:
context: ./docker/host-api
dockerfile: Dockerfile
container_name: host-api.ia.modules.4nk-local
hostname: host-api.ia.modules.4nk-local
labels:
- logging=promtail
- project=ia.modules.4nk-local
env_file:
- ./4nk-local/modules/ia/host-api/conf/.env
volumes:
- ./4nk-local/modules/ia/host-api/data:/app
- ./4nk-local/modules/ia/host-api/logs:/app/logs
ports:
- "8001:8000" # Port externe 8001 pour éviter les conflits
depends_on:
postgres.data.modules.4nk-local:
condition: service_healthy
redis.data.modules.4nk-local:
condition: service_started
minio.data.modules.4nk-local:
condition: service_started
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.13
worker.ia.modules.4nk-local:
<<: *x-4nk-extra-hosts
build:
context: ./
dockerfile: docker/worker/Dockerfile
container_name: worker.ia.modules.4nk-local
hostname: worker.ia.modules.4nk-local
labels:
- logging=promtail
- project=4nk_ia_back
env_file:
- ./4nk-local/modules/ia/worker/conf/.env
volumes:
- ./4nk-local/modules/ia/worker/data:/app
- ./4nk-local/modules/ia/worker/logs:/app/logs
depends_on:
- host-api.ia.modules.4nk-local
restart: unless-stopped
profiles: ["production"]
networks:
ia.modules.4nk-local:
ipv4_address: 172.31.2.14
# ==================== MODULES >GRAFANA ====================
loki.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: grafana/loki:2.9.0
container_name: loki.grafana.modules.4nk-local
hostname: loki.grafana.modules.4nk-local
env_file:
- ./4nk-local/modules/grafana/loki/conf/.env
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
volumes:
- ./4nk-local/modules/grafana/loki/conf/loki-config.yaml:/etc/loki/local-config.yaml:ro
- ./4nk-local/modules/grafana/loki/data:/loki
- ./4nk-local/modules/grafana/loki/logs:/var/log/loki
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.51
restart: unless-stopped
prometheus.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: prom/prometheus:v2.54.1
container_name: prometheus.grafana.modules.4nk-local
hostname: prometheus.grafana.modules.4nk-local
env_file:
- ./4nk-local/modules/grafana/prometheus/conf/.env
ports:
- "9092:9091"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
volumes:
- ./4nk-local/modules/grafana/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./4nk-local/modules/grafana/prometheus/data:/prometheus
- ./4nk-local/modules/grafana/prometheus/logs:/var/log/prometheus
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.52
restart: unless-stopped
promtail.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: grafana/promtail:2.9.0
container_name: promtail.grafana.modules.4nk-local
hostname: promtail.grafana.modules.4nk-local
env_file:
- ./4nk-local/modules/grafana/promtail/conf/.env
command: -config.file=/etc/promtail/config.yml
volumes:
- ./4nk-local/modules/grafana/promtail/conf/promtail-config.yml:/etc/promtail/config.yml:ro
- ./4nk-local/modules/grafana/promtail/logs:/var/log/promtail
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/log/docker:/var/log/docker:ro
- ./4nk-local/modules:/workspace/modules:ro
- ./4nk-local/projects:/workspace/projects:ro
- ./4nk-local/modules/grafana/grafana/logs:/workspace/logs:ro
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.53
restart: unless-stopped
depends_on:
- loki.grafana.modules.4nk-local
grafana.grafana.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: grafana/grafana:10.0.0
container_name: grafana.grafana.modules.4nk-local
hostname: grafana.grafana.modules.4nk-local
env_file:
- ./4nk-local/modules/grafana/grafana/conf/.env
ports:
- "3000:3000"
volumes:
- ./4nk-local/modules/grafana/grafana/data:/var/lib/grafana
- ./4nk-local/modules/grafana/grafana/conf/grafana.ini:/etc/grafana/grafana.ini:ro
- ./4nk-local/modules/grafana/grafana/conf/datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro
- ./4nk-local/modules/grafana/grafana/conf/dashboards:/etc/grafana/provisioning/dashboards:ro
- ./4nk-local/modules/grafana/grafana/logs:/var/log/grafana
networks:
grafana.modules.4nk-local:
ipv4_address: 172.31.3.50
restart: unless-stopped
depends_on:
- loki.grafana.modules.4nk-local
- prometheus.grafana.modules.4nk-local
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# ==================== MODULES OTHER ====================
nginx-proxy.modules.4nk-local:
<<: *x-4nk-extra-hosts
image: nginx:alpine
container_name: nginx-proxy.modules.4nk-local
hostname: nginx-proxy.modules.4nk-local
env_file:
- ./4nk-local/modules/nginx-proxy/conf/.env
ports:
- "443:443"
volumes:
- ./4nk-local/modules/nginx-proxy/conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./4nk-local/modules/nginx-proxy/certs/local.crt:/etc/nginx/certs/local.crt:ro
- ./4nk-local/modules/nginx-proxy/certs/local.key:/etc/nginx/certs/local.key:ro
- ./4nk-local/modules/nginx-proxy/logs:/var/log/nginx
networks:
modules.4nk-local:
ipv4_address: 172.31.0.60
restart: unless-stopped
# ==================== PROJECTS > LECOFFRE ====================
front.lecoffre.projects.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/lecoffre-front:ajanin
container_name: front.lecoffre.projects.4nk-local
hostname: front.lecoffre.projects.4nk-local
env_file:
- ./4nk-local/projects/lecoffre/front/conf/.env
volumes:
- ./4nk-local/projects/lecoffre/front/logs:/logs
- ./4nk-local/projects/lecoffre/front/conf/.env.4nk-local:/leCoffre-front/.env.4nk-local:ro
networks:
lecoffre.projects.4nk-local:
ipv4_address: 172.31.6.32
restart: unless-stopped
depends_on:
- back-mini.lecoffre.projects.4nk-local
- ihm.client.modules.4nk-local
- sdk-signer.client.modules.4nk-local
ia.lecoffre.projects.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/4nk-ia-front:dev
container_name: ia.lecoffre.projects.4nk-local
hostname: ia.lecoffre.projects.4nk-local
env_file:
- ./4nk-local/projects/lecoffre/ia/conf/.env
volumes:
- ./4nk-local/projects/lecoffre/ia/logs:/logs
networks:
lecoffre.projects.4nk-local:
ipv4_address: 172.31.6.33
ia.modules.4nk-local:
ipv4_address: 172.31.2.15
restart: unless-stopped
depends_on:
- host-api.ia.modules.4nk-local
back-mini.lecoffre.projects.4nk-local:
<<: *x-4nk-extra-hosts
image: git.4nkweb.com/4nk/lecoffre-back-mini:dev
container_name: back-mini.lecoffre.projects.4nk-local
hostname: back-mini.lecoffre.projects.4nk-local
env_file:
- ./4nk-local/projects/lecoffre/back-mini/conf/.env
volumes:
- ./4nk-local/projects/lecoffre/back-mini/conf/.env:/app/.env:ro
networks:
lecoffre.projects.4nk-local:
ipv4_address: 172.31.6.34
restart: unless-stopped
# Networks
networks:
dnsmasq.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/16
gateway: 172.30.0.1
modules.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.0.0/16
gateway: 172.31.0.1
sdk-relay.modules.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.1.0/16
gateway: 172.31.1.1
ia.modules.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.2.0/16
gateway: 172.31.2.1
grafana.modules.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.3.0/16
gateway: 172.31.3.1
data.modules.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.4.0/16
gateway: 172.31.4.1
client.modules.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.5.0/16
gateway: 172.31.5.1
lecoffre.projects.4nk-local:
driver: bridge
ipam:
config:
- subnet: 172.31.6.0/16
gateway: 172.31.6.1

91
fix_dependencies_compose.sh Executable file
View File

@ -0,0 +1,91 @@
#!/bin/bash
set -e
ROOT=$(pwd)
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
# Fonction pour extraire les dépendances d'un service
get_service_dependencies() {
local service_name=$1
docker-compose -f $GLOBAL_COMPOSE config | sed -n "/^ $service_name:/,/^ [a-zA-Z]/p" | grep -A 20 "depends_on:" | grep "^ -" | sed 's/^ - //' | tr '\n' ' '
}
# Fonction pour extraire la définition d'un réseau
get_network_definition() {
local network_name=$1
docker-compose -f $GLOBAL_COMPOSE config | sed -n "/^networks:/,/^[a-zA-Z]/p" | sed -n "/^ $network_name:/,/^ [a-zA-Z]/p" | sed '/^ [a-zA-Z]/d' | sed 's/^ / /'
}
# Mapping des chemins vers les noms de services et leurs réseaux
declare -A SERVICE_MAP=(
["4nk-local/dnsmasq"]="dnsmasq.4nk-local|dnsmasq.4nk-local"
["4nk-local/modules/tor"]="tor.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/bitcoin"]="bitcoin.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/blindbit-oracle"]="blindbit-oracle.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-storage"]="sdk-storage.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i1"]="i1.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i2"]="i2.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i3"]="i3.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/client/sdk-signer"]="sdk-signer.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/client/ihm"]="ihm.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/ia/ollama"]="ollama.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/anythingsqlite"]="anythingsqlite.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/host-api"]="host-api.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/worker"]="worker.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/grafana/loki"]="loki.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/prometheus"]="prometheus.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/promtail"]="promtail.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/grafana"]="grafana.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/nginx-proxy"]="nginx-proxy.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/data/postgres"]="postgres.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/redis"]="redis.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/minio"]="minio.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/neo4j"]="neo4j.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/opensearch"]="opensearch.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/projects/lecoffre/front"]="front.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/ia"]="ia.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/back-mini"]="back-mini.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
)
# Mettre à jour les docker-compose.yml individuels avec toutes les dépendances
for path in "${!SERVICE_MAP[@]}"; do
IFS='|' read -r service_name network_name <<< "${SERVICE_MAP[$path]}"
compose_file="$ROOT/$path/docker-compose.yml"
echo "Correction des dépendances pour $compose_file ($service_name)"
# Extraire les dépendances
dependencies=$(get_service_dependencies "$service_name")
# Extraire la définition du réseau
network_def=$(get_network_definition "$network_name")
# Créer le fichier avec toutes les dépendances
cat > "$compose_file" << COMPOSE_EOF
services:
$service_name:
extends:
file: $GLOBAL_COMPOSE
service: $service_name
EOF
# Ajouter les dépendances si elles existent
if [ -n "$dependencies" ]; then
echo " depends_on:" >> "$compose_file"
for dep in $dependencies; do
echo " - $dep" >> "$compose_file"
done
fi
# Ajouter les réseaux
cat >> "$compose_file" << COMPOSE_EOF
networks:
$network_name:
$network_def
COMPOSE_EOF
echo "$compose_file mis à jour avec dépendances"
done
echo "Tous les docker-compose.yml individuels ont été mis à jour avec leurs dépendances"

69
fix_individual_compose.sh Executable file
View File

@ -0,0 +1,69 @@
#!/bin/bash
set -e
ROOT=$(pwd)
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
# Mapping des chemins vers les noms de services et leurs réseaux
declare -A SERVICE_MAP=(
["4nk-local/dnsmasq"]="dnsmasq.4nk-local|dnsmasq.4nk-local"
["4nk-local/modules/tor"]="tor.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/bitcoin"]="bitcoin.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/blindbit-oracle"]="blindbit-oracle.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-storage"]="sdk-storage.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i1"]="i1.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i2"]="i2.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i3"]="i3.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/client/sdk-signer"]="sdk-signer.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/client/ihm"]="ihm.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/ia/ollama"]="ollama.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/anythingsqlite"]="anythingsqlite.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/host-api"]="host-api.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/worker"]="worker.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/grafana/loki"]="loki.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/prometheus"]="prometheus.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/promtail"]="promtail.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/grafana"]="grafana.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/nginx-proxy"]="nginx-proxy.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/data/postgres"]="postgres.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/redis"]="redis.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/minio"]="minio.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/neo4j"]="neo4j.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/opensearch"]="opensearch.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/projects/lecoffre/front"]="front.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/ia"]="ia.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/back-mini"]="back-mini.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
)
# Fonction pour extraire la définition d'un réseau
get_network_definition() {
local network_name=$1
docker-compose -f $GLOBAL_COMPOSE config | sed -n "/^networks:/,/^[a-zA-Z]/p" | sed -n "/^ $network_name:/,/^ [a-zA-Z]/p" | sed '/^ [a-zA-Z]/d' | sed 's/^ / /'
}
# Mettre à jour les docker-compose.yml individuels
for path in "${!SERVICE_MAP[@]}"; do
IFS='|' read -r service_name network_name <<< "${SERVICE_MAP[$path]}"
compose_file="$ROOT/$path/docker-compose.yml"
echo "Correction de $compose_file pour $service_name (réseau: $network_name)"
# Extraire la définition du réseau
network_def=$(get_network_definition "$network_name")
cat > "$compose_file" << COMPOSE_EOF
services:
$service_name:
extends:
file: $GLOBAL_COMPOSE
service: $service_name
networks:
$network_name:
$network_def
COMPOSE_EOF
echo "$compose_file corrigé"
done
echo "Tous les docker-compose.yml individuels ont été corrigés"

68
update_individual_compose.sh Executable file
View File

@ -0,0 +1,68 @@
#!/bin/bash
set -e
ROOT=$(pwd)
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
# Mapping des chemins vers les noms de services et leurs réseaux
declare -A SERVICE_MAP=(
["4nk-local/dnsmasq"]="dnsmasq.4nk-local|dnsmasq.4nk-local"
["4nk-local/modules/tor"]="tor.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/bitcoin"]="bitcoin.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/blindbit-oracle"]="blindbit-oracle.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-storage"]="sdk-storage.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i1"]="i1.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i2"]="i2.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i3"]="i3.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/client/sdk-signer"]="sdk-signer.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/client/ihm"]="ihm.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/ia/ollama"]="ollama.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/anythingsqlite"]="anythingsqlite.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/host-api"]="host-api.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/worker"]="worker.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/grafana/loki"]="loki.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/prometheus"]="prometheus.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/promtail"]="promtail.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/grafana"]="grafana.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/nginx-proxy"]="nginx-proxy.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/data/postgres"]="postgres.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/redis"]="redis.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/minio"]="minio.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/neo4j"]="neo4j.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/opensearch"]="opensearch.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/projects/lecoffre/front"]="front.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/ia"]="ia.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/back-mini"]="back-mini.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
)
# Fonction pour extraire la définition d'un réseau
get_network_definition() {
local network_name=$1
docker-compose -f $GLOBAL_COMPOSE config | sed -n "/^networks:/,/^[a-zA-Z]/p" | sed -n "/^ $network_name:/,/^ [a-zA-Z]/p" | sed '/^ [a-zA-Z]/d'
}
# Mettre à jour les docker-compose.yml individuels
for path in "${!SERVICE_MAP[@]}"; do
IFS='|' read -r service_name network_name <<< "${SERVICE_MAP[$path]}"
compose_file="$ROOT/$path/docker-compose.yml"
echo "Mise à jour de $compose_file pour $service_name (réseau: $network_name)"
# Extraire la définition du réseau
network_def=$(get_network_definition "$network_name")
cat > "$compose_file" << COMPOSE_EOF
services:
$service_name:
extends:
file: $GLOBAL_COMPOSE
service: $service_name
networks:
$network_def
COMPOSE_EOF
echo "$compose_file mis à jour"
done
echo "Tous les docker-compose.yml individuels ont été mis à jour avec leurs réseaux"