Compare commits

...

3 Commits

Author SHA1 Message Date
archipelago
92c578d3d9 chore: update release lockfile 2026-05-18 10:17:20 -04:00
archipelago
6240064acf chore: release v1.7.66-alpha 2026-05-18 10:15:56 -04:00
archipelago
19dbf60f03 fix(apps): detect stale npm created containers 2026-05-18 10:04:22 -04:00
8 changed files with 65 additions and 39 deletions

View File

@ -1,5 +1,11 @@
# Changelog # Changelog
## v1.7.66-alpha (2026-05-18)
- Nginx Proxy Manager stale-port repair now detects stopped or `Created` Podman records by inspecting `podman ps -a` port metadata, covering records where `podman port nginx-proxy-manager` returns no mapping until start.
- Live recovery on `100.70.96.88` removed only the stale Nginx Proxy Manager container record and recreated it with `8081:81`, `8084:80`, and `8444:443`, preserving `/var/lib/archipelago/nginx-proxy-manager` data.
- Validation confirmed Nginx Proxy Manager recovered as healthy and responds through direct admin port `8081`, host compatibility port `81`, and `/app/nginx-proxy-manager/`.
## v1.7.65-alpha (2026-05-18) ## v1.7.65-alpha (2026-05-18)
- Orchestrator-backed app starts now run the same pre-start repairs as the legacy Podman path, so Nginx Proxy Manager stale `81:81` container metadata is removed and recreated before the orchestrator tries to start it. - Orchestrator-backed app starts now run the same pre-start repairs as the legacy Podman path, so Nginx Proxy Manager stale `81:81` container metadata is removed and recreated before the orchestrator tries to start it.

2
core/Cargo.lock generated
View File

@ -80,7 +80,7 @@ checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
[[package]] [[package]]
name = "archipelago" name = "archipelago"
version = "1.7.65-alpha" version = "1.7.66-alpha"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"archipelago-container", "archipelago-container",

View File

@ -1,6 +1,6 @@
[package] [package]
name = "archipelago" name = "archipelago"
version = "1.7.65-alpha" version = "1.7.66-alpha"
edition = "2021" edition = "2021"
description = "Archipelago Bitcoin Node OS - Native backend" description = "Archipelago Bitcoin Node OS - Native backend"
authors = ["Archipelago Team"] authors = ["Archipelago Team"]

View File

@ -891,17 +891,35 @@ async fn repair_nginx_proxy_manager_container() {
} }
async fn nginx_proxy_manager_has_legacy_admin_port() -> bool { async fn nginx_proxy_manager_has_legacy_admin_port() -> bool {
let Ok(output) = podman_control(&["port", "nginx-proxy-manager", "81/tcp"]).await else { if let Ok(output) = podman_control(&["port", "nginx-proxy-manager", "81/tcp"]).await {
if output.status.success()
&& String::from_utf8_lossy(&output.stdout).lines().any(|line| {
line.rsplit(':')
.next()
.is_some_and(|port| port.trim() == "81")
})
{
return true;
}
}
let Ok(output) = podman_control(&[
"ps",
"-a",
"--format",
"{{.Ports}}",
"--filter",
"name=^nginx-proxy-manager$",
])
.await
else {
return false; return false;
}; };
if !output.status.success() { if !output.status.success() {
return false; return false;
} }
String::from_utf8_lossy(&output.stdout).lines().any(|line| { let ports = String::from_utf8_lossy(&output.stdout);
line.rsplit(':') ports.contains(":81->81/tcp") || ports.contains(":8443->443/tcp")
.next()
.is_some_and(|port| port.trim() == "81")
})
} }
async fn recreate_nginx_proxy_manager_container() -> Result<()> { async fn recreate_nginx_proxy_manager_container() -> Result<()> {

View File

@ -1,12 +1,12 @@
{ {
"name": "neode-ui", "name": "neode-ui",
"version": "1.7.65-alpha", "version": "1.7.66-alpha",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "neode-ui", "name": "neode-ui",
"version": "1.7.65-alpha", "version": "1.7.66-alpha",
"dependencies": { "dependencies": {
"@types/dompurify": "^3.0.5", "@types/dompurify": "^3.0.5",
"@vue-leaflet/vue-leaflet": "^0.10.1", "@vue-leaflet/vue-leaflet": "^0.10.1",

View File

@ -1,7 +1,7 @@
{ {
"name": "neode-ui", "name": "neode-ui",
"private": true, "private": true,
"version": "1.7.65-alpha", "version": "1.7.66-alpha",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "./start-dev.sh", "start": "./start-dev.sh",

View File

@ -1,26 +1,27 @@
{ {
"version": "1.7.65-alpha", "version": "1.7.66-alpha",
"release_date": "2026-05-18", "release_date": "2026-05-18",
"changelog": [ "changelog": [
"Orchestrator-backed app starts now run the same pre-start repairs as the legacy Podman path, so Nginx Proxy Manager stale `81:81` container metadata is removed and recreated before the orchestrator tries to start it.", "Nginx Proxy Manager stale-port repair now detects stopped or `Created` Podman records by inspecting `podman ps -a` port metadata, covering records where `podman port nginx-proxy-manager` returns no mapping until start.",
"Live diagnostics on `100.70.96.88` confirmed host nginx is healthy while Nginx Proxy Manager has no listeners on `8081`, `8084`, or `8444`, causing host nginx `502` responses for NPM proxy paths." "Live recovery on `100.70.96.88` removed only the stale Nginx Proxy Manager container record and recreated it with `8081:81`, `8084:80`, and `8444:443`, preserving `/var/lib/archipelago/nginx-proxy-manager` data.",
"Validation confirmed Nginx Proxy Manager recovered as healthy and responds through direct admin port `8081`, host compatibility port `81`, and `/app/nginx-proxy-manager/`."
], ],
"components": [ "components": [
{ {
"name": "archipelago", "name": "archipelago",
"current_version": "1.7.65-alpha", "current_version": "1.7.66-alpha",
"new_version": "1.7.65-alpha", "new_version": "1.7.66-alpha",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.65-alpha/archipelago", "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.66-alpha/archipelago",
"sha256": "bc4197e99bdea6e63da19915c9cb9e06b84248fb2c627f2b5973e42532ef7b62", "sha256": "d410efd1acb6ae2f5e1270b585da8ff90c9de454fbf8b2648c37ddc4c1136794",
"size_bytes": 42939312 "size_bytes": 42947056
}, },
{ {
"name": "archipelago-frontend-1.7.65-alpha.tar.gz", "name": "archipelago-frontend-1.7.66-alpha.tar.gz",
"current_version": "1.7.65-alpha", "current_version": "1.7.66-alpha",
"new_version": "1.7.65-alpha", "new_version": "1.7.66-alpha",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.65-alpha/archipelago-frontend-1.7.65-alpha.tar.gz", "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.66-alpha/archipelago-frontend-1.7.66-alpha.tar.gz",
"sha256": "a76778934b747405410dfc92b1fffc2df4b44c0067f71652e23a86c9b77ab7ba", "sha256": "35ca430accfb3b669c288800b59b899585435133d6d7e5da70c5066ae36a0308",
"size_bytes": 166470001 "size_bytes": 166469699
} }
] ]
} }

View File

@ -1,26 +1,27 @@
{ {
"version": "1.7.65-alpha", "version": "1.7.66-alpha",
"release_date": "2026-05-18", "release_date": "2026-05-18",
"changelog": [ "changelog": [
"Orchestrator-backed app starts now run the same pre-start repairs as the legacy Podman path, so Nginx Proxy Manager stale `81:81` container metadata is removed and recreated before the orchestrator tries to start it.", "Nginx Proxy Manager stale-port repair now detects stopped or `Created` Podman records by inspecting `podman ps -a` port metadata, covering records where `podman port nginx-proxy-manager` returns no mapping until start.",
"Live diagnostics on `100.70.96.88` confirmed host nginx is healthy while Nginx Proxy Manager has no listeners on `8081`, `8084`, or `8444`, causing host nginx `502` responses for NPM proxy paths." "Live recovery on `100.70.96.88` removed only the stale Nginx Proxy Manager container record and recreated it with `8081:81`, `8084:80`, and `8444:443`, preserving `/var/lib/archipelago/nginx-proxy-manager` data.",
"Validation confirmed Nginx Proxy Manager recovered as healthy and responds through direct admin port `8081`, host compatibility port `81`, and `/app/nginx-proxy-manager/`."
], ],
"components": [ "components": [
{ {
"name": "archipelago", "name": "archipelago",
"current_version": "1.7.65-alpha", "current_version": "1.7.66-alpha",
"new_version": "1.7.65-alpha", "new_version": "1.7.66-alpha",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.65-alpha/archipelago", "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.66-alpha/archipelago",
"sha256": "bc4197e99bdea6e63da19915c9cb9e06b84248fb2c627f2b5973e42532ef7b62", "sha256": "d410efd1acb6ae2f5e1270b585da8ff90c9de454fbf8b2648c37ddc4c1136794",
"size_bytes": 42939312 "size_bytes": 42947056
}, },
{ {
"name": "archipelago-frontend-1.7.65-alpha.tar.gz", "name": "archipelago-frontend-1.7.66-alpha.tar.gz",
"current_version": "1.7.65-alpha", "current_version": "1.7.66-alpha",
"new_version": "1.7.65-alpha", "new_version": "1.7.66-alpha",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.65-alpha/archipelago-frontend-1.7.65-alpha.tar.gz", "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.66-alpha/archipelago-frontend-1.7.66-alpha.tar.gz",
"sha256": "a76778934b747405410dfc92b1fffc2df4b44c0067f71652e23a86c9b77ab7ba", "sha256": "35ca430accfb3b669c288800b59b899585435133d6d7e5da70c5066ae36a0308",
"size_bytes": 166470001 "size_bytes": 166469699
} }
] ]
} }