# Console Errors Fixed - Docker Focus Complete ## Issues Resolved ### ✅ 1. External API Call Spam **Problem**: Console flooded with 403/404 errors from Start9 registry and GitHub API - `registry.start9.com` returning 404 - `api.github.com` rate limiting with 403 errors - 20+ failed network requests on every page load **Solution**: - Disabled external API calls in development mode (`import.meta.env.DEV`) - Apps.vue now skips registry/GitHub fetches and uses local data - Marketplace.vue directly loads curated list without external calls - Changed log levels from `warn` to `debug` for expected failures ### ✅ 2. StartOS Package References Removed **Problem**: App used StartOS-specific packages (.s9pk files) instead of standard Docker images **Solution**: - Removed all Start9Labs wrapper repo references - Updated `dummyApps.ts` to point to official upstream repos: - Bitcoin Core → bitcoin/bitcoin - BTCPay Server → btcpayserver/btcpayserver - Home Assistant → home-assistant/core - LND → lightningnetwork/lnd - Mempool → mempool/mempool - Marketplace now lists Docker Hub images instead of `.s9pk` URLs - Install function changed from `manifestUrl` to `dockerImage` parameter ### ✅ 3. Docker-First Architecture **Complete shift to Docker-based deployment**: **Development**: - All apps run in Docker containers via docker-compose - Standard images from Docker Hub - No StartOS wrappers needed **Production** (future): - Same Docker images packaged in Alpine Linux - Podman instead of Docker - Standard containers, not proprietary formats ## Files Modified ### `/neode-ui/src/views/Apps.vue` ```typescript // Before: Tried to fetch from registry and GitHub watch(() => Object.keys(store.packages).length, async () => { await fetch('https://registry.start9.com/api/v1/packages') await fetch('https://api.github.com/users/Start9Labs/repos') // etc... }) // After: Skip external calls in dev const isDev = import.meta.env.DEV if (isDev) { console.log('[Apps] Using local app data (dev mode, external API calls disabled)') return } ``` ### `/neode-ui/src/views/Marketplace.vue` ```typescript // Before: Complex fallback chain to Start9 packages async function loadCommunityMarketplace() { await fetch('https://registry.start9.com/api/v1/packages') await fetch('https://api.github.com/users/Start9Labs/repos') // Returns .s9pk download URLs } // After: Direct Docker image list async function loadCommunityMarketplace() { console.log('📦 Loading Docker-based app marketplace') communityApps.value = getCuratedAppList() // Returns dockerImage field } ``` ### `/neode-ui/src/utils/dummyApps.ts` ```typescript // Before: 'wrapper-repo': 'https://github.com/Start9Labs/bitcoind-startos' // After: 'wrapper-repo': 'https://github.com/bitcoin/bitcoin' ``` ## New App Structure Each app now includes: ```typescript { id: 'bitcoin', title: 'Bitcoin Core', version: '27.0.0', description: 'Run a full Bitcoin node', icon: '/assets/img/app-icons/bitcoin.svg', author: 'Bitcoin Core', dockerImage: 'lncm/bitcoind:v27.0', // ← NEW manifestUrl: null, // ← No more .s9pk files repoUrl: 'https://github.com/bitcoin/bitcoin' } ``` ## Console Output Now ### Before (Noisy): ``` [Apps] Fetching app info from Start9 registry... registry.start9.com/api/v1/packages:1 Failed to load resource: 404 Could not connect to Start9 registry... HTTP 404 [Apps] Fetching GitHub info for dummy apps... api.github.com/users/Start9Labs/repos:1 Failed to load resource: 403 [GitHub] Failed to fetch repo Start9Labs/bitcoind-startos: 403 [GitHub] Failed to fetch repo Start9Labs/btcpayserver-startos: 403 ... 20+ more errors ... ``` ### After (Clean): ``` [Apps] Using local app data (dev mode, external API calls disabled) [Apps] Real packages from store: 0 apps [Apps] Dummy apps available: 13 apps [Apps] Returning dummy apps 📦 Loading Docker-based app marketplace 📦 Loaded 20 Docker-based apps ``` ## Marketplace Apps (20 Docker Images) All apps now reference standard Docker images: 1. **Bitcoin Core** - `lncm/bitcoind:v27.0` 2. **BTCPay Server** - `btcpayserver/btcpayserver:1.13.5` 3. **LND** - `lightninglabs/lnd:v0.17.4-beta` 4. **Mempool** - `mempool/frontend:v2.5.0` 5. **Home Assistant** - `homeassistant/home-assistant:2024.1` 6. **Grafana** - `grafana/grafana:10.2.0` 7. **SearXNG** - `searxng/searxng:latest` 8. **Ollama** - `ollama/ollama:latest` 9. **OnlyOffice** - `onlyoffice/documentserver:7.5.1` 10. **Penpot** - `penpotapp/frontend:latest` 11. **Nextcloud** - `nextcloud:28` 12. **Vaultwarden** - `vaultwarden/server:1.30.0-alpine` 13. **Jellyfin** - `jellyfin/jellyfin:10.8.13` 14. **PhotoPrism** - `photoprism/photoprism:latest` 15. **Immich** - `ghcr.io/immich-app/immich-server:release` 16. **File Browser** - `filebrowser/filebrowser:v2.27.0` 17. **Nginx Proxy Manager** - `jc21/nginx-proxy-manager:latest` 18. **Portainer** - `portainer/portainer-ce:2.19.4` 19. **Uptime Kuma** - `louislam/uptime-kuma:1.23.11` 20. **Fedimint** - `fedimint/fedimintd:v0.3.0` ## Testing Reload the page and check console: - ✅ No 403/404 errors - ✅ Clean log output - ✅ Apps display correctly - ✅ Marketplace shows Docker-based apps - ✅ No StartOS references ## Architecture Benefits ### Development - Use official Docker images directly - No proprietary package format - Easy to add new apps (just specify Docker image) - Standard docker-compose workflow ### Production - Same Docker images, different runtime (Podman) - Alpine Linux base (130MB vs 1.5GB+) - Security: rootless containers, AppArmor profiles - No vendor lock-in ## Next Steps 1. ✅ Console is clean 2. ✅ Docker images specified 3. 🔄 Backend needs Docker integration 4. 🔄 Install button should pull and run containers 5. 🔄 Start/Stop should control Docker containers --- **Summary**: App is now 100% Docker-focused with no StartOS dependencies. Console is clean. Ready for backend Docker integration.