Skip to content

Installation and Operations

iliyan85 edited this page Jul 9, 2026 · 1 revision

Installation and Operations

This page documents the installed layout and lifecycle behavior for AISMixer and nmea_sproxy.

AISMixer Layout

Installed AISMixer files use:

/opt/aismixer
/etc/aismixer
/etc/aismixer/keys
/etc/systemd/system/aismixer.service
/usr/local/bin/aismixerctl
/run/aismixer

The repository-managed systemd unit contains:

Description=AISMixer Service
RuntimeDirectory=aismixer
RuntimeDirectoryMode=0755

It does not define User=, Group=, DynamicUser=, or a dedicated service account.

/run/aismixer is temporary runtime state. systemd creates it before the installed service starts and removes it after service stop.

AISMixer Lifecycle Scripts

The scripts are root/sudo aware. Root runs privileged operations directly. A non-root user uses sudo when available. A non-root user without sudo receives an early error.

install.sh:

  • installs runtime files to /opt/aismixer;
  • installs the repository-managed unit to /etc/systemd/system/aismixer.service;
  • installs /usr/local/bin/aismixerctl;
  • preserves existing /etc/aismixer/config.yaml and /etc/aismixer/udp_alias_map.yaml;
  • preserves existing server keys;
  • creates authorized_keys.yaml only when missing;
  • reloads systemd;
  • enables but does not start AISMixer.

update.sh:

  • refreshes installed runtime files;
  • refreshes the systemd unit and aismixerctl wrapper;
  • does not modify /etc/aismixer;
  • reloads systemd;
  • restarts AISMixer.

uninstall.sh:

  • stops and disables AISMixer when present;
  • removes /opt/aismixer, the unit, and /usr/local/bin/aismixerctl;
  • preserves /etc/aismixer by default;
  • removes /etc/aismixer, including configuration and keys, only with --purge-config.

AISMixer Operations

Run directly from the main repository:

python3 aismixer.py

Installed service workflow:

./install.sh
systemctl start aismixer
systemctl status aismixer

The optional runtime control socket remains disabled unless control.unix.enabled: true is configured. See Runtime Routing Control.

nmea_sproxy Layout

Installed nmea_sproxy files use:

/opt/nmea_sproxy
/etc/nmea_sproxy
/etc/nmea_sproxy/config.yaml
/etc/nmea_sproxy/instances
/etc/nmea_sproxy/keys
/etc/systemd/system/nmea_sproxy.service
/etc/systemd/system/nmea_sproxy@.service

The singleton service reads /etc/nmea_sproxy/config.yaml.

Template instances read:

/etc/nmea_sproxy/instances/<operator-name>.yaml

nmea_sproxy Lifecycle Scripts

nmea_sproxy/install.sh:

  • installs runtime files to /opt/nmea_sproxy;
  • creates /etc/nmea_sproxy, /etc/nmea_sproxy/instances, and /etc/nmea_sproxy/keys;
  • preserves existing singleton config and keys;
  • generates or repairs station public key material without overwriting an existing private key;
  • installs singleton and template systemd units;
  • enables only the singleton service;
  • starts no services automatically.

nmea_sproxy/update.sh refreshes runtime and unit files, leaves /etc/nmea_sproxy untouched, and does not restart singleton or template instances automatically.

nmea_sproxy/uninstall.sh stops/disables services, removes runtime and unit files, and preserves /etc/nmea_sproxy by default. Use --purge-config to remove configuration and keys.

Clone this wiki locally