Self-Hosting Akaunting: A Complete Guide to Installing, Configuring, and Running Your Laravel-Powered Accounting System in 2026

Akaunting is a free, open-source, self-hosted accounting platform built with Laravel, Vue.js, and Tailwind. It provides professional invoicing, expense tracking, double-entry bookkeeping, banking, reports, recurring transactions, and a modular App Store. Ideal for freelancers, small businesses, and IT teams seeking privacy and zero subscription fees (v3.1.21 – actively maintained).

Introduction

Small businesses, freelancers, and IT teams frequently waste hours juggling spreadsheets, multiple SaaS invoicing tools, and manual expense tracking. Late payments, lost receipts, and compliance headaches add up quickly. Akaunting eliminates these issues as a free, open-source, fully self-hosted online accounting platform built on Laravel. The latest stable release—v3.1.21 (December 2025, actively maintained into 2026)—delivers double-entry bookkeeping, professional invoicing, expense tracking, banking reconciliation, reports, payroll, CRM features, and a modular App Store for extensions.

With over 620,000 downloads and thousands of GitHub stars, Akaunting ranks among the most popular Laravel-based self-hosted business tools. It solves three major problems for developers, sysadmins, and small teams:

  • Complete financial control: Track income, expenses, invoices, bills, and cash flow in one private instance—no cloud vendor lock-in or recurring fees.
  • Modern usability: Clean Vue.js + Tailwind interface with mobile support, RESTful API, multi-currency, and automated recurring transactions.
  • Extensibility: Modular architecture lets you install community or custom apps for inventory, HR, or advanced reporting.

Lightweight enough for a $10/month VPS yet powerful for growing teams, Akaunting runs on standard LEMP stacks. This guide provides a production-ready setup on Ubuntu 24.04 LTS with Nginx. The entire process is beginner-to-intermediate friendly and takes 30–50 minutes. By the end, you’ll have a secure, fully functional accounting system accessible via your domain.

Prerequisites

Akaunting v3.1.x requires a standard Laravel environment. Here are the exact 2026-validated requirements:

Hardware (minimum for 1–20 users and hundreds of transactions):

  • CPU: 2 cores (4+ recommended for reports and PDF generation)
  • RAM: 2 GB (4 GB+ ideal)
  • Storage: 10 GB+ free (SSD preferred)

Operating System:

  • Ubuntu 24.04 LTS (recommended) or Debian 12
  • Windows/WSL2 or Docker supported but Linux preferred for production

Software Dependencies:

  • PHP 8.3+ (8.1 minimum) with extensions: bcmath, curl, gd, intl, mbstring, mysql, openssl, xml, zip, bz2
  • Composer 2.8+
  • Node.js 20+ and npm (for frontend assets)
  • Web server: Nginx (recommended) or Apache
  • Database: MariaDB 10.6+ / MySQL 8.0+ (PostgreSQL or SQLite supported)
  • Git

Accounts/Extras:

  • Domain or subdomain (e.g., accounting.example.com) with Let’s Encrypt SSL
  • SSH access with sudo privileges
  • (Optional) SMTP for email notifications; payment gateways via apps

Quick Checklist:

  • Fresh Ubuntu 24.04 server with sudo
  • Backed-up environment
  • Domain pointed to server IP
  • Firewall allowing ports 80/443

Installation Guide

We’ll use the official Git clone method—ideal for easy updates and full control (the tarball download from akaunting.com is an alternative noted below).

Step 1: System Preparation (Ubuntu 24.04)

sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx mariadb-server php8.3-fpm php8.3-cli \
    php8.3-bcmath php8.3-curl php8.3-gd php8.3-intl \
    php8.3-mbstring php8.3-mysql php8.3-xml php8.3-zip \
    php8.3-bz2 git unzip curl nodejs npm build-essential

Install Composer:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Secure MariaDB:

sudo mysql_secure_installation

Create database and user (replace strong_password):

sudo mysql -u root -p
CREATE DATABASE akaunting CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'akaunting_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON akaunting.* TO 'akaunting_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Step 2: Download and Install Akaunting

sudo mkdir -p /var/www/akaunting
cd /var/www/akaunting
sudo git clone https://github.com/akaunting/akaunting.git .
sudo chown -R www-data:www-data /var/www/akaunting

Install dependencies:

sudo -u www-data composer install --no-dev --optimize-autoloader
sudo -u www-data npm install
sudo -u www-data npm run dev

Step 3: Configure Nginx

sudo nano /etc/nginx/sites-available/akaunting

Paste this production config (replace accounting.example.com):

server {
    listen 80;
    server_name accounting.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name accounting.example.com;

    root /var/www/akaunting/public;
    index index.php index.html;

    ssl_certificate /etc/letsencrypt/live/accounting.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/accounting.example.com/privkey.pem;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Enable and restart:

sudo ln -s /etc/nginx/sites-available/akaunting /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx php8.3-fpm

Step 4: Run the Installer

cd /var/www/akaunting
sudo -u www-data php artisan install \
  --db-name="akaunting" \
  --db-username="akaunting_user" \
  --db-password="strong_password" \
  --admin-email="admin@accounting.example.com" \
  --admin-password="your_strong_admin_password"

(Optional) Seed sample data for testing:

sudo -u www-data php artisan sample-data:seed

Alternative: Tarball Method
Download the latest package from https://akaunting.com/download, unzip to /var/www/akaunting, then run the web installer at https://accounting.example.com.

Alternative: Docker
Official community Docker images are available—see the GitHub repository for examples.

Configuration

Akaunting uses a standard Laravel .env file (copied automatically during install). Edit key production settings with:

sudo -u www-data nano .env

Sample production configuration:

APP_NAME="Akaunting"
APP_ENV=production
APP_KEY=base64:your-generated-key-here
APP_URL=https://accounting.example.com
APP_DEBUG=false

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=akaunting
DB_USERNAME=akaunting_user
DB_PASSWORD=strong_password

MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your-smtp-user
MAIL_PASSWORD=your-smtp-pass
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@accounting.example.com
MAIL_FROM_NAME="Akaunting"

# Optional: Queue for background jobs
QUEUE_CONNECTION=database

Clear caches:

sudo -u www-data php artisan config:cache
sudo -u www-data php artisan route:cache

Set permissions:

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

Set up cron for scheduled tasks (recurring invoices, reports):

sudo -u www-data crontab -e

Add:

* * * * * cd /var/www/akaunting && php artisan schedule:run >> /dev/null 2>&1

Usage

  1. Access the Application: Visit https://accounting.example.com. Log in with the admin credentials created during install.
  2. Dashboard Overview: View cash flow charts, receivables, payables, and profit/loss at a glance.

Akaunting Dashboard
Figure 1: Akaunting modern dashboard with cash flow, receivables, payables, and profit & loss summaries.

  1. Create Your First Invoice: Go to Sales → Invoices → New Invoice. Add customer, line items, and send instantly.

Akaunting features
Figure 2: Akaunting invoices list and detail view with payment status and quick actions.

  1. Test Core Features:
    • Track expenses under Purchases → Expenses.
    • Reconcile bank accounts under Banking.
    • Generate reports for profit & loss or cash flow.

Akaunting Invoices
Figure 3: Akaunting invoices interface showing overdue, open, and draft statuses with real-time summaries.

The responsive UI works perfectly on desktop and mobile. Use the App Store for additional modules (inventory, payroll, etc.) and the API for custom integrations.

Troubleshooting

Common Error Cause Fix
500 error / blank page Missing APP_KEY or permissions Run php artisan key:generate + fix storage ownership
Database connection failed Wrong .env credentials Verify DB user/password and re-run installer
npm run dev fails Missing build tools Install build-essential and retry
Images/CSS not loading Wrong Nginx document root Confirm root /var/www/akaunting/public;
Emails not sending SMTP misconfigured Test settings in .env and check logs
Installer hangs Missing PHP extensions Reinstall required PHP modules and restart PHP-FPM

Check logs: storage/logs/laravel.log or journalctl -u nginx.

Conclusion

Self-hosting Akaunting delivers professional-grade accounting with zero recurring costs and complete data sovereignty. Benefits include beautiful dashboards, automated invoicing and recurring billing, powerful reports, modular extensions, and a clean Laravel backend that’s easy to maintain and customize.

Next Steps:

  • Scale: Add Redis for queues and enable the built-in backup module.
  • Secure: Keep SSL active, schedule regular database backups, and enable 2FA via available apps.
  • Integrate: Connect payment gateways (Stripe, PayPal), import CSV data, or automate with webhooks and the REST API.
  • Maintain: Update with git pull origin master, run composer install && npm run dev, then php artisan akaunting:upgrade.

Start today with the Git clone method and take full control of your business finances. Official resources:

Akaunting continues to prove why Laravel remains the premier framework for elegant, maintainable self-hosted business tools in 2026. Your books deserve this level of clarity and freedom.

(Word count: 1,912)

Share:

Get new posts in your inbox

No spam. One short email per new article — practical PHP, Laravel, devops, and AI-assisted workflows.

Comments

Powered by GitHub Discussions via Giscus. A free GitHub account is required.