Skip to content

Package the app/daemon as a .deb #15

Closed

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.

Activity

  1. BernardJen commented on Sep 8, 2026

    @BernardJen
    ContributorAuthor

    Shipped in v1.0.0: the daemon + GUI are packaged as penplotter271__arm64.deb by the release workflow (packaging/, nfpm) and installed on the Pi with apt. See the README deployment section.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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