FAQ & Troubleshooting¶
General¶
How do I update PoracleNG?¶
Database migrations are applied automatically on startup.
Can I run PoracleNG and PoracleJS side by side?¶
Not on the same database simultaneously. However, you can switch between them as they share the same database schema. See the Migration Guide.
Does PoracleNG support Docker?¶
Yes. A pre-built image is available at ghcr.io/jfberry/poracleng:latest. See the Docker Installation guide.
Startup Issues¶
Processor won't start¶
- Verify Go is installed:
go version(needs 1.21+) - Check
logs/processor.logfor error details - Verify database credentials in
config/config.toml - Ensure MySQL/MariaDB is running and accessible
Alerter won't start¶
- Verify Node.js is installed:
node --version(needs 18+) - Run
cd alerter && npm installto reinstall dependencies - Check
logs/general-*.logfor errors - Ensure the processor is running (alerter needs it for reload notifications)
"Port already in use" error¶
Another process is using port 3030 or 3031. Either stop the other process or change the ports in config.toml:
Alert Issues¶
No alerts being sent¶
- Check webhooks are arriving — look at
logs/processor.logfor incoming webhook messages - Verify scanner config — webhooks must be sent to the processor on port 3030
- Check user has tracking —
!trackedshould show active subscriptions - Check user has areas/location — tracking requires at least one area or a location with distance
- Check bot permissions — the Discord bot needs Send Messages permission in DM or channels
- Check rate limits — user may be stopped. Admin can
!enable @user
Alerts are delayed¶
- Check
[tuning]settings, especiallyconcurrent_*values - Monitor queue depth via Prometheus metrics at
/metrics - Check if rate limiting is throttling delivery
- Review database performance
Bot doesn't respond to commands¶
- Ensure Message Content Intent is enabled in Discord Developer Portal
- Check the bot is online (not showing as offline in Discord)
- Verify the command prefix matches config (
!by default) - Check
logs/commands-*.logfor command processing errors
Test command works but real alerts don't¶
- The
!poracle-testcommand uses sample data, not real webhooks - Verify your scanner is sending webhooks to port 3030
- Check
logs/processor.logfor webhook processing activity
Configuration Issues¶
Config changes not taking effect¶
- Restart both the processor and alerter after config changes
- Verify syntax in
config.toml— TOML is strict about quotes and types - Check for typos in setting names (all
snake_case)
Geofences not loading¶
- Check file paths in
[geofence] pathsare correct relative to the project root - Verify JSON syntax in geofence files
- Check
logs/processor.logfor geofence loading messages
Database Issues¶
Migration errors on startup¶
The processor uses golang-migrate for database schema management. If you see migration errors:
- Check that the database user has ALTER TABLE permissions
- Look at the specific error in
logs/processor.log - The database may need manual intervention if a previous migration was interrupted
High database load¶
- Review
[tuning] max_database_connections - Check if
[tuning] reload_interval_secsis too frequent - Ensure database indexes are intact
Discord-Specific¶
Bot shows as offline¶
- Verify the bot token is correct
- Check that the bot application hasn't been disabled
- Look for authentication errors in
logs/general-*.log
Missing permissions¶
The bot needs: Send Messages, Manage Messages, Embed Links, Attach Files, Read Message History, Use External Emojis, Add Reactions. Add Manage Roles if using role subscriptions.
Rate limited by Discord¶
Discord enforces global rate limits. If you're hitting them:
- Add more bot tokens as workers
- Reduce
concurrent_discord_destinationsin tuning - Ensure users aren't tracking too broadly
Telegram-Specific¶
Bot can't send messages to users¶
Users must click "Start" on the bot in a private chat before the bot can message them. This is a Telegram requirement.
Messages not formatted correctly¶
Telegram uses HTML formatting in DTS templates. Make sure your custom templates use valid HTML tags.