fix: WebSocket reconnect state refresh, listener leak fixes, pin container images
- F4: Fetch fresh server state after WebSocket reconnect - F5: Guard message polling timer with auth check, stop on logout - F6: Remove NIP-07 listener in appLauncher close() - F7: Initialize audio player once to prevent listener stacking - S3: Pin all container images to specific versions, create image-versions.sh Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,9 @@ TARGET_DIR="/home/archipelago/archy"
|
||||
# Load deploy config (gitignored)
|
||||
[ -f "$SCRIPT_DIR/deploy-config.sh" ] && . "$SCRIPT_DIR/deploy-config.sh"
|
||||
|
||||
# Source pinned image versions (single source of truth)
|
||||
[ -f "$SCRIPT_DIR/image-versions.sh" ] && . "$SCRIPT_DIR/image-versions.sh"
|
||||
|
||||
SSH_KEY="${ARCHIPELAGO_SSH_KEY:-$HOME/.ssh/archipelago-deploy}"
|
||||
SSH_OPTS="-o StrictHostKeyChecking=no -o ServerAliveInterval=15 -o ServerAliveCountMax=4 -o ConnectTimeout=10 -i $SSH_KEY"
|
||||
BUILD_SOURCE="archipelago@192.168.1.228"
|
||||
@@ -155,7 +158,7 @@ deploy_node() {
|
||||
HAS_IMG=$(ssh $SSH_OPTS "$BUILD_SOURCE" "podman images --format '{{.Repository}}' 2>/dev/null | grep -q '$ui_img' && echo yes || echo no" 2>/dev/null)
|
||||
if [ "$HAS_IMG" = "yes" ]; then
|
||||
echo " $ui_img..."
|
||||
ssh $SSH_OPTS "$BUILD_SOURCE" "podman save 'localhost/${ui_img}:latest'" > "/tmp/${ui_img}.tar"
|
||||
ssh $SSH_OPTS "$BUILD_SOURCE" "podman save 'localhost/${ui_img}:local'" > "/tmp/${ui_img}.tar"
|
||||
ssh $SSH_OPTS "$TARGET" "podman load" < "/tmp/${ui_img}.tar" 2>&1 | tail -1
|
||||
rm -f "/tmp/${ui_img}.tar"
|
||||
fi
|
||||
@@ -471,7 +474,7 @@ deploy_node() {
|
||||
--security-opt no-new-privileges:true \
|
||||
-p 8332:8332 -p 8333:8333 \
|
||||
-v /var/lib/archipelago/bitcoin:/home/bitcoin/.bitcoin \
|
||||
docker.io/bitcoinknots/bitcoin:latest \
|
||||
${BITCOIN_KNOTS_IMAGE:-docker.io/bitcoinknots/bitcoin:v28.1} \
|
||||
-server=1 \$BTC_EXTRA_ARGS \
|
||||
-rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0:8332 \
|
||||
-rpcuser=$BITCOIN_RPC_USER -rpcpassword=$BITCOIN_RPC_PASS \
|
||||
@@ -764,7 +767,7 @@ LNDCONF
|
||||
else
|
||||
\$DOCKER run -d --name searxng --restart unless-stopped \
|
||||
--cap-drop ALL --security-opt no-new-privileges:true \
|
||||
-p 8888:8080 docker.io/searxng/searxng:latest
|
||||
-p 8888:8080 ${SEARXNG_IMAGE:-docker.io/searxng/searxng:2024.11.17}
|
||||
fi
|
||||
fi
|
||||
# FileBrowser
|
||||
@@ -800,7 +803,7 @@ LNDCONF
|
||||
--security-opt no-new-privileges:true \
|
||||
-p 2342:2342 -v /var/lib/archipelago/photoprism:/photoprism/storage \
|
||||
-e PHOTOPRISM_ADMIN_PASSWORD=archipelago -e PHOTOPRISM_DEFAULT_LOCALE=en \
|
||||
docker.io/photoprism/photoprism:latest
|
||||
${PHOTOPRISM_IMAGE:-docker.io/photoprism/photoprism:240915}
|
||||
fi
|
||||
fi
|
||||
# OnlyOffice
|
||||
@@ -826,7 +829,7 @@ LNDCONF
|
||||
-p 81:81 -p 8084:80 -p 8443:443 \
|
||||
-v /var/lib/archipelago/nginx-proxy-manager/data:/data \
|
||||
-v /var/lib/archipelago/nginx-proxy-manager/letsencrypt:/etc/letsencrypt \
|
||||
docker.io/jc21/nginx-proxy-manager:latest
|
||||
${NPM_IMAGE:-docker.io/jc21/nginx-proxy-manager:2}
|
||||
fi
|
||||
fi
|
||||
# Portainer
|
||||
@@ -872,7 +875,7 @@ LNDCONF
|
||||
-e PENPOT_OBJECTS_STORAGE_BACKEND=fs \
|
||||
-e PENPOT_OBJECTS_STORAGE_FS_DIRECTORY=/opt/data/assets \
|
||||
-e PENPOT_FLAGS='disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies' \
|
||||
docker.io/penpotapp/backend:latest
|
||||
${PENPOT_BACKEND_IMAGE:-docker.io/penpotapp/backend:2.4.2}
|
||||
sleep 5
|
||||
fi
|
||||
if ! \$DOCKER ps --format '{{.Names}}' 2>/dev/null | grep -q penpot-exporter; then
|
||||
@@ -880,7 +883,7 @@ LNDCONF
|
||||
-e PENPOT_SECRET_KEY=archipelago-penpot-secret-key-change-in-production \
|
||||
-e PENPOT_PUBLIC_URI=http://penpot-frontend:8080 \
|
||||
-e PENPOT_REDIS_URI=redis://penpot-valkey/0 \
|
||||
docker.io/penpotapp/exporter:latest
|
||||
${PENPOT_EXPORTER_IMAGE:-docker.io/penpotapp/exporter:2.4.2}
|
||||
sleep 2
|
||||
fi
|
||||
if ! \$DOCKER ps --format '{{.Names}}' 2>/dev/null | grep -q penpot-frontend; then
|
||||
@@ -888,7 +891,7 @@ LNDCONF
|
||||
-p 9001:8080 -v /var/lib/archipelago/penpot-assets:/opt/data/assets \
|
||||
-e PENPOT_PUBLIC_URI=http://\${TARGET_IP}:9001 \
|
||||
-e PENPOT_FLAGS='disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies' \
|
||||
docker.io/penpotapp/frontend:latest
|
||||
${PENPOT_FRONTEND_IMAGE:-docker.io/penpotapp/frontend:2.4.2}
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -906,9 +909,9 @@ LNDCONF
|
||||
esac
|
||||
if [ -d \"$TARGET_DIR/docker/\$ui\" ]; then
|
||||
echo \" Building \$ui...\"
|
||||
if \$DOCKER build --no-cache -t \"\$ui:latest\" \"$TARGET_DIR/docker/\$ui\" 2>/dev/null; then
|
||||
if \$DOCKER build --no-cache -t \"\$ui:local\" \"$TARGET_DIR/docker/\$ui\" 2>/dev/null; then
|
||||
\$DOCKER stop \"\$CONTAINER_NAME\" 2>/dev/null; \$DOCKER rm -f \"\$CONTAINER_NAME\" 2>/dev/null
|
||||
\$DOCKER run -d --name \"\$CONTAINER_NAME\" \$PORT_ARG --restart unless-stopped \$NET_ARG \"\$ui:latest\"
|
||||
\$DOCKER run -d --name \"\$CONTAINER_NAME\" \$PORT_ARG --restart unless-stopped \$NET_ARG \"\$ui:local\"
|
||||
echo \" \$ui created\"
|
||||
fi
|
||||
elif \$DOCKER images --format '{{.Repository}}:{{.Tag}}' 2>/dev/null | grep -q \"\$ui\"; then
|
||||
|
||||
Reference in New Issue
Block a user