Tutorial Lengkap Proxmox, Ubuntu VM, Cloudflare Tunnel & SSH Domain
πŸ§ͺ Dokumentasi Infrastruktur

CODEKOP DEV LAB

ThinkCentre → Proxmox VE → Ubuntu Server → codekopdev.my.id → SSH aman tanpa port forwarding

Perangkat

Lenovo ThinkCentre, Intel Core i5 Gen 7 T, 4 core, RAM 16 GB

Host

Proxmox VE

Guest

Ubuntu Server LTS

Domain

codekopdev.my.id

Metode akses

Cloudflare Tunnel; web ke port 80 dan SSH ke port 22

Disusun untuk Fauzan Falah oleh ChatGPT Dokumentasi Pribadi • Agustus 2026

🧭 Ringkasan Alur

  1. Membuat flashdisk bootable Proxmox dari Linux Mint.
  2. Memasang Proxmox VE pada ThinkCentre.
  3. Mengakses panel Proxmox dan mengunggah ISO Ubuntu.
  4. Membuat serta memasang Ubuntu Server sebagai virtual machine.
  5. Menyiapkan Nginx, OpenSSH, dan cloudflared pada Ubuntu.
  6. Menghubungkan domain codekopdev.my.id ke Cloudflare.
  7. Membuat Cloudflare Tunnel untuk website.
  8. Membuat hostname ssh.codekopdev.my.id untuk SSH.
  9. Memasang cloudflared pada laptop Linux Mint dan melakukan SSH.

πŸ—ΊοΈ Topologi

 ChatGPT Image 1 Agu 2026, 14.34.31 (1).png 

πŸ’Ύ 1. Membuat USB Bootable Proxmox di Linux Mint

Unduh ISO Proxmox VE dari situs resmi Proxmox. Colok flashdisk minimal 8 GB. Semua data pada flashdisk akan terhapus.

1.1 Identifikasi disk

lsblk

Contoh pada perangkat ini:

sda 7.3G removable ← flashdisk
nvme0n1 476.9G internal ← SSD laptop Linux Mint

1.2 Tulis ISO ke flashdisk

sudo umount /dev/sda1
ls ~/Downloads | grep -i proxmox
sudo dd if=~/Downloads/proxmox-ve_NAMA-VERSI.iso of=/dev/sda bs=4M status=progress conv=fsync
sync
sudo eject /dev/sda

Tidak perlu memformat atau mereset flashdisk terlebih dahulu. dd menimpa tabel partisi dan seluruh isi flashdisk.

πŸ–₯️ 2. Instal Proxmox VE pada ThinkCentre

  1. Colok flashdisk Proxmox ke ThinkCentre.
  2. Nyalakan perangkat dan tekan F12 berulang untuk membuka Boot Menu.
  3. Pilih USB dalam mode UEFI.
  4. Pilih Install Proxmox VE (Graphical).
  5. Pilih SSD internal sebagai target. Seluruh isi SSD target akan terhapus.
  6. Atur negara Indonesia, zona waktu Asia/Jakarta, dan keyboard U.S. English.
  7. Buat password root dan isi alamat email.
  8. Atur jaringan menggunakan kabel LAN.

2.1 Contoh jaringan

Hostname : pve.home.local
IP/CIDR : 192.168.1.19/24
Gateway : 192.168.1.1
DNS Server : 192.168.1.1

2.2 Akses panel Proxmox

https://192.168.1.19:8006

Peringatan sertifikat lokal pada browser normal. Pilih Advanced/Proceed, kemudian login:

User : root
Realm : Linux PAM standard authentication
Pass : password instalasi

πŸ“€ 3. Upload ISO Ubuntu dan Buat VM

3.1 Upload ISO

Unduh Ubuntu Server LTS amd64 di laptop, lalu di Proxmox buka:

pve → local (pve) → ISO Images → Upload

ISO disimpan di local (pve). Disk VM umumnya dibuat di local-lvm.

3.2 Buat virtual machine

Klik Create VM dan gunakan konfigurasi awal berikut:

Bagian

Nilai

Catatan

General

Name: ubuntu-server

Start at boot dicentang; Add to HA tidak dicentang

OS

Ubuntu Server ISO

Guest OS Linux

System

VirtIO SCSI single

QEMU Guest Agent dicentang

Disk

40 GB, SCSI, local-lvm

Discard dan SSD emulation boleh dicentang

CPU

1 socket, 2 cores, type host

Sisakan resource untuk host

Memory

4096 MB

Ballooning boleh aktif; minimum 2048 MB

Network

Bridge vmbr0, model VirtIO

VM mendapat jaringan LAN

HA: Add to HA hanya berguna pada cluster beberapa node. Untuk satu ThinkCentre, biarkan tidak dicentang.

🐧 4. Instal Ubuntu Server pada VM

  1. Pilih VM ubuntu-server, klik Start, lalu buka Console.
  2. Pilih Try or Install Ubuntu Server.
  3. Gunakan DHCP terlebih dahulu agar instalasi mudah.
  4. Proxy dikosongkan; mirror dibiarkan default.
  5. Pilih Use an entire disk. Ini hanya disk virtual VM, bukan SSD Proxmox.
  6. Buat nama server, username, dan password.
  7. Centang Install OpenSSH server.
  8. Selesaikan instalasi dan pilih Reboot Now.

4.1 Contoh profil Ubuntu

Your name : Fauzan
Server name : ubuntu-server
Username : fauzan
Password : gunakan password kuat

Jika installer meminta melepas media instalasi, buka VM → Hardware → CD/DVD Drive → Edit → Do not use any media, lalu reboot.

4.2 Perbarui sistem dan QEMU Agent

sudo apt update
sudo apt upgrade -y
sudo apt install qemu-guest-agent -y
sudo systemctl enable --now qemu-guest-agent
sudo reboot

4.3 Cari IP Ubuntu

hostname -I
ip addr

Contoh IP VM: 192.168.1.20. Tes SSH lokal dari laptop:

ssh [email protected]

🌐 5. Siapkan Web Server dan SSH di Ubuntu

5.1 Nginx

sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
curl -I http://localhost

Hasil yang diharapkan mencakup HTTP/1.1 200 OK.

5.2 OpenSSH Server

sudo apt install openssh-server -y
sudo systemctl enable --now ssh
sudo systemctl status ssh
ss -lntp | grep ':22'

☁️ 6. Hubungkan Domain ke Cloudflare

  1. Tambahkan codekopdev.my.id ke Cloudflare dan pilih paket Free.
  2. Salin dua nameserver yang diberikan Cloudflare.
  3. Di registrar domain, buka menu Nameservers dan ganti nameserver lama dengan dua nameserver Cloudflare.
  4. Jangan membuat record NS biasa di DNS Management registrar.
  5. Tunggu status zone menjadi Active.

6.1 Verifikasi nameserver

dig NS codekopdev.my.id +short

Contoh hasil:

camilo.ns.cloudflare.com.
heidi.ns.cloudflare.com.

πŸš‡ 7. Buat Cloudflare Tunnel pada Ubuntu

Di Cloudflare Zero Trust buka Networking/Networks → Tunnels → Create tunnel. Pilih Cloudflared dan beri nama ubuntu-codekopdev.

Cloudflare akan menampilkan perintah instalasi khusus beserta token. Jalankan perintah tersebut langsung di Ubuntu VM. Bentuk akhirnya biasanya:

sudo cloudflared service install TOKEN_RAHASIA_DARI_DASHBOARD

7.1 Cek service tunnel

sudo systemctl status cloudflared
sudo journalctl -u cloudflared -n 100 --no-pager

Status di Ubuntu harus active (running) dan pada dashboard tunnel harus Healthy/Connected.

πŸš€ 8. Publikasikan Website pada Domain Utama

Di tunnel ubuntu-codekopdev, buka Routes → Add route → Published application.

Hostname/Domain : codekopdev.my.id
Path : *
Service Type : HTTP
Service URL : localhost:80

Cloudflare membuat DNS route Tunnel secara otomatis. Record akhir harus Proxied.

codekopdev.my.id
→ Tunnel ubuntu-codekopdev
→ Proxied

8.1 Tes website

curl -I http://localhost
curl -Iv https://codekopdev.my.id

Jika Universal SSL masih Pending Validation, biarkan konfigurasi DNS/tunnel stabil dan tunggu penerbitan sertifikat. Mode SSL/TLS dapat diatur ke Full. Nginx lokal tetap menggunakan http://localhost:80.

πŸ” 9. Buat Route SSH pada Cloudflare Tunnel

Gunakan hostname terpisah karena domain utama sudah dipakai untuk website.

Di tunnel, pilih tab Published application routes → Add route:

Subdomain/Hostname : ssh.codekopdev.my.id
Service Type : SSH
Service URL : localhost:22

Jika cloudflared berada pada mesin berbeda dari server SSH, gunakan IP internal, misalnya 192.168.1.20:22.

πŸ›‘οΈ 10. Lindungi SSH dengan Cloudflare Access

Sangat disarankan membuat aplikasi Access agar hostname SSH hanya dapat dipakai akun yang diizinkan.

  1. Buka Zero Trust → Access → Applications.
  2. Pilih Add an application → Self-hosted.
  3. Masukkan hostname ssh.codekopdev.my.id.
  4. Buat policy Allow untuk alamat email pribadi.
  5. Pilih metode login, misalnya One-time PIN atau identity provider yang tersedia.

Dengan Access, Cloudflare meminta autentikasi sebelum menghubungkan client ke SSH.

πŸ’» 11. Pasang cloudflared pada Laptop Linux Mint / Ubuntu / WSL

Bagian ini dikerjakan di laptop Linux Mint / Ubuntu / WSL laptop pribadi, bukan di Proxmox dan bukan di Ubuntu VM.

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg \
| sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main" \
| sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update
sudo apt install cloudflared -y
which cloudflared
cloudflared --version

Hasil which cloudflared biasanya /usr/bin/cloudflared.

βš™οΈ 12. Konfigurasi SSH pada Laptop

mkdir -p ~/.ssh
nano ~/.ssh/config

Isi file:

Host ssh.codekopdev.my.id
HostName ssh.codekopdev.my.id
User fauzan
ProxyCommand /usr/bin/cloudflared access ssh --hostname %h

Simpan lalu atur permission:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/config

12.1 Koneksi

ssh ssh.codekopdev.my.id

Browser dapat terbuka untuk login Cloudflare Access. Setelah autentikasi berhasil, terminal SSH tersambung ke Ubuntu.

Tanpa file config, perintah satu kali:

ssh -o ProxyCommand="/usr/bin/cloudflared access ssh --hostname %h" \
[email protected]

πŸ”‘ 13. Gunakan SSH Key

Di laptop Linux Mint:

ssh-keygen -t ed25519 -C "fauzan@codekop"
ssh-copy-id [email protected]

Karena ssh-copy-id paling mudah dilakukan lewat IP lokal, jalankan saat laptop berada pada jaringan yang sama. Setelah key terpasang, koneksi domain juga memakai key tersebut:

ssh ssh.codekopdev.my.id

13.1 Opsional: nonaktifkan password SSH

sudo nano /etc/ssh/sshd_config.d/99-codekop-security.conf

Isi setelah key benar-benar teruji:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
sudo sshd -t
sudo systemctl restart ssh

🧰 14. Troubleshooting Cepat

Gejala

Penyebab umum

Pemeriksaan

502 Bad Gateway

Nginx/service origin mati atau port salah

curl -I http://localhost; systemctl status nginx

Error 1033

cloudflared tidak terhubung

systemctl status cloudflared; journalctl -u cloudflared

ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Edge certificate Cloudflare belum Active

SSL/TLS → Edge Certificates; tunggu DCV/issuance

SSH Connection closed

Route SSH salah atau sshd tidak aktif

ss -lntp | grep :22; Published route SSH localhost:22

cloudflared: command not found

Client belum dipasang pada laptop

sudo apt install cloudflared; which cloudflared

Browser login tidak muncul

Access app/policy belum dibuat atau ProxyCommand salah

Periksa Access Applications dan ~/.ssh/config

Permission denied

Username/key/password salah

ssh -vvv ssh.codekopdev.my.id

14.1 Perintah diagnosis lengkap

# Ubuntu VM
hostname -I
systemctl status nginx ssh cloudflared
ss -lntp | grep -E ':22|:80'
curl -I http://localhost
journalctl -u cloudflared -n 100 --no-pager
# Laptop Linux Mint
dig NS codekopdev.my.id +short
dig ssh.codekopdev.my.id
cloudflared --version
ssh -vvv ssh.codekopdev.my.id

βœ… 15. Rekomendasi Operasional

  • Buat backup VM Proxmox secara berkala sebelum memasang panel hosting atau melakukan upgrade besar.
  • Jangan memasang aaPanel di host Proxmox; pasang hanya di dalam Ubuntu VM bila memang diperlukan.
  • Untuk VM Ubuntu awal, 2 core, RAM 4 GB, dan disk 40–60 GB cukup untuk web ringan.
  • Gunakan Start at boot agar VM menyala otomatis setelah listrik/host restart.
  • Gunakan UPS atau minimal surge protector untuk ThinkCentre dan router.
  • Simpan recovery code Cloudflare, password root Proxmox, dan SSH key di tempat aman.

πŸ“š Referensi Resmi

  • Proxmox VE Administration Guide — pve.proxmox.com/pve-docs/pve-admin-guide.pdf
  • Ubuntu Server: Basic installation — ubuntu.com/server/docs/tutorial/basic-installation/
  • Ubuntu Server: OpenSSH server — ubuntu.com/server/docs/how-to/security/openssh-server/
  • Cloudflare Tunnel setup — developers.cloudflare.com/tunnel/setup/
  • Cloudflare Published applications — developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/routing-to-tunnel/
  • Cloudflare SSH with client-side cloudflared — developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/ssh-cloudflared-authentication/
πŸ§‘‍πŸ’» Codekop Dev Lab · Dokumentasi Proxmox, Ubuntu Server, Cloudflare Tunnel, dan SSH · Dokumentasi Pribadi
Komentar