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: Ingress, Frontend UI, Backend API, Database privat, dan Cache dengan diagram topologi SVG interaktif serta skrip instalasi siap deploy.
Untuk Apa Stack Composer Ini? (Pilih Skenario Anda)
Saat Anda selesai membuat web/aplikasi di laptop dan ingin meng-online-kannya ke Server VPS Linux, Anda butuh pengaturan Docker, Nginx Reverse Proxy (SSL), Database Terisolasi, dan Firewall. Pilih komponen aplikasi Anda di bawah ini — sistem akan menggambar Diagram Topologi Arsitektur (siap untuk Bab 3 Skripsi/Proyek), menghitung Estimasi Biaya Sewa VPS Bulanan, dan membuat 1 Script Otomatis Siap Jalan di VPS!
Simulasi Alur Trafik Pengunjung (1 ➔ 2 ➔ 3 ➔ 4)
Membuka https://app.kampus.ac.id dari internet publik via protokol HTTPS (Port 443).
Nginx Reverse Proxy menerima trafik, terminasi SSL, dan proteksi DoS.
Meneruskan halaman ke NEXTJS_NODE & API ke runtime LARAVEL_OCTANE.
POSTGRES_16 menyimpan data di jaringan internal tertutup tanpa port publik WAN.
Template Arsitektur Siap Pakai 1-Klik (Preset Populer)
⚙️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 & TLS
Pilih mekanisme gerbang trafik masuk dari internet publik ke host server Anda.
💻STEP 3 • LAYER 2 — WEB FRONTEND UI
Pilih kerangka antarmuka pengguna klien (SSR atau Static SPA).
⚡STEP 4 • LAYER 3 — BACKEND API SERVICE
Pilih runtime server logika bisnis backend aplikasi.
🗄️STEP 5 • LAYER 4 — DATABASE & CACHE TIER
Database diisolasi 100% di jaringan internal Docker tanpa port publik ke internet.
LIVE VPS RESOURCE & CAPACITY METER
Perbandingan Estimasi Biaya Sewa VPS Bulanan (IDR & USD)
Estimasi biaya sewa infrastruktur server VPS Linux untuk menjalankan arsitektur siakad-app secara stabil 24/7 dengan spesifikasi rekomendasi 4 vCPU / 4 GB RAM:
| Penyedia VPS | Tipe Paket | Estimasi USD | Estimasi IDR | Karakteristik & Lokasi |
|---|---|---|---|---|
| 🇩🇪 Hetzner Cloud | CX32 / CPX31 | ~$5.50 - $10.50 / bln | ~Rp 88.000 - Rp 168.000 / bln | Termurah per GB RAM, Datacenter Jerman/Finlandia/AS |
| 🌐 UpCloud / DigitalOcean / Vultr | Standard 4GB / 8GB | ~$12.00 - $24.00 / bln | ~Rp 192.000 - Rp 384.000 / bln | Datacenter Singapura/Jakarta, latensi ultra-rendah (<15ms) |
| 🇮🇩 VPS Cloud Lokal Indonesia | IIX / OpenIXP / IDC | ~$6.00 - $14.00 / bln | ~Rp 95.000 - Rp 225.000 / bln | Bandwidth IIX 1 Gbps unmetered lokal, pembayaran QRIS/BCA |
LIVE TOPOLOGI JARINGAN & ISOLASI KONTAINER DOCKER
# =====================================================================
# Generated by KalkuNet Visual Stack Composer (https://kalkunet.com)
# 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: