Self-host Akaunting
updated Sep 2026prices checked · Jul 2026
We earn commissions when you shop through the links below. Full disclosure →
Accounting software for small businesses and freelancers: invoices and bills, customers and vendors, bank accounts and transfers, and financial reports, extendable through an app store. Source-available under the Business Source License 1.1: free production use is limited to two users, one company and 1,000 invoices, and each release converts to GPLv3 four years after publication.
Key facts
CategoryInvoicing
LicenseBSL-1.1
StackPHP, Laravel, Vue.js, MariaDB
Min RAM512 MB
Official imageyes
Difficulty
What you need
- Any VPS with at least 512 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + USKamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + AsiaDigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + AsiaPaid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Akaunting + MariaDB — the official akaunting/docker compose file
git clone https://github.com/akaunting/docker akaunting && cd akaunting
cp env/db.env.example env/db.env && cp env/run.env.example env/run.env
# One generated DB password lands in both files; a generated admin password; APP_URL from the box's first IP. Akaunting only answers on the APP_URL host (any other hostname gets a 404), so on a cloud VM set it to your public IP or domain
sed -i "s|akaunting_password|$(openssl rand -hex 16)|" env/db.env env/run.env
sed -i "s|^APP_URL=.*|APP_URL=http://$(hostname -I | cut -d' ' -f1):8080|; s|^ADMIN_PASSWORD=.*|ADMIN_PASSWORD=$(openssl rand -hex 12)|" env/run.env
# First start runs the one-time installer (company + admin from env/run.env)
AKAUNTING_SETUP=true docker compose up -d
timeout 900 bash -c 'until curl -so /dev/null localhost:8080; do sleep 5; done'
# Upstream: never keep AKAUNTING_SETUP=true after the first run — recreate the container without it
docker compose up -d
# → http://SERVER_IP:8080 — log in with ADMIN_EMAIL / ADMIN_PASSWORD from env/run.envMore self-hosted tools
Invoicing
Invoice Ninja
PHPLaravelMySQLRedis
easyRead guide →
Wiki & docs
BookStack
PHPLaravel
easyRead guide →
Platform-as-a-Service
Coolify
PHPLaravel
easyRead guide →
CMS & blogging
Drupal
PHPSymfony
easyRead guide →