How to Install Akaunting

Updated June 2026
Akaunting can be installed in under 30 minutes using Docker, or manually on any Linux server running PHP 8.1 or later with MySQL or PostgreSQL. This guide covers both deployment methods, from initial server preparation through SSL configuration and first-time setup, so you can start managing invoices, expenses, and financial reports on your own infrastructure.

Akaunting is a web-based accounting platform built on the Laravel PHP framework. It requires a web server, PHP with specific extensions, a database, and Composer for dependency management. Docker simplifies this by packaging everything into preconfigured containers. The manual approach gives you more control but involves installing and configuring each component individually. Choose whichever method fits your comfort level and server environment.

Step 1: Prepare Your Server

You need a Linux server (Ubuntu 22.04 or 24.04 LTS recommended) with at least 1 GB of RAM, 1 vCPU, and 20 GB of SSD storage. These specifications are sufficient for small business workloads with moderate transaction volume. For larger deployments or if you plan to install marketplace apps that add functionality, 2 GB of RAM provides comfortable headroom.

If you are using a VPS from a provider like Hetzner, DigitalOcean, or Linode, provision a fresh Ubuntu instance and connect via SSH. Update the system packages first. Create a non-root user with sudo privileges if one does not already exist, and configure SSH key authentication. For a comprehensive security hardening walkthrough, see our self-hosting guide.

Point your domain or subdomain to your server's IP address by creating an A record in your DNS settings. Use a dedicated subdomain like accounting.yourbusiness.com rather than the root domain, as this keeps your accounting system separate from your public website and simplifies SSL configuration. DNS propagation usually takes a few minutes to a few hours.

Step 2: Install Using Docker (Recommended)

Docker is the fastest and most reliable way to deploy Akaunting. It bundles the application, PHP, and all required extensions into a container that runs consistently on any Linux server.

Install Docker and Docker Compose on your server using the official Docker repository. The Docker documentation provides installation scripts for all major Linux distributions. Once Docker is installed, verify it is running.

Create a directory for your Akaunting deployment and within it create a docker-compose.yml file. The configuration defines two services: the Akaunting application container and a MySQL database container. Key settings to configure include the database name, database username and password, the Akaunting admin email and password, and the locale and timezone. The official Akaunting Docker image on Docker Hub includes the complete configuration reference.

Map the appropriate volumes so that your database data and Akaunting storage (uploads, configurations) persist outside the containers. This is critical because without volume mappings, your data disappears when containers are recreated during updates. Map the MySQL data directory to a host path, and map Akaunting's storage directory similarly.

Launch the stack by running docker-compose up -d from the deployment directory. Docker pulls the images, creates the containers, and starts the services. The first startup takes a few minutes as the database initializes and Akaunting runs its installation migrations. You can watch the progress in the container logs.

Once the containers are running, Akaunting is accessible on port 8080 (or whichever port you configured) of your server. Before accessing it through a browser, set up a reverse proxy with SSL as described in Step 4.

Step 3: Or Install Manually on Ubuntu

If you prefer a traditional deployment without Docker, install the components directly on your server.

Install Nginx: Nginx serves as the web server and reverse proxy. Install it from the Ubuntu repositories and verify it is running by visiting your server's IP address in a browser, which should show the default Nginx welcome page.

Install PHP 8.1+ and extensions: Akaunting requires PHP 8.1 or higher with the following extensions: BCMath, Ctype, cURL, DOM, Fileinfo, GD, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XML, and ZIP. Install the PHP FPM package along with all required extensions from the Ubuntu repositories. After installation, verify the PHP version and confirm all extensions are loaded.

Install MySQL: Install MySQL 8.0 from the Ubuntu repositories. Run the security script to set a root password, remove anonymous users, and disable remote root login. Then create a dedicated database and database user for Akaunting. Grant the new user full privileges on the Akaunting database only.

Install Composer: Composer manages PHP dependencies. Download and install it globally following the instructions on the official Composer website.

Deploy Akaunting: Clone the Akaunting repository from GitHub into your web root directory (typically /var/www/akaunting). Navigate into the directory and run composer install --no-dev to install production dependencies. Copy the .env.example file to .env and generate an application key. Configure the .env file with your database credentials, application URL, and other settings.

Configure Nginx: Create an Nginx server block for your Akaunting domain. The configuration should set the document root to the Akaunting public directory, enable PHP processing through PHP-FPM, and configure URL rewriting for Laravel's routing. Enable the server block by creating a symbolic link in the sites-enabled directory and reload Nginx.

Set file permissions: The web server user (www-data on Ubuntu) needs write access to the storage and bootstrap/cache directories. Set ownership with chown and permissions with chmod to allow the web server to write logs, cache files, and uploaded content while preventing world-readable access to sensitive files.

Step 4: Configure SSL with Certbot

SSL encryption is mandatory for accounting software. Financial data transmitted over unencrypted connections can be intercepted on any network between the browser and server.

Install Certbot and its Nginx plugin from the Ubuntu repositories. Run Certbot with the nginx flag, specifying your domain. Certbot automatically obtains a certificate from Let's Encrypt, configures Nginx to use it, and sets up HTTP-to-HTTPS redirection. The entire process is automated and takes about 30 seconds.

Certbot installs a cron job or systemd timer that automatically renews the certificate before it expires (every 90 days). Verify that automatic renewal is configured by running a dry-run renewal test.

For Docker deployments, place Nginx or a dedicated reverse proxy container (Nginx Proxy Manager is a popular choice with a web UI) in front of the Akaunting container. The reverse proxy handles SSL termination and forwards decrypted traffic to the Akaunting container. Nginx Proxy Manager integrates with Let's Encrypt for automatic certificate management with a point-and-click interface.

After SSL is configured, update Akaunting's APP_URL in the .env file (for manual installs) or the environment variable (for Docker) to use https:// rather than http://. This ensures all generated URLs, invoice links, and email notifications use the correct protocol.

Step 5: Complete the Web Installer

With the server configured and SSL active, open your Akaunting domain in a browser. The web installer walks you through final configuration.

The installer verifies that PHP extensions and directory permissions meet requirements. If anything is missing, it identifies the specific issue so you can fix it before proceeding. For Docker installations, requirements are already met by the container image.

Enter your database connection details (host, port, database name, username, and password). For Docker deployments, the database host is the name of the MySQL service defined in your docker-compose.yml. For manual installs, use localhost or 127.0.0.1.

Create your administrator account with a strong, unique password. This account has full access to all company data and settings, so protect it accordingly. Enable two-factor authentication after initial setup if Akaunting or a marketplace app supports it.

Set up your company profile with your business name, address, tax identification numbers, logo, and default currency. This information appears on invoices, reports, and other documents generated by the application. You can create additional companies later from the settings panel if you manage finances for multiple businesses.

After completing the installer, log in with your admin credentials. Start by configuring your chart of accounts (Akaunting provides defaults that work for most small businesses), creating your first customer and vendor records, and testing the invoice generation workflow.

Step 6: Configure Backups and Updates

Set up automated database backups on the first day. For MySQL, create a cron job that runs mysqldump daily, compresses the output, and saves it with a timestamped filename. For Docker, run the mysqldump command inside the database container. Copy backups to an offsite location using rclone or a scheduled rsync job.

For Akaunting updates, the approach depends on your deployment method. Docker users pull the latest image and recreate the container, while the database volume persists between versions. Manual installations use Composer to pull updates from the repository, then run Laravel's migration command to apply any database schema changes. Always back up both the database and application files before applying updates.

Monitor the Akaunting GitHub releases page or subscribe to their announcement channels to stay informed about new versions, especially security patches. Apply security updates promptly, as accounting software is a high-value target for attackers.

Key Takeaway

Docker is the recommended installation method for Akaunting because it handles dependency management, simplifies updates, and provides consistent behavior across different server environments. Manual installation gives you more direct control but requires familiarity with Nginx, PHP, and MySQL administration. Either way, SSL and automated backups are non-negotiable for production use.