1 min read

VPS Seharga 7 Dollar

VPS Seharga 7 Dollar
Photo by U. Storsberg / Unsplash

Blog ini dan beberapa side project lainnya bersemayam di satu server, semuanya dilayani oleh konfigurasi docker-compose dan caddyfile serta dns menggunakan cloudflare.

Di sini saya memanfaatkan 2 hal sebenarnya docker-compsoe yang bisa melayani beragam service dan memanfaatkan reverse proxy dari caddy (nginx juga bisa sih) lalu setelah itu ya manfaatin aja multiple subdomain, kira-kira begini isi dari docker-compose saya.

version: "3.8"

services:
  frontend:
    image: ghcr.io/${GITHUB_USERNAME}/${FRONTEND_REPO_NAME}:latest
    restart: unless-stopped
    environment:
      - NODE_ENV=production
    ports:
      - 
    networks:
      - techstill

  backend:
    image: ghcr.io/${GITHUB_USERNAME}/${BACKEND_REPO_NAME}:latest
    restart: unless-stopped
    environment:
      - NODE_ENV=production
    ports:
      - 
    command: command run fastapi
    networks:
      - techstill

  blog:
    image: ghost:5-alpine
    restart: unless-stopped
    ports:
      - 
    environment:
      database__client: sqlite3
      url: https://blog.arsmp.com
    networks:
      - techstill

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:..
    networks:
      - techstill
    depends_on:
      - frontend
      - backend
      - blog

volumes:
  caddy_data:
  caddy_config:
  static_files:

networks:
  techstill:
    driver: bridge

Dan begini konfigurasi Caddy


# Configuration for Blog
blog.arsmp.com {
    encode gzip

    header {
        # Enable HTTP Strict Transport Security (HSTS)
        Strict-Transport-Security "max-age=31536000;"

        # Enable cross-site filter (XSS) and tell browser to block detected attacks
        X-XSS-Protection "1; mode=block"

        # Prevent some browsers from MIME-sniffing a response away from the declared Content-Type
        X-Content-Type-Options "nosniff"

        # Disallow the site to be rendered within a frame (clickjacking protection)
        X-Frame-Options "DENY"

        # Add referrer policy
        Referrer-Policy "strict-origin-when-cross-origin"
    }

    reverse_proxy http://blog:port {
        header_up Host {host}
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
    }
}

... another configuration for another domain

Di atas saya memanfaatkan gratisnya github action untuk auto deploy. Karena web saya pun tidak terlalu banyak pengunjung dan aplikasi sampingan saya juga bernasib sama, vps seharga 7 dollar ini masih cukup untuk menampung itu semua.