Railway

Deploy Akaunting | (Just Updated) QuickBooks Alternative Whose Recurring Invoices Actually Run

Books that actually run recurring invoices. Volumes, admin seeded.

Deploy Akaunting | (Just Updated) QuickBooks Alternative Whose Recurring Invoices Actually Run

Just deployed

/var/www/html

/var/lib/mysql

Deploy and Host Akaunting on Railway

Akaunting is open-source accounting software for small businesses and freelancers: invoicing, expenses, bills, banking, reporting and multi-company bookkeeping in the browser. This template runs Akaunting 3.1.21 with MariaDB, on persistent volumes, with the administrator account seeded before the public URL ever answers a request.

About Hosting Akaunting

Two services: Akaunting (Apache + PHP, public HTTPS, volume at /var/www/html) and MariaDB (private networking, volume at /var/lib/mysql). The application, its .env, uploads and installed modules all live under the webroot, so the whole webroot is the volume — the official -v image unpacks the release into it on first boot and reuses it afterwards.

The scheduler runs inside the application container, next to Apache. That is not a cost saving, it is a correctness requirement: Console\Kernel::schedule() returns early unless config('app.installed') is true, and APP_INSTALLED=true is written by the installer into /var/www/html/.env on the volume. A separate scheduler service that cannot read that file registers zero Akaunting jobs — no recurring invoices, no invoice or bill reminders, no temp-file cleanup, no pruning — and still exits 0 every run, so nothing ever looks broken.

The installer runs exactly once, behind a marker on the volume. php artisan install is not idempotent: it regenerates APP_KEY and creates a second company plus a duplicate admin user, and the users unique index is (email, deleted_at), so MySQL's distinct NULLs let that duplicate through silently.

The administrator password is generated per deploy by Railway (${{secret}}) and the container refuses to boot without one, so the instance is claimed before it is reachable.

Common Use Cases

  • Send invoices, track customer payments, and run recurring billing on a schedule.
  • Record expenses, bills, banking activity and transfers for one or more companies.
  • Keep books for a freelance or small-business entity with reports and tax summaries.

Dependencies for Akaunting Hosting

  • Akaunting 3.1.21, pinned to the official image digest.
  • MariaDB 11.8.2 on Railway private networking.
  • Persistent volumes for the webroot and the database.

Deployment Dependencies

Implementation Details

Apache is re-pointed at Railway's injected $PORT on every boot, because Railway's HTTP healthcheck dials the injected port rather than the domain's target port. Readiness is a static /healthz.html; the root path redirects to /auth/login.

Sign in with the ADMIN_EMAIL shown in the Akaunting service variables (default admin@example.com, change it in the app afterwards) and the generated ADMIN_PASSWORD.

Before updating, back up both volumes and read the Akaunting release notes: the app migrates forward on boot and a downgrade is not supported.

This community template is maintained independently and is not affiliated with or endorsed by Akaunting.

Why Deploy Akaunting on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Akaunting on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
38
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51