Skip to content

Latest commit

 

History

History
415 lines (305 loc) · 12 KB

File metadata and controls

415 lines (305 loc) · 12 KB

Membangun Home Server dengan Proxmox, CasaOS, dan Cloudflare Tunnel

Panduan ini menjelaskan cara membangun web server rumahan menggunakan PC bekas, Proxmox VE sebagai platform virtualisasi, CasaOS sebagai sistem operasi container, dan Cloudflare Tunnel untuk akses publik tanpa mengekspos IP.


Daftar Isi


Arsitektur Sistem

Internet
    |
    | (HTTPS)
    v
Cloudflare CDN + Tunnel
    |
    | (HTTP via Tunnel — IP tidak terekspos)
    v
Proxmox VE (PC Bekas)
    |
    v
LXC Container
    ├── CasaOS / Docker
    ├── Cloudflared (Tunnel Client)
    ├── Nginx Proxy Manager (:8080 / :81)
    └── Nginx Web Server (:8081)
         ├── /var/www/domain/       → domain.com
         └── /var/www/subdomain/    → sub.domain.com

Prasyarat

Sebelum memulai, pastikan hal-hal berikut telah tersedia:

  • Flash drive minimal 8 GB untuk instalasi Proxmox
  • Kabel LAN untuk koneksi server yang stabil
  • PC atau laptop terpisah untuk mengakses dashboard melalui browser
  • Domain aktif yang dikelola di Cloudflare
  • Akun Cloudflare (gratis) — daftar di sini
  • Software Rufus (Windows) atau Balena Etcher untuk membuat flash drive bootable
  • Software FileZilla untuk mengunggah file melalui SFTP

Bagian 1 — Install Proxmox VE

1.1 Download ISO

Kunjungi proxmox.com/downloads dan unduh Proxmox VE ISO Installer versi terbaru.

1.2 Membuat Flash Drive Bootable

  1. Buka Rufus dan pilih flash drive yang akan digunakan
  2. Pilih file ISO Proxmox yang telah diunduh
  3. Klik Start dan tunggu proses selesai

1.3 Instalasi Proxmox

  1. Colokkan flash drive ke server dan nyalakan
  2. Masuk ke BIOS (tekan F2, F12, atau Del), atur urutan boot agar USB menjadi prioritas pertama
  3. Pilih Install Proxmox VE (Graphical)
  4. Ikuti wizard instalasi:
    • Target disk: pilih HDD atau SSD server
    • Country: Indonesia | Timezone: Asia/Jakarta
    • Password root: buat kata sandi yang kuat dan simpan dengan baik
    • IP Address: tetapkan IP statis, contoh 192.168.1.100
  5. Klik Install dan tunggu proses selesai
  6. Cabut flash drive, server akan restart secara otomatis

1.4 Mengakses Dashboard Proxmox

Buka browser di perangkat lain dan akses:

https://[IP-SERVER]:8006

Username : root
Password : (kata sandi yang dibuat saat instalasi)
Realm    : Linux PAM standard authentication

Browser akan menampilkan peringatan sertifikat. Klik Advanced lalu Proceed untuk melanjutkan. Ini normal karena Proxmox menggunakan self-signed certificate.


Bagian 2 — Setup LXC Container dan CasaOS

2.1 Download Template Debian

Buka Shell di Proxmox (klik nama node, lalu Shell) dan jalankan perintah berikut:

# Perbarui daftar template yang tersedia
pveam update

# Periksa versi Debian yang tersedia
pveam available --section system | grep debian

# Unduh template (sesuaikan nama dengan hasil perintah di atas)
pveam download local debian-12-standard_12.12-1_amd64.tar.zst

2.2 Membuat LXC Container

pct create 100 local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst \
  --hostname namaserver \
  --cores 2 \
  --memory 2048 \
  --swap 512 \
  --rootfs local-lvm:500 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --ostype debian \
  --unprivileged 0 \
  --features nesting=1,keyctl=1 \
  --password \
  --start 1

Masukkan kata sandi root container saat diminta.

Keterangan parameter penting:

Parameter Keterangan
--unprivileged 0 Wajib agar Docker dapat berjalan di dalam LXC
--features nesting=1 Mengizinkan Docker berjalan di dalam container
--features keyctl=1 Dibutuhkan oleh beberapa operasi Docker

2.3 Instalasi CasaOS

# Masuk ke container dari Proxmox Shell
pct enter 100

# Perbarui sistem
apt update && apt upgrade -y

# Instal curl
apt install -y curl

# Instal CasaOS
curl -fsSL https://get.casaos.io | bash

Tunggu hingga proses instalasi selesai. Instalasi berhasil apabila muncul pesan berikut:

CasaOS vX.X.X is running at:
  http://[IP-CONTAINER]

2.4 Mengakses CasaOS

Periksa IP container terlebih dahulu:

ip a | grep inet

Kemudian buka browser dan akses http://[IP-CONTAINER]. Buat akun administrator pada saat pertama kali membuka CasaOS.


Bagian 3 — Cloudflare Tunnel

Cloudflare Tunnel memungkinkan server lokal diakses dari internet tanpa perlu membuka port di router dan tanpa mengekspos IP publik.

3.1 Instalasi Cloudflared di CasaOS

  1. Buka App Store di CasaOS
  2. Cari cloudflare
  3. Instal Cloudflared dengan developer Developer (bukan versi dari BigBearCasaOS)

3.2 Membuat Tunnel di Cloudflare Dashboard

  1. Login ke dash.cloudflare.com
  2. Pilih domain yang akan digunakan
  3. Klik Zero Trust di sidebar kiri
  4. Buka Networks → Tunnels
  5. Klik + Create a tunnel
  6. Pilih Cloudflared, beri nama tunnel, lalu klik Save tunnel
  7. Pilih Docker pada halaman konfigurasi
  8. Salin token yang panjang (bagian setelah --token)

3.3 Konfigurasi Cloudflared di CasaOS

  1. Buka aplikasi Cloudflared di CasaOS
  2. Tempelkan token pada field Enter Tunnel Connector Token
  3. Klik Run atau Start
  4. Kembali ke Cloudflare Dashboard → Tunnels — status harus menunjukkan HEALTHY

3.4 Menambahkan Route Domain

  1. Klik tunnel yang telah dibuat
  2. Buka tab Published application routes
  3. Klik + Add a published application route
  4. Isi form:
    • Subdomain: kosongkan
    • Domain: domain yang digunakan
    • Path: kosongkan
    • Type: HTTP
    • URL: [IP-CONTAINER]:8080
  5. Simpan — Cloudflare akan membuat DNS record secara otomatis

Bagian 4 — Nginx Proxy Manager

4.1 Instalasi

  1. Buka App Store di CasaOS
  2. Cari Nginx Proxy Manager
  3. Pada dialog konfigurasi, ubah Host port 80 menjadi 8080 karena port 80 telah digunakan oleh CasaOS
  4. Klik Install

Konfigurasi port yang digunakan:

Host Port Container Port Fungsi
8080 80 Traffic web
443 443 HTTPS
81 81 Admin panel

4.2 Login

URL      : http://[IP-CONTAINER]:81
Email    : admin@example.com
Password : changeme

Segera ubah email dan kata sandi setelah login pertama.

4.3 Menambahkan Proxy Host

  1. Klik Hosts → Proxy Hosts
  2. Klik Add Proxy Host
  3. Isi form:
    • Domain Names: domain yang digunakan (tekan Enter setelah mengetik)
    • Scheme: http
    • Forward Hostname/IP: IP container
    • Forward Port: 8081
    • Centang Block Common Exploits
  4. Klik Save

Bagian 5 — Nginx Web Server dan Deploy Website

5.1 Instalasi Nginx

Buka console container di Proxmox dan jalankan:

# Instal Nginx
apt install -y nginx

# Ubah port Nginx ke 8081 karena port 80 digunakan oleh Docker
sed -i 's/listen 80 default_server/listen 8081 default_server/' /etc/nginx/sites-available/default
sed -i 's/listen \[::\]:80 default_server/listen [::]:8081 default_server/' /etc/nginx/sites-available/default

# Terapkan perubahan
systemctl restart nginx

# Verifikasi
curl localhost:8081

5.2 Konfigurasi Website

# Buat folder website
mkdir -p /var/www/namadomain
chown -R www-data:www-data /var/www/namadomain
chmod -R 755 /var/www/namadomain

# Buat file konfigurasi Nginx
nano /etc/nginx/sites-available/namadomain

Isi file konfigurasi:

server {
    listen 8081;
    server_name namadomain.com;
    root /var/www/namadomain;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
# Aktifkan konfigurasi
ln -s /etc/nginx/sites-available/namadomain /etc/nginx/sites-enabled/

# Uji konfigurasi dan terapkan
nginx -t && systemctl reload nginx

5.3 Mengunggah File via SFTP (FileZilla)

Aktifkan SSH di container:

apt install -y openssh-server
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart ssh

Sambungkan FileZilla dengan konfigurasi berikut:

Field Nilai
Host sftp://[IP-CONTAINER]
Username root
Password kata sandi container
Port 22

Setelah terhubung, navigasikan ke /var/www/namadomain/ di panel kanan, lalu seret dan lepas file website dari panel kiri.

5.4 Menambahkan Subdomain Baru

Untuk setiap subdomain atau proyek baru:

# 1. Buat folder dan konfigurasi Nginx
mkdir -p /var/www/subdomain
chown -R www-data:www-data /var/www/subdomain
nano /etc/nginx/sites-available/subdomain
# Isi konfigurasi seperti pada langkah 5.2
ln -s /etc/nginx/sites-available/subdomain /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Kemudian:

  • Tambahkan CNAME record di Cloudflare DNS: Name subdomain, Target domain utama
  • Tambahkan Proxy Host baru di NPM: subdomain.domain.com → port 8081
  • Unggah file ke /var/www/subdomain/ melalui FileZilla

Bagian 6 — SSL dan HTTPS

6.1 Konfigurasi Mode SSL di Cloudflare

Langkah ini wajib dilakukan sebelum mengaktifkan SSL di NPM untuk mencegah redirect loop.

  1. Buka Cloudflare → pilih domain → SSL/TLS
  2. Klik Configure
  3. Ubah encryption mode menjadi Full
Mode Keterangan Status
Flexible Menyebabkan redirect loop dengan NPM Tidak digunakan
Full Sesuai untuk konfigurasi ini Gunakan ini
Full Strict Membutuhkan sertifikat valid di server origin Tidak digunakan

6.2 Request SSL Certificate di NPM

  1. Di NPM, klik ikon titik tiga di samping domain → Edit
  2. Buka tab SSL
  3. Pilih Request a new SSL Certificate pada dropdown
  4. Masukkan alamat email yang valid
  5. Centang I Agree to the Let's Encrypt Terms of Service
  6. Klik Save dan tunggu 10–30 detik

Sertifikat dari Let's Encrypt bersifat gratis dan berlaku 90 hari. NPM akan memperbarui sertifikat secara otomatis sebelum kedaluwarsa.


Referensi Port

Layanan URL / Port Keterangan
Proxmox Dashboard https://[IP-SERVER]:8006 Panel administrasi virtualisasi
CasaOS Dashboard http://[IP-CONTAINER] Antarmuka home server
NPM Admin Panel http://[IP-CONTAINER]:81 Nginx Proxy Manager
Traffic via NPM http://[IP-CONTAINER]:8080 Port yang dituju tunnel
Nginx Web Server http://[IP-CONTAINER]:8081 Web server langsung
SFTP sftp://[IP-CONTAINER]:22 Pengunggahan file

Troubleshooting

Masalah Solusi
Error 400 saat unduh template Jalankan pveam available | grep debian untuk memastikan nama file yang tepat
Website tidak dapat diakses dari internet Periksa status tunnel di Cloudflare (harus HEALTHY) dan pastikan route sudah ditambahkan
CSS atau JS tidak terbaca (404) Buka DevTools (F12) → tab Network, periksa path yang gagal dan sesuaikan struktur folder
ERR_TOO_MANY_REDIRECTS Ubah mode SSL Cloudflare menjadi Full, nonaktifkan Force SSL di NPM
Authentication failed di FileZilla Aktifkan root login SSH: sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config && systemctl restart ssh
Port 80 konflik saat instalasi NPM Ubah Host port dari 80 menjadi 8080 pada konfigurasi container NPM
Tunnel HEALTHY namun website menampilkan 502 Periksa status Nginx dengan systemctl status nginx dan verifikasi konfigurasi Proxy Host di NPM