Setup dengan Docker
Cara termudah untuk men-deploy NxGate adalah menggunakan Docker Compose. Setup ini menjalankan MySQL, backend API, frontend, dan Caddy (reverse proxy dengan SSL otomatis) dalam satu perintah.
1. Persiapan Environment
1# Salin template environment2cp .env.docker.example .env34# Edit dengan text editor favorit Anda5nano .env
Pastikan BACKEND_FQDN dan FRONTEND_FQDN cocok persis dengan subdomain yang sudah diarahkan ke IP server Anda. Caddy akan otomatis mengurus SSL certificate via Let's Encrypt.
2. Buat Docker Network
Caddy membutuhkan network eksternal bernama caddy. Perintah ini hanya perlu dijalankan sekali:
1# Buat network caddy (hanya sekali, saat pertama install)2docker network create caddy
3. Build dan Jalankan
1# Build image dan jalankan semua service di background2docker compose up -d --build34# Pantau log (Ctrl+C untuk keluar dari log, service tetap berjalan)5docker compose logs -f67# Lihat status semua service8docker compose ps
API service menunggu 30 detik sebelum start untuk memastikan MySQL sudah ready. Ini adalah perilaku yang disengaja via sleep 30 di command startup.
Akses Dashboard
Setelah semua service berjalan, buka browser ke https://yourdomain.com dan daftar akun pertama. Akun pertama yang dibuat secara otomatis memiliki akses penuh ke semua fitur.
Setelah membuat akun pertama (admin), disarankan untuk mengatur PUBLIC_DISABLE_SIGN_UP=true di .env lalu restart service web untuk menonaktifkan pendaftaran publik.
Alternatif: Nginx sebagai Reverse Proxy
Jika sudah menggunakan Nginx di server, Anda bisa skip service Caddy dan expose port API dan frontend langsung ke localhost:
1# Jika menggunakan Nginx sebagai reverse proxy eksternal,2# expose port di docker-compose.yml dengan menambahkan:3services:4 api:5 ports:6 - "127.0.0.1:3000:3000" # API backend7 web:8 ports:9 - "127.0.0.1:5000:5000" # Frontend
Kemudian konfigurasi Nginx seperti berikut:
1# /etc/nginx/sites-available/nxgate-api2server {3 listen 443 ssl http2;4 server_name api.nxgate.example.com;56 ssl_certificate /etc/letsencrypt/live/api.nxgate.example.com/fullchain.pem;7 ssl_certificate_key /etc/letsencrypt/live/api.nxgate.example.com/privkey.pem;89 location / {10 proxy_pass http://127.0.0.1:3000;11 proxy_http_version 1.1;12 proxy_set_header Host $host;13 proxy_set_header X-Real-IP $remote_addr;14 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;15 proxy_set_header X-Forwarded-Proto $scheme;16 }17}1819# /etc/nginx/sites-available/nxgate-frontend20server {21 listen 443 ssl http2;22 server_name nxgate.example.com;2324 ssl_certificate /etc/letsencrypt/live/nxgate.example.com/fullchain.pem;25 ssl_certificate_key /etc/letsencrypt/live/nxgate.example.com/privkey.pem;2627 location / {28 proxy_pass http://127.0.0.1:5000;29 proxy_http_version 1.1;30 proxy_set_header Host $host;31 proxy_set_header X-Real-IP $remote_addr;32 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;33 proxy_set_header X-Forwarded-Proto $scheme;34 }35}
Troubleshooting
1# Cek log service tertentu2docker compose logs api3docker compose logs db45# Restart service tertentu6docker compose restart api78# Masuk ke container (untuk debugging)9docker compose exec api sh1011# Hard reset (WARNING: menghapus semua data)12docker compose down -v13docker compose up -d --build