2025-12-22 14:09:32 +01:00
|
|
|
services:
|
|
|
|
|
db:
|
2026-01-06 12:35:01 +01:00
|
|
|
image: postgres:16-alpine
|
2025-12-22 14:09:32 +01:00
|
|
|
container_name: letsbe-hub-db
|
|
|
|
|
environment:
|
2026-01-06 12:35:01 +01:00
|
|
|
POSTGRES_USER: letsbe_hub
|
|
|
|
|
POSTGRES_PASSWORD: letsbe_hub_dev
|
|
|
|
|
POSTGRES_DB: letsbe_hub
|
|
|
|
|
ports:
|
|
|
|
|
- "5433:5432"
|
2025-12-22 14:09:32 +01:00
|
|
|
volumes:
|
|
|
|
|
- hub-db-data:/var/lib/postgresql/data
|
|
|
|
|
healthcheck:
|
2026-01-06 12:35:01 +01:00
|
|
|
test: ["CMD-SHELL", "pg_isready -U letsbe_hub -d letsbe_hub"]
|
2025-12-22 14:09:32 +01:00
|
|
|
interval: 5s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
2026-01-06 12:35:01 +01:00
|
|
|
hub:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
container_name: letsbe-hub-app
|
|
|
|
|
ports:
|
|
|
|
|
- "3000:3000"
|
|
|
|
|
environment:
|
|
|
|
|
DATABASE_URL: postgresql://letsbe_hub:letsbe_hub_dev@db:5432/letsbe_hub
|
|
|
|
|
NEXTAUTH_URL: http://localhost:3000
|
|
|
|
|
NEXTAUTH_SECRET: dev-secret-change-in-production-min-32-chars
|
2026-01-17 12:33:11 +01:00
|
|
|
AUTH_TRUST_HOST: "true"
|
|
|
|
|
HUB_URL: http://host.docker.internal:3000
|
|
|
|
|
# Use local Docker images (no registry)
|
|
|
|
|
DOCKER_REGISTRY_URL: ""
|
|
|
|
|
# Encryption key for storing sensitive credentials (Portainer passwords, etc.)
|
|
|
|
|
CREDENTIAL_ENCRYPTION_KEY: letsbe-hub-credential-encryption-key-dev-only
|
|
|
|
|
# Encryption key for settings service (SMTP passwords, tokens, etc.)
|
|
|
|
|
SETTINGS_ENCRYPTION_KEY: letsbe-hub-settings-encryption-key-dev-only
|
feat: Audit remediation + Stripe webhook + test suites
- Apply 3 Prisma schema changes (Pending2FASession, hubApiKeyHash, SecurityVerificationCode attempts)
- Add Stripe webhook handler (checkout.session.completed -> User + Subscription + Order)
- Add stripe-service, api-key-service, rate-limit middleware
- Add security headers (CSP, HSTS, X-Frame-Options) in next.config.ts
- Harden auth routes, require ADMIN_API_KEY for orchestrator endpoints
- Add Docker auto-migration via startup.sh
- Add 7 unit test suites (api-key, dns, config-generator, automation-worker, permission, security-verification, auth-helpers)
- Fix Prisma 7 compatibility with adapter-pg mock for vitest
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:02:33 +01:00
|
|
|
# Email sending via Resend (optional in dev)
|
|
|
|
|
# RESEND_API_KEY: ""
|
|
|
|
|
# RESEND_FROM_EMAIL: ""
|
|
|
|
|
# Cron job secret for scheduled tasks
|
|
|
|
|
# CRON_SECRET: ""
|
|
|
|
|
# Public API key for client-side usage
|
|
|
|
|
# PUBLIC_API_KEY: ""
|
2026-01-17 12:33:11 +01:00
|
|
|
# Host paths for job config files (used when spawning runner containers)
|
|
|
|
|
# On Windows with Docker Desktop, use /c/Repos/... format
|
|
|
|
|
JOBS_HOST_DIR: /c/Repos/LetsBeV2_NoAISysAdmin/letsbe-hub/jobs
|
|
|
|
|
LOGS_HOST_DIR: /c/Repos/LetsBeV2_NoAISysAdmin/letsbe-hub/logs
|
|
|
|
|
volumes:
|
|
|
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
|
|
|
# Use bind mounts for jobs/logs so spawned runner containers can access them
|
|
|
|
|
- ./jobs:/app/jobs
|
|
|
|
|
- ./logs:/app/logs
|
|
|
|
|
# Run as root to access Docker socket (needed for spawning provisioning containers)
|
|
|
|
|
user: "0:0"
|
2026-01-06 12:35:01 +01:00
|
|
|
depends_on:
|
|
|
|
|
db:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
2025-12-22 14:09:32 +01:00
|
|
|
volumes:
|
|
|
|
|
hub-db-data:
|
|
|
|
|
name: letsbe-hub-db
|