TheArchiver — Runbook
Quick Reference
| Item | Value |
|---|---|
| LXC | 129 @ 192.168.1.129 |
| URL | https://archiver.eva-00.network |
| Image | ghcr.io/pauljoda/the-archiver:latest |
| Health | curl http://192.168.1.129:3002 (200 = OK) |
| Vault | secret/data/external-oauth2-proxies (archiver_*) |
| Deploy | Forgejo Actions -> Deploy Archival Stack |
Check Service Status
ssh [email protected] docker compose -f /opt/the-archiver/docker-compose.yml ps
The the-archiver container should be running on port 3002.
Restart Service
ssh [email protected] docker compose -f /opt/the-archiver/docker-compose.yml restart
View Logs
Via Loki (preferred)
{container_name="the-archiver"}
{container_name="the-archiver"} |= "error"
{container_name="the-archiver"} |= "download"
Via SSH (fallback)
ssh [email protected] docker compose -f /opt/the-archiver/docker-compose.yml logs -f --tail 100
Submit URLs
Via API
curl -X POST https://archiver.eva-00.network/api/download \
-H "Content-Type: application/json" \
-d '{"url": "https://reddit.com/r/selfhosted/comments/..."}'
Via Web UI
Navigate to https://archiver.eva-00.network, paste URL in the submit field.
Via iOS Shortcut
Share any URL from Safari/YouTube/Reddit -> tap "Archive" shortcut.
Manage Plugins
Install from Marketplace
- Go to https://archiver.eva-00.network -> Plugins tab
- Click Community
- Browse and install plugins
Install Manually
# Copy plugin folder to LXC
scp -r my-plugin/ [email protected]:/opt/the-archiver/plugins/
# Restart to load
ssh [email protected] docker compose -f /opt/the-archiver/docker-compose.yml restart
Check Installed Plugins
curl -s https://archiver.eva-00.network/api/plugins | python3 -m json.tool
Check Download Queue
curl -s https://archiver.eva-00.network/api/queue | python3 -m json.tool
Check Failed Downloads
curl -s https://archiver.eva-00.network/api/failed | python3 -m json.tool
Retry a Failed Download
curl -X POST https://archiver.eva-00.network/api/failed/<id>/retry
Storage
Check Disk Usage
# urahara mount (downloaded content)
ssh [email protected] du -sh /mnt/archiver/downloads/
# Local rootfs (SQLite + plugins)
ssh [email protected] du -sh /opt/the-archiver/data/ /opt/the-archiver/plugins/
Browse Files via API
curl -s "https://archiver.eva-00.network/api/files?path=/" | python3 -m json.tool
Fresh Redeploy
Trigger via Forgejo Actions (workflow_dispatch), or manually:
ssh [email protected]
docker compose -f /opt/the-archiver/docker-compose.yml down
rm -rf /opt/the-archiver/data/*
# Note: downloads on urahara are preserved
Then re-run the workflow.
Troubleshooting
OAuth2 login loop
Clear the _oauth2_archiver cookie in your browser, or try incognito. Verify the oauth2-proxy container is running:
{container_name="oauth2-proxy-archiver"}
API returns 502
TheArchiver container may be starting up. Check health:
ssh [email protected] docker compose -f /opt/the-archiver/docker-compose.yml ps
curl -s http://192.168.1.129:3002/api/health
Downloads not appearing in /mnt/archiver/downloads
Verify the bind mount is active:
ssh [email protected] df -h /mnt/archiver/downloads
ssh [email protected] ls -la /mnt/archiver/downloads/
If empty, check Proxmox bind mount config for LXC 129.
ntfy notifications not working
Verify the ntfy URL is set in the container:
ssh [email protected] docker exec the-archiver printenv NTFY_URL
Should return http://192.168.1.119:2586/archiver. Test ntfy:
curl -s -X POST http://192.168.1.119:2586/archiver -d "test notification"
Port conflict with browserless
TheArchiver runs on 3002 (not 3000) because browserless uses 3000. If the port is already in use:
ssh [email protected] docker ps --format '{{.Names}}\t{{.Ports}}' | grep 3002