Seestar ALP is a community project that brings a web UI, automation, and INDI support to ZWO SeeStar telescopes. The catch is that “getting it running” on a fresh Debian based machine can turn into a small scavenger hunt:
- Which system packages do I actually need?
- How do I keep Python installs isolated?
- Why is
pyindifailing and cannot findindi.dtd? - What is the right order to start FIFO,
indiserver, INDI devices, and app?
I wanted something I could run my Debian machine and get to a working session fast, then rerun later without surprises.
That is what seestar-alp-launcher is: a Debian friendly wrapper over upstream seestar_alp that makes it easy to setup and launch everything that’s needed.
You can get it here:
Upstream projects this wraps:
Here’s how it works:
- Installs required Debian packages (INDI and Python tooling)
- Clones or updates the upstream
seestar_alprepo into./seestar_alp - Creates a local virtualenv in
./.venv(no systempipinstalls) - Installs the
pyINDIfork required byseestar_alp - Applies a small
indi.dtdsymlink fix inside the venv - Ensures the required
seestar_alp/device/config.tomlexists - Starts an observing session with clean startup and teardown
If you have ever had a setup work one night and break after a random upgrade or half remembered tweak, you know why this matters.
After running ./setup.sh, the directory structure should look like this:
seestar-alp-launcher/
setup.sh
run.sh
.gitignore
.venv/ # local Python virtual environment
seestar_alp/ # cloned upstream project (git repo)
root_app.py
indi/start_indi_devices.py
device/config.toml.example
device/config.toml # generated from example
logs/ # created on demand
Setup (one-time)
From the seestar-alp-launcher directory:
chmod +x setup.sh run.sh
./setup.sh
What setup.sh does:
- Installs apt packages: python3-venv, python3-pip, git, indi-bin, plus build tools.
- Clones or updates seestar_alp into ./seestar_alp.
- Creates or repairs ./.venv and upgrades pip tooling.
- Installs the pyINDI fork.
- Fixes pyindi looking for indi.dtd under pyindi/device/data/ by creating a symlink.
- Initializes a configuration file and creates a directory for logs.
Run (each session)
Start a session:
./run.sh
What run.sh does:
- Activates the local venv (./.venv).
- Ensures the FIFO exists at /tmp/seestar (creates it if missing).
- Starts indiserver on port 7624 using that FIFO.
- Runs seestar_alp/indi/start_indi_devices.py.
- Launches seestar_alp/root_app.py.
- On exit (or Ctrl-C), stops the indiserver it started.
The run script can be configured using environment variables:
If port 7624 is busy or you want a different port:
INDI_PORT=7625 ./run.sh
By default, run.sh uses ./seestar_alp. If you want to point it elsewhere:
APP_DIR="/path/to/seestar_alp" ./run.sh
Configuring Stellarium
Stellarium can control mounts and show telescope position via INDI. This launcher starts indiserver (default port 7624), which is what Stellarium connects to.
Step 1. Install Stellarium
On Debian:
sudo apt update
sudo apt install -y stellarium
Some Debian builds package the INDI plugin separately. If you do not see any telescope or INDI options in Stellarium after installing, search available packages for “stellarium” and “indi” and install the matching plugin.
Step 2. Start your INDI session first
In this repo:
./run.sh
Leave it running.
Step 3. Point Stellarium at the INDI server
In Stellarium:
- Open the Configuration window (F2).
- Go to the Plugins tab.
- Select the Telescope Control plugin.
- Check “Load at startup” (optional) and restart Stellarium.
- Add a telescope using an INDI connection:
- Host: 127.0.0.1 (if Stellarium is on the same machine)
- Port: 7624 (or whatever you set via INDI_PORT)
- Save/apply, then connect.
Closing thoughts
This repo is not meant to be fancy. It is meant to be boring in the best way: run setup once, run sessions reliably, and keep the moving parts small and auditable.
If you try it and find a Debian flavor, INDI package quirk, or seestar_alp change that breaks the flow, issues and PRs are welcome.