Laragon-style dev environment para Linux y WSL. Open-source, gratis, hackeable.
projectup es un CLI que te configura automáticamente un proyecto PHP/Laravel
(y próximamente otros frameworks) en tu entorno local de desarrollo: detecta
la versión de PHP requerida, instala lo que falte, configura Nginx con HTTPS,
valida la base de datos, compila los assets de frontend, y te deja la URL
https://mi-proyecto.test lista para abrir en el navegador.
Si venís de Windows con Laragon y estás armando un entorno de desarrollo en WSL o Linux puro — esto es para vos.
curl -fsSL https://raw.githubusercontent.com/ArtroxxGames/projectup/main/install.sh | bashEsto:
- Clona el repo en
/usr/local/share/projectup - Crea un symlink en
/usr/local/bin/projectup(queda en tu$PATH) - Crea tu config en
~/.config/projectup/projectup.conf
Después, revisá la config y ajustala a tu entorno:
$EDITOR ~/.config/projectup/projectup.confDesde la raíz de un proyecto Laravel:
projectupEl CLI auto-detecta el framework mirando los archivos del proyecto
(ej: composer.json + artisan → Laravel). Podés forzar el handler:
projectup laravelOtros comandos:
projectup --help # ayuda
projectup --version # versión- Detecta PHP requerido por
composer.jsony usa la versión instalada más alta que satisfaga la constraint (^8.2= 8.2 o superior). Si no tenés ninguna que sirva, la instala con el PPAondrej/phpjunto con todas las extensiones que Laravel necesita. - Verifica
vendor/: si existe y no carga con la PHP elegida (porque fue compilado con otra versión), te ofrece reinstalar con Composer. - Node.js + Vite: detecta la versión desde
.nvmrcoengines.node, la instala connvmsi falta, detecta el package manager por lockfile (npm/pnpm/yarn/bun), instala dependencias y compila los assets conrun build(para evitarViteManifestNotFoundException). - Pregunta el subdominio y le concatena
.test. .envy base de datos: si no hay.env, lo crea desde.env.exampley te pregunta el motor (MySQL / PostgreSQL / SQLite). Si ya existe, valida que las credenciales coincidan con tu entorno, hace una conexión real, y crea la DB si no existe. Para SQLite, resuelve el path inteligentemente y toca el archivo si hace falta.- Certificados SSL con
mkcert(HTTPS local trusted). - Nginx: escribe el site en
sites-available, hace symlink ensites-enabled, valida la config y recarga. - Hosts de Windows (solo WSL): intenta agregar
127.0.0.1 tuproyecto.testaC:\Windows\System32\drivers\etc\hosts. Si falla por permisos, te avisa y seguís. - Permisos de
storage/ybootstrap/cache(chown a tu usuario + grupo webserver + setgid). - Pregunta por migraciones y seeders (separados). Después corre
optimize:clearal final. - Log de errores en
./setup-error.logsi algo falla.
El archivo ~/.config/projectup/projectup.conf define tu entorno:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASS=
PGSQL_HOST=127.0.0.1
PGSQL_PORT=5432
PGSQL_USER=postgres
PGSQL_PASS=postgres
CERT_DIR="$HOME/certificados"
WEB_GROUP=www-data
# Solo WSL — vacío en Linux puro
WIN_HOSTS_PATH=/mnt/c/Windows/System32/drivers/etc/hostsVer config/projectup.conf.example con los
defaults comentados.
projectup asume que ya tenés instalados en el sistema:
- Nginx
- MySQL y/o PostgreSQL (con las credenciales que pongas en la config)
- nvm (para detección de Node)
- mkcert (si no está, lo intenta instalar vía apt)
💡 En una futura versión,
projectup initva a instalar y configurar todo el entorno por vos. Ver ROADMAP.md.
Para que projectup pueda escribir en el hosts de Windows desde WSL, abrí
tu terminal WSL como administrador de Windows (click derecho → "Run as
administrator"). Si no, el dominio lo tenés que agregar vos manualmente a
C:\Windows\System32\drivers\etc\hosts.
| Framework | Status |
|---|---|
| Laravel | ✅ v0.1 |
| Symfony | 📋 v0.3 |
| Next.js | 📋 v0.3 |
| Nuxt | 📋 v0.3 |
| Rails | 📋 v0.3 |
| Django | 📋 v0.3 |
Ver ROADMAP.md para el plan completo.
curl -fsSL https://raw.githubusercontent.com/ArtroxxGames/projectup/main/uninstall.sh | bashPreserva tu config en ~/.config/projectup/. Para borrar eso también:
curl -fsSL https://raw.githubusercontent.com/ArtroxxGames/projectup/main/uninstall.sh | bash -s -- --purgePull requests bienvenidos. Sugerencias de arquitectura:
- Cada framework handler vive en
lib/frameworks/<name>.shy exporta una función<name>_setup. - Helpers compartidos (logging, prompts, package management, config) van en
lib/common.sh. - La detección por cwd va en
lib/detect.sh. - Nada de credenciales hardcodeadas — todo vía config.
Para desarrollo local:
git clone https://github.com/ArtroxxGames/projectup.git
cd projectup
./bin/projectup --helpMIT — hacé lo que quieras con esto.
@ArtroxxGames — con mucha paciencia y varios iteraciones de debugging sobre un WSL.