Documentation Index
Fetch the complete documentation index at: https://uncoded.ch/docs/llms.txt
Use this file to discover all available pages before exploring further.
Connection layers — what can fail
Bot → Exchange (REST API)
Bot → Exchange (WebSocket)
Bot → Database
Browser → Dashboard
External → SignalsBot
Bot → External APIs
Bot → exchange (REST + WebSocket)
Symptoms
Symptoms
- Logs show authentication errors (
-2015,10003,EAPI:Invalid key). - Logs show connection-refused or timeout errors.
- Dashboard shows “exchange disconnected” status.
- WebSocket repeatedly reconnects.
Cause: IP allowlist mismatch
Cause: IP allowlist mismatch
- From VPS:
curl -s https://api.ipify.org. - Compare to API key’s allowlist at the venue.
- If different: update the venue’s allowlist.
- Wait
30–60seconds for propagation. - Verify connection.
- Provider migration.
- VPS rebuild/reinstall.
- IPv6 transition.
- Some providers’ “snapshot restore” assigns new IP.
Cause: Exchange-side outage
Cause: Exchange-side outage
- Check venue’s status page (most have one).
- If exchange is down: wait through. Bot will reconnect when it returns.
- Existing exchange-side orders continue honoring during outage.
- Verify reconciliation matches expectation when venue returns.
Cause: VPS network issue
Cause: VPS network issue
- From VPS:
ping api.binance.com(or relevant venue host). - From VPS:
curl https://api.binance.com/api/v3/ping. - If timeouts: VPS network issue.
- Check provider status page.
- VPS provider issue: wait or contact provider.
- Routing issue: rare, but can affect specific operators.
Cause: API key revoked or expired
Cause: API key revoked or expired
- Verify the key still exists at the venue’s API management page.
- If revoked: generate new key with same permissions.
- Update Dashboard with new credentials.
- Restart TradingBot container.
Cause: clock drift
Cause: clock drift
recvWindow (Binance: 60000 ms).Symptom: timestamp errors (-1021 on Binance).Fix:- Check NTP:
timedatectl statusshould show synchronized. - If not, install/start NTP service.
- Don’t reduce
recvWindowbelow default to “fix” — fix the clock instead.
Bot → database
Symptoms
Symptoms
- Logs show “could not connect to database” or similar.
- Dashboard shows stale data.
- All bot containers show database-related errors.
Cause: database container not running
Cause: database container not running
docker psto see what’s running.- If database container is missing/stopped:
docker-compose up -d postgres(or equivalent). - Verify it starts cleanly:
docker logs <db-container>.
Cause: wrong credentials in environment
Cause: wrong credentials in environment
- Verify environment variables (
POSTGRES_USER,POSTGRES_PASSWORD, etc.) match between database container and dependent containers. - Restart all containers after environment changes.
Cause: database disk full
Cause: database disk full
- Check disk:
df -h. - If full: clean up logs, old backups, anything safe to delete.
- Consider growing the disk via your VPS provider.
- Restart database container after freeing space.
Cause: database corruption
Cause: database corruption
- Severe situation. Restore from your most recent backup.
- Spin up fresh PostgreSQL container, restore database, reconnect.
- Trade history since last backup is lost (or recoverable from venue data).
Browser → Dashboard
Symptoms
Symptoms
- Browser shows “can’t reach this page” or TLS errors.
- Dashboard URL times out.
- Reverse proxy shows
502 Bad Gateway.
Cause: Dashboard container not running
Cause: Dashboard container not running
docker ps.- If container missing/stopped:
docker-compose up -d dashboard. - Check logs:
docker logs <dashboard-container>.
Cause: TLS certificate expired
Cause: TLS certificate expired
- Caddy auto-renews. If it’s failed, check Caddy logs for errors (DNS, ports blocked, rate-limit hit).
- Manually trigger renewal if needed.
- Verify port
80and443are open for the renewal challenge.
Cause: reverse proxy misconfigured or down
Cause: reverse proxy misconfigured or down
- Verify proxy is running.
- Check proxy logs.
- Verify upstream (Dashboard container) is reachable from proxy.
- Test
curl http://<dashboard-internal-ip>:<port>from the VPS to confirm Dashboard responds.
Cause: IP allowlist at proxy excludes you
Cause: IP allowlist at proxy excludes you
- Update proxy allowlist with your new IP.
- Verify by accessing from the previously-allowed location.
External → SignalsBot
Symptoms
Symptoms
- TradingView alerts fire but configuration doesn’t change.
- SignalEditor strategies fire but TradingBot doesn’t pick up the change.
- SignalsBot logs show no incoming webhooks.
Cause: SignalsBot container not running
Cause: SignalsBot container not running
Cause: Reverse proxy not routing to SignalsBot
Cause: Reverse proxy not routing to SignalsBot
curl https://signals.yourdomain.com/health. Should return OK.Cause: shared secret mismatch
Cause: shared secret mismatch
Cause: webhook source IP not allowed
Cause: webhook source IP not allowed
Cause: rate-limited
Cause: rate-limited
429 when exceeding 100 requests / 15 minutes per IP.Fix: investigate source — usually a misconfigured strategy flooding signals. Fix the source.Bot → external APIs (Telegram, Frankfurter, etc.)
Telegram notifications stopped
Telegram notifications stopped
Tax export fails — Frankfurter unreachable
Tax export fails — Frankfurter unreachable
License verification failure
License verification failure
- Verify VPS has internet access (test with general DNS lookup).
- Verify license is current.
- Contact support if persistent without obvious cause.