Lewati ke konten utama
INFRASTACK COMPOSER STUDIOSKKNI J.611000.013.01 • LPIC-1/2PRODUCTION HARDENED

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.

Jumlah Kontainer7 Kontainer
Estimasi RAM Stack~1872 MB (1.83 GB)
Rekomendasi Spesifikasi VPS4 vCPU / 4 GB RAM
Postur Keamanan JaringanZERO-TRUST TUNNEL (0 Port Web Terbuka di IP Publik + DB Terisolasi)
💡

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)

TLS Encrypted Flow
1. Browser Pengunjung🌐

Membuka https://app.kampus.ac.id dari internet publik via protokol HTTPS (Port 443).

2. Gerbang Keamanan (Edge)🛡️

Nginx Reverse Proxy menerima trafik, terminasi SSL, dan proteksi DoS.

3. Mesin Aplikasi⚡

Meneruskan halaman ke NEXTJS_NODE & API ke runtime LARAVEL_OCTANE.

4. Brankas Data Privat🗄️

POSTGRES_16 menyimpan data di jaringan internal tertutup tanpa port publik WAN.

🚀

Template Arsitektur Siap Pakai 1-Klik (Preset Populer)

Klik salah satu untuk memuat stack lengkap
Alur Penyusunan Arsitektur (5 Tahap Modular):5 Modul Komponen Aktif

⚙️STEP 1 • IDENTITAS PROYEK & DOMAIN

● Aktif

Tentukan 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

● VPS Spec: 4 vCPU / 4 GB RAM
Estimasi Pemakaian RAM Stack:1.83 GB / 4.0 GB RAM (46% Beban Aman)
Kapasitas Traffic Harian:Perkiraan ~101.250 – 243.000 Request/Hari (Estimasi)
Ringkasan Paparan Port:Port Publik: 80/443 • Port DB: Terisolasi 100%
💰

Perbandingan Estimasi Biaya Sewa VPS Bulanan (IDR & USD)

📅 Terakhir diperbarui: November 2026 • Harga bersifat perkiraan pasar (belum termasuk PPN)Kebutuhan: 4 vCPU / 4 GB RAM

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 VPSTipe PaketEstimasi USDEstimasi IDRKarakteristik & Lokasi
🇩🇪 Hetzner CloudCX32 / CPX31~$5.50 - $10.50 / bln~Rp 88.000 - Rp 168.000 / blnTermurah per GB RAM, Datacenter Jerman/Finlandia/AS
🌐 UpCloud / DigitalOcean / VultrStandard 4GB / 8GB~$12.00 - $24.00 / bln~Rp 192.000 - Rp 384.000 / blnDatacenter Singapura/Jakarta, latensi ultra-rendah (<15ms)
🇮🇩 VPS Cloud Lokal IndonesiaIIX / OpenIXP / IDC~$6.00 - $14.00 / bln~Rp 95.000 - Rp 225.000 / blnBandwidth IIX 1 Gbps unmetered lokal, pembayaran QRIS/BCA

LIVE TOPOLOGI JARINGAN & ISOLASI KONTAINER DOCKER

Bridge: siakad-app-net
ZONE 1: WAN INGRESS & TLS TERMINATION (Public Entrypoint)🛡️ Hybrid Nginx + CFapp.kampus.ac.id📈 Uptime Kuma Monitorstatus.app.kampus.ac.idZONE 2: APPLICATION BRIDGE NETWORK (web-net & api-net)▲ frontend (Next.js Node 20)Container: siakad-app-frontendInternal Port: 3000 • RAM ~200MB⚙️ backend-api (LARAVEL_OCTANE)Container: siakad-app-backend-apiAPI Port: 8000 • Internal OnlyZONE 3: PRIVATE STORAGE & PERSISTENCE TIER (db-net • internal: true)🗄️ database (POSTGRES_16)Volume: siakad-app-db-dataPort: 5432 (Zero Public Access)Encrypted Credentials via .env⚡ redis (Redis 7.4 In-Memory)Volume: siakad-app-redis-dataPort: 6379 (Isolated to api-net)Fast Session & Cache Store
# =====================================================================
# 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: