64 lines
1.6 KiB
YAML
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:
|