Akaunting Free Accounting
Free and open-source accounting software for small businesses.
Overview
Akaunting is a comprehensive, open-source accounting platform designed specifically for small businesses, freelancers, and startups who need professional-grade financial management without the enterprise price tag. Built with PHP and Laravel framework, Akaunting offers double-entry bookkeeping, invoicing, expense tracking, and financial reporting capabilities that rival commercial solutions like QuickBooks or FreshBooks. The software supports multi-currency operations, tax management, and comes with a marketplace of extensions for specialized business needs. This Docker stack combines Akaunting with MariaDB to create a self-hosted financial management system that maintains complete data ownership while providing enterprise-level accounting features. MariaDB serves as the robust database backend, leveraging its enhanced performance characteristics and Aria storage engine to handle complex financial transactions and reporting queries efficiently. The combination eliminates dependency on cloud-based accounting services while providing better performance than traditional MySQL setups. This stack is particularly valuable for businesses requiring GDPR compliance, custom financial workflows, or integration with existing enterprise systems. Small business owners, accounting firms managing multiple clients, and organizations needing customizable financial reporting will find this deployment offers the flexibility and control that cloud-based solutions cannot match.
Key Features
- Double-entry bookkeeping system with automated journal entries and account reconciliation
- Multi-currency support with real-time exchange rate updates and currency conversion tracking
- Professional invoice generation with customizable templates, recurring billing, and payment gateway integration
- Expense management with receipt scanning, vendor tracking, and automated categorization
- Financial reporting dashboard with P&L statements, balance sheets, and cash flow analysis
- MariaDB Aria storage engine providing crash-safe tables and improved performance for financial data
- Apps marketplace integration allowing installation of banking connectors, payment processors, and industry-specific modules
- Multi-company support enabling accounting firms to manage multiple client books from single installation
Common Use Cases
- 1Small business owners replacing QuickBooks or similar commercial accounting software with self-hosted solution
- 2Freelancers and consultants needing professional invoicing with integrated expense tracking and tax reporting
- 3Accounting firms managing multiple client accounts with separated company books and custom branding
- 4International businesses requiring multi-currency support with automated exchange rate management
- 5Organizations needing GDPR-compliant financial data storage with complete control over sensitive information
- 6Startups requiring scalable accounting infrastructure that grows from basic invoicing to complex financial management
- 7Non-profit organizations tracking donations, grants, and program expenses with detailed reporting requirements
Prerequisites
- Minimum 1GB RAM for MariaDB performance with financial data processing and concurrent user access
- Port 8080 available for Akaunting web interface access and administrative functions
- Basic understanding of accounting principles including double-entry bookkeeping and chart of accounts structure
- SSL certificate and reverse proxy setup recommended for production deployment with sensitive financial data
- Regular backup strategy for both MariaDB data volumes and Akaunting file storage containing invoices and receipts
- Valid SMTP configuration for automated invoice delivery and system notifications
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 akaunting: 3 image: akaunting/akaunting:latest4 container_name: akaunting5 environment: 6 - APP_URL=${APP_URL}7 - LOCALE=en-US8 - DB_HOST=db9 - DB_PORT=330610 - DB_NAME=akaunting11 - DB_USERNAME=akaunting12 - DB_PASSWORD=${DB_PASSWORD}13 - DB_PREFIX=akaunt_14 - COMPANY_NAME=${COMPANY_NAME}15 - COMPANY_EMAIL=${COMPANY_EMAIL}16 - ADMIN_EMAIL=${ADMIN_EMAIL}17 - ADMIN_PASSWORD=${ADMIN_PASSWORD}18 volumes: 19 - akaunting-data:/var/www/html/storage20 ports: 21 - "8080:80"22 depends_on: 23 - db24 networks: 25 - akaunting-network26 restart: unless-stopped2728 db: 29 image: mariadb:10.1130 container_name: akaunting-db31 environment: 32 - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}33 - MYSQL_DATABASE=akaunting34 - MYSQL_USER=akaunting35 - MYSQL_PASSWORD=${DB_PASSWORD}36 volumes: 37 - mariadb-data:/var/lib/mysql38 networks: 39 - akaunting-network40 restart: unless-stopped4142volumes: 43 akaunting-data: 44 mariadb-data: 4546networks: 47 akaunting-network: 48 driver: bridge.env Template
.env
1# Akaunting2APP_URL=http://localhost:80803COMPANY_NAME=My Company4COMPANY_EMAIL=company@example.com5ADMIN_EMAIL=admin@example.com6ADMIN_PASSWORD=secure_admin_password78# Database9DB_PASSWORD=secure_akaunting_password10DB_ROOT_PASSWORD=secure_root_passwordUsage Notes
- 1Web UI at http://localhost:8080
- 2Setup wizard on first visit
- 3Double-entry accounting
- 4Multi-currency support
- 5Apps marketplace available
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
akaunting
akaunting:
image: akaunting/akaunting:latest
container_name: akaunting
environment:
- APP_URL=${APP_URL}
- LOCALE=en-US
- DB_HOST=db
- DB_PORT=3306
- DB_NAME=akaunting
- DB_USERNAME=akaunting
- DB_PASSWORD=${DB_PASSWORD}
- DB_PREFIX=akaunt_
- COMPANY_NAME=${COMPANY_NAME}
- COMPANY_EMAIL=${COMPANY_EMAIL}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
volumes:
- akaunting-data:/var/www/html/storage
ports:
- "8080:80"
depends_on:
- db
networks:
- akaunting-network
restart: unless-stopped
db
db:
image: mariadb:10.11
container_name: akaunting-db
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=akaunting
- MYSQL_USER=akaunting
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
- mariadb-data:/var/lib/mysql
networks:
- akaunting-network
restart: unless-stopped
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 akaunting:5 image: akaunting/akaunting:latest6 container_name: akaunting7 environment:8 - APP_URL=${APP_URL}9 - LOCALE=en-US10 - DB_HOST=db11 - DB_PORT=330612 - DB_NAME=akaunting13 - DB_USERNAME=akaunting14 - DB_PASSWORD=${DB_PASSWORD}15 - DB_PREFIX=akaunt_16 - COMPANY_NAME=${COMPANY_NAME}17 - COMPANY_EMAIL=${COMPANY_EMAIL}18 - ADMIN_EMAIL=${ADMIN_EMAIL}19 - ADMIN_PASSWORD=${ADMIN_PASSWORD}20 volumes:21 - akaunting-data:/var/www/html/storage22 ports:23 - "8080:80"24 depends_on:25 - db26 networks:27 - akaunting-network28 restart: unless-stopped2930 db:31 image: mariadb:10.1132 container_name: akaunting-db33 environment:34 - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}35 - MYSQL_DATABASE=akaunting36 - MYSQL_USER=akaunting37 - MYSQL_PASSWORD=${DB_PASSWORD}38 volumes:39 - mariadb-data:/var/lib/mysql40 networks:41 - akaunting-network42 restart: unless-stopped4344volumes:45 akaunting-data:46 mariadb-data:4748networks:49 akaunting-network:50 driver: bridge51EOF5253# 2. Create the .env file54cat > .env << 'EOF'55# Akaunting56APP_URL=http://localhost:808057COMPANY_NAME=My Company58COMPANY_EMAIL=company@example.com59ADMIN_EMAIL=admin@example.com60ADMIN_PASSWORD=secure_admin_password6162# Database63DB_PASSWORD=secure_akaunting_password64DB_ROOT_PASSWORD=secure_root_password65EOF6667# 3. Start the services68docker compose up -d6970# 4. View logs71docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/akaunting-accounting/run | bashTroubleshooting
- Akaunting installation wizard shows database connection error: Verify DB_PASSWORD matches between akaunting and db services in environment variables
- Currency conversion rates not updating automatically: Check internet connectivity from akaunting container and verify API rate limits haven't been exceeded
- Invoice PDF generation fails with memory errors: Increase PHP memory limit by adding PHP_MEMORY_LIMIT environment variable to akaunting service
- MariaDB container fails to start with 'Table corrupt' errors: Stop containers and run docker exec akaunting-db mysql_upgrade to repair Aria storage engine tables
- Apps marketplace shows connection timeout: Ensure akaunting container has outbound internet access for marketplace API and verify firewall rules
- Multi-company setup shows permission denied errors: Check akaunting-data volume permissions and ensure web server user has write access to storage directory
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
akauntingmariadb
Tags
#accounting#invoicing#akaunting#finance#bookkeeping
Category
Full Web StacksAd Space
Shortcuts: C CopyF FavoriteD Download