<feed xmlns='http://www.w3.org/2005/Atom'>
<title>meshbay.git/packaging/build/build-hub.sh, branch 0.13</title>
<subtitle>MeshBay — read-only public mirror</subtitle>
<id>https://git.meshbay.org/meshbay.git/atom?h=0.13</id>
<link rel='self' href='https://git.meshbay.org/meshbay.git/atom?h=0.13'/>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/'/>
<updated>2026-09-02T09:22:23Z</updated>
<entry>
<title>fix(packaging): ship the example hub config, and stop leaving /etc/meshbay open</title>
<updated>2026-09-02T09:22:23Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-09-02T09:22:23Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=19a7201d1d911c9f25bc112a3e0d2218eb6c14a2'/>
<id>urn:sha1:19a7201d1d911c9f25bc112a3e0d2218eb6c14a2</id>
<content type='text'>
Three defects, found while answering whether installing the .deb would land
where the production server was just moved to by hand.

- **The example config was never packaged.** `build-hub.sh` copied
  `packaging/conf/hub.toml.example` under `if [ -f ]`, and that path does not
  exist in this repo — so every package ever built shipped no example at all
  and said nothing about it. The postinst places no config either, on purpose
  (a shipped hub.toml is overwritten on upgrade; a shipped secret gets run in
  production), which left an installed hub with nothing to copy from. The file
  now exists, documents every key `config.py` reads including the captcha
  `allowed_hosts` the desktop client needs, and the copy is a hard failure
  rather than a silent skip.

- **`/etc/meshbay` was created 0755.** It holds the hub's Ed25519 private key
  and its database password. The file modes protect the contents, but a
  world-listable config directory tells anyone with a shell what a hub keeps
  and where. Now 0750 root:meshbay, in both the deb postinst and the rpm
  scriptlet; the service reads it by group.

- **The rpm would have failed to build on the new file.** `%files` claimed
  nothing under /etc, and rpmbuild refuses an installed file no line claims.
  It now declares the directory and the example, with explicit `%attr` and
  `%config` so an operator's edits become .rpmsave rather than vanishing.

Package modes no longer follow the builder's umask either — the same source
tree produced 775/664 on a machine with umask 002 and 755/644 with 022.
`install -m` sets them.

Verified by building: the deb now carries ./etc/meshbay/ at drwxr-x--- with
hub.toml.example at 0644, and the embedded postinst tightens the directory as
belt and braces rather than as the only thing making it right. The rpm path is
unverified — no rpmbuild on this machine.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_014UtzVrzM7e2tG9fSpkR9ML
</content>
</entry>
<entry>
<title>feat(packaging): 4-package .deb/.rpm build system under /opt</title>
<updated>2026-08-31T08:49:45Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-31T08:49:45Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=8d5c564e75ad2928e77ea66decc979366ca5ccd5'/>
<id>urn:sha1:8d5c564e75ad2928e77ea66decc979366ca5ccd5</id>
<content type='text'>
Shared venv architecture: meshbay-common owns the Python venv with all
pip deps pre-installed; hub and node add only their code into it.
Client is a standalone Electron app. No pip runs at install time.

- Add build scripts (packaging/build/) for common, hub, node, client
- Add orchestrator build-packages.sh with deb/rpm auto-detection
- Add .deb control/postinst for all 4 packages
- Add .rpm specs for all 4 packages (replaces python3-meshbay-common)
- Add Gnome .desktop launcher and icon resizing
- Add firewalld services (meshbay-cast, meshbay-node) and UFW profiles
- Update systemd units to use /opt/meshbay-common/venv/bin/ paths
- TMDB token baked into node package at build time via QE/node.env
- Fix package-lock.json sync for protobufjs override

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
