Troubleshooting
Mulailah dari log server; sebagian besar masalah menampilkan baris yang jelas di sana.
| Cara Watchbell berjalan | Lokasi log-nya |
|---|---|
| Service Linux | journalctl --user -u watchbell -f |
| Scheduled Task Windows | app\data\watchbell.log |
| Dijalankan manual | Terminal tempat Anda menjalankan npm run start:selfhost |
Instalasi
Port sudah dipakai
Installer menyatakan port-nya (3100 secara default) sudah terpakai, atau server berhenti dengan EADDRINUSE.
-
Mungkin Watchbell sudah berjalan:
systemctl --user status watchbell, atau carinodedi Task Manager. -
Cari program yang memakai port itu:
ss -ltnp | grep 3100 # Linux lsof -iTCP:3100 -sTCP:LISTEN # macOSGet-NetTCPConnection -LocalPort 3100 | Select-Object OwningProcess Get-Process -Id <OwningProcess> -
Atau pakai port lain:
bash install.sh --port 3200(install.bat --port 3200) untuk instalasi baru, atau ubahPORTdanSITE_URLdiapp/.envpada instalasi yang sudah ada (lihat Mengganti port).
Versi Node salah
Watchbell butuh tepat Node 24 (24.x apa pun). Periksa dengan node --version.
- Linux dan macOS dengan nvm:
nvm install 24, lalunvm use 24(ataunvm alias default 24agar tetap dipakai). - Windows: unduh Windows Installer (.msi) untuk Node 24 dari https://nodejs.org/dist/latest-v24.x/ (juga ada di
bawah v24 di https://nodejs.org/en/about/previous-releases) lalu jalankan; seperti installer Windows biasa, ia
meminta persetujuan administrator. Kalau ada Node yang lebih lama atau lebih baru yang terpasang, hapus dulu di
Settings › Apps › Installed apps. Lalu buka terminal baru, supaya Node yang baru ada di
PATH, pastikannode -vmenampilkan v24, dan jalankaninstall.batlagi. (Paket Node.js LTS dari winget dipasang untuk seluruh mesin, juga butuh persetujuan administrator, dan bisa memilih versi mayor yang lebih baru dari 24, jadi .msi di atas adalah jalan yang lebih sederhana.) - Kalau
node --versionmasih menampilkan versi lama, ada Node lain yang lebih dulu ada diPATHAnda (which -a nodedi Linux dan macOS,where.exe nodedi Windows).
Di Linux, installer bertanya dulu sebelum memasang Node 24 dengan nvm; kalau Anda menjawab tidak, installer menampilkan langkah-langkah ini lalu berhenti tanpa menulis apa pun. Di Windows, installer selalu menampilkan link unduhan Node 24 lalu berhenti tanpa menulis apa pun.
Build kehabisan memori
npm run build berhenti dengan JavaScript heap out of memory atau dimatikan. Build butuh sekitar 2 GB memori kosong.
Tutup program lain lalu jalankan installer lagi. Di server Linux kecil, tambahkan swap file. Untuk memberi Node lebih
banyak memori: NODE_OPTIONS=--max-old-space-size=3072 bash install.sh.
npm ci gagal
- Periksa koneksi internet dan pengaturan proxy Anda (
npm config get proxy). npm cibutuhapp/package-lock.jsondari rilis; jangan dihapus.- Hapus
app/node_moduleslalu jalankan installer lagi. - Di Windows, path yang lebih panjang dari 260 karakter bisa merusak instalasi: pindahkan folder Watchbell lebih dekat
ke root drive (misalnya
D:\watchbell).
Windows: running scripts is disabled
PowerShell menolak install.ps1 dengan pesan "running scripts is disabled on this system". Pakai install.bat, yang
mengizinkan script hanya untuk satu proses PowerShell itu, atau jalankan:
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
Watchbell tidak pernah mengubah execution policy sistem Anda.
Upgrade menolak melakukan pull
--upgrade hanya menjalankan git pull --ff-only di git checkout yang file-file ter-track-nya tidak punya perubahan
lokal (file baru seperti app/.env dan app/data tidak dihitung). Jalankan git status untuk melihat apa yang
berubah. Sisihkan perubahan Anda dengan git stash (atau commit di sebuah branch), lalu jalankan upgrade lagi.
app/.env dan app/data Anda tidak pernah disentuh oleh upgrade. Kalau Anda memasang dari arsip rilis, lihat
Upgrade.
Menjalankan
Another Watchbell is already using
Server atau reset-login berhenti dengan pesan "Another Watchbell is already using …/data/pg. Stop it first."
Hanya satu proses yang boleh membuka folder database dalam satu waktu. Biasanya Watchbell memang sudah berjalan, misalnya sebagai service atau Scheduled Task sementara Anda juga menjalankannya secara manual. Hentikan salah satunya:
systemctl --user stop watchbell(service Linux)npm run stop:selfhostdi folderapp(task Windows, atau cara jalan apa pun);Stop-ScheduledTask Watchbellhanya kalau perintah itu kehabisan waktu, karena bisa memotong proses penutupan databasewatchbell stop(paket npm)- Ctrl+C di terminal yang menjalankannya
Lock-nya adalah file app/data/pg/.watchpost.lock (~/.watchbell/data/pg/.watchpost.lock untuk paket npm), yang
berisi process id. Lock yang tertinggal dari proses yang sudah tidak ada dihapus otomatis, begitu juga lock yang
process id-nya sekarang dimiliki program lain (setelah crash atau listrik padam, id itu sering dipakai ulang):
watchbell dan npm run start:selfhost menghapusnya sebelum server mulai. Kalau id itu sekarang dimiliki program
Node.js lain, Watchbell tidak bisa membedakannya dari dirinya sendiri: watchbell lalu menyatakan bahwa tidak ada yang
menjawab dan menyebut nama file-nya. Hapus file itu secara manual hanya kalau Anda yakin tidak ada Watchbell yang
sedang berjalan.
Missing or invalid environment variables
Missing or invalid environment variables: OPS_ENCRYPTION_KEY (atau key lain) berarti app/.env tidak punya key itu
atau nilainya berbentuk salah (OPS_ENCRYPTION_KEY harus ter-decode menjadi tepat 32 byte). Jalankan installer lagi:
installer menambahkan key yang belum ada dan membiarkan key yang sudah ada. Kalau key-nya ada tetapi salah, kembalikan
dari backup app/.env Anda; key yang baru dibuat membuat token yang tersimpan tidak bisa dibaca (lihat
Backup).
"The scheduler settings are missing" (atau "Missing or invalid scheduler settings") berarti COLLECTOR_SECRET atau
CRON_SECRET tidak ada atau terlalu pendek. Installer juga menambahkan keduanya.
Menolak start dengan DATABASE_URL remote
"Refusing to start: WATCHBELL_MODE=selfhost with a remote or unrecognised DATABASE_URL" berarti DATABASE_URL adalah
database Supabase hosted, URL dengan beberapa host, atau URL yang tidak bisa di-parse Watchbell. Mode self-host
menolaknya kecuali Anda juga men-set WATCHBELL_ALLOW_REMOTE_DB=1. Untuk database lokal, set
DATABASE_URL=pglite: di app/.env; postgres://user:password@localhost/dbname biasa diterima apa adanya. Lihat
Memakai Postgres sendiri kalau Anda memang bermaksud memakai database
remote.
Migrasi database tidak ditemukan
"Watchbell can't find its database migrations in …" berarti server dijalankan dari folder lain. Jalankan dari app/
(cd app && npm run start:selfhost), atau set WATCHBELL_MIGRATIONS_DIR.
Halaman tidak terbuka
- Apakah Watchbell berjalan? Periksa log-nya.
- Pakai alamat yang benar:
http://localhost:3100(atau port Anda), bukanhttps://. - Dari perangkat lain hanya bisa dengan akses LAN.
PORTatauHOSTyang di-set di shell menang atasapp/.env(lihat Menjalankan dan menghentikan). Paket npm mengabaikannya: ia membaca~/.watchbell/.env, dan hanyaWATCHBELL_HOSTatauWATCHBELL_PORTyang bisa menimpanya.
Service berhenti bekerja setelah update Node
Di Linux, systemd service menjalankan program Node persis yang dipakai saat service dibuat (dengan nvm, sebuah path di
dalam ~/.nvm/versions). Setelah nvm install untuk 24.x yang lebih baru, atau setelah versi lama dihapus, service
bisa gagal start (journalctl --user -u watchbell menampilkan path yang hilang). Jalankan lagi bash install.sh:
installer menulis ulang service untuk Node yang sekarang dan mem-build ulang aplikasi. app/.env dan app/data Anda
dipertahankan. Dengan paket npm, jalankan lagi watchbell service install setelah mengganti Node (nvm, fnm, volta):
service menjalankan Node yang dipakai saat service dibuat.
Sign in
Kode setup hilang
Baca lagi dari app/data/setup-code, atau dari log. Kalau sudah kedaluwarsa (setelah 24 jam) atau Anda tidak bisa
menemukannya, restart Watchbell: setiap start tanpa owner menampilkan dan menyimpan kode baru. Begitu owner sudah ada,
tidak ada lagi kode setup; lihat Pertama kali dijalankan.
Tidak bisa masuk
Lupa password, atau kehilangan authenticator? Di mesin tempat Watchbell berjalan:
# stop Watchbell first, then in the app folder:
npm run reset-login -- you@example.com
Perintah ini menampilkan password sementara (berlaku 7 hari), menghapus authenticator, dan mengakhiri session akun
itu. Jalankan Watchbell, sign in dengan password sementara, pilih password baru, lalu pasang authenticator lagi. Kalau
muncul "Watchbell is running on …", hentikan Watchbell dulu. Kalau muncul "No Watchbell database in …", jalankan di
folder app (atau set WATCHBELL_DATA_DIR). Detailnya di
Pertama kali dijalankan.
Provider
Token kekurangan izin
Provider menjawab bahwa token tidak bisa melakukan sesuatu, misalnya:
- "missing database_write" saat menyiapkan role SQL Supabase secara otomatis;
- "This Supabase token can't create projects" (
organization_projects_create); - "This Cloudflare token can't add DNS records" (DNS Edit).
Membaca tetap bisa; hanya aksi itu yang butuh izin lebih. Buat token baru dengan izin tambahan yang tercantum di Menghubungkan provider, lalu pakai Replace credential di Connections. Atau kerjakan satu langkah itu secara manual di provider (untuk role SQL, dialog-nya menampilkan SQL yang bisa Anda jalankan sendiri).
Can't read the stored credential
"Can't read the stored credential. The encryption key changed." berarti OPS_ENCRYPTION_KEY di app/.env bukan key
yang dipakai saat token disimpan. Kembalikan key aslinya dari backup Anda, atau pakai Replace credential di setiap
connection.
Google menjawab redirect_uri_mismatch
Authorized redirect URI di Google OAuth client Anda harus persis SITE_URL + /auth/google/callback, misalnya
http://localhost:3100/auth/google/callback. Periksa port dan http versus https. Google hanya mengizinkan http
biasa untuk localhost. Lihat Backup.
Notifikasi
Tidak ada notifikasi yang masuk
Di Alerts › Notifications:
- Channel menampilkan catatan seperti "TELEGRAM_BOT_TOKEN isn't set": tambahkan key itu ke
app/.envlalu restart. - Channel dalam keadaan Off: nyalakan.
- "The last send failed: …" menampilkan alasan dari provider (bot token yang dicabut, webhook Discord yang dihapus, domain Resend yang belum diverifikasi).
- Tekan Send test.
Periksa juga aturan senyap: selama collector basi, selama maintenance window, untuk alert yang di-silence, atau untuk aplikasi di belakang database yang di-pause, memang sengaja tidak ada yang dikirim.
Tombol Telegram di laptop
Approve dan Reject di pesan Telegram tidak berfungsi, atau responsnya terlambat:
- Watchbell tidak berjalan. Laptop tidak punya alamat publik, jadi Watchbell mengambil sendiri tekanan tombol dari Telegram selama ia berjalan. Tekanan yang dilakukan saat Watchbell berhenti atau sleep diproses saat ia kembali (Telegram menyimpannya sampai 24 jam).
- Tombol approval mati. Alerts › Notifications › Telegram › Approval buttons › Turn on.
- Akun Telegram Anda belum ditautkan. Hanya akun yang sudah ditautkan yang bisa memakai tombol: tekan Show link code
lalu kirim
/link <code>di chat yang terhubung. - Log menyatakan "Telegram has a webhook set". Ada pihak lain yang menerima update bot ini: webhook yang dipasang instalasi lain, atau program lain yang membaca bot yang sama. Pakai bot terpisah untuk Watchbell ini, atau matikan lalu nyalakan lagi tombol approval di sini (itu menghapus webhook-nya, yang akan merusak instalasi lain itu).
- Aksi berisiko butuh tekanan kedua pada "Sure? Approve" dalam 2 menit.
Anda selalu bisa menyetujui di halaman Auto-actions sebagai gantinya.
Alert setelah laptop sleep
Selama mesin sleep atau Watchbell berhenti, tidak ada yang dicek. Setelah bangun, alert CollectorStale bisa firing sebentar lalu resolved setelah beberapa run berikutnya berhasil; alert lain dibungkam selama alert itu firing. Job harian yang terlewat dijalankan sekali saat bangun. Untuk pemantauan yang tidak pernah tidur, jalankan Watchbell di mesin yang selalu menyala.