Lenverge
Lenverge is a lightweight, Ansible-powered environment tool built for Laravel and legacy PHP projects. It delivers fast, VM-free provisioning directly on Ubuntu or WSL2 — ideal for modern apps and legacy codebases alike.
Lenverge comes from Laravel, Legacy, and Lightweight Environment — built for projects that sit on the verge of legacy and modern, and need a clean bridge.
Core Features
- No Virtual Machine: Runs directly on Ubuntu 22.04+ (or WSL2 Ubuntu).
- Centralized Configuration: Define your entire stack in one simple
Lenverge.yamlfile. - Multi-PHP Ready: Run different sites on different PHP versions simultaneously.
- Smart CLI Wrappers: Automatically uses the correct PHP version for
php,composer, andartisancommands based on your current project directory. - Developer Utilities: Easily enable tools like phpMyAdmin and Redis.
- WSL-Optimized: Automatically configures WSL for optimal performance and file permissions.
Prerequisites
-
Ubuntu 22.04 or higher (or WSL2 with Ubuntu).
-
Sudo Access: Your user must have
sudoprivileges. -
Core Dependencies: You need Ansible, Git, and the Ansible collection for PostgreSQL management. You can install all of them with these two commands.
1. Install System Packages:
sudo apt update && sudo apt install ansible git -y2. Install Ansible PostgreSQL Collection:
ansible-galaxy collection install community.postgresql
How to Run
1. Get the Code
Clone the repository to a convenient location, like your home directory.
git clone https://git.marmattheo.com/marito/Lenverge.git ~/Lenverge && cd ~/Lenverge
2. Configure Your Environment (Lenverge.yaml)
This is the most important step. Open Lenverge.yaml and define your entire environment.
# ------------------------------------------------------------------
# Lenverge: Central Configuration for Your Development Environment
# ------------------------------------------------------------------
# Optional developer utilities
utilities:
phpmyadmin:
enabled: false
domain: "pma.lenverge.local"
php_version: "8.2"
redis:
enabled: false
# 1. Database Engine: mariadb, mysql, or postgresql
db_engine: "mariadb"
# 2. Global Database Credentials
db_credentials:
user: "Lenverge"
password: "secret"
# 3. Your Web Projects
sites:
- domain: mylaravelapp.local
project_root: /home/lenverge/projects/laravel
document_root: /home/lenverge/projects/laravel/public
php_version: "8.2"
database: "laravel_db"
Key Configuration Options:
utilities: Setenabled: trueto install optional tools likephpmyadminandredis.db_engine: Choose betweenmariadb,mysql, orpostgresql. Lenverge will install and manage the correct service.sites: A list of all your projects.domain: The local domain name you'll use in the browser.project_root: The base directory of your project (where.gitorcomposer.jsonlives).document_root: The public-facing directory Nginx serves (e.g.,/publicfor Laravel).php_version: The PHP version for this specific site.database: (Optional) The name of the database to create for this site.
WSL Performance Tip: For the best performance, keep your project files inside the WSL filesystem (e.g.,
/home/user/projects) rather than on the mounted Windows filesystem (e.g.,/mnt/c/Users/...).
3. Run the Provisioning Script
To set up or update your environment, use the simple lenverge.sh script.
First, make the script executable (you only need to do this once):
chmod +x lenverge.sh
Now, run the script. It will handle everything for you and will prompt for your sudo password to perform the necessary system changes.
./lenverge.sh
WSL Users: The very first time you run this, the script may stop and ask you to restart WSL. This is a one-time setup step to fix file permissions. Follow the on-screen instructions, and then re-run
./lenverge.sh.
Post-Installation
1. Update Your hosts File
For your browser to access local domains, you must map them to your local machine.
- On Linux: Edit
/etc/hosts.sudo nano /etc/hosts - On Windows (for WSL): Open Notepad as an Administrator and edit
C:\Windows\System32\drivers\etc\hosts. Add an entry for each domain defined inLenverge.yaml:
127.0.0.1 mylaravelapp.local
# Add other project domains here
# Add utility domains if enabled, e.g.:
# 127.0.0.1 pma.lenverge.local
2. Configure Your Application (.env)
Update your application's .env file to use the database credentials from Lenverge.yaml.
Example .env for mylaravelapp.local (MariaDB/MySQL):
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=Lenverge
DB_PASSWORD=secret
# If you enabled Redis in Lenverge.yaml
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Example .env for a PostgreSQL project:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel_db_pg
DB_USERNAME=Lenverge
DB_PASSWORD=secret
3. Verify Your Setup
- Web Access: Open your browser and navigate to
http://mylaravelapp.local. - Smart PHP Version: The
php,composer, andartisancommands are context-aware.cd /home/lenverge/projects/laravel php --version # Will show the PHP version defined for this site composer install
Daily Workflow
Lenverge is designed to be declarative. To make any changes, simply edit Lenverge.yaml and re-run the provisioning script with ./lenverge.sh.
- To Add a New Site: Add a new entry to the
siteslist, update yourhostsfile, and run./lenverge.sh. - To Remove a Site: Delete the site's block from
Lenverge.yaml. When you re-run./lenverge.sh, Lenverge will automatically remove its Nginx configuration. - To Change a PHP Version: Update the
php_versionfor a site and run./lenverge.sh. - To Enable a Utility: Set
enabled: trueforphpmyadminorredis, update yourhostsfile if needed, and run./lenverge.sh.