66# Set in .env: DB_TYPE=postgresql DB_HOST=postgresql://autoar:autoar@postgres:5432/bughunt?sslmode=disable
77
88services :
9- # Example 1: Discord Bot only (default behavior)
10- autoar-discord :
11- build :
12- context : .
13- dockerfile : Dockerfile
14- args :
15- RUN_SETUP_AT_BUILD : " true"
16- image : autoar:latest
17- container_name : autoar-discord
18- restart : unless-stopped
19- env_file :
20- - .env
21- environment :
22- # Mode Configuration
23- - AUTOAR_MODE=discord # Options: discord, api, both
24-
25- # Core Configuration
26- - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}
27- - AUTOAR_SCRIPT_PATH=/usr/local/bin/autoar
28- - AUTOAR_CONFIG_FILE=/app/autoar.yaml
29- - AUTOAR_RESULTS_DIR=/app/new-results
30-
31- # Tool Setup
32- - RUN_SETUP=${RUN_SETUP:-false}
33- - REGENERATE_CONFIG=${REGENERATE_CONFIG:-true}
34- - TRUFFLEHOG_NO_UPDATE=true
35- - TRUFFLEHOG_AUTOUPDATE=false
36-
37- # API Keys for Security Tools
38- - GITHUB_TOKEN=${GITHUB_TOKEN:-}
39- - SECURITYTRAILS_API_KEY=${SECURITYTRAILS_API_KEY:-}
40- - SHODAN_API_KEY=${SHODAN_API_KEY:-}
41- - VIRUSTOTAL_API_KEY=${VIRUSTOTAL_API_KEY:-}
42- - WORDPRESS_API_KEY=${WORDPRESS_API_KEY:-}
43- - BEVIGIL_API_KEY=${BEVIGIL_API_KEY:-}
44- - BINARYEDGE_API_KEY=${BINARYEDGE_API_KEY:-}
45- - URLSCAN_API_KEY=${URLSCAN_API_KEY:-}
46- - CENSYS_API_ID=${CENSYS_API_ID:-}
47- - CENSYS_API_SECRET=${CENSYS_API_SECRET:-}
48- - CERTSPOTTER_API_KEY=${CERTSPOTTER_API_KEY:-}
49- - CHAOS_API_KEY=${CHAOS_API_KEY:-}
50- - FOFA_EMAIL=${FOFA_EMAIL:-}
51- - FOFA_KEY=${FOFA_KEY:-}
52- - FULLHUNT_API_KEY=${FULLHUNT_API_KEY:-}
53- - INTELX_API_KEY=${INTELX_API_KEY:-}
54- - PASSIVETOTAL_USERNAME=${PASSIVETOTAL_USERNAME:-}
55- - PASSIVETOTAL_API_KEY=${PASSIVETOTAL_API_KEY:-}
56- - QUAKE_USERNAME=${QUAKE_USERNAME:-}
57- - QUAKE_PASSWORD=${QUAKE_PASSWORD:-}
58- - THREATBOOK_API_KEY=${THREATBOOK_API_KEY:-}
59- - WHOISXMLAPI_API_KEY=${WHOISXMLAPI_API_KEY:-}
60- - ZOOMEYE_USERNAME=${ZOOMEYE_USERNAME:-}
61- - ZOOMEYE_PASSWORD=${ZOOMEYE_PASSWORD:-}
62- - ZOOMEYEAPI_API_KEY=${ZOOMEYEAPI_API_KEY:-}
63- - H1_API_KEY=${H1_API_KEY:-}
64- - INTEGRITI_API_KEY=${INTEGRITI_API_KEY:-}
65-
66- # Discord Webhook
67- - DISCORD_WEBHOOK=${DISCORD_WEBHOOK:-}
68-
69- # Database Configuration
70- # Database Type: "postgresql" or "sqlite"
71- # For PostgreSQL: Set DB_HOST to connection string or use individual variables
72- # For SQLite: Set DB_TYPE=sqlite and DB_HOST to file path (e.g., ./bughunt.db)
73- - SAVE_TO_DB=${SAVE_TO_DB:-true}
74- - DB_TYPE=${DB_TYPE:-postgresql}
75- - DB_HOST=${DB_HOST:-}
76- - DB_PORT=${DB_PORT:-5432}
77- - DB_USER=${DB_USER:-}
78- - DB_PASSWORD=${DB_PASSWORD:-}
79- - DB_NAME=${DB_NAME:-bughunt}
80- - DOMAINS_COLLECTION=${DOMAINS_COLLECTION:-domains}
81- - SUBDOMAINS_COLLECTION=${SUBDOMAINS_COLLECTION:-subdomains}
82-
83- # OpenRouter API
84- - OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
85-
86- # Tool-specific Configuration
87- - NUCLEI_TEMPLATES_PATH=/app/nuclei_templates
88- - NUCLEI_RATE_LIMIT=${NUCLEI_RATE_LIMIT:-150}
89- - NUCLEI_CONCURRENCY=${NUCLEI_CONCURRENCY:-25}
90- - FFUF_WORDLIST_PATH=/app/Wordlists/quick_fuzz.txt
91- - FFUF_THREADS=${FFUF_THREADS:-50}
92- - SUBFINDER_THREADS=${SUBFINDER_THREADS:-10}
93- - GITHUB_MAX_REPOS=${GITHUB_MAX_REPOS:-50}
94- - GITHUB_PARALLEL_JOBS=${GITHUB_PARALLEL_JOBS:-3}
95- - GITHUB_HTML_REPORTS=${GITHUB_HTML_REPORTS:-true}
96- - GITHUB_SCAN_TYPES=${GITHUB_SCAN_TYPES:-github_org_scan}
97-
98- # AWS Configuration
99- - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
100- - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
101- - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN:-}
102- - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:-us-east-1}
1039
104- # iOS App Store (ipatool) Configuration
105- - IPATOOL_EMAIL=${IPATOOL_EMAIL:-}
106- - IPATOOL_PASSWORD=${IPATOOL_PASSWORD:-}
107- - IPATOOL_KEYCHAIN_PASSPHRASE=${IPATOOL_KEYCHAIN_PASSPHRASE:-}
108- - IPATOOL_AUTH_CODE=${IPATOOL_AUTH_CODE:-}
109-
110- # General Settings
111- - VERBOSE=${VERBOSE:-true}
112-
113- # APKX Performance Settings (optimized for 4-core, 8GB RAM VPS with no swap)
114- - APKX_WORKERS=${APKX_WORKERS:-2}
115- - APKX_MAX_FILES=${APKX_MAX_FILES:-12000}
116-
117- volumes :
118- - results-data:/app/new-results
119- - ./regexes:/app/regexes:ro
120- healthcheck :
121- test : ["CMD-SHELL", "pgrep -f 'autoar bot' || pgrep -f 'autoar both' || exit 1"]
122- interval : 30s
123- timeout : 5s
124- retries : 3
125- start_period : 30s
12610
12711 # Example 2: API Server only
12812 autoar-api :
@@ -133,9 +17,8 @@ services:
13317 RUN_SETUP_AT_BUILD : " true"
13418 image : autoar:latest
13519 container_name : autoar-api
20+ user : root
13621 restart : unless-stopped
137- profiles :
138- - api # Only starts when using: docker-compose --profile api up
13922 env_file :
14023 - .env
14124 environment :
@@ -243,6 +126,7 @@ services:
243126 volumes :
244127 - results-data:/app/new-results
245128 - ./regexes:/app/regexes:ro
129+ - /var/run/docker.sock:/var/run/docker.sock
246130 healthcheck :
247131 test :
248132 ["CMD-SHELL", "curl -fsS http://127.0.0.1:$${API_PORT:-8000}/health >/dev/null || exit 1"]
@@ -251,145 +135,7 @@ services:
251135 retries : 3
252136 start_period : 40s
253137
254- # Example 3: Both Discord Bot AND API Server
255- autoar-full :
256- build :
257- context : .
258- dockerfile : Dockerfile
259- args :
260- RUN_SETUP_AT_BUILD : " true"
261- image : autoar:latest
262- container_name : autoar-full
263- restart : unless-stopped
264- profiles :
265- - full # Only starts when using: docker-compose --profile full up
266- env_file :
267- - .env
268- environment :
269- # Mode Configuration
270- - AUTOAR_MODE=both # Run both Discord bot and API server
271-
272- # Discord Configuration
273- - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}
274-
275- # API Configuration
276- - API_HOST=0.0.0.0
277- - API_PORT=8000
278-
279- # Core Configuration
280- - AUTOAR_SCRIPT_PATH=/usr/local/bin/autoar
281- - AUTOAR_CONFIG_FILE=/app/autoar.yaml
282- - AUTOAR_RESULTS_DIR=/app/new-results
283-
284- # Tool Setup
285- - RUN_SETUP=${RUN_SETUP:-false}
286- - REGENERATE_CONFIG=${REGENERATE_CONFIG:-true}
287- - TRUFFLEHOG_NO_UPDATE=true
288- - TRUFFLEHOG_AUTOUPDATE=false
289-
290- # API Keys
291- - GITHUB_TOKEN=${GITHUB_TOKEN:-}
292- - SECURITYTRAILS_API_KEY=${SECURITYTRAILS_API_KEY:-}
293- - SHODAN_API_KEY=${SHODAN_API_KEY:-}
294- - VIRUSTOTAL_API_KEY=${VIRUSTOTAL_API_KEY:-}
295- - WORDPRESS_API_KEY=${WORDPRESS_API_KEY:-}
296- - BEVIGIL_API_KEY=${BEVIGIL_API_KEY:-}
297- - BINARYEDGE_API_KEY=${BINARYEDGE_API_KEY:-}
298- - URLSCAN_API_KEY=${URLSCAN_API_KEY:-}
299- - CENSYS_API_ID=${CENSYS_API_ID:-}
300- - CENSYS_API_SECRET=${CENSYS_API_SECRET:-}
301- - CERTSPOTTER_API_KEY=${CERTSPOTTER_API_KEY:-}
302- - CHAOS_API_KEY=${CHAOS_API_KEY:-}
303- - FOFA_EMAIL=${FOFA_EMAIL:-}
304- - FOFA_KEY=${FOFA_KEY:-}
305- - FULLHUNT_API_KEY=${FULLHUNT_API_KEY:-}
306- - INTELX_API_KEY=${INTELX_API_KEY:-}
307- - PASSIVETOTAL_USERNAME=${PASSIVETOTAL_USERNAME:-}
308- - PASSIVETOTAL_API_KEY=${PASSIVETOTAL_API_KEY:-}
309- - QUAKE_USERNAME=${QUAKE_USERNAME:-}
310- - QUAKE_PASSWORD=${QUAKE_PASSWORD:-}
311- - THREATBOOK_API_KEY=${THREATBOOK_API_KEY:-}
312- - WHOISXMLAPI_API_KEY=${WHOISXMLAPI_API_KEY:-}
313- - ZOOMEYE_USERNAME=${ZOOMEYE_USERNAME:-}
314- - ZOOMEYE_PASSWORD=${ZOOMEYE_PASSWORD:-}
315- - ZOOMEYEAPI_API_KEY=${ZOOMEYEAPI_API_KEY:-}
316- - H1_API_KEY=${H1_API_KEY:-}
317- - INTEGRITI_API_KEY=${INTEGRITI_API_KEY:-}
318- - DISCORD_WEBHOOK=${DISCORD_WEBHOOK:-}
319-
320- # Database Configuration
321- # Database Type: "postgresql" or "sqlite"
322- # For PostgreSQL: Set DB_HOST to connection string or use individual variables
323- # For SQLite: Set DB_TYPE=sqlite and DB_HOST to file path (e.g., ./bughunt.db)
324- - SAVE_TO_DB=${SAVE_TO_DB:-true}
325- - DB_TYPE=${DB_TYPE:-postgresql}
326- - DB_HOST=${DB_HOST:-}
327- - DB_PORT=${DB_PORT:-5432}
328- - DB_USER=${DB_USER:-}
329- - DB_PASSWORD=${DB_PASSWORD:-}
330- - DB_NAME=${DB_NAME:-bughunt}
331- - DOMAINS_COLLECTION=${DOMAINS_COLLECTION:-domains}
332- - SUBDOMAINS_COLLECTION=${SUBDOMAINS_COLLECTION:-subdomains}
333-
334- # OpenRouter API
335- - OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
336-
337- # Tool-specific Configuration
338- - NUCLEI_TEMPLATES_PATH=/app/nuclei_templates
339- - NUCLEI_RATE_LIMIT=${NUCLEI_RATE_LIMIT:-150}
340- - NUCLEI_CONCURRENCY=${NUCLEI_CONCURRENCY:-25}
341- - FFUF_WORDLIST_PATH=/app/Wordlists/quick_fuzz.txt
342- - FFUF_THREADS=${FFUF_THREADS:-50}
343- - SUBFINDER_THREADS=${SUBFINDER_THREADS:-10}
344- - GITHUB_MAX_REPOS=${GITHUB_MAX_REPOS:-50}
345- - GITHUB_PARALLEL_JOBS=${GITHUB_PARALLEL_JOBS:-3}
346- - GITHUB_HTML_REPORTS=${GITHUB_HTML_REPORTS:-true}
347- - GITHUB_SCAN_TYPES=${GITHUB_SCAN_TYPES:-github_org_scan}
348-
349- # AWS Configuration
350- - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
351- - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
352- - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN:-}
353- - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:-us-east-1}
354138
355- # iOS App Store (ipatool) Configuration
356- - IPATOOL_EMAIL=${IPATOOL_EMAIL:-}
357- - IPATOOL_PASSWORD=${IPATOOL_PASSWORD:-}
358- - IPATOOL_KEYCHAIN_PASSPHRASE=${IPATOOL_KEYCHAIN_PASSPHRASE:-}
359- - IPATOOL_AUTH_CODE=${IPATOOL_AUTH_CODE:-}
360-
361- # General Settings
362- - VERBOSE=${VERBOSE:-true}
363-
364- # APKX Performance Settings (optimized for 4-core, 8GB RAM VPS with no swap)
365- - APKX_WORKERS=${APKX_WORKERS:-2}
366- - APKX_MAX_FILES=${APKX_MAX_FILES:-12000}
367-
368- # Dashboard + R2 (same as autoar-api)
369- - SUPABASE_URL=${SUPABASE_URL:-}
370- - SUPABASE_JWT_SECRET=${SUPABASE_JWT_SECRET:-}
371- - SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY:-}
372- - SUPABASE_SECRET_KEY=${SUPABASE_SECRET_KEY:-}
373- - USE_R2_STORAGE=${USE_R2_STORAGE:-}
374- - R2_BUCKET_NAME=${R2_BUCKET_NAME:-}
375- - R2_ACCOUNT_ID=${R2_ACCOUNT_ID:-}
376- - R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID:-}
377- - R2_SECRET_KEY=${R2_SECRET_KEY:-}
378- - R2_PUBLIC_URL=${R2_PUBLIC_URL:-}
379- - GEMINI_API_KEY=${GEMINI_API_KEY:-}
380-
381- ports :
382- - " 8000:8000"
383- volumes :
384- - results-data:/app/new-results
385- - ./regexes:/app/regexes:ro
386- healthcheck :
387- test :
388- ["CMD-SHELL", "curl -fsS http://127.0.0.1:$${API_PORT:-8000}/health >/dev/null || exit 1"]
389- interval : 30s
390- timeout : 5s
391- retries : 3
392- start_period : 40s
393139
394140 # Optional PostgreSQL for self-hosted stacks (use with --profile localdb)
395141 postgres :
@@ -418,19 +164,12 @@ volumes:
418164 autoar-pgdata :
419165# Usage Examples:
420166#
421- # 1. Run Discord Bot only (default):
422- # docker-compose up autoar-discord
423- #
424- # 2. Run API Server only:
425- # docker-compose --profile api up autoar-api
167+ # 1. Run API Server (default):
168+ # docker-compose up -d
426169# Access API docs at: http://localhost:8000/docs
427170#
428- # 3. Run both Discord Bot and API Server:
429- # docker-compose --profile full up autoar-full
430- # Discord bot will be active AND API available at http://localhost:8000/docs
431- #
432- # 4. Stop all services:
171+ # 2. Stop all services:
433172# docker-compose down
434173#
435- # 5 . View logs:
174+ # 3 . View logs:
436175# docker-compose logs -f [service-name]
0 commit comments