feat: switch marketplace to Archipelago app registry
Some checks failed
Build Archipelago ISO / build-iso (push) Failing after 0s

All app images now pull from 80.71.235.15:3000/archipelago/
instead of Docker Hub / ghcr.io. Insecure registry config
baked into ISO for fresh installs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-26 10:46:26 +00:00
parent 1f9124789f
commit fc1e763cff
2 changed files with 34 additions and 22 deletions

View File

@@ -1296,6 +1296,15 @@ cat > /mnt/target/etc/hosts <<EOF
::1 localhost ip6-localhost ip6-loopback
EOF
# Configure Archipelago app registry (HTTP, insecure)
mkdir -p /mnt/target/home/archipelago/.config/containers
cat > /mnt/target/home/archipelago/.config/containers/registries.conf <<'REGCONF'
[[registry]]
location = "80.71.235.15:3000"
insecure = true
REGCONF
chown -R 1000:1000 /mnt/target/home/archipelago/.config
# Copy Archipelago binaries and files
if [ -d "$BOOT_MEDIA/archipelago/bin" ]; then
cp -r "$BOOT_MEDIA/archipelago/bin/"* /mnt/target/usr/local/bin/ 2>/dev/null || true

View File

@@ -32,6 +32,9 @@ export interface InstallProgress {
attempt: number
}
/** Archipelago app registry — all app images are mirrored here */
const REGISTRY = '80.71.235.15:3000/archipelago'
/** Marketplace app ID -> backend package keys (for "Already Installed" when first-boot/deploy created them) */
export const INSTALLED_ALIASES: Record<string, string[]> = {
mempool: ['mempool-web', 'mempool-api', 'archy-mempool-web', 'archy-mempool-db'],
@@ -131,7 +134,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Run a full Bitcoin node. Validate and relay blocks and transactions on the Bitcoin network.',
icon: '/assets/img/app-icons/bitcoin-knots.webp',
author: 'Bitcoin Knots',
dockerImage: 'docker.io/bitcoinknots/bitcoin:v28.1',
dockerImage: `${REGISTRY}/bitcoin-knots:latest`,
manifestUrl: undefined,
repoUrl: 'https://github.com/bitcoinknots/bitcoin'
},
@@ -142,7 +145,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Self-hosted Bitcoin payment processor. Accept Bitcoin payments without intermediaries or fees.',
icon: '/assets/img/app-icons/btcpay-server.png',
author: 'BTCPay Server Foundation',
dockerImage: 'docker.io/btcpayserver/btcpayserver:1.13.5',
dockerImage: `${REGISTRY}/btcpayserver:1.13.5`,
manifestUrl: undefined,
repoUrl: 'https://github.com/btcpayserver/btcpayserver'
},
@@ -153,7 +156,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Lightning Network Daemon. Fast and cheap Bitcoin payments through the Lightning Network.',
icon: '/assets/img/app-icons/lnd.svg',
author: 'Lightning Labs',
dockerImage: 'docker.io/lightninglabs/lnd:v0.17.4-beta',
dockerImage: `${REGISTRY}/lnd:v0.18.4-beta`,
manifestUrl: undefined,
repoUrl: 'https://github.com/lightningnetwork/lnd'
},
@@ -175,7 +178,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Self-hosted Bitcoin blockchain and mempool visualizer with beautiful explorer interface.',
icon: '/assets/img/app-icons/mempool.webp',
author: 'Mempool',
dockerImage: 'docker.io/mempool/frontend:v2.5.0',
dockerImage: `${REGISTRY}/mempool-frontend:v2.5.0`,
manifestUrl: undefined,
repoUrl: 'https://github.com/mempool/mempool'
},
@@ -186,7 +189,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Open-source home automation platform. Control and automate your smart home devices privately.',
icon: '/assets/img/app-icons/homeassistant.png',
author: 'Home Assistant',
dockerImage: 'docker.io/homeassistant/home-assistant:2024.1',
dockerImage: `${REGISTRY}/home-assistant:2024.1`,
manifestUrl: undefined,
repoUrl: 'https://github.com/home-assistant/core'
},
@@ -197,7 +200,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Analytics and monitoring platform. Create dashboards and visualize data from multiple sources.',
icon: '/assets/img/app-icons/grafana.png',
author: 'Grafana Labs',
dockerImage: 'docker.io/grafana/grafana:10.2.0',
dockerImage: `${REGISTRY}/grafana:10.2.0`,
manifestUrl: undefined,
repoUrl: 'https://github.com/grafana/grafana'
},
@@ -208,7 +211,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Privacy-respecting metasearch engine. Search without tracking or ads.',
icon: '/assets/img/app-icons/searxng.png',
author: 'SearXNG',
dockerImage: 'docker.io/searxng/searxng:2024.11.17-e2554de75',
dockerImage: `${REGISTRY}/searxng:latest`,
manifestUrl: undefined,
repoUrl: 'https://github.com/searxng/searxng'
},
@@ -219,7 +222,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Run large language models locally. Download and run AI models like Llama, Mistral on your own hardware.',
icon: '/assets/img/app-icons/ollama.png',
author: 'Ollama',
dockerImage: 'docker.io/ollama/ollama:0.5.4',
dockerImage: `${REGISTRY}/ollama:latest`,
manifestUrl: undefined,
repoUrl: 'https://github.com/ollama/ollama'
},
@@ -230,7 +233,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Office suite for document collaboration. Edit docs, spreadsheets, and presentations.',
icon: '/assets/img/app-icons/onlyoffice.webp',
author: 'Ascensio System SIA',
dockerImage: 'docker.io/onlyoffice/documentserver:7.5.1',
dockerImage: `${REGISTRY}/onlyoffice:latest`,
manifestUrl: undefined,
repoUrl: 'https://github.com/ONLYOFFICE/DocumentServer'
},
@@ -252,7 +255,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Self-hosted cloud storage and collaboration platform. Your own private cloud.',
icon: '/assets/img/app-icons/nextcloud.webp',
author: 'Nextcloud',
dockerImage: 'docker.io/library/nextcloud:28',
dockerImage: `${REGISTRY}/nextcloud:28`,
manifestUrl: undefined,
repoUrl: 'https://github.com/nextcloud/server'
},
@@ -263,7 +266,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Self-hosted password manager (Bitwarden-compatible). Secure vault for passwords and secrets.',
icon: '/assets/img/app-icons/vaultwarden.webp',
author: 'Vaultwarden',
dockerImage: 'docker.io/vaultwarden/server:1.30.0-alpine',
dockerImage: `${REGISTRY}/vaultwarden:1.30.0-alpine`,
manifestUrl: undefined,
repoUrl: 'https://github.com/dani-garcia/vaultwarden'
},
@@ -274,7 +277,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Free media server system. Stream your movies, music, and photos to any device.',
icon: '/assets/img/app-icons/jellyfin.webp',
author: 'Jellyfin',
dockerImage: 'docker.io/jellyfin/jellyfin:10.8.13',
dockerImage: `${REGISTRY}/jellyfin:10.8.13`,
manifestUrl: undefined,
repoUrl: 'https://github.com/jellyfin/jellyfin'
},
@@ -285,7 +288,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'AI-powered photo management. Organize and browse photos with facial recognition.',
icon: '/assets/img/app-icons/photoprism.svg',
author: 'PhotoPrism',
dockerImage: 'docker.io/photoprism/photoprism:240915',
dockerImage: `${REGISTRY}/photoprism:240915`,
manifestUrl: undefined,
repoUrl: 'https://github.com/photoprism/photoprism'
},
@@ -296,7 +299,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'High-performance self-hosted photo and video backup. Mobile-first with ML features.',
icon: '/assets/img/app-icons/immich.png',
author: 'Immich',
dockerImage: 'ghcr.io/immich-app/immich-server:release',
dockerImage: `${REGISTRY}/immich:release`,
manifestUrl: undefined,
repoUrl: 'https://github.com/immich-app/immich'
},
@@ -307,7 +310,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Web-based file manager. Browse, upload, and manage files through a web interface.',
icon: '/assets/img/app-icons/file-browser.webp',
author: 'File Browser',
dockerImage: 'docker.io/filebrowser/filebrowser:v2.27.0',
dockerImage: `${REGISTRY}/filebrowser:v2.27.0`,
manifestUrl: undefined,
repoUrl: 'https://github.com/filebrowser/filebrowser'
},
@@ -318,7 +321,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Easy proxy management with SSL. Beautiful web interface for managing reverse proxies.',
icon: '/assets/img/app-icons/nginx.svg',
author: 'Nginx Proxy Manager',
dockerImage: 'docker.io/jc21/nginx-proxy-manager:2.12.1',
dockerImage: `${REGISTRY}/nginx-proxy-manager:latest`,
manifestUrl: undefined,
repoUrl: 'https://github.com/NginxProxyManager/nginx-proxy-manager'
},
@@ -329,7 +332,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Container management UI. Manage Docker containers through a beautiful web interface.',
icon: '/assets/img/app-icons/portainer.webp',
author: 'Portainer',
dockerImage: 'docker.io/portainer/portainer-ce:2.19.4',
dockerImage: `${REGISTRY}/portainer:latest`,
manifestUrl: undefined,
repoUrl: 'https://github.com/portainer/portainer'
},
@@ -340,7 +343,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Self-hosted monitoring tool. Monitor uptime for HTTP(s), TCP, DNS, and more.',
icon: '/assets/img/app-icons/uptime-kuma.webp',
author: 'Uptime Kuma',
dockerImage: 'docker.io/louislam/uptime-kuma:1',
dockerImage: `${REGISTRY}/uptime-kuma:1`,
manifestUrl: undefined,
repoUrl: 'https://github.com/louislam/uptime-kuma'
},
@@ -351,7 +354,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Zero-config VPN for secure remote access. Connect all your devices with WireGuard mesh network.',
icon: '/assets/img/app-icons/tailscale.webp',
author: 'Tailscale',
dockerImage: 'docker.io/tailscale/tailscale:stable',
dockerImage: `${REGISTRY}/tailscale:stable`,
manifestUrl: undefined,
repoUrl: 'https://github.com/tailscale/tailscale'
},
@@ -362,7 +365,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Federated Bitcoin mint with built-in Guardian UI. Private, scalable Bitcoin through federated guardians.',
icon: '/assets/img/app-icons/fedimint.png',
author: 'Fedimint',
dockerImage: 'docker.io/fedimint/fedimintd:v0.10.0',
dockerImage: `${REGISTRY}/fedimintd:v0.10.0`,
manifestUrl: undefined,
repoUrl: 'https://github.com/fedimint/fedimint'
},
@@ -384,7 +387,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Store and sync your personal data across devices using decentralized web node protocols. Own your data with DID-based access control.',
icon: '/assets/img/app-icons/dwn.svg',
author: 'TBD',
dockerImage: 'ghcr.io/tbd54566975/dwn-server:main',
dockerImage: `${REGISTRY}/dwn-server:main`,
manifestUrl: undefined,
repoUrl: 'https://github.com/TBD54566975/dwn-server'
},
@@ -409,7 +412,7 @@ export function getCuratedAppList(): MarketplaceApp[] {
description: 'Run your own Nostr relay. Store your events locally, relay for friends, and publish over Tor. A sovereign relay for your sovereign node.',
icon: '/assets/img/app-icons/nostr-rs-relay.svg',
author: 'scsiblade',
dockerImage: 'docker.io/scsiblade/nostr-rs-relay:0.9.0',
dockerImage: `${REGISTRY}/nostr-rs-relay:0.9.0`,
manifestUrl: undefined,
repoUrl: 'https://sr.ht/~gheartsfield/nostr-rs-relay/'
},