A site is a project LaraMonster serves at its own address. You can serve a whole folder of projects at once (parking) or single projects from anywhere (linking). Every change takes effect immediately; there's nothing to restart.
Parking a folder
Parking a folder serves every folder inside it as <folder>.localhost. New folders are live the moment they appear. Setup parks your projects folder for you; to park another one, click Add folder on the Sites page, or:
$ laramonster park ~/Code
✓ parked /home/you/Code
$ mkdir ~/Code/blog && echo '<h1>Hello</h1>' > ~/Code/blog/index.html
$ laramonster open blog # http://blog.localhost:8080| Command | What it does |
|---|---|
laramonster park [dir] | Serve every folder inside dir (default: the current folder) |
laramonster forget [dir] | Stop serving a parked folder (your files stay) |
laramonster paths | List parked folders |
Site names come from folder names, made safe for a domain: My Shop becomes my-shop.localhost. Names can't contain dots.
Linking a project
Linking serves one project that lives outside your parked folders, or gives a project a second, custom address:
$ cd ~/work/acme-api
$ laramonster link # http://acme-api.localhost:8080
$ laramonster link api # http://api.localhost:8080, same folder
$ laramonster unlink apilaramonster sites lists every site with its folder, PHP version and address.
Laravel and other frameworks
LaraMonster serves a project's public/ folder when it has one, so Laravel, Symfony and most frameworks work as they are. Other projects are served from their root. Requests for files that don't exist go to index.php, so pretty URLs work without any rewrite rules.
Laravel sites get extras: the Debugger, the .env editor, packages and the Pro tools.
The site panel
Click a site on the Sites page to open its panel. It has five tabs:
| Tab | What you can do |
|---|---|
| General | Change its address (and APP_URL with it), serve it over HTTPS, choose who serves it (LaraMonster or your own server), switch it off. |
| Environment | Edit .env as a list of variables or as the raw file. It warns when Laravel uses cached config (with a Clear cache button) and when APP_KEY is empty (with Generate key), and creates .env if the project has none yet. |
| PHP | The site's own PHP settings, like a bigger memory_limit for one project only. |
| Packages | Add packages with composer require and run their installers, using the site's PHP version. Installed ones are ticked. |
| Share | A public link to the site. |
Switching a site off
The switch on each row stops serving that site without forgetting it, handy for a big parked folder where you only work on a few projects. A switched-off site answers with LaraMonster's “no site” page.
Serving a site over HTTPS
Turn on Serve over HTTPS in the site panel, or:
$ laramonster secure blog # https://blog.localhost:8443
$ laramonster unsecure blogA secure site redirects http:// to https://. Trust the certificate authority once (setup does it) for a valid padlock; see HTTPS & certificates.
Sites served by your own server
Any site can forward to a server you run yourself: a Node or Vite app, php artisan serve, php -S, a Docker container or an Apache virtual host. You get a real domain and HTTPS in front of it.
- Start your server as usual
For example
npm run dev -- --port 5173. - Point the site at it
In the site panel, under Served by, choose Your own server and enter where it runs, like
http://127.0.0.1:5173. For an Apache virtual host, enter its name so Apache picks the right one. - Open the site's address
LaraMonster forwards every request, including WebSockets for hot reload. The Sites page shows whether your server is answering.
Domains: .localhost or .test
Sites use .localhost by default. Browsers and tools resolve *.localhost to your own computer by themselves, so it works with no setup at all. If you prefer .test:
$ laramonster tld test
$ laramonster dns setup # asks for your password onceSee .test domains (DNS) for how this works on each system.
Ports
The web server uses 8080 for HTTP and 8443 for HTTPS. Change them in SettingsGeneral or from the terminal:
$ laramonster port # show both
http 8080, https 8443
$ laramonster port 8081
$ laramonster port --https 8444If another program already uses a port, LaraMonster tells you which one and how to stop it: see A port is already in use.
Using ports 80 and 443
Addresses without a port number (http://blog.test) need ports 80 and 443. On Linux, allow LaraMonster to use them once, then switch:
$ sudo setcap cap_net_bind_service=+ep $(readlink -f $(which laramonster))
$ laramonster port 80 && laramonster port --https 443Make sure nothing else (nginx, Apache, IIS) listens on 80 and 443 first. On macOS and Windows, low ports need LaraMonster to run with administrator rights, so the defaults are the better choice there.
The browser dashboard
The desktop app is the dashboard. For a server, WSL or a phone on your network, you can also turn on the browser dashboard: it serves the same interface at http://dashboard.laramonster.localhost:8080.
$ laramonster dashboard on
$ laramonster dashboard --browser # open itOr turn on SettingsBrowser access. Other websites can't control LaraMonster through it: every API call needs a header a web page can't add.