docker-compose.yml
Rama main · réplica de lectura del repositorio original.
services:
database:
image: ${MULTIFORUM_NEO4J_IMAGE:-neo4j:2026.10}
restart: unless-stopped
ports:
- '${MULTIFORUM_BIND_ADDRESS:-127.0.0.1}:7474:7474'
- '${MULTIFORUM_BIND_ADDRESS:-127.0.0.1}:7687:7687'
environment:
NEO4J_AUTH: 'neo4j/${NEO4J_PASSWORD:-multiforum-local-neo4j}'
NEO4J_PLUGINS: '["apoc"]'
NEO4J_dbms_security_procedures_unrestricted: 'apoc.*'
NEO4J_dbms_default__database: neo4j
NEO4J_dbms_logs_debug_level: INFO
NEO4J_dbms_logs_query_enabled: 'OFF'
NEO4J_dbms_memory_pagecache_size: 256M
NEO4J_dbms_memory_heap_initial__size: 256M
NEO4J_dbms_memory_heap_max__size: 512M
volumes:
- neo4j-data:/data
- neo4j-logs:/logs
- neo4j-import:/import
- neo4j-plugins:/plugins
healthcheck:
test:
[
'CMD',
'cypher-shell',
'-u',
'neo4j',
'-p',
'${NEO4J_PASSWORD:-multiforum-local-neo4j}',
'RETURN 1',
]
interval: 10s
timeout: 10s
retries: 20
start_period: 30s
networks:
- multiforum-network
backend:
image: ${MULTIFORUM_BACKEND_IMAGE:-ghcr.io/gennit-project/multiforum-backend:edge}
pull_policy: ${MULTIFORUM_BACKEND_PULL_POLICY:-always}
restart: unless-stopped
ports:
- '${MULTIFORUM_BIND_ADDRESS:-127.0.0.1}:4000:4000'
depends_on:
database:
condition: service_healthy
environment:
NODE_ENV: development
ENVIRONMENT: local
MULTIFORUM_AUTH_PROVIDER: local-dev
MULTIFORUM_AUTO_PROVISION: 'true'
MULTIFORUM_BOOTSTRAP_EMAIL: ${MULTIFORUM_BOOTSTRAP_EMAIL:-admin@multiforum.local}
MULTIFORUM_BOOTSTRAP_USERNAME: ${MULTIFORUM_BOOTSTRAP_USERNAME:-admin}
MULTIFORUM_BOOTSTRAP_PASSWORD: ${MULTIFORUM_BOOTSTRAP_PASSWORD:-multiforum-local-admin}
SUPERADMIN_EMAIL: ${MULTIFORUM_BOOTSTRAP_EMAIL:-admin@multiforum.local}
SERVER_CONFIG_NAME: ${MULTIFORUM_INSTANCE_NAME:-My Multiforum}
NEO4J_URI: bolt://database:7687
NEO4J_USER: neo4j
NEO4J_PASSWORD: ${NEO4J_PASSWORD:-multiforum-local-neo4j}
AUTH0_DOMAIN: ''
AUTH0_CLIENT_ID: ''
GCS_BUCKET_NAME: ''
GOOGLE_APPLICATION_CREDENTIALS: ''
GOOGLE_CREDENTIALS_BASE64: ''
SLACK_WEBHOOK_URL: ''
healthcheck:
test:
[
'CMD',
'node',
'-e',
"require('net').connect(4000, '127.0.0.1').on('connect', () => process.exit(0)).on('error', () => process.exit(1))",
]
interval: 10s
timeout: 5s
retries: 30
start_period: 60s
networks:
- multiforum-network
frontend:
image: ${MULTIFORUM_FRONTEND_IMAGE:-ghcr.io/gennit-project/multiforum-nuxt:edge}
pull_policy: ${MULTIFORUM_FRONTEND_PULL_POLICY:-always}
restart: unless-stopped
ports:
- '${MULTIFORUM_BIND_ADDRESS:-127.0.0.1}:3000:3000'
depends_on:
backend:
condition: service_healthy
environment:
- NUXT_PUBLIC_AUTH_PROVIDER=local-dev
- NUXT_PUBLIC_BASE_URL=${MULTIFORUM_PUBLIC_FRONTEND_URL:-http://localhost:3000}
- NUXT_PUBLIC_ENVIRONMENT=development
- NUXT_PUBLIC_SERVER_NAME=${MULTIFORUM_INSTANCE_NAME:-My Multiforum}
- NUXT_PUBLIC_SERVER_DISPLAY_NAME=${MULTIFORUM_INSTANCE_NAME:-My Multiforum}
- NUXT_BACKEND_GRAPHQL_URL=http://backend:4000
- NUXT_LOCAL_AUTH_TOKEN_ENDPOINT=http://backend:4000/auth/local-dev/token
# Optional instance branding, passed through only when the operator sets
# it. These use the bare passthrough form deliberately: with
# `KEY: ${VAR:-}` Compose would inject an empty string, and an empty
# branding value means "hide this link" rather than "not configured", so
# every deployment would silently lose its documentation and source
# links. Unset variables are omitted entirely, leaving the application
# defaults in place. See docs/frontend-runtime-configuration.md.
- NUXT_PUBLIC_BRANDING_LOGO_URL
- NUXT_PUBLIC_BRANDING_LOGO_DARK_URL
- NUXT_PUBLIC_BRANDING_LOGO_ALT
- NUXT_PUBLIC_BRANDING_FAVICON_URL
- NUXT_PUBLIC_BRANDING_PRIMARY_COLOR
- NUXT_PUBLIC_BRANDING_PRODUCT_NAME
- NUXT_PUBLIC_BRANDING_DOCS_URL
- NUXT_PUBLIC_BRANDING_SOURCE_URL
- NUXT_PUBLIC_BRANDING_ISSUES_URL
- NUXT_PUBLIC_BRANDING_SUPPORT_EMAIL
- NUXT_PUBLIC_BRANDING_SHOW_UPSTREAM_LINKS
- NUXT_PUBLIC_BRANDING_CUSTOM_FOOTER_LINKS
- NUXT_PUBLIC_BRANDING_LOCKED
healthcheck:
test:
[
'CMD',
'node',
'-e',
"fetch('http://127.0.0.1:3000').then(response => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))",
]
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
logging:
driver: json-file
options:
max-size: 10m
max-file: '3'
networks:
- multiforum-network
networks:
multiforum-network:
driver: bridge
volumes:
neo4j-data:
neo4j-logs:
neo4j-import:
neo4j-plugins: