archy/DOCKER_MIGRATION_COMPLETE.md
Dorian 7afefafec1 Update README and API for Docker integration and app management
- Revised README.md to clarify the use of Docker alongside Podman for containerization.
- Updated API documentation to reflect new RPC endpoints, including `auth.logout`.
- Enhanced WebSocket handling in the API for better connection management.
- Modified Neode UI to utilize a curated list of Docker-based applications, replacing previous Start9 registry calls.
- Improved error handling and logging in the marketplace for better user experience.
2026-01-27 22:55:20 +00:00

189 lines
5.8 KiB
Markdown

# 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.