Get your own Finances tenant running Deine eigene Finances-Instanz starten

~5 minutes. Hosted entirely in your own Railway account — we have zero access. ~5 Minuten. Läuft komplett in deinem eigenen Railway-Account — wir haben null Zugriff.

📦 Public Docker image · 🔐 Your secrets · 🇪🇺 Hosted in EU available 📦 Öffentliches Docker-Image · 🔐 Deine Secrets · 🇪🇺 EU-Hosting verfügbar
1

Create a Railway account Railway-Account erstellen

Railway hosts your service + Postgres database. Sign in with GitHub (30 seconds) and add a payment method — the Hobby tier ($5/mo) covers this stack with room to spare. Railway hostet deinen Service + die Postgres-Datenbank. Mit GitHub einloggen (30 Sekunden) und eine Zahlungsmethode hinterlegen — der Hobby-Tarif (~5 $/Monat) deckt diesen Stack locker ab.

Open Railway → Railway öffnen →
2

Deploy the template Template installieren

Click the button. Railway provisions the finances service + Postgres + a 1 GB volume — all linked. Railway will ask you for one thing: API_TOKEN. We pre-generated one for you below — copy it, paste into Railway's prompt, then click Deploy. ~2 minutes total. Klick den Button. Railway provisioniert den finances-Service + Postgres + ein 1-GB-Volume — alles verbunden. Railway fragt dich nach einer Sache: API_TOKEN. Wir haben unten einen für dich vorgeneriert — kopieren, in Railways Prompt einfügen, dann auf Deploy klicken. ~2 Minuten.

API_TOKEN paste this when Railway askseinfügen, wenn Railway danach fragt
Auto-generated in your browser via Web Crypto (256 bits of entropy). Never sent anywhere. Each page-refresh = a new one. Click Regenerate if you want a fresh value. In deinem Browser via Web Crypto generiert (256 Bit Entropie). Geht nirgendwo hin. Jeder Seiten-Refresh = ein neuer Wert. Auf Neu generieren klicken für einen frischen Wert.
Manual setup (if the template fails or you prefer to do it yourself) Manuelles Setup (falls das Template fehlschlägt oder du es selbst machen willst)
  1. Railway → New project → Docker Image → paste: ghcr.io/timwernerdxb/finances:stable
  2. + Add → Database → PostgreSQL
  3. On the finances service: Settings → Volumes → mount 1 GB at /app/data
  4. On the finances service: Variables tab — set API_TOKEN (from above) + DATABASE_URL (value below)
DATABASE_URL
Railway reference syntax — auto-resolves to your Postgres URL. Only needed for manual setup; the template handles it automatically. Railway-Referenz-Syntax — wird zu deiner Postgres-URL aufgelöst. Nur für manuelles Setup nötig; das Template erledigt das automatisch.
${{Postgres.DATABASE_URL}}
3

Generate a public domain & paste your URL Öffentliche Domain generieren & URL einfügen

Railway services have no public URL by default. You need to generate one — takes 5 seconds: Railway-Services haben standardmäßig keine öffentliche URL. Du musst eine generieren — dauert 5 Sekunden:

  1. In Railway, click your finances service (not the Postgres one).In Railway auf den finances-Service klicken (nicht den Postgres).
  2. Top tabs: Settings → scroll to Networking section.Obere Tabs: Settings → zur Networking-Sektion scrollen.
  3. Under Public Networking, click "Generate Domain" (the lightning-bolt button). Railway gives you a free *.up.railway.app URL.Unter Public Networking auf "Generate Domain" klicken (der Blitz-Button). Railway gibt dir eine kostenlose *.up.railway.app-URL.
  4. Wait for the deploy to finish (~2 min from when you clicked Deploy in step 2). Railway shows a green "Active" badge when ready.Auf das Ende des Deploys warten (~2 Min seit Klick auf Deploy in Schritt 2). Railway zeigt einen grünen "Active"-Badge, wenn fertig.
  5. Copy the URL Railway just generated, paste it below, click Verify.Die generierte URL kopieren, unten einfügen, auf Prüfen klicken.

Custom domain instead? Click "Custom Domain" in the same Networking section, point your DNS at Railway, then paste your custom URL below. Don't forget to also set WEBAUTHN_RP_ID=your.domain.com in env vars before enrolling passkeys. Eigene Domain stattdessen? Auf "Custom Domain" in derselben Networking-Sektion klicken, DNS auf Railway zeigen lassen, dann deine eigene URL unten einfügen. Vor der Passkey-Enrollment WEBAUTHN_RP_ID=deine.domain.com in den Env-Vars setzen nicht vergessen.

4

Create your admin account Admin-Account anlegen

Your tenant's first-boot wizard lives at your-project.up.railway.app/setup. Pick an email + password, hit Create, and you're inside. Der First-Boot-Wizard deiner Instanz liegt unter dein-projekt.up.railway.app/setup. E-Mail + Passwort wählen, "Anlegen" klicken — du bist drin.

5

Email reminders — optional E-Mail-Erinnerungen — optional

Skip this and the app works fine — overdue payments still appear in the dashboard. Set it up if you want emails delivered: payment reminders, daily briefings, monthly reports. Überspringen ist okay — überfällige Zahlungen bleiben im Dashboard sichtbar. Einrichten, falls du E-Mails möchtest: Zahlungserinnerungen, tägliche Briefings, Monatsberichte.

Why your own account? Emails go from your domain (better deliverability + branding), and we never see who you're emailing or what about. Resend's free tier is 100 emails/day — plenty for personal use. Warum dein eigener Account? E-Mails gehen von deiner Domain (bessere Zustellung + Branding), und wir sehen weder Empfänger noch Inhalte. Resends Free-Tier reicht mit 100 E-Mails/Tag locker für privaten Gebrauch.

  1. Sign up at resend.com (GitHub OAuth, 30 sec)Auf resend.com registrieren (GitHub OAuth, 30 Sek)
  2. Verify your domain (or use their default *.resend.dev for testing)Domain verifizieren (oder Resends Default *.resend.dev zum Testen nutzen)
  3. API Keys → Create → copy the keyAPI Keys → Create → Schlüssel kopieren
  4. In Railway → finances service → Variables → add RESEND_API_KEY + RESEND_FROM (your verified from-address)In Railway → finances-Service → Variables → RESEND_API_KEY + RESEND_FROM (deine verifizierte Absender-Adresse) hinzufügen

Prefer SMTP or your own Outlook? Set SMTP_HOST + SMTP_USER + SMTP_PASS instead — same fallback chain. Lieber SMTP oder dein eigenes Outlook? Stattdessen SMTP_HOST + SMTP_USER + SMTP_PASS setzen — gleiche Fallback-Kette.

Open Resend → Resend öffnen →
6

Connect a bank — optional, later Bank verbinden — optional, später

All bank-feed integrations are optional and configurable from the Connections page. Pick the providers that match where your accounts live: Alle Bank-Anbindungen sind optional und über die Connections-Seite konfigurierbar. Wähle die Anbieter, die zu deinen Konten passen:

Each provider gives you their own API keys; you paste them into your Railway env vars. We've never seen them — they go from the provider straight to your tenant. Jeder Anbieter gibt dir eigene API-Keys; du fügst sie in deine Railway-Env-Vars ein. Wir bekommen sie nie zu sehen — sie gehen direkt vom Anbieter zu deiner Instanz.

What it costsWas es kostet
Railway Hobby tier (Postgres + service + 1GB volume)Railway-Hobby-Tarif (Postgres + Service + 1-GB-Volume) ~$5/mo
This app — open source-available, no license feeDiese App — Quellcode einsehbar, keine Lizenzgebühr $0
Bank aggregator API keys (free tiers usually cover personal use)Bank-Aggregator-API-Keys (Free-Tiers reichen meist für privaten Gebrauch) $0
TotalGesamt ~$5/mo