initial commit

This commit is contained in:
ray
2026-07-12 10:17:17 -04:00
commit dab5a4ebc6
1424 changed files with 330463 additions and 0 deletions
@@ -0,0 +1,72 @@
# Adding a Service to Heimdall Dashboard
After deploying a new self-hosted service, add it to the Heimdall dashboard for quick access.
## Database Location
Heimdall stores items in SQLite at:
```
/var/lib/docker/volumes/heimdall_config/_data/www/app.sqlite
```
The volume name may vary — check with `docker inspect heimdall`.
## Schema
```sql
items (
id, title, colour, icon, url, description, pinned, "order",
deleted_at, created_at, updated_at, type, user_id, class, appid, appdescription, role
)
```
Key columns for insertion:
- `title` — Display name
- `url` — Service URL
- `colour` — Hex colour (e.g., `"#d48c3c"`)
- `description` — Short description
- `type``"0"` for standard items
- `user_id` — Usually `1`
- `class` — For built-in app support: `App\\SupportedApps\\Plex\\Plex` (pattern: `App\\SupportedApps\\<Name>\\<Name>`). Use `None` for generic items.
- `appid``None` for generic items
- `pinned``0` (not pinned)
- `"order"` — Position in grid. Use `SELECT MAX("order") FROM items` + 1
- `icon``""` (empty string, uses built-in favicon fetching)
## Insert via Python
The DB is owned by root/Docker user. Access requires `sudo`:
```python
import sqlite3
db = "/var/lib/docker/volumes/heimdall_config/_data/www/app.sqlite"
conn = sqlite3.connect(db)
max_order = conn.execute('SELECT MAX("order") FROM items').fetchone()[0]
conn.execute("""
INSERT INTO items (title, colour, icon, url, description, pinned, "order", type, user_id, class, appid)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", (
"Audiobookshelf",
"#d48c3c",
"",
"http://192.168.50.98:13378",
"Audiobooks & podcasts",
0,
max_order + 1,
"0",
1,
None,
None
))
conn.commit()
conn.close()
```
## Pitfalls
- `sqlite3` CLI may not be installed on the host — use Python's `sqlite3` module instead
- "order" is a reserved word in SQLite — must be double-quoted in queries
- Items appear immediately in Heimdall — no restart needed