SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-16

Cara Menjalankan UniFi Controller di VPS

Pelajari kebutuhan RAM, Docker dengan MongoDB, adopsi Layer 3 memakai set-inform, serta port UniFi yang harus tetap privat saat dijalankan di VPS.

Fungsi sebenarnya UniFi controller pada VPS

UniFi controller pada VPS adalah satu server manajemen yang tetap dapat diakses saat site yang dikelolanya mengalami gangguan. Perangkat lunaknya adalah UniFi Network Application milik Ubiquiti, yaitu program Java dengan database MongoDB di belakangnya. Perangkat lunak ini mengonfigurasi access point dan switch, menyimpan statistiknya, serta menyediakan antarmuka admin. Perangkat lunak ini tidak membawa trafik klien.

Poin terakhir tersebut menentukan lokasi controller. Jika controller ditempatkan pada mesin di dalam kantor yang dikelolanya, Anda akan kehilangan jaringan dan alat untuk memeriksa jaringan itu pada saat yang sama. Jika controller ditempatkan pada VPS dengan alamat publik yang stabil, controller tetap berjalan, terus mengumpulkan data, dan dapat mengadopsi perangkat di beberapa site dari satu tempat. Controller memerlukan uptime, bukan sumber daya komputasi yang besar.

Saat controller offline, access point dan switch yang sudah diadopsi tetap meneruskan trafik menggunakan konfigurasi yang telah dikirimkan kepada perangkat tersebut. Anda kehilangan dashboard dan statistik, serta fitur apa pun yang memerlukan controller aktif, seperti login guest portal atau RADIUS (remote authentication dial-in user service) jika controller berfungsi sebagai server RADIUS Anda. Klien tetap terhubung.

Berapa banyak RAM yang dibutuhkan controller UniFi?

Dua GB adalah batas minimum dan 4 GB adalah kapasitas yang sebaiknya dipilih. Ada dua pengguna memori dalam satu server, yaitu Java dan MongoDB. Keduanya mengatur kebutuhan memorinya secara independen.

Heap Java dibatasi oleh MEM_LIMIT, yang secara default diatur ke 1024 MB oleh image container. MongoDB adalah pengguna memori lainnya. Engine penyimpanan WiredTiger mengatur cache sebesar setengah RAM di atas 1 GB, atau 256 MB, mana pun yang lebih besar. Pada VPS 2 GB, kebutuhan tersebut kira-kira terdiri atas cache 512 MB, heap 1 GB, memori non-heap milik JVM, serta sistem operasi. Konfigurasi ini masih cukup hingga server mengalami beban tinggi. Setelah itu, kernel out-of-memory killer akan menghentikan salah satu dari kedua proses tersebut. Setelah restart yang tidak dapat dijelaskan, jalankan dmesg -T | grep -i 'killed process' untuk mengetahui apakah itu penyebabnya. Tambahkan swap file jika kapasitas yang tersedia hanya 2 GB.

CPU dan disk tidak membutuhkan kapasitas besar. Satu atau dua vCPU cukup untuk beberapa lusin perangkat. Mulailah dengan disk 20 GB dan pantau penggunaannya, karena database bertambah sesuai jumlah client yang terhubung dan lamanya statistik disimpan. Controller saja menyisakan sebagian besar kapasitas server 4 GB, sehingga jika Anda berencana menjalankan aplikasi lain pada server yang sama, tentukan kapasitas berdasarkan aplikasi tersebut terlebih dahulu. PhotoPrism dan Immich memiliki kebutuhan minimum RAM yang sangat berbeda dan keduanya membutuhkan lebih banyak RAM daripada controller.

Ada satu fitur CPU yang penting dan mudah terlewatkan pada paket murah:

grep -m1 -o avx /proc/cpuinfo

MongoDB 5.0 dan versi setelahnya membutuhkan AVX (advanced vector extensions) pada perangkat keras x86_64. Jika perintah tersebut tidak menampilkan apa pun, mongod akan berhenti saat startup dan container akan restart dalam loop. Penyebabnya adalah binary menjalankan instruksi yang tidak tersedia pada CPU. Host dengan Intel Celeron dan Pentium generasi lama sering menjadi penyebabnya. Hypervisor yang menyembunyikan flag CPU dari guest juga dapat menyebabkan masalah ini. MongoDB 4.4 tidak membutuhkan AVX dan merupakan satu-satunya fallback, tetapi versi database tersebut tidak lagi menerima patch dari upstream. Beralih ke host dengan CPU yang lebih baru adalah pilihan yang lebih baik. Pada VPS ARM, masalah ini tidak muncul karena AVX adalah instruction set x86. Kedua image juga menyediakan build arm64. Jika Anda sedang memilih di antara keduanya, perbedaan antara paket VPS ARM dan x86 lebih luas daripada sekadar harga.

Instal UniFi Network Application dengan Docker Compose

Docker adalah pilihan dengan kejutan paling sedikit karena Anda dapat menetapkan versi MongoDB yang didukung aplikasi, alih-alih menggunakan versi yang disertakan oleh distribusi Anda. Jika Docker belum tersedia di server, instal Docker pada VPS terlebih dahulu.

mkdir -p ~/unifi/config ~/unifi/db
cd ~/unifi

MongoDB memerlukan user sebelum aplikasi dapat login. Image MongoDB resmi menjalankan setiap script yang ditemukan di /docker-entrypoint-initdb.d saat pertama kali dijalankan. Simpan script ini sebagai ~/unifi/init-mongo.sh:

#!/bin/bash
if which mongosh > /dev/null 2>&1; then
  mongo_init_bin='mongosh'
else
  mongo_init_bin='mongo'
fi
"${mongo_init_bin}" <<EOF
use ${MONGO_AUTHSOURCE}
db.auth("${MONGO_INITDB_ROOT_USERNAME}", "${MONGO_INITDB_ROOT_PASSWORD}")
db.createUser({
  user: "${MONGO_USER}",
  pwd: "${MONGO_PASS}",
  roles: [
    "clusterMonitor",
    { db: "${MONGO_DBNAME}", role: "dbOwner" },
    { db: "${MONGO_DBNAME}_stat", role: "dbOwner" },
    { db: "${MONGO_DBNAME}_audit", role: "dbOwner" },
    { db: "${MONGO_DBNAME}_restore", role: "dbOwner" }
  ]
})
EOF

Script tersebut hanya berjalan saat direktori database masih kosong. Jika stack dijalankan sekali dengan password yang salah, user dibuat dengan password tersebut. Mengedit file compose setelahnya tidak mengubah apa pun karena script tidak pernah dijalankan lagi. Gejalanya adalah container aplikasi mencatat kegagalan autentikasi MongoDB, sedangkan antarmuka web tidak pernah muncul. Pada instalasi baru, hentikan stack, hapus ~/unifi/db, lalu jalankan kembali.

Selanjutnya, tulis ~/unifi/compose.yaml:

services:
  unifi-db:
    image: docker.io/mongo:8.0
    container_name: unifi-db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=change-this-root-password
      - MONGO_USER=unifi
      - MONGO_PASS=change-this-unifi-password
      - MONGO_DBNAME=unifi
      - MONGO_AUTHSOURCE=admin
    volumes:
      - ./db:/data/db
      - ./init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh:ro
    restart: unless-stopped

  unifi-network-application:
    image: lscr.io/linuxserver/unifi-network-application:10.5.67-ls141
    container_name: unifi-network-application
    depends_on:
      - unifi-db
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - MONGO_USER=unifi
      - MONGO_PASS=change-this-unifi-password
      - MONGO_HOST=unifi-db
      - MONGO_PORT=27017
      - MONGO_DBNAME=unifi
      - MONGO_AUTHSOURCE=admin
      - MEM_LIMIT=1024
      - MEM_STARTUP=1024
    volumes:
      - ./config:/config
    ports:
      - "8080:8080"
      - "3478:3478/udp"
      - "127.0.0.1:8443:8443"
    restart: unless-stopped

Kedua tag image sengaja ditetapkan versinya. 10.5.67-ls141 adalah rilis aplikasi saat ini pada August 2026, jadi periksa daftar rilis image dan tetapkan versi yang sedang berlaku saat Anda melakukan instalasi. Tag database lebih penting. MongoDB tidak memutakhirkan file datanya secara otomatis antarversi mayor. Karena itu, mongo:latest suatu saat akan menarik versi mayor baru, menolak membuka file yang ditemukannya, lalu terus restart dalam loop. Tetapkan versi mayor dan lakukan pemutakhiran secara sengaja. UniFi Network 8.1 dan versi lebih baru mendukung MongoDB 3.6 hingga 7.0, sedangkan 9.0 menambahkan dukungan untuk MongoDB 8.0.

PUID dan PGID harus cocok dengan user yang benar-benar ada pada host. Jika tidak, file di bawah ./config akan dimiliki oleh identitas yang tidak dapat menulisnya. Jalankan id untuk mendapatkan nilai Anda. cara kerja PUID dan PGID pada image container menjelaskan bentuk masalah akibat ketidaksesuaian.

Jalankan dan pantau:

docker compose up -d
docker compose ps
docker compose logs -f unifi-network-application

docker compose ps harus menampilkan kedua container dengan status running. unifi-db yang tetap berada dalam restarting disebabkan oleh masalah AVX di atas atau masalah permission pada ./db. Setelah log stabil, periksa kedua listener:

curl -sk -o /dev/null -w '%{http_code}\n' https://127.0.0.1:8443/
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/inform

Kode status HTTP apa pun berarti listener sudah terikat dan merespons. Connection refused berarti aplikasi masih dalam proses start. Pada VPS kecil, proses ini memerlukan satu atau dua menit saat pertama kali dijalankan. Status tersebut juga dapat berarti aplikasi tidak pernah berhasil start.

Akses antarmuka admin tanpa mengeksposnya

Port 8443 dipublikasikan pada 127.0.0.1 dalam file di atas, sehingga tidak ada koneksi dari luar VPS yang dapat mencapai antarmuka admin. Teruskan port tersebut melalui SSH untuk menjalankan wizard penyiapan:

ssh -L 8443:127.0.0.1:8443 you@vps.example.com

Biarkan sesi tersebut tetap terbuka, lalu buka https://127.0.0.1:8443 di browser. Sertifikat tersebut ditandatangani sendiri, sehingga browser menampilkan peringatan satu kali. Buat akun administrator, beri nama situs, lalu lewati adopsi perangkat untuk saat ini.

Tunnel SSH cukup untuk satu administrator. Untuk sebuah tim, berikan VPS alamat privat dan bind antarmuka ke alamat tersebut. VPN WireGuard pada VPS milik Anda sendiri dan router subnet Tailscale sama-sama memberikan alamat yang hanya dapat dirutekan oleh anggota tim Anda. Ubah port yang dipublikasikan menjadi 10.8.0.1:8443:8443 untuk WireGuard, atau gunakan alamat yang diberikan Tailscale. Ada satu hal yang perlu diperhatikan: Docker tidak dapat memublikasikan port pada alamat yang belum tersedia, sehingga antarmuka tunnel harus aktif sebelum container dimulai. Jika tidak, container gagal dengan bind error.

Mengapa perangkat UniFi jarak jauh tidak dapat diadopsi

Secara default, perangkat UniFi menemukan controllernya dengan melakukan broadcast di jaringan lokal melalui UDP port 10001. Broadcast tidak keluar dari LAN. Karena itu, perangkat di kantor kota lain tidak akan pernah menemukan controller pada VPS. Inilah proses adopsi Layer 3, dan bagian ini paling sering menyebabkan masalah. Perangkatnya baik dan controllernya juga baik. Tidak ada informasi yang memberi tahu perangkat ke mana harus mencari.

Pertama, beri tahu controller alamat yang harus dibagikan. Di Settings controller, pada bagian System, terdapat pengaturan inform host dengan opsi override. Atur nilainya ke hostname publik atau IP VPS Anda. Tanpa pengaturan ini, controller mengiklankan alamat yang terlihat pada interfacenya sendiri. Di dalam jaringan Docker bridge, alamat tersebut berupa alamat privat seperti 172.18.0.3. Perangkat menerima alamat itu, tidak dapat melakukan routing ke alamat tersebut, lalu kembali mencari.

Selanjutnya, arahkan perangkat ke alamat tersebut. Gunakan SSH untuk terhubung ke perangkat melalui LAN jarak jauh. Perangkat dengan konfigurasi default pabrik menerima username ubnt dan password ubnt:

ssh ubnt@192.168.1.20
set-inform http://vps.example.com:8080/inform

Firmware perangkat yang lebih baru menampilkan menu, bukan shell. Jalankan perintah yang sama sebagai satu perintah:

ssh ubnt@192.168.1.20 mca-cli-op set-inform http://vps.example.com:8080/inform

Perangkat sekarang muncul di controller dan siap diadopsi. Klik Adopt. Statusnya berubah menjadi Adopting. Bagian yang sering mengejutkan adalah: biasanya Anda harus menjalankan set-inform sekali lagi. Perangkat melakukan restart untuk masuk ke proses provisioning, lalu kembali menggunakan URL inform yang tersimpan dalam konfigurasinya sendiri. Controller belum selesai mengganti URL tersebut. Jalankan kembali perintah itu saat status masih Adopting untuk menyelesaikan pengalihan. Ketik info pada perangkat untuk melihat URL inform dan status yang saat ini tersimpan.

Jika perangkat sebelumnya telah diadopsi oleh controller lain, set-inform saja tidak akan menyelesaikan proses karena perangkat masih menyimpan kredensial controller tersebut. Kembalikan perangkat ke konfigurasi default pabrik terlebih dahulu, menggunakan tombol reset atau set-default melalui SSH dengan kredensial lama.

Untuk lebih dari beberapa perangkat, gunakan DHCP. DHCP (dynamic host configuration protocol) option 43 membawa nilai khusus vendor, dan perangkat UniFi membaca URL inform dari suboption 2. Buat string heksadesimal pada komputer Linux mana pun:

URL="http://vps.example.com:8080/inform"
HEX=$(printf '%s' "$URL" | od -An -tx1 | tr -d ' \n')
printf '02%02x%s\n' "${#URL}" "$HEX"

Untuk http://192.168.3.10:8080/inform, yaitu string sepanjang 31 byte, perintah tersebut mencetak 021f687474703a2f2f3139322e3136382e332e31303a383038302f696e666f726d. Tempelkan hasilnya ke kolom DHCP option 43 pada router sebagai nilai heksadesimal. Setiap perangkat yang melakukan boot pada jaringan tersebut akan mempelajari alamat controller dari lease-nya, tanpa SSH. Panduan lama menggunakan suboption 1, yaitu 0104 diikuti empat byte alamat IPv4 dalam format heksadesimal. Perangkat masih menerima format tersebut.

Ada cara ketiga jika Anda menjalankan DNS di lokasi tersebut. Perangkat UniFi mencoba me-resolve hostname unifi saat boot. Karena itu, A record untuk unifi yang mengarah ke alamat VPS Anda dapat mengadopsi perangkat tanpa konfigurasi pada setiap perangkat. Cara ini hanya membantu jika Anda mengendalikan resolver yang benar-benar digunakan perangkat.

Port UniFi yang perlu dibuka dan yang harus tetap privat

Hanya dua port yang perlu dapat dijangkau dari situs jarak jauh.

  • TCP 8080 adalah saluran inform, dan setiap perangkat yang telah diadopsi terhubung ke saluran ini. Payload di dalamnya dienkripsi dengan AES menggunakan key yang diberikan controller kepada perangkat saat adopsi. Karena itu, HTTP biasa merupakan pengaturan normal di sini.
  • UDP 3478 adalah STUN (session traversal utilities for NAT). Perangkat menggunakannya untuk mempertahankan jalur kembali ke controller.

Semua port lainnya tetap ditutup pada VPS.

  • TCP 8443 adalah antarmuka admin. Port ini tidak boleh tersedia untuk publik. Port ini menyimpan konfigurasi setiap situs yang dikelola controller, yang dilindungi oleh satu password.
  • UDP 10001 dan UDP 1900 digunakan untuk discovery melalui broadcast. Broadcast tidak melewati Internet, sehingga membukanya tidak memberikan manfaat.
  • TCP 8880 dan TCP 8843 digunakan untuk redirect guest portal. Buka port tersebut hanya jika Anda menjalankan guest portal.
  • TCP 6789 digunakan untuk mobile speed test, sedangkan UDP 5514 digunakan untuk remote syslog. Tambahkan port tersebut jika Anda menggunakannya.
  • TCP 27117 adalah MongoDB. Pada compose file di atas, database sama sekali tidak memublikasikan port, sehingga hanya tersedia pada jaringan internal Docker. Pertahankan konfigurasi tersebut.

Jika situs Anda memiliki alamat publik statis, izinkan hanya alamat tersebut:

sudo ufw allow OpenSSH
sudo ufw allow proto tcp from 203.0.113.4 to any port 8080
sudo ufw allow proto udp from 203.0.113.4 to any port 3478
sudo ufw enable
sudo ufw status verbose

dasar-dasar ufw untuk firewall VPS menjelaskan pengaturan default deny yang diasumsikan oleh aturan tersebut.

Ada jebakan yang selalu membuat orang keliru. Port yang dipublikasikan Docker dapat melewati ufw. Memublikasikan port menulis aturan NAT dan forwarding langsung ke iptables. Trafik tersebut difilter dalam chain milik Docker sendiri, bukan dalam chain INPUT yang dikelola ufw. Karena itu, ufw deny 8443 terlihat benar dalam ufw status, tetapi port tetap terbuka untuk publik. Uji dari mesin lain, jangan dari VPS itu sendiri:

nc -vz vps.example.com 8443

Connection refusal atau timeout adalah hasil yang diharapkan. Jika koneksi berhasil, port tersebut tersedia untuk publik, apa pun yang ditunjukkan ufw. Perbaikan yang andal adalah cara yang sudah digunakan dalam compose file: publikasikan port pada 127.0.0.1 atau pada alamat tunnel, sehingga Docker tidak pernah melakukan binding ke antarmuka publik. Aturan dalam chain DOCKER-USER juga dapat digunakan, tetapi binding lebih sederhana dan kesalahan pengurutan aturan tidak dapat membatalkannya.

Bagaimana dengan installer milik Ubiquiti?

Ubiquiti menyediakan paket Debian untuk Network Application. Paket ini berfungsi, tetapi pada Ubuntu saat ini muncul persoalan MongoDB yang tidak lagi dijawab oleh distribusi tersebut: Ubuntu 22.04 dan 24.04 tidak menyediakan paket server MongoDB, sehingga Anda harus menambahkan repositori milik MongoDB dan mencocokkan versinya secara manual. Container di atas melakukan pencocokan tersebut dalam satu tag yang dikunci versinya. Karena itu, tutorial ini menggunakan pendekatan tersebut.

Produk self-hosted Ubiquiti yang lebih baru adalah UniFi OS Server. Produk ini menjalankan aplikasi UniFi dalam container Podman dan menyediakan UniFi OS yang sama seperti pada console perangkat keras mereka. Per Agustus 2026, produk ini memerlukan Ubuntu 22.04 atau 24.04 x86_64, Podman 4.3.1 atau yang lebih baru dengan slirp4netns, serta minimal 2 vCPU dan RAM 4 GB. Spesifikasi yang direkomendasikan adalah 4 vCPU dan RAM 8 GB. Installer tersedia melalui akun Ubiquiti gratis pada halaman unduhan mereka, sehingga tidak ada URL satu baris yang stabil untuk ditempelkan ke panduan. Installer ini membuat system user bernama uosserver dan menjalankan container sebagai user tersebut. Pilih opsi ini jika Anda menginginkan packaging resmi dari vendor. Pilih container stack jika Anda ingin mengunci versi sendiri dan tetap menyediakan server untuk pekerjaan lain.

Lokasi backup UniFi dan cara menyalinnya keluar dari server

Controller menulis backup-nya sendiri sesuai jadwal yang Anda tetapkan di Settings, pada bagian backup, termasuk jumlah backup yang ingin disimpan. File tersebut berada di /config/data/backup/autobackup di dalam container, yang dipetakan ke ~/unifi/config/data/backup/autobackup pada host, dengan nama seperti autobackup_10.5.67_20260813_1200_1755086400004.unf.

Pastikan file tersebut benar-benar muncul:

ls -l ~/unifi/config/data/backup/autobackup

Direktori yang tetap kosong sehari setelah jadwal ditetapkan merupakan kegagalan yang umum pada instalasi container baru. Aplikasi mengharapkan direktori autobackup sudah ada dan tidak membuatnya sendiri, sehingga tugas terjadwal tidak menulis apa pun tanpa menampilkan error. Buat direktori tersebut secara manual dengan user yang sama seperti user yang digunakan container, lalu tunggu eksekusi berikutnya:

mkdir -p ~/unifi/config/data/backup/autobackup
docker compose restart unifi-network-application

File .unf berisi konfigurasi site dan akun administrator, sehingga perlakukan file tersebut seperti key. Salin file ke mesin yang Anda kontrol dan simpan secara privat:

rsync -av you@vps.example.com:~/unifi/config/data/backup/autobackup/ ~/unifi-backups/

Pemulihan dilakukan dalam satu langkah. Halaman pertama setup wizard pada instalasi baru menawarkan pemulihan dari file backup, dan controller yang sedang berjalan dapat memulihkan backup dari halaman pengaturan yang sama. Pulihkan ke versi yang sama atau versi yang lebih baru. Backup yang dibuat oleh aplikasi dengan versi lebih baru daripada versi tujuan pemulihan akan ditolak. Karena itu, catat nomor versi bersama file tersebut.

Hal yang dapat rusak akibat upgrade controller

Buat backup manual dan unduh backup tersebut sebelum setiap upgrade. Kemudian:

docker compose pull
docker compose up -d
docker compose logs -f unifi-network-application

Database adalah komponen pertama yang biasanya bermasalah. Mengubah tag mongo ke versi mayor baru dalam edit yang sama dengan aplikasi merupakan cara tercepat untuk membuat controller tidak dapat start, karena MongoDB tidak akan membuka file data dari versi mayor yang berbeda tanpa upgrade bertahap. Upgrade aplikasi secara terpisah. Pindahkan MongoDB secara terpisah, satu versi mayor setiap kali, dan siapkan backup baru.

Memori adalah hal berikutnya yang perlu diperhatikan. Rilis yang lebih besar membutuhkan heap yang lebih besar. Jika aplikasi berhasil start, berjalan selama beberapa menit, lalu berhenti, naikkan MEM_LIMIT dan MEM_STARTUP ke 1536 atau 2048, lalu restart. dmesg -T | grep -i 'killed process' pada host mengonfirmasi apakah kernel yang menghentikan proses tersebut.

Firmware perangkat adalah risiko yang sering dilupakan. Setelah controller meng-upgrade dirinya sendiri, controller akan menawarkan upgrade firmware untuk perangkat yang sudah diadopsi. Jangan terima upgrade tersebut dalam sesi yang sama. Jika upgrade perangkat dan upgrade controller berlangsung bersamaan lalu koneksi di antara keduanya terputus, perangkat dapat berada dalam kondisi provisioning sebagian, dan Anda kembali harus menggunakan set-inform melalui SSH pada perangkat keras di gedung lain.

Jendela upgrade itu sendiri tidak seburuk yang terdengar. Perangkat tetap meneruskan trafik saat controller restart, sehingga pengguna tidak melihat gangguan. Yang berhenti adalah portal tamu dan RADIUS jika keduanya disediakan oleh controller. Karena itu, pilih waktu saat keduanya tidak digunakan. Controller yang berhenti tanpa pesan pada pukul 3 a.m. tetap perlu diketahui, jadi arahkan monitor status Uptime Kuma ke port 8080 dan biarkan monitor tersebut memberi tahu Anda.

Alternatif yang jujur: console hosted Ubiquiti

Ubiquiti menawarkan fungsi yang sama sebagai layanan. Per Agustus 2026, Official UniFi Cloud Console mulai dari $29 per bulan dan dapat mengelola hingga 500 perangkat UniFi. Ubiquiti menangani pembaruan dan pencadangan. Aplikasi self-hosted yang baru saja Anda instal gratis dan tidak memiliki biaya langganan.

Pilih console hosted jika Anda mengelola satu situs dan lebih memilih membayar daripada melakukan patch. Pilih VPS jika Anda mengelola beberapa situs, atau jika Anda ingin controller berada di dalam jaringan yang Anda kendalikan dan berbagi server dengan layanan lain yang Anda jalankan. Perbedaan biaya pada skala kecil memang nyata, tetapi itu bukan satu-satunya faktor yang perlu dipertimbangkan: uptime console hosted bergantung pada pihak lain, sedangkan VPS adalah tanggung jawab Anda, termasuk saat disk penuh pada malam hari. Jika server tersebut akan tetap memberikan manfaat dalam kedua pilihan, layanan lain yang dapat dijalankan pada VPS adalah daftar yang perlu dibaca berikutnya.

FAQ

Mengapa perangkat UniFi saya tidak dapat diadopsi oleh controller pada VPS?

Perangkat menemukan controller dengan melakukan broadcast pada port UDP 10001. Broadcast tidak pernah keluar dari jaringan lokal, sehingga perangkat di lokasi jarak jauh tidak dapat menemukan controller di Internet publik. Tetapkan override host inform di pengaturan sistem controller ke hostname VPS Anda, lalu arahkan perangkat ke hostname tersebut dengan ssh ubnt@<device-ip>, kemudian lanjutkan dengan set-inform http://vps.example.com:8080/inform. Jika perangkat berada dalam status Adopting, jalankan kembali set-inform saat perangkat masih dalam status tersebut. Jika sebelumnya perangkat diadopsi oleh controller lain, reset perangkat ke setelan pabrik terlebih dahulu karena perangkat masih menyimpan kredensial controller lama.

Berapa banyak RAM yang dibutuhkan controller UniFi yang di-host sendiri?

Dua GB adalah batas minimum yang masih dapat digunakan, sedangkan 4 GB lebih nyaman. Aplikasi ini menggunakan Java dan MongoDB. Keduanya mengalokasikan memori secara terpisah. Secara default, container image membatasi heap Java hingga 1024 MB, sedangkan cache WiredTiger MongoDB menggunakan setengah RAM di atas 1 GB. Pada x86_64, pastikan CPU juga menyediakan AVX dengan grep -m1 -o avx /proc/cpuinfo. MongoDB 5.0 dan versi berikutnya tidak akan berjalan tanpa AVX, sehingga container database akan terus-menerus melakukan restart.

Apakah saya harus mengekspos port 8443 ke Internet?

Tidak. Port 8443 adalah antarmuka administrasi dan menyimpan konfigurasi setiap site yang dikelola controller. Publikasikan port tersebut pada 127.0.0.1 dan akses dengan ssh -L 8443:127.0.0.1:8443 you@vps.example.com, atau bind ke alamat WireGuard atau Tailscale. Hanya TCP 8080 dan UDP 3478 yang perlu dapat dijangkau dari site Anda. Jika alamat publik site bersifat statis, batasi akses ke alamat tersebut. Ingat bahwa port yang dipublikasikan Docker tidak difilter oleh ufw. Karena itu, lakukan pengujian dari mesin eksternal, bukan hanya mengandalkan ufw status.

Apakah jaringan saya berhenti berfungsi jika controller VPS tidak aktif?

Tidak. Access point dan switch yang sudah diadopsi tetap meneruskan trafik menggunakan konfigurasi yang sebelumnya dikirimkan controller. Klien tetap terhubung dan Wi-Fi tetap berfungsi. Yang berhenti adalah fungsi manajemen. Anda kehilangan dashboard dan pengumpulan statistik, serta fitur aktif yang disediakan controller, seperti autentikasi guest portal atau RADIUS jika controller berperan sebagai server RADIUS.

Di mana controller UniFi menyimpan backup otomatisnya?

Pada container image yang digunakan di sini, backup disimpan di /config/data/backup/autobackup. Path tersebut dipetakan ke path data Anda ditambah data/backup/autobackup pada host, sebagai file .unf dengan nama berdasarkan versi dan timestamp. Pada beberapa instalasi baru, direktori autobackup tidak ada. Dalam kondisi tersebut, backup terjadwal tidak menulis apa pun tanpa melaporkan error. Karena itu, tampilkan isi direktori tersebut sehari setelah Anda menetapkan jadwal, lalu buat direktori itu sendiri jika masih kosong. Salin file tersebut keluar dari VPS karena .unf berisi konfigurasi site dan akun administrator.

#unifi#ubiquiti#network-management#docker#self-hosting