Every sub graded. Every decision explained.
SubStation watches your capture folder, calibrates and grades each sub as it lands, and stacks finished datasets into masters. Free, open source and self-hosted.
docker run -v /astro:/data ghcr.io/substation/substationFrom the camera folder to a finished master, while you sleep.
- 01
Watch
New FITS and XISF files are picked up seconds after they land. NINA, Ekos, ASIAIR and SharpCap folder layouts are recognised.
- 02
Calibrate
Each light is matched to the closest darks, flats and bias by exposure, gain, temperature and filter.
- 03
Grade
FWHM, eccentricity, star count and background are measured and compared with that night’s median.
- 04
Stack
Accepted subs are integrated with quality weights. Masters are marked stale when their inputs change.
Reasons you can read.
Each sub is compared with the median of its own night, so a hazy evening doesn't drag down a clear one. SubStation states the measurement, compares it with the night, then gives the likely cause. If you disagree, override it with one key.
0045.fitsRejectedStar count 41% of the night median: likely cloud.
0019.fitsDown-weightedFWHM 2.9″, 1.35 × the night median: likely seeing or focus drift.
0071.fitsRejectedBackground 1.6 × the night median: likely dawn.
0052.fitsDown-weightedEccentricity 0.58: likely wind or a guiding error.
Step through a whole night over breakfast.
Red light only, at the scope.
Press N anywhere in the panel to switch to deep red on black. Status colours collapse to red, and every verdict keeps its own shape, so nothing depends on colour alone.
Built to be trusted with a season of data.
Your originals stay put
SubStation never deletes or moves a sub. Rejected files stay on disk, and every grade can be reversed.
Runs on your hardware
One Docker container on a NAS, a mini PC or the observatory machine. No account, no cloud.
Free and open source
GPLv3. Read the grading code, change the thresholds, or send a pull request.
Readable for everyone
Every verdict has a shape as well as a colour. WCAG AA contrast and full keyboard control.
Running before tonight's first sub.
services:
substation:
image: ghcr.io/substation/substation:0.4
ports:
- "8480:8480"
volumes:
- /volume1/astro:/data
restart: unless-stopped1 Apps → search "SubStation" → Install 2 Data: /mnt/user/astro 3 Web UI port: 8480 4 Apply, then open http://tower:8480
1 Package Center → install Container Manager 2 Project → Create → docker-compose.yml 3 Paste the Compose file, set /volume1/astro:/data 4 Build, then open http://nas:8480
Then run docker compose up -d and open port 8480.First night guide