Skip to content

Debian Deployment Workflow

github-actions[bot] edited this page Sep 14, 2026 · 1 revision

Release and Debian Package Deployment Guide

This document outlines the complete release lifecycle for maintainers, the CI/CD build and APT repository pipeline, and target system installation instructions.


1. How to Cut a New Release (Maintainer Guide)

Official releases follow the version pattern indi_vyyyy.mm.xx (e.g. indi_v2026.09.01). The indi_v* tag prefix is required to trigger the automated GitHub Actions packaging workflow.

To cut a new official release, run the following commands from the repository root:

# 1. Bump the version across all codebase manifests (indi_allsky/version.py, package.json, base.html, debian/changelog)
npm run version:bump -- indi_v2026.09.01

# 2. Stage and commit the bumped version
git add -u
git commit -m "Release indi_v2026.09.01"

# 3. Create an annotated git tag (must match indi_v* to trigger CI/CD packaging)
git tag -a indi_v2026.09.01 -m "Release indi_v2026.09.01"

# 4. Push branch and tag to trigger the automated CI/CD release workflow
git push origin main --tags

2. End-User Installation via APT Repository

Users can install and maintain indi-allsky on Raspberry Pi OS, Debian, and Ubuntu directly via apt.indi-allsky.org.

Step 1: Add the GPG Keyring

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://apt.indi-allsky.org/key.gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/indi-allsky.gpg
sudo chmod a+r /etc/apt/keyrings/indi-allsky.gpg

Step 2: Add Repository Source (DEB822 format)

Stable Channel (Recommended for Production)

sudo tee /etc/apt/sources.list.d/indi-allsky.sources <<EOF
Types: deb
URIs: https://apt.indi-allsky.org
Suites: $(lsb_release -cs)
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/indi-allsky.gpg
EOF

Nightly Channel (Bleeding-Edge Development)

sudo tee /etc/apt/sources.list.d/indi-allsky-nightly.sources <<EOF
Types: deb
URIs: https://apt.indi-allsky.org
Suites: $(lsb_release -cs)
Components: nightly
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/indi-allsky.gpg
EOF

Step 3: Install

sudo apt update
sudo apt install -y indi-allsky

3. Headless / Automated Zero-Touch Deployment

For automated provisioning (Ansible, cloud-init, unattended scripts), Debconf prompts can be pre-seeded before running apt install:

# Pre-seed Debconf configuration
sudo debconf-set-selections <<EOF
indi-allsky indi-allsky/camera_interface select indi
indi-allsky indi-allsky/ccd_driver select indi_asi_ccd
indi-allsky indi-allsky/http_port string 80
indi-allsky indi-allsky/https_port string 443
indi-allsky indi-allsky/web_user string admin
indi-allsky indi-allsky/web_pass password secretpassword
indi-allsky indi-allsky/web_pass_confirm password secretpassword
indi-allsky indi-allsky/latitude string 40.7128
indi-allsky indi-allsky/longitude string -74.0060
indi-allsky indi-allsky/timezone string America/New_York
indi-allsky indi-allsky/oidc_enable boolean false
EOF

# Unattended non-interactive install
sudo DEBIAN_FRONTEND=noninteractive apt install -y indi-allsky

4. Service Lifecycle & Management

The Debian package installs and manages native systemd user/system services:

  • gunicorn-indi-allsky.socket / gunicorn-indi-allsky.service: Web UI dashboard server.
  • indi-allsky.service: Camera capture, keogram, startrail, and processing daemon.
  • indiserver.service: Local INDI driver server (activated when INDI camera/sensors are configured).

Useful Service Commands:

# Control services and view logs via indi-allsky-ctl utility
indi-allsky-ctl status
indi-allsky-ctl restart
indi-allsky-ctl logs

See the indi-allsky-ctl documentation for complete command reference (user management, database backups, driver pinning, permissions repair).


5. Upgrades & Uninstallation

  • Upgrades:

    sudo apt update && sudo apt upgrade -y
    • Upgrades virtualenv packages and binaries in seconds.
    • Preserves user customizations in /etc/indi-allsky/flask.json.
    • Automatically reuses existing configuration without holding or prompting for input.
    • Runs database migrations and reloads services automatically.
    • Run sudo dpkg-reconfigure indi-allsky at any time to modify settings interactively.
  • Purge / Clean Removal:

    sudo apt purge indi-allsky indi-allsky-web
    • Removes all configuration files, databases, logs, and system users.
    • See Uninstall indi-allsky for complete details.
  • Migration:

    • If upgrading an existing installation that was installed with setup.sh, see the Migration Guide.

Clone this wiki locally