Connection Setup Guides
Step-by-step configuration guides for all 75 supported connection types. Each guide covers requirements, setup steps, default ports, and security best practices.
http_proxy plugin and open in Portal's embedded browser with navigation controls, an address bar, and full TLS encryption. TCP services like databases use the tcp_tunnel plugin. SSH and VNC have dedicated plugins with native protocol support.
Remote Access
SSH Terminal
Secure Shell provides encrypted command-line access to remote servers. Portal opens a full terminal emulator in your browser via WebSocket.
| Type Key | ssh |
|---|---|
| Default Port | 22 |
| Protocol | SSH |
| Plugin | ssh |
Requirements
- OpenSSH server (or compatible) running on the remote host
- Port 22 (or custom) accessible from the Portal server
- Valid user account with password or SSH key authentication
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select SSH Terminal type (or Quick Add → SSH)
- Enter the remote host IP/hostname and port (default: 22)
- Choose authentication method: Password (prompted on connect) or Private Key (paste PEM key)
- Optionally select an SSH key from your managed keys
- Optionally override the default login shell (bash, zsh, fish)
Security Considerations
- Use SSH key authentication instead of passwords whenever possible
- Disable root login on the remote server (
PermitRootLogin no) - Use
AllowUsersorAllowGroupsto restrict SSH access - Consider changing the default SSH port to reduce automated attacks
- Private keys stored in Portal are encrypted at rest with Fernet encryption
SFTP File Transfer
SFTP provides secure file transfer over SSH. Portal's dual-pane file manager lets you browse, upload, download, and manage files on remote servers.
| Type Key | sftp |
|---|---|
| Default Port | 22 |
| Protocol | SFTP/SSH |
| Plugin | ssh |
Requirements
- SSH server with SFTP subsystem enabled (default in OpenSSH)
- Port 22 accessible from the Portal server
- User account with appropriate file permissions
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select SFTP File Transfer type
- Enter host, port, and credentials (same as SSH)
- Access via Dashboard → File Manager → Remote SFTP tab
- With 2+ SFTP connections, the commander-style dual-pane view enables drag-and-drop between servers
Security Considerations
- Use chroot jails to restrict SFTP users to their home directory
- Apply the same SSH hardening as above (keys, restricted users)
- SFTP connections in Portal are ephemeral — opened per-request, not persistent
VNC Desktop
Virtual Network Computing provides remote graphical desktop access. Portal uses noVNC to render the VNC session directly in your browser.
| Type Key | vnc |
|---|---|
| Default Port | 5900 |
| Protocol | VNC/RFB |
| Plugin | vnc |
Requirements
- VNC server running on the remote host (TigerVNC, TightVNC, RealVNC, x11vnc, etc.)
- Port 5900+ accessible from the Portal server
- VNC password configured on the server
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select VNC Desktop type (or Quick Add → VNC)
- Enter host and port (default: 5900; display :1 = port 5901)
- You'll be prompted for the VNC password on connect
Security Considerations
- VNC traffic through Portal is encrypted via WSS (WebSocket over TLS)
- Always set a strong VNC password on the server
- Consider using SSH tunneling for an additional encryption layer
- Bind VNC to localhost only and access through Portal's tunnel
- Disable clipboard sharing if not needed
RDP Desktop
Remote Desktop Protocol provides graphical access to Windows desktops and servers. Portal proxies the RDP connection through your browser.
| Type Key | rdp |
|---|---|
| Default Port | 3389 |
| Protocol | RDP |
| Plugin | vnc |
Requirements
- Remote Desktop enabled on the Windows machine
- Port 3389 accessible from the Portal server
- User account with Remote Desktop Users group membership
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select RDP Desktop type (or Quick Add → RDP)
- Enter the Windows host IP and port (default: 3389)
- Enter Windows username and password when connecting
Security Considerations
- Enable Network Level Authentication (NLA) on the Windows host
- Use strong passwords and consider enabling 2FA for Windows login
- Keep Windows updated to patch RDP vulnerabilities
- Restrict RDP access via Windows Firewall to Portal's IP only
- All traffic is encrypted via Portal's TLS connection
SPICE Console
SPICE (Simple Protocol for Independent Computing Environments) provides high-performance remote access to virtual machines, commonly used with KVM/QEMU/Proxmox.
| Type Key | spice |
|---|---|
| Default Port | 5930 |
| Protocol | SPICE |
| Plugin | spice |
Requirements
- SPICE server configured on the VM (KVM/QEMU/Proxmox)
- SPICE port accessible from the Portal server
- SPICE viewer support via Portal's web client
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select SPICE Console type
- Enter the hypervisor host and SPICE port for the VM
- For Proxmox VMs, the SPICE port is assigned dynamically — check the VM settings
Security Considerations
- Configure SPICE with TLS encryption on the hypervisor
- Set a SPICE password for the VM
- Restrict SPICE port access to the Portal server IP only
Telnet
Telnet provides unencrypted remote terminal access. Used primarily for legacy network equipment (switches, routers) that don't support SSH.
| Type Key | telnet |
|---|---|
| Default Port | 23 |
| Protocol | Telnet |
| Plugin | tcp_tunnel |
Requirements
- Telnet service running on the remote host
- Port 23 accessible from the Portal server
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Telnet type
- Enter host and port (default: 23)
Security Considerations
- Warning: Telnet transmits credentials and data in plaintext
- Only use for legacy devices on isolated/trusted networks
- Portal's TLS encrypts the browser-to-Portal leg, but Portal-to-device is unencrypted
- Migrate to SSH wherever possible
- Use VLANs or firewall rules to isolate Telnet-only devices
Media Servers
Plex
Plex is a media server that organizes your movies, TV shows, music, and photos and streams them to any device.
| Type Key | plex |
|---|---|
| Default Port | 32400 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Plex Media Server installed and running
- Port 32400 accessible from the Portal server
- Plex account configured (or local auth enabled)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Plex type (or Quick Add → Plex)
- Enter the Plex server host and port (default: 32400)
- Access the Plex web interface through Portal's proxy
Security Considerations
- Enable Plex's built-in HTTPS (
Settings → Network → Secure connections: Required) - Set
List of IP addresses and networks that are allowed without authto only include Portal's IP - Disable DLNA if not needed
- Keep Plex Media Server updated
Jellyfin
Jellyfin is a free, open-source media server — a fork of Emby. It manages and streams your media library without requiring an account on external servers.
| Type Key | jellyfin |
|---|---|
| Default Port | 8096 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Jellyfin server installed and running
- Port 8096 (HTTP) or 8920 (HTTPS) accessible from Portal
- Admin account created during initial setup
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Jellyfin type (or Quick Add → Jellyfin)
- Enter host and port (default: 8096 for HTTP, 8920 for HTTPS)
- Log in with your Jellyfin credentials through Portal
Security Considerations
- Enable HTTPS in Jellyfin (
Dashboard → Networking) - Set
Known proxiesto Portal's IP address - Enable login rate limiting in Jellyfin settings
- Disable remote access if only accessing through Portal
Emby
Emby is a media server that automatically organizes your personal media and streams it to any device.
| Type Key | emby |
|---|---|
| Default Port | 8096 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Emby Server installed and running
- Port 8096 (HTTP) or 8920 (HTTPS) accessible
- Emby account configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Emby type
- Enter host and port (default: 8096)
- Access Emby's web dashboard through Portal
Security Considerations
- Enable HTTPS in Emby's network settings
- Configure Emby's API key for trusted applications
- Set up user-level permissions for library access
Audiobookshelf
Audiobookshelf is a self-hosted audiobook and podcast server with a web player, mobile apps, and library management.
| Type Key | audiobookshelf |
|---|---|
| Default Port | 13378 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Audiobookshelf installed and running
- Port 13378 accessible from Portal
- Audiobook/podcast library configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Audiobookshelf type
- Enter host and port (default: 13378)
- Log in with your Audiobookshelf credentials
Security Considerations
- Set a strong admin password during initial setup
- Configure trusted proxies if using Portal as reverse proxy
- Enable server-side backups for library metadata
Media Management (*arr)
The *arr stack is a collection of tools for automated media management. They all follow a similar pattern: web UI on a unique port, API key authentication, and webhook/notification support.
Settings → General → API Key. Configure indexers in Prowlarr and sync to other apps.
Security (applies to all *arr apps)
- Enable authentication in each app:
Settings → General → Authentication → Forms - Set a strong username and password for the web UI
- Use API keys for inter-app communication (Sonarr↔Prowlarr, etc.)
- Keep all *arr apps updated — they receive frequent security fixes
- Bind to
127.0.0.1or your internal network if only accessed via Portal
Sonarr
Automated TV show downloading and management. Monitors RSS feeds, searches indexers, and manages your TV library.
| Type Key | sonarr |
|---|---|
| Default Port | 8989 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Sonarr type
- Enter host and port (default: 8989)
- Access the web UI through Portal
Radarr
Automated movie downloading and management. Finds, downloads, and organizes your movie collection.
| Type Key | radarr |
|---|---|
| Default Port | 7878 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Radarr type
- Enter host and port (default: 7878)
- Access the web UI through Portal
Lidarr
Automated music downloading and management. Monitors artists and albums across indexers.
| Type Key | lidarr |
|---|---|
| Default Port | 8686 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Lidarr type
- Enter host and port (default: 8686)
- Access the web UI through Portal
Readarr
Automated ebook and audiobook management. Tracks authors and books across indexers.
| Type Key | readarr |
|---|---|
| Default Port | 8787 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Readarr type
- Enter host and port (default: 8787)
- Access the web UI through Portal
Prowlarr
Indexer manager for the *arr stack. Centralizes indexer configuration and syncs to Sonarr, Radarr, Lidarr, etc.
| Type Key | prowlarr |
|---|---|
| Default Port | 9696 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Prowlarr type
- Enter host and port (default: 9696)
- Access the web UI through Portal
Bazarr
Automated subtitle downloading companion for Sonarr and Radarr.
| Type Key | bazarr |
|---|---|
| Default Port | 6767 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Bazarr type
- Enter host and port (default: 6767)
- Access the web UI through Portal
Jellyseerr
Media request and discovery tool for Jellyfin. Users can request movies and TV shows which auto-download via Sonarr/Radarr.
| Type Key | jellyseerr |
|---|---|
| Default Port | 5055 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Jellyseerr type
- Enter host and port (default: 5055)
- Access the web UI through Portal
Overseerr
Media request and discovery tool for Plex. The Plex equivalent of Jellyseerr.
| Type Key | overseerr |
|---|---|
| Default Port | 5055 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Overseerr type
- Enter host and port (default: 5055)
- Access the web UI through Portal
Tautulli
Plex monitoring and statistics dashboard. Tracks viewing history, user activity, and server health.
| Type Key | tautulli |
|---|---|
| Default Port | 8181 |
| Protocol | HTTP |
| Plugin | http_proxy |
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Tautulli type
- Enter host and port (default: 8181)
- Access the web UI through Portal
Download Clients
SABnzbd
SABnzbd is an open-source Usenet download client with a web interface.
| Type Key | sabnzbd |
|---|---|
| Default Port | 8080 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- SABnzbd installed and running
- Port 8080 accessible
- Usenet provider configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select SABnzbd type
- Enter host and port (default: 8080)
- Log in with SABnzbd credentials
Security Considerations
- Enable SABnzbd's built-in authentication
- Set
host_whitelistto include Portal's hostname - Use an API key for automated access from *arr apps
qBittorrent
qBittorrent is an open-source BitTorrent client with a feature-rich web UI.
| Type Key | qbittorrent |
|---|---|
| Default Port | 8080 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- qBittorrent installed with Web UI enabled
- Port 8080 accessible
- Web UI authentication configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select qBittorrent type
- Enter host and port (default: 8080)
- Log in with qBittorrent Web UI credentials (default: admin/adminadmin)
Security Considerations
- Change the default password immediately (admin/adminadmin)
- Enable HTTPS in qBittorrent settings if available
- Bind the Web UI to localhost and access only through Portal
- Set
Bypass authentication for clients on localhostcarefully
Transmission
Transmission is a lightweight BitTorrent client with a clean web interface.
| Type Key | transmission |
|---|---|
| Default Port | 9091 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Transmission daemon running with web UI enabled
- Port 9091 accessible
- RPC authentication configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Transmission type
- Enter host and port (default: 9091)
- Configure
rpc-whitelistinsettings.jsonto include Portal's IP
Security Considerations
- Set
rpc-authentication-required: truein settings.json - Configure
rpc-whitelistto only allow Portal's IP - Use a strong RPC password
Files, Photos & Documents
Nextcloud
Nextcloud is a self-hosted productivity platform — file sync, calendar, contacts, office documents, and hundreds of apps.
| Type Key | nextcloud |
|---|---|
| Default Port | 443 |
| Protocol | HTTPS |
| Plugin | http_proxy |
Requirements
- Nextcloud server installed (with Apache/Nginx and PHP)
- Port 443 (HTTPS) or 80 (HTTP) accessible
- Admin account created
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Nextcloud type (or Quick Add → Nextcloud)
- Enter host and port (default: 443 for HTTPS)
- Log in with your Nextcloud credentials
Security Considerations
- Always use HTTPS — Nextcloud strongly recommends it
- Add Portal's domain to
trusted_domainsinconfig.php - Set
trusted_proxiesto Portal's IP address - Enable 2FA in Nextcloud for all users
- Configure brute force protection (
bruteforceapp)
Immich
Immich is a self-hosted Google Photos alternative with machine learning-powered face recognition, object detection, and smart search.
| Type Key | immich |
|---|---|
| Default Port | 2283 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Immich server running (Docker recommended)
- Port 2283 accessible
- PostgreSQL database configured (included in Docker setup)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Immich type
- Enter host and port (default: 2283)
- Create admin account on first access
Security Considerations
- Set
IMMICH_TRUSTED_PROXIESto Portal's IP - Use strong admin password
- Back up the PostgreSQL database regularly
- GPU recommended for ML features but not required
PhotoPrism
PhotoPrism is an AI-powered self-hosted photo management app with automatic tagging, face recognition, and map views.
| Type Key | photoprism |
|---|---|
| Default Port | 2342 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- PhotoPrism running (Docker recommended)
- Port 2342 accessible
- At least 2 CPU cores and 4GB RAM recommended
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select PhotoPrism type
- Enter host and port (default: 2342)
- Log in with admin credentials (set via
PHOTOPRISM_ADMIN_PASSWORD)
Security Considerations
- Set a strong admin password via environment variable
- Enable read-only mode if only viewing
- Configure
PHOTOPRISM_SITE_URLto match Portal's proxy URL
Syncthing
Syncthing is a continuous file synchronization program that syncs files between devices in real time, without a central server.
| Type Key | syncthing |
|---|---|
| Default Port | 8384 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Syncthing running on the host
- Web GUI port 8384 accessible
- Sync protocol port 22000 accessible between sync peers
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Syncthing type
- Enter host and port (default: 8384)
- Access the Syncthing web GUI through Portal
Security Considerations
- Set a GUI password in Syncthing settings
- Configure
gui.insecureAdminAccesscarefully - Use device IDs for peer authentication (built-in)
Paperless-ngx
Paperless-ngx is a document management system that scans, indexes, and archives your physical documents with OCR.
| Type Key | paperless_ngx |
|---|---|
| Default Port | 8000 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Paperless-ngx running (Docker recommended)
- Port 8000 accessible
- OCR dependencies installed (Tesseract, included in Docker)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Paperless-ngx type
- Enter host and port (default: 8000)
- Log in with superuser credentials created during setup
Security Considerations
- Set
PAPERLESS_URLto match the Portal proxy URL - Add Portal's IP to
PAPERLESS_TRUSTED_PROXIES - Use strong passwords — documents contain sensitive info
- Enable automatic document encryption if available
Calibre-Web
Calibre-Web is a web app for browsing, reading, and downloading ebooks from a Calibre library database.
| Type Key | calibre_web |
|---|---|
| Default Port | 8083 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Calibre-Web running
- Calibre library database (metadata.db) accessible
- Port 8083 accessible
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Calibre-Web type
- Enter host and port (default: 8083)
- Default credentials: admin / admin123 — change immediately
Security Considerations
- Change default admin password on first login
- Enable upload protection
- Configure user permissions per-library
Komga
Komga is a media server for comics, mangas, BDs, and magazines with OPDS support and a web reader.
| Type Key | komga |
|---|---|
| Default Port | 25600 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Komga running (Java 17+ required)
- Port 25600 accessible
- Comic/manga library configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Komga type
- Enter host and port (default: 25600)
- Create admin account on first access
Security Considerations
- Set a strong admin password
- Configure user-level library permissions
- Komga supports API key authentication for automated access
File Browser
File Browser is a lightweight web-based file manager with upload/download, editing, and sharing capabilities.
| Type Key | filebrowser |
|---|---|
| Default Port | 8080 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- File Browser installed and running
- Port 8080 accessible
- File system path configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select File Browser type
- Enter host and port (default: 8080)
- Default credentials: admin / admin — change immediately
Security Considerations
- Change default credentials immediately
- Restrict the base directory scope
- Enable HTTPS if accessing directly
- Configure user permissions to limit file access
Virtualization & Infrastructure
Proxmox VE
Proxmox Virtual Environment is an open-source server virtualization platform for KVM VMs and LXC containers.
| Type Key | proxmox |
|---|---|
| Default Port | 8006 |
| Protocol | HTTPS |
| Plugin | proxmox |
Requirements
- Proxmox VE installed on the host
- Port 8006 (HTTPS) accessible from Portal
- User account with appropriate permissions (PVEAdmin or custom role)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Proxmox VE type (or Quick Add → Proxmox)
- Enter the Proxmox host and port (default: 8006)
- Portal connects via the Proxmox API — enter your Proxmox credentials when prompted
Security Considerations
- Proxmox uses self-signed certificates by default — Portal can handle this
- Create a dedicated API user with limited permissions instead of using root
- Use API tokens instead of passwords:
Datacenter → Permissions → API Tokens - Enable Proxmox 2FA for admin accounts
- Restrict Proxmox web access to Portal's IP via firewall
Cockpit
Cockpit is a web-based Linux server management interface. It provides real-time system monitoring, terminal access, container management, and storage administration.
| Type Key | cockpit |
|---|---|
| Default Port | 9090 |
| Protocol | HTTPS |
| Plugin | http_proxy |
Requirements
- Cockpit installed (
apt install cockpiton Debian/Ubuntu) - Port 9090 accessible
- Linux user account with sudo access
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Cockpit type
- Enter host and port (default: 9090)
- Log in with your Linux system credentials
Security Considerations
- Cockpit uses system PAM authentication — same as SSH
- Configure
/etc/cockpit/cockpit.confto set allowed origins for Portal - Enable certificate-based authentication if available
- Restrict access via firewall rules
Home Automation & IoT
Home Assistant
Home Assistant is an open-source home automation platform that integrates with 2000+ smart home devices and services.
| Type Key | home_assistant |
|---|---|
| Default Port | 8123 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Home Assistant running (HAOS, Docker, or Core)
- Port 8123 accessible from Portal
- Admin account configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Home Assistant type (or Quick Add → Home Assistant)
- Enter host and port (default: 8123)
- Log in with your Home Assistant credentials
Security Considerations
- Add Portal's IP to
trusted_proxiesinconfiguration.yaml: - Set
use_x_forwarded_for: truein the HTTP integration - Generate a Long-Lived Access Token for API integrations
- Enable 2FA (TOTP) for all Home Assistant accounts
- Keep Home Assistant and integrations updated
Node-RED
Node-RED is a flow-based programming tool for wiring IoT devices, APIs, and online services with a browser-based editor.
| Type Key | node_red |
|---|---|
| Default Port | 1880 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Node-RED installed and running (Node.js required)
- Port 1880 accessible
- Admin authentication configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Node-RED type
- Enter host and port (default: 1880)
- Access the flow editor through Portal
Security Considerations
- Enable authentication — Node-RED has no auth by default
- Set
adminAuthinsettings.jswith bcrypt-hashed passwords - Configure
httpNodeAuthto protect HTTP endpoints in flows - Restrict editor access to admin users only
n8n
n8n is a workflow automation tool similar to Zapier/Make but self-hosted, with 200+ integrations and a visual flow editor.
| Type Key | n8n |
|---|---|
| Default Port | 5678 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- n8n running (Docker or npm install)
- Port 5678 accessible
- Owner account configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select n8n type
- Enter host and port (default: 5678)
- Log in with your n8n owner credentials
Security Considerations
- Set
N8N_PROTOCOL=httpsif terminating TLS at n8n - Configure
N8N_HOSTandWEBHOOK_URLto match Portal proxy URL - Enable user management for multi-user setups
- Review workflow permissions — workflows can execute arbitrary code
Security & Auth
Vaultwarden
Vaultwarden is an unofficial Bitwarden-compatible server written in Rust. It provides password management with full Bitwarden client compatibility.
| Type Key | vaultwarden |
|---|---|
| Default Port | 80 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Vaultwarden running (Docker recommended)
- Port 80 or 443 accessible
- HTTPS strongly recommended (required for browser extensions)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Vaultwarden type
- Enter host and port (default: 80)
- Create your account on first access
Security Considerations
- HTTPS is mandatory for Bitwarden clients to work
- Set
ADMIN_TOKENenvironment variable to protect the admin panel - Disable new user signups after creating your accounts:
SIGNUPS_ALLOWED=false - Enable 2FA for all vault accounts
- Back up the SQLite database and
attachments/directory regularly
Authelia
Authelia is an authentication and authorization server that provides SSO (Single Sign-On) and 2FA for your applications via a reverse proxy.
| Type Key | authelia |
|---|---|
| Default Port | 9091 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Authelia running (Docker recommended)
- Port 9091 accessible
- Reverse proxy (Traefik/Nginx) configured for auth forwarding
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Authelia type
- Enter host and port (default: 9091)
- Access the Authelia portal for login/2FA management
Security Considerations
- Configure LDAP or file-based user backend
- Enable 2FA (TOTP, WebAuthn, or Duo)
- Set up access control rules per-domain or per-path
- Use a strong JWT secret and encryption key
Monitoring & Networking
Uptime Kuma
Uptime Kuma is a self-hosted monitoring tool with a beautiful UI, supporting HTTP/TCP/DNS/ping monitors and notification integrations.
| Type Key | uptime_kuma |
|---|---|
| Default Port | 3001 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Uptime Kuma running (Docker or Node.js)
- Port 3001 accessible
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Uptime Kuma type
- Enter host and port (default: 3001)
- Create admin account on first access
Security Considerations
- Set a strong admin password
- Enable 2FA in user settings
- Status pages can be public — configure carefully
Pi-hole
Pi-hole is a network-wide ad blocker that acts as a DNS sinkhole, filtering ads and trackers for all devices on your network.
| Type Key | pihole |
|---|---|
| Default Port | 80 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Pi-hole installed and running
- Web interface port 80 accessible
- DNS port 53 configured on your network
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Pi-hole type (or Quick Add → Pi-hole)
- Enter host and port (default: 80)
- Access the admin dashboard at
/admin
Security Considerations
- Set a strong web interface password (
pihole -a -p) - Restrict DNS queries to your local network only
- Keep gravity lists updated regularly
- Pi-hole v6+ has improved authentication
AdGuard Home
AdGuard Home is a network-wide ad and tracker blocker with DNS-over-HTTPS, DNS-over-TLS, and parental controls.
| Type Key | adguard_home |
|---|---|
| Default Port | 3000 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- AdGuard Home installed and running
- Web UI port 3000 accessible (setup) or 80 (after setup)
- DNS port 53 configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select AdGuard Home type
- Enter host and port (default: 3000 for setup, then typically 80)
- Complete initial setup wizard on first access
Security Considerations
- Set a strong admin password during setup
- Enable DNS-over-HTTPS for encrypted DNS queries
- Configure access control lists for the DNS service
- The web UI port changes from 3000 to 80 after initial setup
Nginx Proxy Manager
Nginx Proxy Manager is a web UI for managing Nginx reverse proxy configurations with Let's Encrypt SSL certificate support.
| Type Key | nginx_proxy_manager |
|---|---|
| Default Port | 81 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Nginx Proxy Manager running (Docker)
- Admin port 81 accessible
- Ports 80 and 443 for proxy traffic
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Nginx Proxy Manager type
- Enter host and port (default: 81)
- Default login:
admin@example.com/changeme
Security Considerations
- Change default credentials immediately
- Use strong passwords for all proxy host authentications
- Enable SSL for all proxy hosts
- Restrict admin access to trusted IPs
Traefik
Traefik is a modern reverse proxy and load balancer with automatic service discovery, Let's Encrypt, and Docker integration.
| Type Key | traefik |
|---|---|
| Default Port | 8080 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Traefik running with dashboard enabled
- Dashboard port 8080 accessible
- API enabled in Traefik config
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Traefik type
- Enter host and port (default: 8080 for dashboard)
- Access the Traefik dashboard
Security Considerations
- Enable dashboard authentication — it's open by default
- Use BasicAuth or ForwardAuth middleware
- Expose the dashboard only on internal networks
- Configure TLS for all entrypoints
Portainer
Portainer is a container management UI for Docker, Kubernetes, and Nomad with a clean web interface.
| Type Key | portainer |
|---|---|
| Default Port | 9443 |
| Protocol | HTTPS |
| Plugin | http_proxy |
Requirements
- Portainer running (Docker)
- Port 9443 (HTTPS) or 9000 (HTTP) accessible
- Docker socket mounted
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Portainer type
- Enter host and port (default: 9443 for HTTPS)
- Create admin account on first access (within 5 minutes)
Security Considerations
- Use HTTPS (port 9443) instead of HTTP (9000)
- Create the admin account immediately — the setup expires after 5 minutes
- Use Portainer teams and roles to restrict access
- Be cautious with Docker socket access — it grants root-level control
Netdata
Netdata is a real-time performance monitoring tool with per-second metrics for CPU, memory, disk, network, and applications.
| Type Key | netdata |
|---|---|
| Default Port | 19999 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Netdata agent installed and running
- Port 19999 accessible
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Netdata type
- Enter host and port (default: 19999)
- Dashboard is accessible immediately — no login required by default
Security Considerations
- Netdata dashboard has no authentication by default
- Restrict access via firewall or use Portal as the only access point
- Configure
[web].allow connections frominnetdata.conf - Consider Netdata Cloud for centralized access with auth
Dozzle
Dozzle is a real-time log viewer for Docker containers with a clean web interface. No database required — it reads directly from Docker.
| Type Key | dozzle |
|---|---|
| Default Port | 8080 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Dozzle running (Docker)
- Port 8080 accessible
- Docker socket mounted read-only
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Dozzle type
- Enter host and port (default: 8080)
- Container logs are visible immediately
Security Considerations
- Enable authentication: set
DOZZLE_USERNAMEandDOZZLE_PASSWORD - Mount Docker socket as read-only (
/var/run/docker.sock:/var/run/docker.sock:ro) - Container logs may contain sensitive information
Dashboards & Panels
Homepage
Homepage is a modern, fully static, fast dashboard with service integrations, bookmarks, and widgets.
| Type Key | homepage |
|---|---|
| Default Port | 3000 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Homepage running (Docker recommended)
- Port 3000 accessible
- Configuration via YAML files
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Homepage type
- Enter host and port (default: 3000)
Security Considerations
- Homepage has no built-in authentication — rely on Portal for access control
- API keys for service widgets should use read-only tokens
- Sensitive service URLs are exposed in the config
Homarr
Homarr is a customizable dashboard for your self-hosted services with drag-and-drop tiles, integrations, and a clean UI.
| Type Key | homarr |
|---|---|
| Default Port | 7575 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Homarr running (Docker)
- Port 7575 accessible
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Homarr type
- Enter host and port (default: 7575)
- Customize your dashboard layout in the web UI
Security Considerations
- Enable Homarr's built-in authentication
- Use read-only API keys for service integrations
- Password-protect the settings page
Organizr
Organizr is a dashboard that combines all your self-hosted services into one tabbed interface with user management and SSO.
| Type Key | organizr |
|---|---|
| Default Port | 80 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Organizr running (PHP + web server)
- Port 80 accessible
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Organizr type
- Enter host and port (default: 80)
- Complete the setup wizard on first access
Security Considerations
- Set a strong admin password during setup
- Configure user groups and tab permissions
- Enable Organizr's built-in authentication for all tabs
TrueNAS
TrueNAS is a network-attached storage OS (based on FreeBSD/Linux) with a web-based management interface for ZFS pools, shares, and plugins.
| Type Key | truenas |
|---|---|
| Default Port | 443 |
| Protocol | HTTPS |
| Plugin | http_proxy |
Requirements
- TrueNAS installed on dedicated hardware or VM
- Web UI port 443 (HTTPS) or 80 (HTTP) accessible
- Admin account configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select TrueNAS type
- Enter host and port (default: 443)
- Log in with your TrueNAS admin credentials
Security Considerations
- Always use HTTPS for the web interface
- Set a strong root/admin password
- Enable 2FA for the web interface
- Configure network ACLs for management access
- Keep TrueNAS updated for ZFS and security patches
pfSense
pfSense is an open-source firewall and router platform based on FreeBSD with a comprehensive web-based management interface.
| Type Key | pfsense |
|---|---|
| Default Port | 443 |
| Protocol | HTTPS |
| Plugin | http_proxy |
Requirements
- pfSense installed on dedicated hardware or VM
- Web UI port 443 (HTTPS) accessible from Portal
- Admin account configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select pfSense type
- Enter host and port (default: 443)
- Log in with pfSense admin credentials
Security Considerations
- Always use HTTPS for the web configurator
- Change the default admin password immediately
- Enable CSRF protection (enabled by default)
- Restrict web configurator access to specific IPs/subnets
- Enable SSH with key authentication only if remote CLI needed
Dev Tools
Grafana
Grafana is an open-source analytics and visualization platform for metrics from Prometheus, InfluxDB, Elasticsearch, and more.
| Type Key | grafana |
|---|---|
| Default Port | 3000 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Grafana server running
- Port 3000 accessible
- Data source configured (Prometheus, InfluxDB, etc.)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Grafana type
- Enter host and port (default: 3000)
- Default login: admin / admin — change on first login
Security Considerations
- Change default admin password on first login
- Configure
root_urlingrafana.inito match Portal proxy URL - Set
[security].cookie_secure = true - Disable anonymous access unless intentional
- Use org-level permissions for multi-tenant setups
Prometheus
Prometheus is a time-series database and monitoring system with a powerful query language (PromQL) and alerting.
| Type Key | prometheus |
|---|---|
| Default Port | 9090 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Prometheus server running
- Port 9090 accessible
- Scrape targets configured in
prometheus.yml
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Prometheus type
- Enter host and port (default: 9090)
- Access the Prometheus web UI for querying and alerts
Security Considerations
- Prometheus has no built-in authentication
- Restrict access via firewall — use Portal as the sole access point
- Consider using
--web.config.filefor basic auth (Prometheus 2.24+) - Metrics may expose sensitive infrastructure information
Jupyter Notebook
Jupyter Notebook is an interactive computing environment for creating documents with live code, equations, and visualizations.
| Type Key | jupyter |
|---|---|
| Default Port | 8888 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Jupyter Notebook/Lab running
- Port 8888 accessible
- Token or password authentication configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Jupyter Notebook type
- Enter host and port (default: 8888)
- Enter the Jupyter token or password to access
Security Considerations
- Always set a password or token (
jupyter notebook password) - Configure
NotebookApp.allow_originfor Portal's domain - Jupyter can execute arbitrary code — restrict access carefully
- Consider JupyterHub for multi-user setups with proper auth
Gitea
Gitea is a lightweight, self-hosted Git service with a GitHub-like web interface, issue tracking, and CI/CD.
| Type Key | gitea |
|---|---|
| Default Port | 3000 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Gitea running (single binary or Docker)
- Port 3000 (HTTP) accessible
- SSH port 22 or 2222 for Git SSH operations
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Gitea type
- Enter host and port (default: 3000)
- Complete initial configuration on first access
Security Considerations
- Set
ROOT_URLinapp.inito match Portal's proxy URL - Disable self-registration if not needed:
DISABLE_REGISTRATION = true - Enable 2FA for all user accounts
- Configure SSH keys for Git push/pull operations
GitLab
GitLab is a complete DevOps platform with Git hosting, CI/CD pipelines, container registry, and project management.
| Type Key | gitlab |
|---|---|
| Default Port | 80 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- GitLab installed (Omnibus package or Docker)
- Port 80/443 accessible
- Minimum 4GB RAM (8GB recommended)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select GitLab type
- Enter host and port (default: 80 or 443)
- Get the initial root password from
/etc/gitlab/initial_root_password
Security Considerations
- Change the root password immediately after first login
- Configure
external_urlingitlab.rbto match Portal's URL - Disable sign-up if not needed:
gitlab_rails['gitlab_signup_enabled'] = false - Enable 2FA enforcement for all users
- Keep GitLab updated — it gets frequent security patches
code-server
code-server runs VS Code in the browser, providing a full IDE experience remotely with extensions, terminal, and Git integration.
| Type Key | code_server |
|---|---|
| Default Port | 8080 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- code-server installed and running
- Port 8080 accessible
- Password configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select code-server type
- Enter host and port (default: 8080)
- Enter the password set in
~/.config/code-server/config.yaml
Security Considerations
- Always set a strong password in the config
- Configure
proxy-domainif using Portal as reverse proxy - code-server provides full terminal access — treat it like SSH
- Consider hashed passwords for the config file
GitHub
GitHub integration connects Portal to your GitHub repositories, enabling code browsing, issue tracking, and repository management directly from the Portal dashboard.
| Type Key | github |
|---|---|
| Default Port | 443 |
| Protocol | HTTPS |
| Plugin | github |
Requirements
- GitHub account or GitHub Enterprise instance
- Personal access token with appropriate scopes
- Internet access from Portal server (for github.com)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select GitHub type
- For GitHub.com, use host
github.comand port443 - For GitHub Enterprise, enter your instance host and port
- Configure your personal access token in the connection settings
Security Considerations
- Use fine-grained personal access tokens with minimal scopes
- Rotate tokens regularly
- Never share tokens — Portal encrypts them at rest
- For Enterprise, ensure TLS is configured on your instance
Web Services
Generic web service connections for any HTTP or HTTPS endpoint. Use these when a service doesn't have a dedicated type but has a web interface. These connections open in Portal's embedded browser with navigation controls and an address bar.
HTTP Service
Generic HTTP connection for any unencrypted web service. This connection type opens in Portal's embedded browser with navigation controls, address bar, and full TLS encryption through the portal. Portal acts as a reverse proxy, adding TLS on the browser-facing side.
| Type Key | http |
|---|---|
| Default Port | 80 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Target HTTP service running
- Port accessible from Portal server
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select HTTP Service type
- Enter the target host and port (default: 80)
- Access the service through Portal's proxy URL
Security Considerations
- Traffic between Portal and the target is unencrypted — only use on trusted networks
- Portal adds TLS encryption on the browser-to-Portal leg
- Prefer the HTTPS type when the target supports TLS
HTTPS Service
Generic HTTPS connection for any TLS-encrypted web service. This connection type opens in Portal's embedded browser with navigation controls, address bar, and full TLS encryption through the portal. Portal proxies requests while maintaining end-to-end encryption to the target.
| Type Key | https |
|---|---|
| Default Port | 443 |
| Protocol | HTTPS |
| Plugin | http_proxy |
Requirements
- Target HTTPS service running with a valid or self-signed certificate
- Port accessible from Portal server
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select HTTPS Service type
- Enter the target host and port (default: 443)
- Access the service through Portal's proxy URL
Security Considerations
- Ensures end-to-end encryption from browser through Portal to the target
- Verify the target's TLS certificate is valid
- Use this type for any service that supports HTTPS
Databases
Most database connections use Portal's TCP tunnel plugin to forward the database protocol through a WebSocket. Databases with HTTP interfaces (Elasticsearch, InfluxDB) open in Portal's embedded browser instead. All connections are encrypted via TLS between your browser and Portal.
MySQL
MySQL is the world's most popular open-source relational database.
| Type Key | database |
|---|---|
| Default Port | 3306 |
| Protocol | TCP (MySQL) |
| Plugin | tcp_tunnel |
Requirements
- MySQL/MariaDB server running
- Port 3306 accessible from Portal
- User account with appropriate grants
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Database type with MySQL config
- Enter host and port (default: 3306)
- Configure the database user with remote access grants
Security Considerations
- Never use the root account for remote access
- Create dedicated users with minimal privileges:
GRANT SELECT ON db.* TO 'user'@'portal_ip' - Bind MySQL to specific interfaces (not 0.0.0.0) if possible
- Use TLS connections: configure
require_secure_transport=ON - Traffic is encrypted between browser and Portal via TLS
PostgreSQL
PostgreSQL is an advanced open-source relational database known for reliability and standards compliance.
| Type Key | postgresql |
|---|---|
| Default Port | 5432 |
| Protocol | TCP (PostgreSQL) |
| Plugin | tcp_tunnel |
Requirements
- PostgreSQL server running
- Port 5432 accessible
- User role configured in
pg_hba.conffor remote access
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select PostgreSQL type
- Enter host and port (default: 5432)
- Configure
pg_hba.confto allow connections from Portal's IP
Security Considerations
- Edit
pg_hba.confto restrict access:host all user portal_ip/32 scram-sha-256 - Use
scram-sha-256authentication (notmd5ortrust) - Create role-specific users with minimal privileges
- Enable SSL: set
ssl = oninpostgresql.conf
MariaDB
MariaDB is a community-developed fork of MySQL with enhanced performance and additional storage engines.
| Type Key | mariadb |
|---|---|
| Default Port | 3306 |
| Protocol | TCP (MySQL) |
| Plugin | tcp_tunnel |
Requirements
- MariaDB server running
- Port 3306 accessible
- User with remote access grants
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select MariaDB type
- Enter host and port (default: 3306)
- Same configuration as MySQL
Security Considerations
- Same security practices as MySQL apply
- Use
ed25519authentication plugin for stronger password hashing - Configure
bind-addressto limit listening interfaces
Redis
Redis is an in-memory data store used as a database, cache, and message broker.
| Type Key | redis |
|---|---|
| Default Port | 6379 |
| Protocol | TCP (Redis) |
| Plugin | tcp_tunnel |
Requirements
- Redis server running
- Port 6379 accessible
- Authentication configured (recommended)
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Redis type
- Enter host and port (default: 6379)
Security Considerations
- Set a password:
requirepassinredis.conf - Bind to specific interfaces:
bind 127.0.0.1 portal_ip - Disable dangerous commands:
rename-command FLUSHALL "" - Enable TLS if your Redis version supports it (6.0+)
- Redis has no user-level permissions in OSS — use ACLs in Redis 6+
MongoDB
MongoDB is a document-oriented NoSQL database designed for scalability and flexibility.
| Type Key | mongodb |
|---|---|
| Default Port | 27017 |
| Protocol | TCP (MongoDB) |
| Plugin | tcp_tunnel |
Requirements
- MongoDB server running
- Port 27017 accessible
- Authentication enabled
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select MongoDB type
- Enter host and port (default: 27017)
Security Considerations
- Enable authentication:
security.authorization: enabledinmongod.conf - Create users with specific database roles
- Bind to specific IPs:
net.bindIp: 127.0.0.1,portal_ip - Enable TLS/SSL for connections
- Disable the MongoDB HTTP interface if enabled
Elasticsearch
Elasticsearch is a distributed search and analytics engine used for log analysis, full-text search, and metrics. This connection type opens in Portal's embedded browser with navigation controls, address bar, and full TLS encryption through the portal.
| Type Key | elasticsearch |
|---|---|
| Default Port | 9200 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Elasticsearch running
- Port 9200 (HTTP API) accessible
- Minimum 2GB heap memory
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Elasticsearch type
- Enter host and port (default: 9200)
Security Considerations
- Enable X-Pack security (built-in since 6.8/7.1)
- Set
xpack.security.enabled: true - Configure TLS for transport and HTTP layers
- Use role-based access control (RBAC)
- Elasticsearch exposes cluster data — restrict access carefully
InfluxDB
InfluxDB is a time-series database optimized for metrics, events, and real-time analytics. This connection type opens in Portal's embedded browser with navigation controls, address bar, and full TLS encryption through the portal.
| Type Key | influxdb |
|---|---|
| Default Port | 8086 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- InfluxDB running (v2 recommended)
- Port 8086 accessible
- Organization and bucket configured
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select InfluxDB type
- Enter host and port (default: 8086)
- InfluxDB 2.x uses token-based auth — generate a token in the UI
Security Considerations
- Use API tokens with minimal permissions (read-only where possible)
- Enable HTTPS:
tls-certandtls-keyin config - Set token expiration policies
- InfluxDB 1.x: enable authentication with
auth-enabled = true
Custom / Generic
Custom connections allow you to proxy any TCP service through Portal. Use this for services not covered by other types.
| Type Key | custom |
|---|---|
| Default Port | Varies |
| Protocol | TCP |
| Plugin | tcp_tunnel |
Requirements
- Target service running and accessible on a TCP port
- Port accessible from the Portal server
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Custom type
- Enter the host, port, and a descriptive name
- Portal will create a TCP tunnel to the target
Security Considerations
- Ensure the target service has its own authentication
- Portal encrypts the browser-to-server leg via TLS
- The Portal-to-target leg uses your internal network — secure accordingly
Network & Tunneling
HTTP Proxy
Generic HTTP reverse proxy for any web-based service. This connection type opens in Portal's embedded browser with tabbed browsing, multi-site navigation, address bar, and full TLS encryption through the portal. Portal forwards HTTP requests to the target, handling TLS termination. A default "Web Browser" connection with DuckDuckGo as homepage is created automatically for all users.
| Type Key | http_proxy |
|---|---|
| Default Port | 80 |
| Protocol | HTTP |
| Plugin | http_proxy |
Requirements
- Target HTTP service running
- Port accessible from Portal
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select HTTP Proxy type
- Enter host and port of the target service
- Click Connect to open the embedded browser
Browser Mode
Connections with browser_mode enabled (like the default Web Browser) support multi-site navigation — navigate to any website by typing a URL in the address bar or following links. Features include:
- Tabbed browsing — Ctrl+T (new tab), Ctrl+W (close), Ctrl+Tab (switch)
- Address bar — type full URLs, bare hostnames, or relative paths
- Navigation — back/forward (Alt+arrows), refresh (Ctrl+R), focus URL bar (Ctrl+L)
- Link handling — Ctrl+click or middle-click opens in a new tab
Security Considerations
- Portal handles TLS termination — browser-to-Portal is always encrypted
- Portal session cookies and auth headers are stripped from upstream requests
- Browser-mode targets cannot access localhost or private IPs
- Connection IDs use opaque tokens — no sequential enumeration possible
- Configure the target service to trust Portal's IP as a proxy
TCP Tunnel
Generic TCP tunnel for any non-HTTP service. Portal forwards raw TCP traffic over a WebSocket connection.
| Type Key | tcp_tunnel |
|---|---|
| Default Port | Varies |
| Protocol | TCP |
| Plugin | tcp_tunnel |
Requirements
- Target TCP service running
- Port accessible from Portal
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select TCP Tunnel type
- Enter host and port of the target service
Security Considerations
- The WebSocket layer is encrypted via TLS
- Ensure the target service has its own authentication layer
- TCP tunnels pass raw bytes — Portal does not inspect the traffic
Secure Tunnel
Encrypted tunnel with additional security layers for sensitive connections.
| Type Key | secure_tunnel |
|---|---|
| Default Port | Varies |
| Protocol | Encrypted TCP |
| Plugin | secure_tunnel |
Requirements
- Target service running
- Port accessible from Portal
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Secure Tunnel type
- Enter host and port
- Portal adds encryption on top of the standard TCP tunnel
Security Considerations
- Double encryption: WebSocket TLS + tunnel encryption
- Use for highly sensitive services
- All traffic is encrypted end-to-end
VPN Bridge
VPN bridge for connecting to services behind a VPN gateway.
| Type Key | vpn_tunnel |
|---|---|
| Default Port | Varies |
| Protocol | VPN |
| Plugin | vpn_tunnel |
Requirements
- VPN gateway or bridge configured
- Appropriate VPN credentials
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select VPN Bridge type
- Enter the VPN gateway host and port
- Configure VPN-specific settings as needed
Security Considerations
- VPN traffic is encrypted by the VPN protocol
- Ensure VPN credentials are stored securely
- Use certificate-based VPN authentication when available
Streaming & Game Servers
MediaMTX Stream
MediaMTX (formerly rtsp-simple-server) is a media server that supports RTSP, RTMP, HLS, and WebRTC for live streaming.
| Type Key | mediamtx |
|---|---|
| Default Port | 8554 |
| Protocol | RTSP/RTMP |
| Plugin | mediamtx |
Requirements
- MediaMTX running
- RTSP port 8554 or API port 9997 accessible
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select MediaMTX Stream type
- Enter host and port (default: 8554 for RTSP, 9997 for API)
Security Considerations
- Configure authentication in MediaMTX config
- Use RTSPS (encrypted RTSP) for secure streams
- Restrict publish permissions to authorized users
Media Stream
Generic media stream connection for IP cameras, RTSP sources, and other streaming endpoints.
| Type Key | stream |
|---|---|
| Default Port | Varies |
| Protocol | RTSP/HTTP |
| Plugin | mediamtx |
Requirements
- Streaming source accessible (IP camera, RTSP server, etc.)
- Stream URL known
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Media Stream type
- Enter the stream source host and port
- Configure the stream protocol (RTSP, HTTP, etc.)
Security Considerations
- Change default camera passwords (many ship with admin/admin)
- Use RTSP over TCP instead of UDP where possible
- Isolate cameras on a separate VLAN
Stream Relay
Multi-platform stream relay allows you to simultaneously broadcast to external platforms (Twitch, YouTube, Kick, other Portal instances, or any custom RTMP destination) while streaming to your Portal.
Requirements
- An active stream configured in Portal (My Streams tab)
- Account and stream key on each target platform
- Target platform's RTMP ingest URL
Setup in Portal
- Go to Dashboard → My Streams and open your stream details
- Scroll to the Relay Destinations section
- Click Add Relay
- Select a platform (Twitch, YouTube, Kick, Portal, or Custom)
- Enter a display name for this destination
- The RTMP URL is pre-filled for known platforms — adjust if needed
- Enter the stream key from the target platform
- Save the destination
When you go live, all enabled relay destinations start automatically. Relays use ffmpeg -c copy (no re-encoding) so there is minimal CPU overhead. You can enable or disable individual destinations without deleting them.
Limits
- Maximum 10 relay destinations per stream
- RTMP URL must start with
rtmp://orrtmps://
Security Considerations
- Relay credentials (RTMP URL and stream key) are encrypted at rest on the server
- Stream keys are never returned by the API — only a
has_stream_keyflag is shown - Only the stream owner can view, add, edit, or delete relay destinations
- Keep your target platform stream keys confidential — treat them like passwords
Minecraft RCON
RCON (Remote Console) provides command-line access to a Minecraft server for administration.
| Type Key | minecraft_rcon |
|---|---|
| Default Port | 25575 |
| Protocol | RCON |
| Plugin | tcp_tunnel |
Requirements
- Minecraft server with RCON enabled
- RCON port 25575 accessible
- RCON password configured in
server.properties
Setup in Portal
- Go to Dashboard → My Connections → Add Connection
- Select Minecraft RCON type
- Enter host and port (default: 25575)
- Enter the RCON password when connecting
Security Considerations
- Set a strong
rcon.passwordinserver.properties - Bind RCON to specific IPs:
rcon.ip=portal_ip - RCON transmits passwords in plaintext — Portal's TLS protects the browser leg
- Consider using RCON only on trusted networks