Docker, Nginx & Linux Stack Visual Composer
Studio visual perancang arsitektur server produksi Linux, Nginx, dan Docker berbasis kontainer berstandar SKKNI dan LPIC. Bangun arsitektur modular bertahap: tentukan Ingress, Frontend UI, Backend API, Database privat, dan Cache. Hasilkan topologi SVG serta konfigurasi siap deploy secara instan.
Tentang Stack Composer & Panduan Alur Kerja Anda
Stack Composer adalah studio visual arsitektur server produksi berbasis kontainer Docker dan Linux. Anda bertindak sebagai Lead Systems & DevOps Architect yang bertugas merancang topologi infrastruktur cloud/on-premise secara modular dari lapisan WAN terluar hingga database terdalam. Seluruh opsi dapat dikonfigurasi secara bebas dan menghasilkan berkas siap pakai secara real-time.
⚙️STEP 1 • IDENTITAS PROYEK & DOMAIN
● AktifTentukan nama slug proyek dan FQDN domain produksi yang akan dikonfigurasi pada certbot SSL Let's Encrypt serta Nginx server_name.
🛡️STEP 2 • LAYER 1 — EDGE INGRESS & REVERSE PROXY
WAN BoundaryPilih mekanisme masuknya lalu lintas publik dari internet ke host server VPS Anda (Let's Encrypt atau Zero-Trust Cloudflare Tunnel).
💻STEP 3 • LAYER 2 — WEB & FRONTEND TIER
web-net (isolated)Tentukan apakah sistem memiliki Server-Side Rendering (SSR Node.js), Single Page Application (SPA Nginx statis), atau murni API backend.
⚡STEP 4 • LAYER 3 — BACKEND API ENGINE
api-net & db-netPilih framework backend berstandar produksi yang menghubungkan routing Nginx dengan lapisan database terisolasi.
🗄️STEP 5 • LAYER 4 — DATABASE & CACHE ADD-ONS
db-net (internal: true)Pilih RDBMS relasional terisolasi (0 port terbuka ke internet) dan aktifkan modul caching Redis serta monitoring kesehatan Uptime Kuma.
LIVE TOPOLOGI JARINGAN & ISOLASI KONTAINER DOCKER
# =====================================================================
# Generated by InfraCalc Visual Stack Composer (https://infracalc.web.id)
# Project : siakad-app (app.kampus.ac.id)
# Topology: BOTH_NGINX_AND_CF -> frontend + backend-api -> POSTGRES_16 + redis
# =====================================================================
name: siakad-app
services:
nginx-proxy:
image: nginx:1.27-alpine
container_name: siakad-app-nginx
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./certbot/conf:/etc/letsencrypt:ro
depends_on:
- frontend
- backend-api
networks:
- edge-net
cloudflared:
image: cloudflare/cloudflared:latest
container_name: siakad-app-tunnel
restart: unless-stopped
command: tunnel --no-autoupdate run
environment:
TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN}
networks:
- edge-net
frontend:
image: node:20-alpine
container_name: siakad-app-frontend
restart: unless-stopped
working_dir: /app
environment:
NODE_ENV: production
NEXT_PUBLIC_API_URL: https://app.kampus.ac.id/api
expose:
- "3000"
networks:
- edge-net
backend-api:
image: dunglas/frankenphp:1-php8.3-alpine
container_name: siakad-app-backend
restart: unless-stopped
working_dir: /app
command: php artisan octane:frankenphp --host=0.0.0.0 --port=8000
environment:
APP_ENV: production
PORT: 8000
DB_HOST: database
DB_PORT: 5432
DB_NAME: ${DB_NAME:-app_db}
DB_USER: ${DB_USER:-app_user}
DB_PASSWORD: ${DB_PASSWORD}
REDIS_URL: redis://redis-cache:6379
expose:
- "8000"
depends_on:
database:
condition: service_healthy
networks:
- edge-net
- db-net
database:
image: postgres:16-alpine
container_name: siakad-app-db
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_NAME:-app_db}
POSTGRES_USER: ${DB_USER:-app_user}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-app_user} -d ${DB_NAME:-app_db}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- db-net
redis-cache:
image: redis:7.4-alpine
container_name: siakad-app-redis
restart: unless-stopped
command: redis-server --save 60 1 --loglevel warning --requirepass ${REDIS_PASSWORD}
volumes:
- redis-data:/data
networks:
- db-net
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: siakad-app-monitoring
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- kuma-data:/app/data
networks:
- edge-net
networks:
edge-net:
driver: bridge
db-net:
driver: bridge
internal: true
volumes:
db-data:
redis-data:
kuma-data: