Deploy Akaunting | (Just Updated) QuickBooks Alternative Whose Recurring Invoices Actually Run
Books that actually run recurring invoices. Volumes, admin seeded.
akaunting
Just deployed
/var/www/html
Just deployed
/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
