v1.7.104 shipped ISOs whose units crash-looped (nostr-relay 3s loop, archipelago-diag 203/EXEC) because build-time extraction failures were mere warnings and the cached rootfs never tracked its recipe: - hash the rootfs-defining region of the build script and rebuild when it changes (stale cache shipped ISOs without wpasupplicant/iw/rfkill) - refuse to build without nvpn / nostr-rs-relay unless ALLOW_MISSING_VPN_BINARIES=1 - ConditionPathExists on nostr-relay/nostr-vpn/diag units so a stripped image skips them instead of crash-looping - post-install test: every enabled archipelago*/nostr* unit must have an existing ExecStart payload Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
751 B
Desktop File
28 lines
751 B
Desktop File
[Unit]
|
|
Description=Archipelago Private Nostr Relay
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
Before=nostr-vpn.service
|
|
# An ISO built without the relay binary (registry unreachable at build time)
|
|
# must not crash-loop every 3s forever — skip cleanly instead.
|
|
ConditionPathExists=/usr/local/bin/nostr-rs-relay
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=archipelago
|
|
ExecStartPre=/bin/bash -c 'mkdir -p /var/lib/archipelago/nostr-relay'
|
|
ExecStart=/usr/local/bin/nostr-rs-relay --config /var/lib/archipelago/nostr-relay/config.toml
|
|
Restart=always
|
|
RestartSec=3
|
|
TimeoutStopSec=10
|
|
|
|
# Resource limits — relay is lightweight (in-memory mode)
|
|
MemoryMax=512M
|
|
LimitNOFILE=4096
|
|
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|