The My Apps page went blank after installing apps because pkg['static-files'].icon was accessed without optional chaining on dynamically installed packages that lack the static-files property. - Make static-files optional in PackageDataEntry type - Add defensive ?.icon access with fallback in Apps.vue and AppDetails.vue - Add filebrowser to mock backend staticDevApps (enables Cloud page in demo) - Expand portMappings and marketplaceMetadata for all marketplace apps - installPackage now uses staticApp() format for consistent data shape Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
# Demo Deployment via Portainer
|
||
|
||
Deploy Archipelago with the **mock backend** for demos. No real node required.
|
||
|
||
## Quick Deploy (Portainer)
|
||
|
||
1. In Portainer: **Stacks** → **Add stack**
|
||
2. Name: `archy-demo`
|
||
3. **Web editor** → paste contents of `docker-compose.demo.yml`
|
||
4. Or **Build from repository**: use this repo URL and set Compose path to `docker-compose.demo.yml`
|
||
5. Deploy
|
||
|
||
**Access:** http://your-host:4848
|
||
|
||
## Mock Backend
|
||
|
||
- Uses the Node.js mock backend (not the Rust backend)
|
||
- Pre-loaded apps, fake data, simulated install/start/stop
|
||
- **Login password:** `password123`
|
||
|
||
## Port
|
||
|
||
Default: **4848**. To change, edit the ports mapping in `docker-compose.demo.yml`:
|
||
|
||
```yaml
|
||
ports:
|
||
- "YOUR_PORT:80"
|
||
```
|
||
|
||
## Chat (Claude AI)
|
||
|
||
Set `ANTHROPIC_API_KEY` in the Portainer stack environment to enable real AI chat:
|
||
|
||
1. In the stack editor, add under **Environment variables**:
|
||
- `ANTHROPIC_API_KEY` = your Anthropic API key (starts with `sk-ant-api...`)
|
||
2. Redeploy the stack
|
||
|
||
Without this key, chat shows a "not configured" error. The key is passed to the `neode-backend` container which proxies requests to `api.anthropic.com`.
|
||
|
||
## Dev Mode
|
||
|
||
`VITE_DEV_MODE=existing` skips setup/onboarding and goes straight to login. For other flows:
|
||
|
||
- `setup` – Password setup screen first
|
||
- `onboarding` – Experimental onboarding flow
|
||
- `existing` – Login only (default for demo)
|