feat: fallback container registry at 23.182.128.160:3000

When primary registry (git.tx1138.com) fails, image pull automatically
retries from Gitea registry at 23.182.128.160:3000. Tags pulled image
with original name so install continues seamlessly. Gitea added as
external app in app session config.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian 2026-04-12 06:38:34 -04:00
parent 6cd67df575
commit a97128bfd2
3 changed files with 27 additions and 2 deletions

View File

@ -603,7 +603,30 @@ impl RpcHandler {
.await
.context("Failed to wait for image pull")?;
if !status.success() {
return Err(anyhow::anyhow!("podman pull exited with non-zero status"));
// Try fallback registry if primary fails
let fallback = docker_image.replace("git.tx1138.com/lfg2025/", "23.182.128.160:3000/lfg2025/");
if fallback != docker_image {
tracing::info!("Primary registry failed, trying fallback: {}", fallback);
let fb_status = tokio::process::Command::new("podman")
.args(["pull", &fallback, "--tls-verify=false"])
.env("TMPDIR", &user_tmp)
.stdout(std::process::Stdio::null())
.stderr(std::process::Stdio::null())
.status()
.await;
if fb_status.map(|s| s.success()).unwrap_or(false) {
// Tag as the original name so the rest of the install works
let _ = tokio::process::Command::new("podman")
.args(["tag", &fallback, docker_image])
.status()
.await;
tracing::info!("Fallback pull succeeded: {}", fallback);
} else {
return Err(anyhow::anyhow!("Image pull failed from both registries"));
}
} else {
return Err(anyhow::anyhow!("podman pull exited with non-zero status"));
}
}
// Verify image exists locally after pull

View File

@ -97,6 +97,7 @@ export const HTTPS_PROXY_PATHS: Record<string, string> = {
/** External HTTPS apps -- always loaded directly */
export const EXTERNAL_URLS: Record<string, string> = {
'gitea': 'http://23.182.128.160:3000',
'nwnn': 'https://nwnn.l484.com',
'484-kitchen': 'https://484.kitchen',
'call-the-operator': 'https://cta.tx1138.com',

View File

@ -9,8 +9,9 @@
# Run: podman images --format '{{.Repository}}:{{.Tag}}' | grep 'git.tx1138' | sort
# to verify against the registry.
# Archipelago app registry
# Archipelago app registries (primary + fallback)
ARCHY_REGISTRY="git.tx1138.com/lfg2025"
ARCHY_REGISTRY_FALLBACK="23.182.128.160:3000/lfg2025"
# Bitcoin stack
BITCOIN_KNOTS_IMAGE="$ARCHY_REGISTRY/bitcoin-knots:latest"