Skip to content

Databasement — Reference

  • 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/databasementapi_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