- 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.
189 lines
5.8 KiB
Markdown
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.
|