- Implemented Issue #9: User Authentication & Authorization - Added User model fields (FailedLoginAttempts, LockedUntil, LastLogin) - Created AuthService with JWT support, bcrypt hashing, and account lockout - Added AuthMiddleware and AuthHandler - Registered auth routes in backend - Created AuthContext and RequireAuth component in frontend - Implemented Login page and integrated with backend - Fixed 'Blank Page' issue in local Docker environment - Added QueryClientProvider to main.tsx - Installed missing lucide-react dependency - Fixed TypeScript linting errors in SetupGuard.tsx - Updated docker-entrypoint.sh to use 127.0.0.1 for reliable Caddy checks - Verified with local Docker build
41 lines
1.1 KiB
YAML
41 lines
1.1 KiB
YAML
version: '3.9'
|
|
|
|
services:
|
|
app:
|
|
image: cpmp:local
|
|
container_name: caddyproxymanagerplus-local
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80" # HTTP (Caddy proxy)
|
|
- "443:443" # HTTPS (Caddy proxy)
|
|
- "443:443/udp" # HTTP/3 (Caddy proxy)
|
|
- "8080:8080" # Management UI (CPM+)
|
|
environment:
|
|
- CPM_ENV=production
|
|
- CPM_HTTP_PORT=8080
|
|
- CPM_DB_PATH=/app/data/cpm.db
|
|
- CPM_FRONTEND_DIR=/app/frontend/dist
|
|
- CPM_CADDY_ADMIN_API=http://localhost:2019
|
|
- CPM_CADDY_CONFIG_DIR=/app/data/caddy
|
|
- CPM_CADDY_BINARY=caddy
|
|
- CPM_IMPORT_CADDYFILE=/import/Caddyfile
|
|
- CPM_IMPORT_DIR=/app/data/imports
|
|
volumes:
|
|
- cpm_data_local:/app/data
|
|
- caddy_data_local:/data
|
|
- caddy_config_local:/config
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/api/v1/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
volumes:
|
|
cpm_data_local:
|
|
driver: local
|
|
caddy_data_local:
|
|
driver: local
|
|
caddy_config_local:
|
|
driver: local
|