Lewati ke konten

Instalasi gateway

Sebelum mulai, pasang Docker dan plugin Compose dari repositori resmi Docker (panduan Debian). Paket docker.io bawaan Debian 12 tidak menyertakan docker compose versi 2 yang dipakai di sini.

Saat memasang Debian, biarkan port uplink memakai DHCP dan jangan mengonfigurasi port LAN rak; port itu diatur oleh setup-host.sh.

  1. Edit host/gateway.env

    Variabel Arti
    RACK_IF interface ke PoE switch rak (cek dengan ip -br link; di Debian biasanya enp1s0, enp2s0, atau enx<mac> untuk adaptor USB)
    RACK_IP, RACK_PREFIX IP gateway di LAN rak (bawaan 10.10.0.1/24); sama dengan router, broker, NTP, dan server OTA
    NTP_UPSTREAM alamat NTP Celestian (diutamakan); kosong = hanya 0-3.id.pool.ntp.org. Node di LAN rak tidak bisa keluar, jadi hulu ini hanya untuk gateway
    DHCP_START, DHCP_END, DHCP_LEASE pool DHCP untuk Sentinel (bawaan 10.10.0.10 – 10.10.0.250, 12 jam; DC besar: pakai /23)
  2. Jalankan setup host

    Terminal window
    sudo ./host/setup-host.sh

    Skrip mengatur IP statis LAN rak, DHCP (dnsmasq), NTP (chrony), dan firewall (nftables), dan mengenali sendiri pengelola jaringan Debian (ifupdown), NetworkManager, atau systemd-networkd.

  3. Siapkan .env

    Terminal window
    cp -n .env.example .env

    Pastikan RACK_IP di .env sama dengan host/gateway.env. Isi bagian riwayat dan koneksi ke Celestian (GATEWAY_ID, GATEWAY_KEY, WORKSPACE, CHANNEL, CELESTIAN_HOST, CELESTIAN_MODE). Lihat Bridge ke Celestian.

  4. Siapkan mosquitto/conf.d/bridge.conf

    Salin bridge.conf.example menjadi bridge.conf, lalu isi <ID-gateway>, <device-key-gateway>, <workspace>, dan <channel>.

  5. Jalankan

    Terminal window
    docker compose up -d --build

    Kalau UPS terhubung ke NUT, tambahkan --profile ups.

Terminal window
docker compose ps
docker compose logs -f history # ringkasan antrean tiap menit, cara koneksi yang berlaku
sudo nft list table inet celestian_gw # penghitung drop firewall
chronyc tracking # jam gateway dan hulu NTP

Node yang dicolok ke switch rak seharusnya mendapat IP dari pool, lalu muncul online di Celestian dalam hitungan detik.

Selama mini PC belum ada, MacBook bisa menjadi gateway untuk pengujian: sambungkan switch PoE ke adaptor USB-Ethernet MacBook, nyalakan Internet Sharing (bagikan Wi-Fi ke adaptor itu) sehingga MacBook menjadi router dan DHCP server, lalu jalankan:

Terminal window
cd Gateway && docker compose -f docker-compose.yml -f docker-compose.mac.yml up -d

Broker lokal memakai port 11883 (MQTT 3.1.1, alat uji) dan 11884 (MQTT 5, Sentinel). Perbedaan dengan gateway sebenarnya:

  • MacBook tidak melayani NTP; node memakai pool internet (butuh jalur keluar) atau ntp_server yang diisi manual.
  • Tidak ada firewall LAN rak; node bisa mengakses internet lewat MacBook.
  • Bila switch disambungkan ke router biasa, IP gateway bukan MacBook; set mqtt_host di node.
  • Alat uji (celestianctl.py, sim_device.py) perlu --port 11883.
  • Pengecekan jam: GATEWAY_CLOCK_CHECK=off di .env.

Tanpa hardware sama sekali, node bisa disimulasikan dengan sim_device.py.