Skip to content

Commit 30c9111

Browse files
committed
refactor: simplify docker-compose to a single API service and expose port 8000 in Dockerfile
1 parent eaa4996 commit 30c9111

2 files changed

Lines changed: 8 additions & 267 deletions

File tree

Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ RUN useradd -m -u 10001 autoar && \
104104
chown autoar:autoar /usr/local/bin/autoar-entrypoint
105105
USER autoar
106106

107+
EXPOSE 8000
108+
107109
# Use tini as init for proper signal handling
108110
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/autoar-entrypoint"]
109111

docker-compose.yml

Lines changed: 6 additions & 267 deletions
Original file line numberDiff line numberDiff line change
@@ -6,123 +6,7 @@
66
# Set in .env: DB_TYPE=postgresql DB_HOST=postgresql://autoar:autoar@postgres:5432/bughunt?sslmode=disable
77

88
services:
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

Comments
 (0)