Skip to content

Package the app/daemon as a .deb #15

Description

@BernardJen

Summary

Build and distribute the app + gateway daemon as a Debian package (.deb) so the Raspberry Pi (and other Debian/Ubuntu hosts) can install/upgrade it cleanly instead of the current rsync + manual rebuild + service-setup flow.

Motivation

The Pi is currently deployed by rsync from the laptop, then a manual rebuild and a hand-rolled systemd setup via gateway/install.sh (see README). A .deb gives versioned install/upgrade/remove, dependency declaration, and proper service registration through the standard package manager — and pairs naturally with the in-app updater (#13).

What the package should do

  • Install the built GUI (dist/) and the gateway daemon.
  • Install/enable the plotter-gateway systemd service (replacing the manual setup in gateway/install.sh).
  • Declare runtime dependencies (Node, serial access / dialout group, udev rule for a stable device path).
  • Apply the always-on power profile and mDNS bits currently handled by the installer, where appropriate.
  • Carry a real version so install/upgrade/remove behave correctly.

Acceptance criteria

  • A repeatable build produces a versioned .deb.
  • Installing the .deb on the Pi sets up the GUI, daemon, and systemd service.
  • Dependencies (Node, serial access, udev rule) are declared/handled by the package.
  • Upgrading via the package preserves persisted state (plotter state, settings).
  • Removing the package cleans up the service.

Notes

  • Fold in the logic from gateway/install.sh (service unit, dialout membership, udev rule, power profile, mDNS).
  • The native serialport binding must build/ship correctly for the Pi architecture (arm).
  • Pairs with the updater (In-app updater (local machine and Raspberry Pi) #13) — the updater can drive package upgrades instead of rsync/rebuild.
  • ARM target (Raspberry Pi) is primary; document/support amd64 if the laptop should also install it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions