Sites & PHP

Sites & domains

Parked folders, linked projects, .localhost and .test domains, proxies and the site panel.

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
CommandWhat 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 pathsList 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 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 api

laramonster 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:

TabWhat you can do
GeneralChange its address (and APP_URL with it), serve it over HTTPS, choose who serves it (LaraMonster or your own server), switch it off.
EnvironmentEdit .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.
PHPThe site's own PHP settings, like a bigger memory_limit for one project only.
PackagesAdd packages with composer require and run their installers, using the site's PHP version. Installed ones are ticked.
ShareA 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 blog

A 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.

  1. Start your server as usual

    For example npm run dev -- --port 5173.

  2. 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.

  3. 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 once

See .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 8444

If 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 443

Make 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 it

Or turn on SettingsBrowser access. Other websites can't control LaraMonster through it: every API call needs a header a web page can't add.