src.nth.io/

summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
22 hoursbuild roles: create build_work_dir and redirect caches per-roleHEADmainLuke Hoersten5-0/+74
Each build role now creates build_work_dir itself and sets its own toolchain's cache env (GOPATH/GOCACHE/GOMODCACHE, CARGO_HOME, npm cache, MIX/HEX) on its build tasks, so the roles are self-contained instead of relying on a play-level environment and pre_task.
23 hoursbuild roles: force real tarballs for single-file artifactsLuke Hoersten3-0/+9
community.general.archive (>=10) compresses a lone file into a bare .gz instead of a tarball, so the mattertimesync/bin/nostr artifacts failed the server-side unarchive. Set force_archive: true so the archive module emits a real single-member .tar.gz, consistent with the multi-file dendrite/pleroma builds.
23 hoursnodejs: map kernel arch to Node's dist arch namesLuke Hoersten1-1/+6
Node release tarballs use arm64/x64, not the kernel's aarch64/x86_64, so the download URL 404'd on the arm64 Pis. Map the common arches and fall back to the raw architecture value.
23 hoursbuild roles: stage checkouts + artifacts under build_work_dirLuke Hoersten10-16/+16
Move every build role's working dir off /tmp (the SD card) to {{build_work_dir}}, which the playbook points at the SSD on the build host. nostr and pleroma stage their artifacts inside their own build dirs so the shared work dir can't collide, while preserving the archive top-level names (relayer, release) that the server roles depend on.
27 hoursmattertimesync: add build + server rolesLuke Hoersten10-0/+198
Build role compiles the tagged source on the build host (npm ci + npm run bundle) into a versioned mattertimesync-<ver>.tar.gz in build_srv_dir. Server role installs the single bundled .mjs, creates the mattertimesync service user and a 0700 storage dir for the Matter fabric keys, templates config.json, and runs a hardened oneshot sync via a systemd timer. Both roles depend on the nodejs role for Node >=20.
29 hoursopenhop/repeater: add MeshCore repeater roleLuke Hoersten9-0/+272
Deploys the openHop MeshCore repeater on a Raspberry Pi with a RAK6421 WisMesh Pi HAT: installs the daemon into a venv from a versioned git tag, templates config.yaml and a systemd unit, and loads board pin maps and RF region presets by name from vars/. identity_file is configurable and defaults to null (daemon generates its own keypair).
7 daysgit/web: support cgit head-include for viewport metaLuke Hoersten2-1/+10
2026-06-29certbot: scoped CF API token; gate prosody deploy hook on RENEWED_LINEAGELuke Hoersten2-4/+23
cred.conf.j2 now emits the single-line dns_cloudflare_api_token form (scoped Cloudflare API Token) instead of the legacy account-wide email + global API key. prosody.sh.j2 deploy hook now no-ops unless $RENEWED_LINEAGE matches the prosody vhost, so unrelated lineage renewals (haskell.social, etracapital.com) no longer report a spurious "Hook reported error code 1 / No certificate for host found". Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-04-25Only run pleroma migrate on version change or first installLuke Hoersten1-1/+6
2026-04-25Build all roles from source with versioned artifactsLuke Hoersten21-87/+177
- Add pleroma/build role to compile from source (OTP binaries no longer published) - Install Elixir 1.18.3 manually on Ubuntu Noble (ships 1.14, needs 1.15+) - Standardize all build roles to produce versioned .tar.gz artifacts - Add version defaults to all server roles (bin, dendrite, nostr/relayer) - Switch server roles from get_url to unarchive for .tar.gz installs - Add build_srv_dir variable to all build roles - Deploy pleroma styles.json so custom FE themes appear in picker - Fix pleroma OTP install: version check, root ownership, auto-cleanup old releases - Fix pleroma config: log level :warn -> :warning, remove availableStyles - Add wait_for grafana readiness before dashboard install - Set minecraft ops changed_when: false
2026-04-19Add cgit favicon deploy taskLuke Hoersten1-0/+5
2026-04-19Make cgit source-filter path configurable, add deploy taskLuke Hoersten2-1/+7
2026-04-18Remove nginx config tasks from git/web role, make owner discovery recursiveLuke Hoersten2-20/+3
2026-04-18Make cgit theme configurable via variables, fix owner discoveryLuke Hoersten2-1/+45
Add cgit_css_src, cgit_header_src, cgit_footer_src, cgit_owner variables to optionally install a custom theme without hardcoding nth.io. Move scan-path after enable-git-config in cgitrc so gitweb.owner is read from repo git configs. Switch repo owner loop from find|while to glob for loop to avoid subshell issues.
2026-04-18Use checksum-based rsync for nginx root file syncLuke Hoersten1-1/+4
2026-04-18Add nginx permanent redirects for old Mercurial /file/tip/ paths to cgit /tree/Luke Hoersten1-0/+5
2026-04-18Fix cgit duplicate repo name in URLs by setting virtual-root=/Luke Hoersten1-0/+1
2026-04-18Rename unifi role to unifi-controllerLuke Hoersten4-5/+5
2026-04-15Update all references from doorbell-viewport to unifi-protect-viewportLuke Hoersten8-133/+133
2026-04-15Rename doorbell-viewport role to unifi-protect-viewportLuke Hoersten8-0/+0
2026-04-15Replace real camera ID with placeholder in READMELuke Hoersten1-1/+1
2026-04-14Minor daemon cleanup: drop inspect shim, module-level SSL ctx, rename ws_headersLuke Hoersten1-14/+6
2026-04-14Further simplify doorbell-viewport daemonLuke Hoersten1-20/+13
- Flatten DisplayController: remove _set() middle layer - Inline on_ring() into _handle_protect_event (was a 2-line wrapper) - Collapse triggered flag in touch monitor to single boolean expression
2026-04-13Remove vcgencmd display backend, simplify DisplayControllerLuke Hoersten5-127/+54
Always use sysfs backlight. vcgencmd resets DRM planes under fkms making it incompatible with the drm video output. Removes libraspberrypi-bin dependency and panel/vcgencmd dead code.
2026-04-13Remove warm prebuffer mode from doorbell-viewportLuke Hoersten3-26/+5
Always start mpv on demand (cold start). The warm path was fragile on the RPi4 with fkms and added complexity without reliable benefit.
2026-04-12Switch doorbell-viewport to cold start, add backlight diagnosticsLuke Hoersten2-3/+4
- prebuffer_mode=cold: mpv starts on demand at ring/touch event - Add tty group to service user for DRM TTY access - Log backlight brightness changes for diagnostics - Remove --really-quiet suppression during debug (now restored)
2026-04-12Fix doorbell-viewport display and ring detectionLuke Hoersten2-3/+19
- Switch to sysfs backlight (drm backend) to avoid DRM plane reset on display power cycle caused by vcgencmd display_power - Add udev rule and sysfs permissions for rpi_backlight - Fix multi-packet WebSocket decoder (ring events were being dropped) - Fix mpv loop/cache flags (--loop=no, bounded --demuxer-max-bytes) - Remove hardware decode (caused SIGSEGV on RPi4 with fkms)
2026-04-12Fix doorbell-viewport bringup issuesLuke Hoersten3-46/+112
- Fix websockets headers kwarg via inspect (works across all versions) - Use full path /usr/bin/vcgencmd; add libraspberrypi-bin dependency - Fix UniFi Protect WS packet decoder to handle multiple concatenated packets per message (action+data in single frame) - Fetch lastUpdateId from bootstrap for WS URL - Switch fbcon disable from video=HDMI-A-1:D to fbcon=map:99 (fkms compat) - Default drm_connector to DSI-1 for fkms; drop hardcoded drm_mode - Add --no-audio and --hwdec=no to mpv; fix DRM mode-setting race on startup - Add PoE HAT fan control with configurable temp thresholds
2026-04-12Add .gitignore for Emacs backup filesLuke Hoersten1-0/+1
2026-04-12Add nofail to block-device mount optionsLuke Hoersten1-1/+1
Prevents emergency mode on boot if the external drive is absent.
2026-04-12Add doorbell-viewport roleLuke Hoersten8-0/+1222
RPi4 portrait touchscreen that shows a live UniFi Protect RTSP stream on doorbell ring or touch, with display fully off at idle. Supports warm prebuffer, vcgencmd/drm/panel display backends, evdev touch input, and configurable DRM device/connector/mode.
2026-04-05Add no_log to nostr relayer DB schema taskLuke Hoersten1-0/+1
2026-04-05Harden role security: file permissions, service binding, no_log, strict defaultsLuke Hoersten11-8/+15
- Add no_log: true to tasks that handle passwords/secrets - Tighten config file permissions (0644 -> 0600/0640 where appropriate) - Bind pleroma to 127.0.0.1 instead of 0.0.0.0 - Tighten ergo unix socket mode 0777 -> 0770 - Remove weak defaults; roles now fail explicitly if required vars not set
2026-04-05Add re-key support for soju and postgresqlLuke Hoersten2-0/+8
- soju: add change-password task so admin password updates on every playbook run via sojudb change-password - postgresql: remove superuser password task — postgres uses peer auth (Unix socket), no password needed or desired
2026-04-05Parameterize cgitrc root-title and root-descLuke Hoersten1-2/+2
2026-04-05Switch cgitrc to scan-path on git/public/ with remove-suffixLuke Hoersten1-4/+1
2026-04-05Add git/aws-s3-backup and git/web (cgit) rolesLuke Hoersten12-5/+174
2026-03-28Removed sojuctl ansible commands. configure via client.Luke Hoersten1-25/+0
2026-03-28Added soju role.Luke Hoersten11-4/+153
2026-03-28Fixed anisble info lookup.Luke Hoersten2-3/+3
2026-03-27Fixed paper build URL and nginx logging off.Luke Hoersten5-11/+12
2026-03-25Update versions and fix nginx logging.Luke Hoersten8-10/+15
2026-03-23Changed reg for koreader to false.Luke Hoersten1-1/+1
2026-03-23More fxiesLuke Hoersten4-4/+13
2026-03-23Fixed log rotation and log2ram sizing.Luke Hoersten14-15/+81
2026-03-23Added KOReaderLuke Hoersten3-8/+16
2026-03-23Iniital KOReader sync roleLuke Hoersten4-1/+68
2026-03-23Added missing become for transmission.Luke Hoersten1-0/+1
2025-09-17Fixed jellyfin.Luke Hoersten3-4/+13
2025-08-03Updated blockdevice mount properties.Luke Hoersten1-0/+2