Deployment
planesnitch ships as the Docker image psyb0t/planesnitch for linux/amd64 and linux/arm64. It needs outbound HTTPS and nothing inbound.
Image tags
| Tag | What it is |
|---|---|
latest | The newest build of the main branch that passed lint and tests |
sha-<commit> | The build of one main commit, by its full commit hash |
vX.Y.Z | A release. Release tags reuse the image digest already built on main |
Pin a vX.Y.Z tag if you want it to hold still, and read the changelog before moving.
Docker
docker run -d --name planesnitch \
--restart unless-stopped \
-v ./config.yaml:/app/config.yaml:ro \
-v ./csv:/csv:ro \
-v ./images:/images \
-e LOG_LEVEL=INFO \
psyb0t/planesnitch
| Mount | Needed | Holds |
|---|---|---|
/app/config.yaml | yes | Your config. Read-only is fine; planesnitch only reads it |
/csv | for icao_csv watchlists | The CSV watchlist files |
/images | no | Cached aircraft-type photos. Without it they’re downloaded again after each restart |
Port 8080 is the health endpoint. Publish it only if something outside the container polls it, and keep it on loopback: -p 127.0.0.1:8080:8080.
Docker Compose
services:
planesnitch:
image: psyb0t/planesnitch:latest
container_name: planesnitch
restart: unless-stopped
volumes:
- ./config.yaml:/app/config.yaml:ro
- ./csv:/csv:ro
- ./images:/images
environment:
LOG_LEVEL: INFO
docker compose up -d
docker compose logs -f planesnitch
State
planesnitch keeps almost nothing:
| What | Where | Survives a restart |
|---|---|---|
| Config | Your mounted file | yes |
| CSV watchlists | Your mounted /csv | yes |
| Aircraft-type photo cache | /images | only if mounted |
| Alert cooldowns | Memory | no. Aircraft in range alert again after a restart |
| Source rate-limit pauses | Memory | no |
There’s no database and nothing to back up beyond your config and CSVs.
Changing the config
Edit the mounted config.yaml; the next poll picks it up, no restart needed. With a single-file bind mount, some editors replace the file instead of rewriting it, and the container keeps seeing the old one. If an edit doesn’t show up in the logs as config reloaded (changed), mount the containing directory instead, or restart the container.
Upgrade
docker pull psyb0t/planesnitch:latest
docker rm -f planesnitch
# then run the same docker run command again
With Compose: docker compose pull && docker compose up -d.