Self-hosted backend for the entitybtw/hydra fork of Hydra Launcher — cloud saves, accounts, profiles and game data on your own server, without a Hydra Cloud subscription.
- Accounts — register / login, sessions, optional passkeys (WebAuthn)
- Public profiles — shareable page at
/u/usernamewith playtime, library and recent activity; avatar, banner, bio, accent color and custom CSS - Steam integration — connect Steam to show hours and library (synced every 30 min)
- Cloud saves — unlimited slots on your own server, 50 MB per upload by default
- Library management — pin / favorite games, playtime tracking, per-tab section order and visibility
- Web dashboard — full UI at
/(profile editing, library, password change, admin panel) - API docs — built-in reference at
/docs - Launcher compatibility — Big Picture, friendships stub and
/download-sourcesproxy all work out of the box
git clone https://github.com/entitybtw/hydra-selfhosted.git
cd hydra-selfhosted
cp .env.example .env
# edit .env — set API_TOKEN to a random secret string
docker compose up -dThe prebuilt image entbtw/hydra-selfhosted is pulled automatically, so nothing is compiled locally. The server runs on port 3000 by default.
| Variable | Default | Description |
|---|---|---|
API_TOKEN |
— | Required. Secret used to sign sessions and for the launcher |
PORT |
3000 |
Host port to expose |
TAG |
latest |
Image tag: latest or a pinned version (e.g. v0.0.1) |
SESSION_TTL_DAYS |
30 |
Launcher session duration |
PUBLIC_URL |
— | Public URL shown in the web dashboard |
MAX_SAVE_SIZE_MB |
50 |
Cloud save upload limit |
INITIAL_ADMIN_USERNAME |
— | Create this admin user on first run |
WEBAUTHN_RP_ID / WEBAUTHN_ORIGIN |
— | Passkeys: bare domain / full origin URL |
CORS_ORIGINS |
— | Comma-separated allowed origins |
- Open the entitybtw/hydra fork
- Settings → Integrations → Self-Hosted API
- Enter your server URL and
API_TOKEN, click Save - Register or sign in — the launcher syncs your library automatically
docker compose pull && docker compose up -dTo pin a release, set TAG=v0.0.1 in .env.
Everything lives in ./data/ — back up this folder to preserve all user data:
data/
hydra.db # SQLite database (users, games, achievements, artifacts)
images/ # uploaded avatars and banners
artifacts/ # cloud save archives
.env and data/ are never touched by updates.
docker build -t entbtw/hydra-selfhosted:latest ./api- Docker + Docker Compose
