Files
proxpanel/docker-compose.yml

64 lines
1.6 KiB
YAML

services:
postgres:
image: postgres:16-alpine
container_name: proxpanel-postgres
restart: unless-stopped
environment:
POSTGRES_USER: proxpanel
POSTGRES_PASSWORD: proxpanel
POSTGRES_DB: proxpanel
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U proxpanel -d proxpanel"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: ./backend
container_name: proxpanel-backend
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
NODE_ENV: production
PORT: 8080
DATABASE_URL: postgresql://proxpanel:proxpanel@postgres:5432/proxpanel
JWT_SECRET: change_this_to_a_long_secret_key_please
JWT_REFRESH_SECRET: change_this_to_another_long_secret_key
JWT_EXPIRES_IN: 15m
JWT_REFRESH_EXPIRES_IN: 30d
CORS_ORIGIN: http://localhost:80
RATE_LIMIT_WINDOW_MS: 60000
RATE_LIMIT_MAX: 600
AUTH_RATE_LIMIT_WINDOW_MS: 60000
AUTH_RATE_LIMIT_MAX: 20
ENABLE_SCHEDULER: "true"
BILLING_CRON: "0 * * * *"
BACKUP_CRON: "*/15 * * * *"
POWER_SCHEDULE_CRON: "* * * * *"
MONITORING_CRON: "*/5 * * * *"
PROXMOX_TIMEOUT_MS: 15000
ports:
- "8080:8080"
frontend:
build:
context: .
args:
VITE_API_BASE_URL: http://localhost:8080
container_name: proxpanel-frontend
restart: unless-stopped
depends_on:
- backend
ports:
- "80:80"
volumes:
postgres_data: