← Back to home

Download & Install

Flash a ready-made image, or download the release for your platform and run the install steps. Then add only the optional components for the features you want; Polaris detects what is installed at runtime and hides the UI for anything missing.

Ready-to-flash images

The fastest way to get going: each image is a Linux OS with Polaris preinstalled and configured for that board. Flash it to an SD card (or USB / eMMC), boot, and open the browser. Use Raspberry Pi Imager, balenaEtcher, or Rufus. Images live on Google Drive and are added as each board is validated.

Raspberry Pi 4

arm64

7.11 GB (.7z)

Raspberry Pi OS 64-bit (Debian Trixie, released 2026-04-21). 7-Zip archive; extract before flashing.

Download image

Raspberry Pi 5

arm64

7.11 GB (.7z)

Raspberry Pi OS 64-bit (Debian Trixie, released 2026-04-21). 7-Zip archive; extract before flashing. (Shared with the Pi 4 image for now.)

Download image

Orange Pi 4 Pro

arm64
Coming soon

Orange Pi 5 Pro

arm64
✓ GPU · OpenCL ✓ NPU · AI

7.51 GB (.7z)

Armbian 26.8.0 KDE (Ubuntu 26.04, kernel 6.1.115). 7-Zip archive; extract before flashing.

Download image

Radxa Dragon Q6A

arm64
Coming soon

PC Stick

x86-64

x86 board: flash to USB or write to the internal eMMC, not an SD card.

Coming soon

Download

Grab the server build for the machine that runs your rig, then follow the install steps below. Prefer zero setup? Use a ready-to-flash image above.

Client apps (connect from a device)

Optional native app to reach the server. Any browser also works, so no app is required.

Install

Step by step for each platform once you have the files. The published builds are self-contained, so there is no separate runtime to install.

Raspberry Pi 4 / 5

.deb

The recommended path. The .deb creates the user, a systemd unit, the indi-web venv, apt dependencies, and a self-signed HTTPS cert.

wget https://github.com/DanWBR/NINA.Polaris/releases/latest/download/polaris_arm64.deb
sudo apt install ./polaris_arm64.deb

Running at https://<hostname>.local:5000 in about 30 seconds. Manage it with: sudo systemctl status polaris, sudo journalctl -u polaris -f, sudo systemctl restart polaris.

Other Linux (portable)

tar.gz

For Fedora, Arch, or any non-Debian distro, or when you prefer no systemd integration. Replace linux-arm64 with linux-x64 for Intel/AMD.

wget https://github.com/DanWBR/NINA.Polaris/releases/latest/download/polaris-linux-arm64.tar.gz
tar -xzf polaris-linux-arm64.tar.gz
cd polaris-linux-arm64
./NINA.Polaris

Runs in the foreground. Wire your own service unit if you want it to survive reboots.

Windows mini PC

.zip

Portable, no installer. ARM64 build also available (polaris-win-arm64.zip) for Surface Pro X and some Copilot+ PCs.

Invoke-WebRequest -Uri "https://github.com/DanWBR/NINA.Polaris/releases/latest/download/polaris-win-x64.zip" -OutFile polaris.zip
Expand-Archive polaris.zip
cd polaris-win-x64
.\NINA.Polaris.exe

Open https://localhost:5000 and accept the self-signed cert once. Remember to open the firewall (see below).

Docker

multi-arch

Multi-arch image (arm64 + amd64). The compose file in the repo includes indiserver in the same stack.

docker run -d --network host \
  -v $(pwd)/config:/config \
  -v $(pwd)/images:/images \
  ghcr.io/danwbr/nina-polaris:latest

Volumes mount /config (profiles) and /images (FITS output). On Linux use --network host, or port-forward TCP 5000 and UDP 5353 in compose.

Build from source

dev

For developers or unsupported platforms. Needs the .NET 10 SDK and Git (with submodules).

git clone https://github.com/DanWBR/NINA.Polaris.git
cd NINA.Polaris
./deploy/publish-linux-arm64.sh   # or publish-linux-x64.sh / publish-win-x64.ps1
./publish/linux-arm64/NINA.Polaris

Build and test target net10.0. The stellarium-web submodule ships pinned .js/.wasm, so Emscripten is only needed if you bump the engine.

System requirements

The main limiting factor is RAM. Everything else is comfortable on a modern SBC, and the recommended board adds GPU and NPU acceleration.

Polaris uses 0.7 to 1.7 GB of RAM on average, so 2 GB is the practical floor. A Raspberry Pi 4 with 2 GB still runs the app, with client-side WASM offloading the heavy live-stack math.

Recommended board: the Orange Pi 5 Pro with 4 GB or more. It runs the whole app end to end, with OpenCL acceleration on the GPU and GraXpert AI on the NPU. More boards are on the test bench: two Orange Pi 4 Pro (4 GB), a Celeron PC stick, and a Radxa Dragon Q6A (expected to be the most powerful of the lot).

Host RAM Status Notes
Orange Pi 5 Pro (4 GB) GPU + NPU 4 GB+ Recommended Proven daily driver. RK3588S (4x Cortex-A76 + 4x Cortex-A55), Mali-G610 GPU, 6 TOPS NPU. Full experience: OpenCL on the GPU and GraXpert AI on the NPU.
Raspberry Pi 5 (8 GB) 8 GB Great Broadcom BCM2712 (4x Cortex-A76, up to 2.4 GHz), VideoCore VII GPU, LPDDR4X. Lossless: live stacking plus simultaneous Studio jobs are fine.
Raspberry Pi 4 (2 GB) 2 / 4 / 8 GB Minimum Broadcom BCM2711 (4x Cortex-A72, up to 1.8 GHz), VideoCore VI GPU, LPDDR4. The RAM floor: 2 GB is the minimum to run; client-side WASM offloads the heavy math.
Raspberry Pi 3 (1 GB) 1 GB Below RAM target Broadcom BCM2837 (4x Cortex-A53, up to 1.2 GHz), VideoCore IV GPU. Runs, but tight; PHD2 GUI embed is auto-disabled (32-bit ARM gate).
Radxa Dragon Q6A GPU + NPU 6 / 8 GB Testing Qualcomm QCS6490 (octa-core Kryo: 1x 2.7 GHz + 3x 2.4 GHz + 4x 1.9 GHz), Adreno 643 GPU (OpenCL), Hexagon NPU up to 12 TOPS, LPDDR5. Incoming, expected to be the most powerful board tested so far, pending validation.
Orange Pi 4 Pro (4 GB) GPU + NPU 4 GB Testing Two units incoming. Allwinner A733 (2x Cortex-A76 + 6x Cortex-A55, up to 2.0 GHz), Imagination BXM-4-64 GPU, 3 TOPS NPU, LPDDR5. Same GPU-plus-NPU story as the 5 Pro: OpenCL on the GPU and GraXpert on the NPU, pending validation.
Celeron PC stick 8 GB Testing Intel Celeron J4105 (4 cores, up to 2.5 GHz), Intel UHD 600 GPU (OpenCL), 8 GB LPDDR4, 128 GB eMMC, Gigabit LAN. Ships with Windows 11 Pro. Incoming, results to follow.
Windows mini PC / desktop / laptop 4 GB+ Full features Same feature set as Linux, plus vendor DSLR drivers.

Bare minimum to boot

WindowsLinux (RPi / x64)
Runtime .NET 10 Desktop Runtime (bundled in the self-contained build) .NET 10 Runtime, or use the self-contained build
Polaris binary NINA.Polaris.exe NINA.Polaris
Network TCP 5000 open on the LAN TCP 5000 open on the LAN

That is all the home page needs. Every other feature has its own dependency, listed under optional components below.

Open the firewall

Polaris listens on TCP 5000 (HTTP) and UDP 5353 (mDNS, so <hostname>.local resolves). Both are blocked by default.

Windows (Admin PowerShell)
New-NetFirewallRule -DisplayName "N.I.N.A. Polaris" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow -Profile Private,Domain
New-NetFirewallRule -DisplayName "mDNS (Polaris)" -Direction Inbound -Protocol UDP -LocalPort 5353 -Action Allow -Profile Private,Domain
Linux
sudo ufw allow 5000/tcp
sudo ufw allow 5353/udp

On Linux without ufw: iptables -A INPUT -p tcp --dport 5000 -j ACCEPT. The .deb install handles this for you.

Optional components

Add only what you need. Polaris lights up each feature when its tool is present and degrades gracefully when it is not.

Equipment drivers

At least one bus is required to control hardware. Both can coexist; the active rig stores a per-device driver choice.

INDI

Linux

Preferred on Linux. The indi-full meta-package ships the daemon plus 100+ drivers (ZWO, Canon, EQMod, Celestron, weather, ...).

Windows
Runs via WSL2 or a windi build; most Windows users pick Alpaca instead.
Linux
sudo apt install indi-full
Get it ↗

ASCOM / Alpaca

Windows

Preferred on Windows. Polaris discovers Alpaca devices over the LAN via UDP.

Windows
ASCOM Platform 7+ (free) + the driver pack per device. Alpaca on by default.
Linux
Run an Alpaca-compatible device server; most modern drivers expose Alpaca natively.
Get it ↗

Vendor SDKs (DSLR / mirrorless)

Windows

Canon, Nikon, and Sony DSLR/mirrorless on Windows. Drop the DLLs into plugins/ after registering with the vendor (EULA blocks redistribution).

Windows
Canon EDSDK 13.x+ in plugins/canon-edsdk/, Nikon SDK in plugins/nikon-sdk/, Sony SDK in plugins/sony-sdk/.
Linux
Not needed: DSLRs use indi_gphoto_ccd from indi-full.
Get it ↗

Plate solving

Required for Slew & Center (the centering loop). Without any solver, Slew Only still slews the mount. Polaris dispatches primary then blind fallback across whatever is installed.

ASTAP

recommended

Default solver. Fast (about 1 to 3 s), works offline, MIT. Recommended for everyone.

Windows
astap.exe installer + the H17/H18 star database (~2 GB).
Linux
sudo apt install astap astap-data
Get it ↗

PlateSolve3

Windows

Faster than ASTAP at long focal lengths. Free for non-commercial use.

Windows
PlateSolve3 installer.
Linux
Not available.
Get it ↗

Astrometry.net (local)

Linux

The gold standard, but slow on a Pi (about 30 to 60 s).

Windows
Not practical.
Linux
sudo apt install astrometry.net + index files.
Get it ↗

Astrometry.net (online)

needs internet

Last resort. About 30 to 60 s per solve, free with an API key.

Windows
API key only.
Linux
API key only.
Get it ↗

Autoguiding

PHD2 connection (TCP 4400) is auto-attempted on startup alongside INDI / Alpaca discovery.

PHD2

free

Full integration: Polaris auto-detects PHD2, can launch and shut it down, swap profiles, run Smart Calibrate, and broadcast guide stats in real time.

Windows
PHD2 installer (free, GPLv3).
Linux
sudo apt install phd2
Get it ↗

PHD2 embedded GUI

Linux

Shows the PHD2 window inside the GUIDE tab. Not supported on 32-bit Raspberry Pi (auto-gated).

Windows
Not needed (PHD2 runs natively).
Linux
sudo apt install xpra xserver-xorg-video-dummy (xpra 6.0+).
Get it ↗

Post-processing

Detected at startup via the binary locator. Polaris grays out the matching STUDIO buttons when missing.

Siril

optional

Replaces the built-in stacking pipeline in STUDIO with Siril scripts (5 bundled, plus your own ~/.siril/scripts).

Windows
Siril installer.
Linux
sudo apt install siril
Get it ↗

GraXpert

optional

Background extraction (auto per-frame during sequences if toggled), plus deconvolution and denoise on v3.0+.

Windows
GraXpert v3.0+ installer.
Linux
AppImage from the GraXpert releases page.
Get it ↗

Simulators (no hardware)

Test the whole pipeline without a scope. Settings then Equipment simulator detects the install and spawns the stack with one click.

INDI simulators

Linux

Renders real stars from the GSC catalog at the simulated mount position.

Windows
Use the Alpaca Omni Simulator instead.
Linux
sudo apt install indi-bin
Get it ↗

Alpaca Omni Simulator

Windows

A single .exe exposing the ASCOM Camera/Telescope/Focuser/FilterWheel simulators over Alpaca.

Windows
Download and run the Omni Simulator.
Linux
Use the INDI simulators instead.
Get it ↗

More integrations

Extra conveniences, all optional.

Relay server (remote internet access)

self-hosted

Reach your rig from anywhere without exposing it directly. Reverse-tunnels over HTTPS with per-tenant tokens, mTLS, quotas, and built-in Let's Encrypt.

Windows
Host NINA.Relay.Server on a public VPS (Linux). The rig side needs nothing extra.
Linux
Run the Linux x64/arm64 build on a VPS with a domain and ports 80/443 open.
Get it ↗

Remote terminal

optional

Browser-based SSH from the Polaris tab to restart services on a headless host. Set Terminal:Enabled = true in appsettings.json.

Windows
Add-WindowsCapability -Online -Name OpenSSH.Server, then start sshd.
Linux
sudo apt install openssh-server (already present on Raspberry Pi OS).
Get it ↗

Stellarium sync

optional

Pull the currently selected object from Stellarium into the SKY tab as a target.

Windows
Enable Plugins then Remote Control, bind to 127.0.0.1:8090.
Linux
Same: enable the Remote Control plugin on 127.0.0.1:8090.
Get it ↗