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)
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.1portlama-panelTCPPanel server (Fastify API + static files)
9090127.0.0.1chiselTCPChisel tunnel server (WebSocket)
9091127.0.0.1autheliaTCPAuthelia authentication server

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 is for Let's Encrypt HTTP-01 challenges)

Systemd Units

Unit NameTypeUserDescription
portlama-panel.servicesimpleportlamaPanel server (Fastify Node.js API)
chisel.servicesimplenobodyChisel tunnel server (reverse mode)
authelia.servicesimplerootAuthelia authentication server
nginx.servicerootnginx reverse proxy (system package)
fail2ban.servicerootIntrusion 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
portlama-panel/etc/systemd/system/portlama-panel.service
chisel/etc/systemd/system/chisel.service
authelia/etc/systemd/system/authelia.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
    ├── portlama-panel.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.

Key File Paths

Configuration

PathDescription
/etc/portlama/panel.jsonPanel server configuration
/etc/portlama/tunnels.jsonTunnel definitions
/etc/portlama/sites.jsonStatic site definitions
/etc/portlama/ticket-scopes.jsonTicket scope registry (scopes, instances, assignments)
/etc/portlama/tickets.jsonTicket and session store
/etc/authelia/configuration.ymlAuthelia server configuration
/etc/authelia/users.ymlAuthelia user database
/etc/authelia/.secrets.jsonAuthelia secrets (JWT, session, encryption)
/etc/nginx/snippets/portlama-mtls.confmTLS configuration snippet
/etc/sudoers.d/portlamaSudo rules for portlama user
/etc/fail2ban/jail.d/portlama.conffail2ban jail configuration
/etc/sysctl.d/99-portlama.confKernel parameter (swappiness)

PKI Certificates

PathDescription
/etc/portlama/pki/ca.keyCertificate Authority private key (4096-bit RSA)
/etc/portlama/pki/ca.crtCertificate Authority certificate (10-year validity)
/etc/portlama/pki/client.keyClient certificate private key (4096-bit RSA)
/etc/portlama/pki/client.crtClient certificate (2-year validity, signed by CA)
/etc/portlama/pki/client.p12PKCS12 bundle for browser import
/etc/portlama/pki/.p12-passwordPassword for the PKCS12 bundle
/etc/portlama/pki/self-signed.pemSelf-signed TLS cert for IP:9292 (10-year validity)
/etc/portlama/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/portlama-panel-ipIP:9292 panel vhost (mTLS, self-signed)
/etc/nginx/sites-available/portlama-panel-domainDomain panel vhost (mTLS, Let's Encrypt)
/etc/nginx/sites-available/portlama-authAuthelia portal vhost
/etc/nginx/sites-available/portlama-tunnelChisel WebSocket vhost
/etc/nginx/sites-available/portlama-app-<subdomain>Per-tunnel app vhosts
/etc/nginx/sites-available/portlama-site-<uuid>Per-static-site vhosts

Application Files

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

Log Locations

ServiceLog MethodView Command
portlama-paneljournaldjournalctl -u portlama-panel
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 portlama-panel -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 releaseschisel --version
Authelia/usr/local/bin/autheliaGitHub releasesauthelia --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 portlama-panel --no-pager

Check which ports are listening:

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

Check disk usage of Portlama directories:

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

Check all Portlama-related nginx sites:

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

Validate nginx configuration:

bash
sudo nginx -t

Released under the PolyForm Noncommercial License 1.0.0