-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path.env.example
More file actions
178 lines (146 loc) · 5.84 KB
/
.env.example
File metadata and controls
178 lines (146 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# VoidRunner Environment Configuration Template
# Copy this file to .env and customize the values for your environment
# IMPORTANT: Never commit .env files to version control!
# =============================================================================
# SERVER CONFIGURATION
# =============================================================================
# Server host and port configuration
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
SERVER_ENV=development # Options: development, production, test
API_PORT=8080
# Docker build target for multi-stage builds
BUILD_TARGET=development # Options: development, production
# =============================================================================
# DATABASE CONFIGURATION (APPLICATION)
# =============================================================================
# Database connection for the application
DB_HOST=localhost
DB_PORT=5432
DB_USER=voidrunner
DB_PASSWORD=voidrunner_dev_password
DB_NAME=voidrunner_dev
DB_SSL_MODE=disable # Options: disable, require, verify-ca, verify-full
# =============================================================================
# DATABASE CONFIGURATION (DOCKER COMPOSE)
# =============================================================================
# PostgreSQL container configuration (used by docker-compose)
POSTGRES_DB=voidrunner_dev
POSTGRES_USER=voidrunner
POSTGRES_PASSWORD=voidrunner_dev_password
POSTGRES_INITDB_ARGS=--encoding=UTF8 --lc-collate=C --lc-ctype=C
# =============================================================================
# REDIS CONFIGURATION
# =============================================================================
# Redis connection settings
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DATABASE=0
# Redis memory management
REDIS_MAX_MEMORY=512mb # Memory limit for Redis instance
# Redis connection pool settings
REDIS_POOL_SIZE=10
REDIS_MIN_IDLE_CONNECTIONS=5
REDIS_MAX_RETRIES=3
REDIS_DIAL_TIMEOUT=5s
REDIS_READ_TIMEOUT=3s
REDIS_WRITE_TIMEOUT=3s
REDIS_IDLE_TIMEOUT=5m
# =============================================================================
# QUEUE CONFIGURATION
# =============================================================================
# Queue names for different environments
QUEUE_TASK_QUEUE_NAME=voidrunner:tasks
QUEUE_DEAD_LETTER_QUEUE_NAME=voidrunner:tasks:dead
QUEUE_RETRY_QUEUE_NAME=voidrunner:tasks:retry
# Queue behavior settings
QUEUE_DEFAULT_PRIORITY=5
QUEUE_MAX_RETRIES=3
QUEUE_RETRY_DELAY=30s
QUEUE_RETRY_BACKOFF_FACTOR=2.0
QUEUE_MAX_RETRY_DELAY=15m
QUEUE_VISIBILITY_TIMEOUT=30m
QUEUE_MESSAGE_TTL=24h
QUEUE_BATCH_SIZE=10
# =============================================================================
# WORKER CONFIGURATION
# =============================================================================
# Embedded workers (enable worker pool in API server process)
EMBEDDED_WORKERS=true
# Worker pool settings
WORKER_POOL_SIZE=3
WORKER_MAX_CONCURRENT_TASKS=20
WORKER_MAX_USER_CONCURRENT_TASKS=5
WORKER_TASK_TIMEOUT=1h
WORKER_HEARTBEAT_INTERVAL=30s
WORKER_SHUTDOWN_TIMEOUT=30s
WORKER_CLEANUP_INTERVAL=5m
WORKER_STALE_TASK_THRESHOLD=2h
WORKER_ID_PREFIX=voidrunner-worker
# =============================================================================
# EXECUTOR CONFIGURATION
# =============================================================================
# Docker endpoint for container execution
DOCKER_ENDPOINT=unix:///var/run/docker.sock
# Resource limits for task execution
EXECUTOR_DEFAULT_MEMORY_LIMIT_MB=512
EXECUTOR_DEFAULT_CPU_QUOTA=100000
EXECUTOR_DEFAULT_PIDS_LIMIT=128
EXECUTOR_DEFAULT_TIMEOUT_SECONDS=3600
# Container images for different languages
EXECUTOR_PYTHON_IMAGE=python:3.11-alpine
EXECUTOR_BASH_IMAGE=alpine:latest
EXECUTOR_JAVASCRIPT_IMAGE=node:18-alpine
EXECUTOR_GO_IMAGE=golang:1.21-alpine
# Security settings
EXECUTOR_ENABLE_SECCOMP=true
EXECUTOR_SECCOMP_PROFILE_PATH=/opt/voidrunner/seccomp-profile.json
EXECUTOR_ENABLE_APPARMOR=false
EXECUTOR_APPARMOR_PROFILE=voidrunner-executor
EXECUTOR_EXECUTION_USER=1000:1000
# =============================================================================
# LOGGING CONFIGURATION
# =============================================================================
# Logging level and format
LOG_LEVEL=info # Options: debug, info, warn, error
LOG_FORMAT=json # Options: json, console
# =============================================================================
# JWT CONFIGURATION
# =============================================================================
# SECURITY WARNING: Change JWT_SECRET_KEY in production!
# Use a strong, random 256-bit (32+ character) secret
JWT_SECRET_KEY=your-secret-key-change-in-production-256-bits-minimum
JWT_ACCESS_TOKEN_DURATION=15m
JWT_REFRESH_TOKEN_DURATION=168h # 7 days
JWT_ISSUER=voidrunner
JWT_AUDIENCE=voidrunner-api
# =============================================================================
# CORS CONFIGURATION
# =============================================================================
# CORS settings for web frontend
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:5173
CORS_ALLOWED_METHODS=GET,POST,PUT,DELETE,OPTIONS
CORS_ALLOWED_HEADERS=Content-Type,Authorization,X-Request-ID
# =============================================================================
# ENVIRONMENT-SPECIFIC EXAMPLES
# =============================================================================
# Development Environment (.env.dev):
# - SERVER_ENV=development
# - LOG_LEVEL=debug
# - LOG_FORMAT=console
# - EMBEDDED_WORKERS=false (for debugging)
# - EXECUTOR_ENABLE_SECCOMP=false
# - DB_SSL_MODE=disable
# Test Environment (.env.test):
# - SERVER_ENV=test
# - DB_PORT=5433 (to avoid conflicts)
# - REDIS_PORT=6380 (to avoid conflicts)
# - Smaller resource limits
# Production Environment (.env.production):
# - SERVER_ENV=production
# - LOG_LEVEL=info
# - LOG_FORMAT=json
# - EXECUTOR_ENABLE_SECCOMP=true
# - DB_SSL_MODE=require
# - Strong JWT_SECRET_KEY