Scani tRPC + Elysia API server. Self-hostable portfolio tracker. github.com/MGrin/scani-oss
9.6K
tRPC + Elysia HTTP server for Scani — the self-hostable, open-source portfolio tracker for crypto and traditional assets.
Owns per-user credentialed integrations (exchange API keys, brokerage tokens) so
user credentials never cross the tenant boundary. Enqueues async work onto
Postgres (BullMQ's Postgres backend) for
scani/worker to consume.
latest — highest semver release tag1.2.3 / 1.2 / 1 — semver release tagsPin SCANI_IMAGE_TAG=1.2.3 in your .env for reproducible deploys.
The recommended way to run this image is via the reference
docker-compose.prod.yml
in the OSS repo — it wires this image up with Postgres, Redis, SeaweedFS,
scani/worker,
scani/data-provider, and
scani/frontend-app:
git clone https://github.com/MGrin/scani-oss.git
cd scani-oss
SCANI_SKIP_UP=1 ./scripts/self-host.sh
# Apply schema migrations (do this on first install AND on every upgrade)
docker compose -f docker-compose.prod.yml --profile migrate run --rm migrate
# Bring the long-running services up
docker compose -f docker-compose.prod.yml up -d
Migrations live in a separate scani/migrate
image and run as an opt-in --profile migrate step — see the
self-hosting docs
for the why, the alternative orchestrators (Kubernetes Job, CI deploy
step, standalone docker run), and what happens if you skip them
(api's /readyz returns 503).
| Variable | Purpose |
|---|---|
DATABASE_URL | Postgres 16+ connection string |
REDIS_URL | Redis 7+ connection string |
BETTER_AUTH_SECRET | 32+ chars; signs sessions |
ENCRYPTION_KEY | 32 hex chars; must match scani/worker |
JOBS_HMAC_SECRET | Signs the worker wake ping and the admin audit log |
FRONTEND_URL / BACKEND_URL | What the browser sees; powers CORS + cookies |
S3_* | Object storage (any S3-compatible store) |
SCANI_CLOUD_URL / SCANI_CLOUD_API_KEY | Where scani/data-provider lives + bearer to reach it |
Full annotated list: .env.example.
Full source, architecture, and contribution guidelines: https://github.com/MGrin/scani-oss
MIT licensed.
Content type
Image
Digest
sha256:45078ddf3…
Size
87.6 MB
Last updated
2 days ago
docker pull scani/api