<feed xmlns='http://www.w3.org/2005/Atom'>
<title>luke/ansible-roles/mattertimesync/build/defaults, branch main</title>
<subtitle>Ansible roles for nth.io infrastructure
</subtitle>
<id>https://src.nth.io/luke/ansible-roles/atom?h=main</id>
<link rel='self' href='https://src.nth.io/luke/ansible-roles/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://src.nth.io/luke/ansible-roles/'/>
<updated>2026-07-26T21:05:40+00:00</updated>
<entry>
<title>build roles: stage checkouts + artifacts under build_work_dir</title>
<updated>2026-07-26T21:05:40+00:00</updated>
<author>
<name>Luke Hoersten</name>
<email>luke@hoersten.org</email>
</author>
<published>2026-07-26T21:05:40+00:00</published>
<link rel='alternate' type='text/html' href='https://src.nth.io/luke/ansible-roles/commit/?id=a173d5c8f149b4dde505fd4ab5257fb4cbc6911e'/>
<id>urn:sha1:a173d5c8f149b4dde505fd4ab5257fb4cbc6911e</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>mattertimesync: add build + server roles</title>
<updated>2026-07-26T16:49:11+00:00</updated>
<author>
<name>Luke Hoersten</name>
<email>luke@hoersten.org</email>
</author>
<published>2026-07-26T16:49:11+00:00</published>
<link rel='alternate' type='text/html' href='https://src.nth.io/luke/ansible-roles/commit/?id=1566ed593907c829827237aad924c3f527723218'/>
<id>urn:sha1:1566ed593907c829827237aad924c3f527723218</id>
<content type='text'>
Build role compiles the tagged source on the build host (npm ci + npm run
bundle) into a versioned mattertimesync-&lt;ver&gt;.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 &gt;=20.
</content>
</entry>
</feed>
