Commit Graph
10 Commits
Author SHA1 Message Date
davidandClaude Sonnet 5.5 6f0508fae9 Run apt autoremove as its own task and manage meshfirmware via Ansible
apt's autoremove option is not reliably honoured alongside upgrade:, so
upgrade.yml now runs it separately. meshfirmware is cloned/updated by the
scripts role (as the remote user) from both site.yml and upgrade.yml.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-30 22:04:47 +00:00
davidandClaude Sonnet 5.5 f62a69344e Use Tailscale IPs for ansible_host so inventory works without MagicDNS
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-29 23:02:51 +00:00
davidandClaude Sonnet 5.5 673cedb6b3 Add CLAUDE.md with repo guidance
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-29 22:56:02 +00:00
davidandClaude Sonnet 5.5 5d2569106e Add upgrade playbook and wrapper script for apt dist-upgrade on all nodes
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-29 22:55:26 +00:00
davidandClaude Sonnet 5 6173bf3ac2 Document dotminipc Docker capture node and its 2026-07-27 config-format outage
The upstream image switched from .env.local to TOML config, which silently
broke the dotminipc container; record what happened and where its config
lives now, since it shares the same upstream software as the Pi fleet.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-27 21:30:03 +01:00
davidandClaude Sonnet 5 cd1ee3631d Fix become-precedence bug, dead Tailscale install path, and make meshcore config self-sufficient
- ansible_become: true as a group_vars connection variable silently took
  precedence over every task-level `become: false` in this repo, so
  every "unprivileged" task (pipx installs, user script deploys,
  legacy .env.local writes) was actually running as root the whole
  time. Move become to a play-level keyword in site.yml instead, which
  correctly loses to a task's own become: false. Also stop relying on
  ansible_env.HOME (which reflected root's home once facts were
  gathered under the old broken setup) and use /home/{{ remote_user }}
  directly, with explicit owner/group so ownership self-heals.
- meshcore_capture: 99-user.toml.j2 now defines every broker
  (including letsmesh-us/eu) fully rather than assuming
  config.d/10-letsmesh.toml was auto-installed — that preset only gets
  created on some install paths (fresh install) and not others
  (migrate), so the old partial-override form silently dropped
  brokers on migrated nodes.
- base: install libffi-dev/pkg-config on armv6 (Pi Zero W) — cffi has
  no prebuilt wheel for that architecture and fails to compile
  without the headers.
- dm-ashwell: migrated off the legacy layout to the current
  installer's system-service layout; drop its layout override now
  that it matches the group default.
- meshcore-capture-update.sh: fix a YAML folded scalar (>-) collapsing
  the shebang and command onto one line, corrupting the script.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-07 06:32:37 +01:00
davidandClaude Sonnet 5 1121835678 Finish dm-edworth bootstrap: fix Tailscale install, add system-layout meshcore_capture support
- base: Tailscale's per-codename .nosetup.sh install scripts are gone
  (404); switch to the universal tailscale.com/install.sh, and split
  install/enable (always) from auth (only when a key is given) so a
  node without an authkey still gets Tailscale installed, just not
  authenticated.
- meshcore_capture: the current upstream installer (v2.0.0+, what a
  fresh install now produces) uses a completely different layout than
  dm-baldock/dm-ashwell's older flat ~/.meshcore-packet-capture setup —
  dedicated system user, /opt + /etc/meshcore-packet-capture,
  config.d/*.toml, meshcore-packet-capture.service. Added
  meshcore_capture_layout (system/legacy) so the role targets the right
  paths/service name per host without touching the two working legacy
  nodes. New 99-user.toml.j2 replicates the old MQTT broker coverage
  (letsmesh us/eu, meshrank, ukmesh, meshmapper) in the new config.d
  override format.
- dm-edworth: fill in serial_port now that the MeshCore device is
  connected; confirmed running and publishing to all 5 brokers.
- README: fix broken list formatting, document the installer's
  required manual step and why.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-06 22:39:08 +01:00
davidandClaude Sonnet 5 77562b1591 Document the Raspberry Pi Imager customisation gotcha and current repo layout
1.9.6 (the newest Flathub offers) silently no-ops on cloud-init
customisation for this Trixie image, only writing the kernel
regdomain cmdline param — looks exactly like a wifi bug but is really
a missing-credentials-on-the-card bug. Also brings the README's
host_vars paths, vault usage, and role list up to date with the
wifi role / vault work.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-06 21:17:39 +01:00
davidandClaude Sonnet 5 a1ba1a9603 Add ansible-managed wifi profiles for meshcore nodes
Each node now gets three NetworkManager wifi connections via a new
wifi role: dotnetwork (home), dotmobile (phone hotspot, for field
troubleshooting), and a host-specific deployed-location network.
Credentials live in a new per-repo ansible-vault (group and host
scoped), matching the pattern already used in dotnetwork.

Also updates the README's Pi imaging instructions from Bookworm to
Trixie, matching what the nodes actually run.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-06 20:07:26 +01:00
davidandClaude Sonnet 5 5927563551 Add passwordless SSH login for dotlaptop keys to base role
Mirrors the authorized_key task already used in dotnetwork's dotserver
playbook, so both partitions on this laptop can log into the meshcore
nodes without a password.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-07-06 19:15:39 +01:00