Kalau kamu butuh VPN/proxy server sendiri, 3X-UI ini panel web buat ngatur Xray-core yang support banyak protokol kayak VLESS, VMESS, Trojan, Reality, sampai WireGuard. Kelebihannya, semua bisa diatur lewat dashboard web, gak perlu edit config file manual satu-satu.
Di tutorial ini kita install pakai Docker Compose biar prosesnya lebih rapi, gampang di-backup, dan gampang di-update ke versi baru tanpa ribet.
Persiapan
Pastiin VPS kamu udah memenuhi ini:
- Ubuntu 22.04 atau 24.04
- Akses root atau sudo
- Public IP
- Docker dan Docker Compose
- Port-port di bawah ini kebuka di firewall VPS maupun cloud provider
| Port | Protokol | Fungsi |
|---|---|---|
| 2053 | TCP | Panel 3X-UI |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS, VLESS, Trojan |
| 443 | UDP | QUIC |
| 8443 | TCP | Port tambahan VPN |
| 51820 | UDP | WireGuard |
1. Install Docker
Update sistem dulu:
sudo apt update && sudo apt upgrade -y
Install Docker:
curl -fsSL https://get.docker.com | sh
Cek udah kepasang belum:
docker --version
docker compose version
2. Bikin Direktori 3X-UI
Bikin folder kerja buat nyimpen config dan database-nya:
mkdir -p ~/3x-ui
cd ~/3x-ui
mkdir -p db cert
Struktur foldernya bakal jadi kayak gini:
3x-ui/
├── docker-compose.yml
├── db/
└── cert/
Folder db buat nyimpen database dan config 3X-UI, sedangkan cert buat nyimpen sertifikat SSL kalau nanti kamu pakai.
3. Bikin File Docker Compose
nano docker-compose.yml
Isi kayak gini:
services:
3xui:
image: ghcr.io/mhsanaei/3x-ui:latest
container_name: 3xui
restart: unless-stopped
cap_add:
- NET_ADMIN
- NET_RAW
ports:
# Port Panel
- "2053:2053"
# Port VPN TCP
- "80:80"
- "443:443"
- "8443:8443"
# Port VPN UDP
- "443:443/udp"
- "51820:51820/udp"
environment:
XRAY_VMESS_AEAD_FORCED: "false"
XUI_ENABLE_FAIL2BAN: "true"
volumes:
- ./db:/etc/x-ui
- ./cert:/root/cert
tty: true
Simpan filenya dengan CTRL + X, terus Y, lalu ENTER.
4. Jalankan 3X-UI
Download image dan jalanin container-nya:
docker compose up -d

Cek apakah containernya jalan:
docker ps
Contoh hasilnya:
CONTAINER ID IMAGE STATUS
xxxxxxx ghcr.io/mhsanaei/3x-ui:latest Up
5. Lihat Info Login
Cek log container-nya:
docker logs 3xui
Biasanya bakal muncul info login default:
Username: admin
Password: admin
Penting: langsung ganti username/password default ini begitu berhasil login pertama kali, jangan dibiarin default karena itu celah keamanan yang gampang banget ditebak orang.
Kalau info login gak muncul di log, masuk manual ke dalam container:
docker exec -it 3xui x-ui

Jalanin x-ui, terus pilih menu Reset Username & Password.
6. Buka Panel 3X-UI
Akses panelnya lewat browser:
http://IP-VPS:2053
Contoh:
http://140.245.108.12:2053
Login pakai akun admin yang tadi kamu buat/reset.
7. Buka Firewall Ubuntu
Kalau pakai UFW:
sudo ufw allow 2053/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8443/tcp
sudo ufw allow 443/udp
sudo ufw allow 51820/udp
sudo ufw reload
Kalau VPS kamu gak pakai UFW, langkah ini bisa dilewatin.
8. Buka Port di Oracle Cloud (Kalau Pakai OCI)
Buat kamu yang pakai Oracle Cloud, buka port di VPS aja gak cukup. Kamu juga harus buka port di Security List atau Network Security Group (NSG) level cloud-nya.
Tambahin rule TCP buat port: 2053, 80, 443, 8443
Dan rule UDP buat port: 443, 51820
Setelah rule ditambahin, tunggu beberapa menit sampai perubahannya kepake.
9. Bikin Inbound VPN
Masuk ke menu Inbounds → Add Inbound. Ini beberapa protokol yang direkomendasikan tergantung kebutuhan kamu:
VLESS Reality
- Gak butuh domain
- Susah diblokir
- Performa tinggi
Trojan
- Cocok buat iPhone
- Didukung hampir semua aplikasi VPN client
WireGuard
- Sangat cepat
- Cocok buat gaming dan streaming
Kendala yang Sering Muncul
- Panel gak bisa diakses meski container jalan
Cek lagi firewall UFW dan security list cloud provider, pastiin port 2053 beneran kebuka dari kedua sisi. - Client gak bisa connect walau inbound udah dibuat
Cek lagi apakah port yang dipakai inbound itu sama dengan yang udah dibuka di firewall, dan pastiin client config (link/QR) udah sesuai server terbaru. - Container restart terus (crash loop)
Cek log dengandocker logs 3xui, biasanya ada konflik port atau folderdb/certyang permission-nya salah. - Lupa password admin setelah reset manual pun gagal
Cara paling aman: stop container, hapus isi folderdb, lalu jalanin ulangdocker compose up -d(ini bakal reset semua config ke default, jadi semua inbound yang udah dibuat ikut hilang).
Penutup
Dengan Docker Compose, install 3X-UI jadi lebih rapi dan aman. Semua config kesimpen persisten di volume Docker, jadi proses update atau migrasi server bisa dilakuin tanpa kehilangan data. Buat pemakaian sehari-hari, VLESS Reality biasanya jadi pilihan paling praktis karena gak butuh domain dan tingkat keberhasilan koneksinya tinggi. Kalau ada yang error atau nyangkut, drop komentar aja bro.























