Skip to content

Ports and Services ​

Quick reference for port allocation, systemd units, file paths, log locations, and binary locations.

Port Allocation ​

PortBindingServiceProtocolPurpose
220.0.0.0sshdTCPSSH access (installer only, disposable)
800.0.0.0nginxTCPHTTP — 301 to HTTPS; Let's Encrypt HTTP-01 challenges
4430.0.0.0nginxTCPHTTPS — domain-based access (panel, auth, tunnel, apps)
92920.0.0.0nginxTCPHTTPS — IP-based panel access (mTLS, self-signed cert)
3100127.0.0.1lamalibre-lamaste-serverdTCPPanel server (Fastify API + static files)
9090127.0.0.1chiselTCPChisel tunnel server (WebSocket)
9091127.0.0.1autheliaTCPAuthelia authentication server
9294127.0.0.1lamalibre-lamaste-gatekeeperTCPTunnel authorization (auth_request target)

Key points:

  • Only nginx listens on public interfaces (0.0.0.0)
  • All backend services bind to 127.0.0.1 — they are never directly accessible from the internet
  • Port 9292 is the emergency fallback — it works even if your domain is lost or DNS breaks
  • The UFW firewall only allows ports 22, 80, 443, and 9292. Port 80 serves Let's Encrypt HTTP-01 challenges and otherwise redirects every request to HTTPS (lamalibre-lamaste-http-redirect)

Reserved tunnel ports ​

A tunnel's port is also a loopback port on the relay: its vhost proxies to 127.0.0.1:<port>. The ports of Lamaste's own services can therefore never carry a tunnel:

PortService
3100Panel server
9090Chisel server
9091Authelia
9292IP-based panel listener
9294Gatekeeper

A tunnel on one of them would publish that internal service on a public hostname. For the panel that is an administrator takeover, not a leak: the panel trusts the client-certificate headers nginx sets. RESERVED_TUNNEL_PORTS in @lamalibre/lamaste is enforced by the request schema, inside the tunnel workflow, and again when the Chisel grants are rendered. Tunnel ports must also be 1024–65535.

Systemd Units ​

Unit NameTypeUserDescription
lamalibre-lamaste-serverd.servicesimplelamastePanel server (Fastify Node.js API)
chisel.servicesimplenobody (group lamaste-chisel)Chisel tunnel server (reverse mode)
authelia.servicesimplelamaste-autheliaAuthelia authentication server
lamalibre-lamaste-gatekeeper.servicesimplelamasteGatekeeper tunnel authorization service
nginx.service—rootnginx reverse proxy (system package)
fail2ban.service—rootIntrusion prevention (system package)
certbot.timertimerrootAutomatic Let's Encrypt certificate renewal

Common systemctl Commands ​

CommandDescription
sudo systemctl status <unit>Check service status and recent logs
sudo systemctl start <unit>Start a stopped service
sudo systemctl stop <unit>Stop a running service
sudo systemctl restart <unit>Stop then start a service
sudo systemctl reload <unit>Reload configuration without downtime (nginx)
sudo systemctl enable <unit>Start automatically on boot
sudo systemctl disable <unit>Do not start on boot

Service Unit Files ​

UnitFile Path
lamalibre-lamaste-serverd/etc/systemd/system/lamalibre-lamaste-serverd.service
chisel/etc/systemd/system/chisel.service
authelia/etc/systemd/system/authelia.service
lamalibre-lamaste-gatekeeper/etc/systemd/system/lamalibre-lamaste-gatekeeper.service
nginx/lib/systemd/system/nginx.service (system package)
fail2ban/lib/systemd/system/fail2ban.service (system package)
certbot.timer/lib/systemd/system/certbot.timer (system package)

Service Startup Order ​

network.target
    ├── nginx.service
    ├── lamalibre-lamaste-serverd.service
    ├── lamalibre-lamaste-gatekeeper.service
    ├── chisel.service
    ├── authelia.service
    └── fail2ban.service

All services start after network.target and are independent of each other. If one service fails, the others continue running.

The chisel and authelia units are written by create-lamaste (as root) and hardened (NoNewPrivileges, empty CapabilityBoundingSet, ProtectSystem=strict, PrivateTmp, PrivateDevices; Authelia also UMask=027, ReadWritePaths=/etc/authelia /var/log/authelia and SystemCallFilter=@system-service). lamaste-authelia is a system account with no login shell and no home directory, created by the installer. The panel runs as lamaste and can start, stop and restart these services through fixed sudoers lines, but never writes their units.

On every start the panel reconciles Chisel in the background (server key, authfile; it also checks that the installed binary is the pinned release and logs an error if not). If the authfile cannot be established it stops and disables chisel.service (marker: /etc/lamalibre/lamaste/chisel-failed-closed) and retries with backoff (30 s up to 10 min), re-enabling it on success — see Tunneling.

Agent-side services ​

Per agent label, on the agent machine (user-level, no root):

Linux (systemd user units)macOS (LaunchAgents)Purpose
lamalibre-lamaste-chisel-<label>.servicecom.lamalibre.lamaste.chisel-<label>Chisel client; stopped while no tunnels
lamalibre-lamaste-sync-<label>.service + .timercom.lamalibre.lamaste.sync-<label>lamaste-agent sync every 30 s
lamalibre-lamaste-panel-<label>.servicecom.lamalibre.lamaste.panel-<label>Optional agent panel (lamaste-agent panel)

Key File Paths ​

Configuration ​

PathDescription
/etc/lamalibre/lamaste/panel.jsonPanel server configuration
/etc/lamalibre/lamaste/tunnels.jsonTunnel definitions
/etc/lamalibre/lamaste/sites.jsonStatic site definitions
/etc/lamalibre/lamaste/chisel-credentials.jsonPer-agent Chisel credentials
/etc/lamalibre/lamaste/chisel-usersChisel authfile: per-agent credentials + port grants (0640, group lamaste-chisel)
/etc/lamalibre/lamaste/chisel-sentinelSentinel Chisel user password
/etc/lamalibre/lamaste/ticket-scopes.jsonTicket scope registry (scopes, instances, assignments)
/etc/lamalibre/lamaste/tickets.jsonTicket and session store
/etc/lamalibre/lamaste/groups.jsonLamaste group definitions and membership
/etc/lamalibre/lamaste/access-grants.jsonGeneric access grants (principal → resource)
/etc/lamalibre/lamaste/gatekeeper.jsonGatekeeper settings (cache TTL, logging)
/etc/lamalibre/lamaste/access-request-log.jsonOptional denied access log
/etc/authelia/configuration.ymlAuthelia server configuration
/etc/authelia/users.ymlAuthelia user database
/etc/authelia/.secrets.jsonAuthelia secrets (JWT, session, encryption)
/etc/nginx/snippets/lamalibre-lamaste-mtls.confmTLS configuration snippet
/etc/nginx/snippets/lamalibre-lamaste-authz-cache.confGatekeeper proxy_cache zone definition
/etc/sudoers.d/lamasteSudo rules for lamaste user (fixed command lines, no wildcards)
/usr/local/sbin/lamaste-privRoot-owned helper: panel vhosts (allow-listed), Authelia TOTP, self-update
/usr/local/sbin/lamaste-certbotRoot-owned certbot wrapper (validated, fixed argv)
/usr/local/sbin/lamaste-cert-infoRoot-owned read-only Let's Encrypt certificate queries
/etc/fail2ban/jail.d/lamaste.conffail2ban jail configuration
/etc/sysctl.d/99-lamaste.confKernel parameter (swappiness)

PKI Certificates ​

PathDescription
/etc/lamalibre/lamaste/pki/ca.keyCertificate Authority private key (4096-bit RSA)
/etc/lamalibre/lamaste/pki/ca.crtCertificate Authority certificate (10-year validity)
/etc/lamalibre/lamaste/pki/client.keyClient certificate private key (4096-bit RSA)
/etc/lamalibre/lamaste/pki/client.crtClient certificate (2-year validity, signed by CA)
/etc/lamalibre/lamaste/pki/client.p12PKCS12 bundle for browser import
/etc/lamalibre/lamaste/pki/.p12-passwordPassword for the PKCS12 bundle
/etc/lamalibre/lamaste/pki/self-signed.pemSelf-signed TLS cert for IP:9292 (10-year validity)
/etc/lamalibre/lamaste/pki/self-signed-key.pemSelf-signed TLS key for IP:9292

Let's Encrypt Certificates ​

PathDescription
/etc/letsencrypt/live/<fqdn>/fullchain.pemCertificate chain
/etc/letsencrypt/live/<fqdn>/privkey.pemPrivate key
/etc/letsencrypt/renewal/<fqdn>.confAuto-renewal configuration
/etc/letsencrypt/accounts/Let's Encrypt account credentials

nginx Vhosts ​

PathDescription
/etc/nginx/sites-available/lamalibre-lamaste-http-redirectPort 80 catch-all, 301 to HTTPS
/etc/nginx/sites-available/lamalibre-lamaste-panel-ipIP:9292 panel vhost (mTLS, self-signed)
/etc/nginx/sites-available/lamalibre-lamaste-panel-domainDomain panel vhost (mTLS, Let's Encrypt)
/etc/nginx/sites-available/lamalibre-lamaste-authAuthelia portal vhost
/etc/nginx/sites-available/lamalibre-lamaste-tunnelChisel WebSocket vhost
/etc/nginx/sites-available/lamalibre-lamaste-app-<subdomain>Per-tunnel app vhosts
/etc/nginx/sites-available/lamalibre-lamaste-site-<uuid>Per-static-site vhosts

Application Files ​

PathDescription
/opt/lamalibre/lamaste/lamaste-serverd/Fastify backend (Node.js)
/opt/lamalibre/lamaste/lamaste-serverd/src/index.jsServer entry point
/opt/lamalibre/lamaste/lamaste-serverd/package.jsonServer dependencies
/opt/lamalibre/lamaste/lamaste-server-ui/React frontend
/opt/lamalibre/lamaste/lamaste-server-ui/dist/Built static assets
/opt/lamalibre/lamaste/lamaste-server-ui/cert-help.htmlCertificate help page
/var/www/lamaste/Static site uploads

Log Locations ​

ServiceLog MethodView Command
lamalibre-lamaste-serverdjournaldjournalctl -u lamalibre-lamaste-serverd
lamalibre-lamaste-gatekeeperjournaldjournalctl -u lamalibre-lamaste-gatekeeper
chiseljournaldjournalctl -u chisel
autheliajournald + filejournalctl -u authelia or /var/log/authelia/authelia.log
nginxfile/var/log/nginx/access.log and /var/log/nginx/error.log
fail2banfile/var/log/fail2ban.log
certbotfile/var/log/letsencrypt/letsencrypt.log

Useful Log Commands ​

CommandDescription
journalctl -u lamalibre-lamaste-serverd -fFollow panel logs in real time
journalctl -u chisel --since "1 hour ago"Last hour of Chisel logs
journalctl -u authelia -n 50Last 50 Authelia log entries
tail -f /var/log/nginx/error.logFollow nginx error log
tail -f /var/log/fail2ban.logFollow fail2ban activity
journalctl --disk-usageCheck journal disk usage

Binary Locations ​

BinaryPathSourceVersion Check
Chisel/usr/local/bin/chiselGitHub release 1.12.0, SHA-256 pinned, installed by create-lamastechisel --version
Authelia/usr/local/bin/autheliaGitHub release 4.39.28, SHA-256 pinned, installed by create-lamaste (a newer one is kept)authelia --version
Node.js/usr/bin/nodeNodeSource reponode --version
npm/usr/bin/npmNodeSource reponpm --version
nginx/usr/sbin/nginxapt packagenginx -v
certbot/usr/bin/certbotapt packagecertbot --version
openssl/usr/bin/opensslapt packageopenssl version

Quick Reference ​

Check all service statuses at once:

bash
sudo systemctl status nginx chisel authelia lamalibre-lamaste-serverd lamalibre-lamaste-gatekeeper --no-pager

Check which ports are listening:

bash
sudo ss -tlnp | grep -E ':(22|80|443|3100|9090|9091|9292|9294)\s'

Check disk usage of Lamaste directories:

bash
sudo du -sh /etc/lamalibre/lamaste/ /opt/lamalibre/lamaste/ /var/www/lamaste/ /etc/authelia/ /etc/letsencrypt/ 2>/dev/null

Check all Lamaste-related nginx sites:

bash
ls -la /etc/nginx/sites-enabled/lamaste-*

Validate nginx configuration:

bash
sudo nginx -t

Released under the PolyForm Noncommercial License 1.0.0