Drop a folder into your web server. Open it in a browser. Run the 3-step installer. You're managing databases. Pick the method that fits your stack — git, zip, or Docker.
Open a terminal, navigate to your web server's document root, and clone the repository. The destination folder name becomes your URL path — choose whatever fits your setup.
cd /path/to/htdocs
git clone https://github.com/ClearanceClarence/Ledger.git ledger
C:\xampp\htdocs\. MAMP uses /Applications/MAMP/htdocs/. Most Linux setups use /var/www/html/.Open http://localhost/ledger/ in your browser (or whatever path matches the folder name you chose). The installer page loads automatically when no config.php exists yet.
open http://localhost/ledger/
The visual installer walks you through database connection, admin account, and confirmation. Each step validates before proceeding — connection tested live, password strength checked, common passwords rejected.
Host, port, username, password. Tested before proceeding — failures show the exact PDO error with suggestions.
Username and password (min 6 chars, common passwords rejected). Bcrypt-hashed immediately.
config.php is generated. You're redirected to the login page.
Download the latest release from GitHub. Source code zip is fine — no separate build artifact needed.
Download v1.0.0-betaUnzip to a folder inside your web server's document root. Rename the folder if you want a shorter URL path — Ledger-1.0.0-beta/ becomes ledger/ for cleaner URLs.
Same 3-step wizard as the Git method — database connection, admin account, done. Open http://localhost/ledger/ and follow the prompts.
open http://localhost/ledger/
The repository ships with a Dockerfile and docker-compose.yml at the root. No separate Docker image to pull.
git clone https://github.com/ClearanceClarence/Ledger.git
cd Ledger
Two containers come up: Ledger on PHP 8.2 + Apache, and MySQL 8.0. Three named volumes persist data across restarts.
docker-compose up -d
8080. MySQL exposed on 3307 for external clients.Visit http://localhost:8080/. In the installer, use db as the host (the container name on the internal Docker network) and the default root password ledger_root_pass.
open http://localhost:8080/
ledger_root_pass in docker-compose.yml before deploying anywhere reachable.Ledger runs on the same stack you already have. No special anything.
The most common install issues. If yours isn't here, file a bug report — real questions help everyone.
Usually one of three things. Check in order:
127.0.0.1 works almost always. localhost sometimes fails on Linux because PHP tries the socket path instead of TCP.3306. MAMP uses 8889 sometimes. Check your installation docs.The web server user (typically www-data on Linux or SYSTEM on Windows) can't write to the install directory. Two options:
chmod 755 ledger/ on Linux, or check folder permissions on Windows.config.php by copying config.template.php and filling in your values. The installer skips this step if the file already exists.Usually a missing PHP extension or an unreadable config.php. Check the PHP error log first — it's the fastest path to the actual cause.
logs/error.log inside your Apache directory./var/log/php-fpm/error.log or wherever error_log points in php.ini.xampp/apache/logs/error.log and xampp/php/logs/.The most common missing extension is pdo_mysql. Run php -m | grep pdo from the command line to verify.
Usually a session or .htaccess issue. Try:
js/ledger.js or CSS files. If they 404, your web server doesn't have the right rewrite rules or alias./admin/ledger/, make sure mod_rewrite is enabled and .htaccess is being read (AllowOverride All in Apache).Shared hosting varies wildly. Some common ones:
open_basedir restrictions can block logs/ writes. Set 'log_dir' => '/tmp/ledger/' in config.php if you can't relax the restriction.Open an issue on GitHub. Include your PHP version, MySQL/MariaDB version, OS, and the exact error. Real bug reports get real responses.