fernandoebert / valet-linux-plus
Advanced local development experience for Linux.
Requires
- php: ^8.2
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
- ext-posix: *
- ext-xml: *
- illuminate/collections: ^11.4 || ^12.0
- illuminate/container: ^11.0 || ^12.0
- mnapoli/silly: ^1.9
- nategood/httpful: ^1.0
- symfony/process: ^7.0
- uttamrabadiya/console-components: ^1.0.1
Requires (Dev)
- ext-zip: *
- friendsofphp/php-cs-fixer: ^3.3
- mockery/mockery: ^1.2.3
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ~5.5|^9.0
- squizlabs/php_codesniffer: ^3.9
- symfony/var-dumper: ^7.0
Suggests
None
Provides
None
Conflicts
Replaces
None
This package is auto-updated.
Last update: 2026-11-11 21:46:43 UTC
README
Introduction
Valet Linux+ is an advanced development environment for Linux minimalists. No Vagrant, no /etc/hosts file. You can even share your sites publicly using local tunnels. Yeah, we like it too.
Valet Linux+ configures your system to always run Nginx in the background when your machine starts. Then, using DnsMasq, Valet proxies all requests on the *.test domain to point to sites installed on your local machine.
In other words, a blazing fast PHP development environment that uses roughly 7mb of RAM. Valet Linux+ isn't a complete replacement for Vagrant or Homestead, but provides a great alternative if you want flexible basics, prefer extreme speed, or are working on a machine with a limited amount of RAM.
About this fork
This is a maintained fork of genesisweb/valet-linux-plus, published on Packagist as fernandoebert/valet-linux-plus. Issues and pull requests should be opened at FernandoEbert/valet-linux-plus.
Documentation website: valet-linux-plus.ebertsystem.com.br (temporary URL, a dedicated domain is coming soon).
Installation
composer global require fernandoebert/valet-linux-plus valet install
Migrating from genesisweb/valet-linux-plus
Both packages cannot be installed side by side, so the migration swaps one for the other.
What is preserved
- Your Valet configuration in
~/.config/valet: parked paths, links, certificate authority, isolated PHP versions and database credentials. - Your databases.
valet installdoes not reinstall or reconfigure MySQL/MariaDB when it is already installed and its credentials are stored in~/.config/valet/config.json. - Your installed PHP versions and extensions.
Why more than remove + require is needed
Site Nginx configs in ~/.config/valet/Nginx (secured, isolated and proxied sites) store the absolute path to server.php inside the Composer vendor directory. valet install rewrites those files from their current content, so the old genesisweb/valet-linux-plus path would remain and the sites would break. The commands below update those paths, keep the ngrok binary and re-link the valet and php executables.
Your .test sites are unavailable between steps 2 and 5.
# 1. Resolve paths and back up the site configs VENDOR_DIR="$(composer global config vendor-dir --absolute 2>/dev/null)" OLD_PATH="$VENDOR_DIR/genesisweb/valet-linux-plus" NEW_PATH="$VENDOR_DIR/fernandoebert/valet-linux-plus" cp -a ~/.config/valet/Nginx ~/.config/valet/Nginx.bak [ -f "$OLD_PATH/bin/ngrok" ] && cp "$OLD_PATH/bin/ngrok" /tmp/valet-ngrok # 2. Swap the packages composer global remove genesisweb/valet-linux-plus composer global require fernandoebert/valet-linux-plus # 3. Point the site configs to the new server.php find ~/.config/valet/Nginx -type f ! -name '.keep' \ -exec sed -i 's#/genesisweb/valet-linux-plus/#/fernandoebert/valet-linux-plus/#g' {} + # 4. Restore the ngrok binary (only used by `valet share`) [ -f /tmp/valet-ngrok ] && mkdir -p "$NEW_PATH/bin" && mv /tmp/valet-ngrok "$NEW_PATH/bin/ngrok" # 5. Reinstall Valet (asks for sudo). # Use the full path: /usr/local/bin/valet still points to the removed package. # Answer "yes" when asked to link valet's php binary. hash -r "$NEW_PATH/valet" install # 6. Verify valet --version readlink -f /usr/local/bin/valet /usr/local/bin/php grep -rl genesisweb ~/.config/valet/Nginx /etc/nginx/sites-available # expect no output
When everything works, remove the backup: rm -rf ~/.config/valet/Nginx.bak.
What valet install changes
- Regenerates
/etc/nginx/nginx.conf,/etc/nginx/fastcgi_params,/etc/nginx/sites-available/valet.confand the PHP-FPMvalet.confpool from the package stubs (backups are kept fornginx.confandfastcgi_params). - Re-issues the certificates of secured sites, signed by the same local CA, so browsers keep trusting them.
- Re-creates the
/usr/local/bin/valetand/usr/local/bin/phpsymlinks. - Restarts Nginx, PHP-FPM and DnsMasq.
Rollback
VENDOR_DIR="$(composer global config vendor-dir --absolute 2>/dev/null)" rm -rf ~/.config/valet/Nginx && mv ~/.config/valet/Nginx.bak ~/.config/valet/Nginx composer global remove fernandoebert/valet-linux-plus composer global require genesisweb/valet-linux-plus hash -r "$VENDOR_DIR/genesisweb/valet-linux-plus/valet" install
Per-project Nginx config
A site can ship its own Nginx server block inside the project, at <project>/nginx/<site>.<tld>.conf, and keep it across valet secure, unsecure, isolate, unisolate and domain.
cd ~/projects/myapp # a linked or parked site valet nginx:publish # writes nginx/myapp.test.conf from Valet's default config for the site # edit nginx/myapp.test.conf valet nginx # activates it: renders, validates with `nginx -t` (rolls back on failure) and restarts Nginx valet nginx:reset # back to Valet's default config (the project file is kept)
nginx:publish picks the stub matching the site state (secured and/or isolated) and accepts --force to overwrite an existing file. All commands accept the site name as argument (default: current directory).
The template keeps Valet placeholders, so it can be versioned and works on any machine:
| Placeholder | Value |
|---|---|
VALET_SITE |
Site domain, e.g. myapp.test |
VALET_PROJECT_PATH |
Project root |
VALET_HOME_PATH |
~/.config/valet |
VALET_SERVER_PATH / VALET_STATIC_PREFIX |
Valet's server.php and static files prefix |
VALET_CERT / VALET_KEY |
TLS certificate and key (site must be secured) |
VALET_FPM_SOCKET_FILE / VALET_ISOLATED_PHP_VERSION |
PHP-FPM socket and version (isolated version when the site is isolated) |
VALET_HTTP_PORT / VALET_HTTPS_PORT / VALET_REDIRECT_PORT |
Configured ports (VALET_REDIRECT_PORT is :port when HTTPS is not 443) |
Example: serve the project front controller directly instead of Valet's server.php (replace root, location / and location ~ \.php$ of the published file):
root VALET_PROJECT_PATH; index index.php; location / { try_files $uri $uri/ /index.php?route=$uri&$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass "unix:VALET_FPM_SOCKET_FILE"; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Environment snapshot
valet state shows services, PHP versions and every served site (parked, linked and proxies) in one place. With --json it prints a machine-readable snapshot for scripts and GUIs, without requiring sudo:
valet state # human-readable tables valet state --json | jq '.sites[] | {url, php, type}'
The payload carries a schema_version key, bumped on any breaking change. Each service reports active as true, false or null (not installed); each site reports its effective PHP version (isolated → .valetphprc → global).
Desktop UI (optional)
Valet Linux+ Desktop is an optional desktop app that shows and manages Valet from a window and the system tray: services (start, stop, restart), sites (secure, isolate, link/unlink), parked paths, PHP versions and logs, with notifications when a service stops and live updates when Valet changes from the terminal.
It is a separate download and never a dependency of this package: nothing changes if you only use the CLI. The app reads the state through valet state --json (2.1.3+, with a read-only fallback for older versions) and runs every change as a regular valet command.
Download the AppImage, .deb or .rpm from the latest release. See the desktop app documentation for installation and details.
Official Documentation
Documentation for this fork can be found on the Valet Linux+ website.
Note
The current URL (valet-linux-plus.ebertsystem.com.br) is temporary. A dedicated domain for the project will be acquired soon, and this link will be updated accordingly.
The original documentation website (valetlinux.plus) is no longer available.
License
Laravel Valet is open-sourced software licensed under the MIT license
