feat: ISO networking stack — relay + nvpn v0.3.7 + WireGuard
Add nostr-rs-relay as native system service (port 7777) for VPN signaling. Every node runs its own private relay from first boot. Update nvpn binary from v0.3.4 to v0.3.7 (fixes mesh event processing). Add WireGuard helper and address service for peer VPN. First-boot script configures relay, nvpn identity, relay URLs (direct + Tor onion), and syncs daemon config. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -370,6 +370,8 @@ COPY archipelago-tor-helper.service /etc/systemd/system/archipelago-tor-helper.s
|
||||
COPY archipelago-tor-helper.path /etc/systemd/system/archipelago-tor-helper.path
|
||||
COPY nostr-vpn.service /etc/systemd/system/nostr-vpn.service
|
||||
COPY archipelago-wg-address.service /etc/systemd/system/archipelago-wg-address.service
|
||||
COPY nostr-relay.service /etc/systemd/system/nostr-relay.service
|
||||
COPY nostr-relay-config.toml /etc/archipelago/nostr-relay-config.toml
|
||||
|
||||
# WireGuard kernel module auto-load on boot
|
||||
RUN echo "wireguard" >> /etc/modules-load.d/wireguard.conf
|
||||
@@ -396,6 +398,7 @@ RUN systemctl enable NetworkManager || true && \
|
||||
systemctl enable archipelago-doctor.timer || true && \
|
||||
systemctl enable archipelago-reconcile.timer || true && \
|
||||
systemctl enable archipelago-tor-helper.path || true && \
|
||||
systemctl enable nostr-relay || true && \
|
||||
systemctl enable nostr-vpn || true && \
|
||||
systemctl enable archipelago-wg-address || true
|
||||
|
||||
@@ -403,10 +406,11 @@ RUN systemctl enable NetworkManager || true && \
|
||||
RUN rm -f /usr/sbin/policy-rc.d
|
||||
|
||||
# Create directories (including Cloud storage for FileBrowser)
|
||||
RUN mkdir -p /var/lib/archipelago/{data,config,containers} && \
|
||||
RUN mkdir -p /var/lib/archipelago/{data,config,containers,nostr-relay,nostr-vpn} && \
|
||||
mkdir -p /etc/archipelago && \
|
||||
mkdir -p /opt/archipelago/{bin,scripts,web-ui} && \
|
||||
mkdir -p /var/lib/archipelago/data/cloud/{Documents,Photos,Music,Videos,Downloads} && \
|
||||
cp /etc/archipelago/nostr-relay-config.toml /var/lib/archipelago/nostr-relay/config.toml && \
|
||||
chown -R archipelago:archipelago /var/lib/archipelago /opt/archipelago
|
||||
|
||||
# Clean up
|
||||
@@ -495,6 +499,16 @@ NGINXCONF
|
||||
echo " Using archipelago-wg-address.service from configs/"
|
||||
fi
|
||||
|
||||
# Copy private Nostr relay service (native, for NostrVPN signaling)
|
||||
if [ -f "$SCRIPT_DIR/configs/nostr-relay.service" ]; then
|
||||
cp "$SCRIPT_DIR/configs/nostr-relay.service" "$WORK_DIR/nostr-relay.service"
|
||||
echo " Using nostr-relay.service from configs/"
|
||||
fi
|
||||
if [ -f "$SCRIPT_DIR/configs/nostr-relay-config.toml" ]; then
|
||||
cp "$SCRIPT_DIR/configs/nostr-relay-config.toml" "$WORK_DIR/nostr-relay-config.toml"
|
||||
echo " Using nostr-relay-config.toml from configs/"
|
||||
fi
|
||||
|
||||
# Copy WireGuard helper script (privileged peer management)
|
||||
if [ -f "$SCRIPT_DIR/../scripts/archipelago-wg" ]; then
|
||||
cp "$SCRIPT_DIR/../scripts/archipelago-wg" "$WORK_DIR/archipelago-wg"
|
||||
@@ -966,6 +980,22 @@ else
|
||||
echo " ⚠ NostrVPN image not available — nvpn binary will be missing"
|
||||
fi
|
||||
|
||||
# Extract nostr-rs-relay binary from container image (native system service for VPN signaling)
|
||||
echo " Extracting nostr-rs-relay binary..."
|
||||
RELAY_IMAGE="$($CONTAINER_CMD images -q 80.71.235.15:3000/archipelago/nostr-rs-relay:0.9.0 2>/dev/null)"
|
||||
if [ -z "$RELAY_IMAGE" ]; then
|
||||
$CONTAINER_CMD pull 80.71.235.15:3000/archipelago/nostr-rs-relay:0.9.0 2>/dev/null || true
|
||||
fi
|
||||
RELAY_CONTAINER=$($CONTAINER_CMD create 80.71.235.15:3000/archipelago/nostr-rs-relay:0.9.0 2>/dev/null) || true
|
||||
if [ -n "$RELAY_CONTAINER" ]; then
|
||||
$CONTAINER_CMD cp "$RELAY_CONTAINER:/usr/local/bin/nostr-rs-relay" "$ARCH_DIR/bin/nostr-rs-relay" 2>/dev/null && \
|
||||
chmod +x "$ARCH_DIR/bin/nostr-rs-relay" && \
|
||||
echo " ✅ nostr-rs-relay binary extracted ($(du -h "$ARCH_DIR/bin/nostr-rs-relay" | cut -f1))"
|
||||
$CONTAINER_CMD rm "$RELAY_CONTAINER" 2>/dev/null || true
|
||||
else
|
||||
echo " ⚠ nostr-rs-relay image not available — relay binary will be missing"
|
||||
fi
|
||||
|
||||
# Copy WireGuard helper script
|
||||
if [ -f "$WORK_DIR/archipelago-wg" ]; then
|
||||
cp "$WORK_DIR/archipelago-wg" "$ARCH_DIR/bin/archipelago-wg"
|
||||
|
||||
Reference in New Issue
Block a user