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 bertahap: tentukan Ingress, Frontend UI, Backend API, Database privat, dan Cache. Hasilkan topologi SVG serta konfigurasi siap deploy secara instan.

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

Tentang Stack Composer & Panduan Alur Kerja Anda

Standar Kompetensi SKKNI J.611000.013.01 & LPIC-1/2

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: IdentitasSlug proyek & domain FQDN produksi.
Step 2: IngressNginx SSL / Cloudflare Zero-Trust.
Step 3: FrontendNext.js Node / React Vite / None.
Step 4: BackendExpress / Laravel / Go / FastAPI.
Step 5: DatabasePostgres / MySQL + Redis Cache.
Alur Penyusunan Arsitektur (Bebas Pilih)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 & REVERSE PROXY

WAN Boundary

Pilih 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-net

Pilih 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

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