Setup with Docker

Cara tercepat untuk men-deploy NxGate self-hosted adalah menggunakan Docker Compose. Panduan ini menjelaskan langkah-langkah dari nol sampai aplikasi siap diakses dari publik dengan reverse proxy.

1. Prasyarat

  • Server Linux (Ubuntu 22.04+ direkomendasikan)
  • Docker Engine 24+ dan Docker Compose v2
  • Domain yang sudah diarahkan ke server
  • Port 80 & 443 terbuka untuk reverse proxy

2. docker-compose.yml

docker-compose.yml
1# docker-compose.yml
2version: "3.9"
3
4services:
5 nxgate:
6 image: noxlydev/nxgate:latest
7 container_name: nxgate
8 restart: unless-stopped
9 ports:
10 - "3000:3000"
11 environment:
12 DATABASE_URL: postgres://nxgate:secret@db:5432/nxgate
13 JWT_SECRET: change-me-please
14 SMTP_HOST: smtp.gmail.com
15 SMTP_USER: noreply@yourdomain.com
16 SMTP_PASSWORD: ${SMTP_PASSWORD}
17 depends_on:
18 - db
19
20 db:
21 image: postgres:16-alpine
22 container_name: nxgate-db
23 restart: unless-stopped
24 environment:
25 POSTGRES_USER: nxgate
26 POSTGRES_PASSWORD: secret
27 POSTGRES_DB: nxgate
28 volumes:
29 - nxgate_pgdata:/var/lib/postgresql/data
30
31volumes:
32 nxgate_pgdata:

3. Jalankan Container

terminal
# Pull image dan jalankan
docker compose pull
docker compose up -d
# Cek status
docker compose ps
# Lihat log
docker compose logs -f nxgate

4. Migrasi Database & Admin

terminal
# Jalankan migrasi database (sekali saat install pertama)
docker compose exec nxgate npm run migrate
# Buat akun admin pertama
docker compose exec nxgate npm run create:admin

5. Reverse Proxy (Nginx)

nxgate.conf
1# /etc/nginx/sites-available/nxgate
2server {
3 listen 443 ssl http2;
4 server_name license.yourdomain.com;
5
6 ssl_certificate /etc/letsencrypt/live/license.yourdomain.com/fullchain.pem;
7 ssl_certificate_key /etc/letsencrypt/live/license.yourdomain.com/privkey.pem;
8
9 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}

Backup Otomatis

Tambahkan cron job harian yang menjalankan docker compose exec db pg_dump ke object storage agar data lisensi Anda selalu aman.