-
Notifications
You must be signed in to change notification settings - Fork 3
Troubleshooting
| Symptom | Action |
|---|---|
| Setup wizard expired | Restart the container - opens a new 5-minute window |
| "permission denied" on Docker socket | Mount with -v /var/run/docker.sock:/var/run/docker.sock:ro
|
| No containers shown | Verify Docker socket mount and permissions |
| Updates not detected | Check SENTINEL_POLL_INTERVAL and SENTINEL_GRACE_PERIOD
|
| Rate limit warnings | Add Docker Hub credentials in Settings > Registries |
| Agent won't connect | Check SENTINEL_SERVER_ADDR includes port; generate a new token |
| Agent shows "disconnected" | Auto-reconnects; verify firewall allows the cluster port |
| WebAuthn not working | Check SENTINEL_WEBAUTHN_RPID and SENTINEL_WEBAUTHN_ORIGINS
|
| Dashboard not updating (SSE) | Set proxy_buffering off; raise proxy_read_timeout to 86400
|
| Container stuck in "updating" | Restart Sentinel; maintenance labels clear on the next scan |
| Dashboard stuck on "Updating" after queue approval | Upgrade to v2.12+; SSE reconnect now catches up stale badges |
| Cluster CA mismatch | Re-enrol the agent: stop, delete cluster data dir, restart with new token |
| Portainer duplicate containers | Engine ID dedup handles this automatically in v2.12+ |
| CSRF errors | Send sentinel_csrf cookie value as X-CSRF-Token header |
The initial scan ran before setup completed. Fixed in v2.3.1: the scan now waits until the dashboard is loaded. On older versions this is harmless; the next scan cycle will succeed.
The setup window is 5 minutes. Restart the container to open a new one:
docker restart docker-sentinelError: Cannot connect to the Docker daemon at unix:///var/run/docker.sock
Verify the socket is mounted:
-v /var/run/docker.sock:/var/run/docker.sock:roOn rootless Docker or Podman the socket path may differ. Set SENTINEL_DOCKER_SOCK to override.
| Account type | Limit |
|---|---|
| Anonymous | 100 pulls per 6 hours |
| Authenticated (free) | 200 pulls per 6 hours |
| Pro / Team | 5,000+ pulls per day |
The dashboard Rate Limits stat card shows remaining quota. Add Docker Hub credentials via Settings > Registries to raise limits. For images with GHCR mirrors, Sentinel offers one-click migration from the container detail page.
- Set
proxy_buffering offon your reverse proxy. Required for SSE. - Raise
proxy_read_timeoutto at least86400s. - Check that no CDN or caching layer is buffering responses.
-
SENTINEL_WEBAUTHN_RPIDmust match your domain exactly (e.g.sentinel.example.com). -
SENTINEL_WEBAUTHN_ORIGINSmust include the full origin with scheme (e.g.https://sentinel.example.com). Multiple origins are comma-separated. - WebAuthn requires HTTPS (localhost is exempt).
- Confirm the server is listening:
SENTINEL_CLUSTER_PORTdefaults to9443. - Verify the firewall allows the cluster port.
- Check
SENTINEL_SERVER_ADDRincludes the port (e.g.192.168.1.10:9443). - Enrolment tokens are single-use. Generate a new one if the first attempt failed.
- Check agent logs for certificate errors.
If the server's CA certificate was regenerated (e.g. the /data/cluster volume was deleted, or the server moved to a new host), agents with the old CA cached locally will fail to connect with TLS errors.
The agent logs an actionable error message once:
server CA mismatch -- the server's TLS certificate has changed since this agent enrolled
fix="re-enroll this agent: stop it, delete the cluster data directory, and restart with a fresh SENTINEL_ENROLL_TOKEN"
data_dir="/data/cluster"
Resolution:
- Stop the agent container.
- Delete the cluster data directory inside the agent volume (the path shown in
data_dir). - Generate a new enrolment token on the server (Cluster page or
POST /api/cluster/enroll-token). - Restart the agent with
SENTINEL_ENROLL_TOKENset to the new token.
The agent will re-enrol and receive a certificate signed by the server's current CA. The error is logged once per agent lifecycle to prevent log spam.
If the same Docker host is monitored by multiple sources (local socket, a Portainer endpoint, and a cluster agent), containers may appear duplicated in the dashboard.
From v2.12 onwards, Sentinel collects the Docker Engine ID from each source and compares them automatically. When two sources share the same Engine ID, the Portainer endpoint is flagged and excluded from scans. A source_overlap event appears in the SSE stream and the activity log.
No manual action is needed. If you see duplicate containers on older versions, check whether a Portainer endpoint is pointing at the same Docker host that Sentinel already monitors locally or via a cluster agent.
On versions before v2.12, approving a container update from the queue page could leave the dashboard showing a permanent "Updating" badge on that container. This happened when the SSE container_update event was sent between the server-side page render and the SSE connection being established, meaning the event was lost.
On v2.12+: This is fixed. The SSE reconnect handler now catches up by refreshing any rows that still show the "Updating" state when the connection is established.
On older versions: Reloading the page clears the stale badge. Alternatively, restart Sentinel; maintenance labels are cleared on the next scan cycle.
- Check the container's policy.
pinnedcontainers are never updated. - Check whether the scheduler is paused (Settings > Scanning).
- Check container name filters (Settings > Scanning > Filters).
- For
:latesttags: verifySENTINEL_LATEST_AUTO_UPDATE=true. - Verify registry credentials if using a private registry.
- Check the activity log for errors.
Rollback requires a pre-update snapshot taken by Sentinel. If the container was never updated by Sentinel, no snapshot exists. Check available disk space; snapshot data is stored in BoltDB.
JSON structured logging is on by default (SENTINEL_LOG_JSON=true). For human-readable output:
-e SENTINEL_LOG_JSON=falseView logs:
docker logs docker-sentinel
docker logs -f docker-sentinel # follow
docker logs --since 1h docker-sentinel # last hour
docker logs --tail 100 docker-sentinel # last 100 linesThe Logs page in the web UI records all actions and errors with full context.
| Message | Meaning |
|---|---|
wizard server listening |
First-run setup mode - navigate to /setup
|
scheduler started |
Normal operation; scanning per the configured schedule |
enrollment complete |
Agent successfully enrolled with the server |
channel established |
Agent gRPC stream connected |
entering autonomous mode |
Agent lost connection; operating independently |
state report accepted |
Agent state synced to the server |
State is in BoltDB at /data/sentinel.db.
# Back up
docker cp docker-sentinel:/data/sentinel.db ./backup.db
# Full reset (wipes all data, setup wizard will reappear)
docker stop docker-sentinel
docker volume rm sentinel-data- GitHub Issues
- Check Logs in the web UI for detailed error messages.
- Include the Sentinel version (from Settings > About) and Docker version when reporting issues.
Getting Started
Using Sentinel
Multi-Host
Security
Reference