Databasement — Reference
Links
- GitHub: https://github.com/David-Crty/databasement
- Docs: https://david-crty.github.io/databasement/
- User guide (servers): https://david-crty.github.io/databasement/user-guide/database-servers/
- User guide (backups): https://david-crty.github.io/databasement/user-guide/backups/
Infrastructure
| Host | Internal | URL |
|---|---|---|
| Docker on cajita-elite | 192.168.1.196:2226 | https://databasement.eva-00.network |
Authentication
API requests use Sanctum Bearer tokens. The token is stored in Vault at secret/databasement → api_token.
# Bearer token auth
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/...
To create a new API token (run on cajita-elite):
docker exec databasement php artisan tinker --execute="\$user = App\Models\User::first(); \$token = \$user->createToken('api'); echo \$token->plainTextToken;"
API — Database Servers
List configured servers
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/database-servers | python3 -c \
"import json,sys; [print(f'{s[\"id\"]} {s[\"name\"]}') for s in json.load(sys.stdin)['data']]"
Get server details
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/database-servers/<server-id>
Test server connection
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/database-servers/<server-id>/test-connection
Trigger a manual backup
curl -s -X POST -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/database-servers/<server-id>/backup
API — Backup Jobs & Snapshots
List backup jobs
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/jobs
List snapshots
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/snapshots
API — Schedules
List backup schedules
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/backup-schedules
API — Volumes
List storage volumes
curl -s -H "Authorization: Bearer $DATABASEMENT_TOKEN" \
-H "Accept: application/json" \
http://192.168.1.196:2226/api/v1/volumes
Supported Databases
| Type | Port | SSH Tunnel |
|---|---|---|
| PostgreSQL | 5432 | Supported |
| MariaDB/MySQL | 3306 | Supported |
| SQLite | — | Supported |
| MongoDB | 27017 | Supported |
| Redis | 6379 | Supported |
Glance Integration
The Glance dashboard queries Databasement's API for the backup status widget:
# In glance.yml custom-api widget
url: http://192.168.1.196:2226/api/v1/snapshots
headers:
Authorization: Bearer ${DATABASEMENT_TOKEN}
What the API/CLI Cannot Do
| Gap | Workaround |
|---|---|
| Cannot add database servers via API (SSH tunnel config) | Use the web UI to configure SSH tunnels and server connections |
| Cannot restore from backup via API | Download the backup file and restore manually via mysql/psql/mongorestore |
| No CLI tool | API-only; use curl for automation |
| Cannot configure retention policies per-schedule via API easily | Use the web UI |
| No built-in alerting for failed backups | Ntfy webhook on success/failure configured per backup job |
| Cannot discover databases on a server via API | Must specify database name explicitly |