Forward raw TCP or UDP traffic on a specific port straight to another host and port — no domain, no HTTPS.
↪
Create your first redirect
Send an old domain to a new destination while preserving its path if you choose.
-
Site Gateway manual
Simple routing for homelabs and small teams
A complete guide to publishing sites, routing applications, securing domains, and recovering safely. Start with the defaults, then use the advanced controls when you understand the trade-offs.
Searches purpose, fields, examples, troubleshooting, and expert notes.
-
Introduction
Why Site Gateway exists
Reverse proxies often expose powerful settings without explaining what they change. Site Gateway provides a visual, Caddy-powered control plane for static sites, proxy routes, redirects, HTTPS, health checks, access control, and recovery.
Novice path
Create one route, test it locally, then add a domain and TLS. Keep defaults until you have a reason to change them.
Expert note
Configuration is stored in SQLite under /data and generated Caddy configuration is validated before reload.
Example
Publish a ZIP on a direct port first, then add www.example.com after DNS and port forwarding are ready.
-
Getting started
From installation to your first route
Install the container with persistent /data storage, open port 8080, and sign in with the administrator credentials supplied to Docker. Before publishing public domains, make sure DNS points to this server and ports 80 and 443 are free.
-
Hosted sites
Publish a static website
Open Hosted Sites and choose New hosted site.
Give the site a name and unused direct-access port.
Upload an index.html or ZIP whose root contains index.html.
Add a domain only when DNS is ready; choose Automatic HTTPS for public service.
Expected behavior: the files are served immediately on the chosen port and, when configured, through the domain.
-
Proxy hosts
Connect a local application
For Jellyfin at 192.168.1.20:8096, use domain jellyfin.example.com and forward target http://192.168.1.20:8096. Site Gateway checks the upstream and Caddy manages eligible public HTTPS certificates automatically.
-
Certificates
Automatic HTTPS prerequisites
The domain must resolve to your public address, inbound ports 80 and 443 must reach Site Gateway, and another proxy cannot own those ports. “Not detected” means Caddy has not yet stored a certificate; review gateway events and DNS before retrying.
-
Health diagnostics
Understand what failed
Open Certificates and choose Check now to test DNS resolution, the gateway listeners, stored certificate coverage, and proxy upstream health. Expand a certificate for its non-secret details. Administrators can download a redacted support report when asking for help; it intentionally excludes credentials, cookies, private keys, secrets, and raw expert configuration.
-
Access Lists
Protect a route
Use private_ranges to allow standard LAN address ranges, or enter exact IP/CIDR values one per line. Add a login when the visitor must also authenticate. Assign the saved list from the Proxy Host’s Advanced section.
-
Redirect Hosts
Move an address safely
Use 301 or 308 only when the move is intended to be permanent; browsers can cache them. Use 302 or 307 while testing. Enable Preserve path and query when old.example.com/library?id=2 should become new.example.com/library?id=2.
-
Default site
Handle unknown addresses
The themed 404 is the safest public default. Gateway ready confirms HTTP routing during setup, No response closes unmatched HTTP connections, Redirect sends visitors elsewhere, and Custom HTML serves administrator-provided markup. Unknown HTTPS names still require their own valid route and certificate.
-
Backups
Back up before an update
A configuration backup contains a consistent SQLite snapshot and portable recovery data. A complete backup also contains hosted files, local assets, and certificate storage. Backups are stored in /data/backups; advanced installations can mount separate storage directly at that path.
-
Restore checklist
Recover with confidence
Download or import the .sgbackup archive.
Supply its password if it is encrypted.
Choose Restore and allow validation to finish.
Confirm hosts, certificates, and upstream health.
Site Gateway verifies file checksums and creates a pre-restore safety backup. If the restored Caddy configuration is invalid, it attempts to recover the previous state automatically.
-
Logs
Investigate requests and gateway events
Access Logs show domains, paths, response status, latency, and upstream outcomes. Gateway Events record configuration and operational changes.
Example
Filter for a 502 or failed upstream event, then compare the target address with a direct LAN request.
-
Administration · Users & Groups
Control who can change the gateway
Administrators manage users, roles, groups, and audit history. Standard Users perform permitted management tasks; Viewers are read-only.
Example
Create a Viewer for monitoring and a Standard User for routine route changes.
-
Administration · Gateway Defaults & Danger Zone
Preferences and destructive actions
Gateway Defaults control unknown HTTP responses, backup scheduling, and certificate thresholds. Restore Defaults changes preferences only. Factory Reset deletes all data under /data and returns to initial setup.
Example
Keep the themed 404 in production and create a complete backup before any factory reset.
-
Proxy Hosts · Advanced options
Why the advanced controls exist
Most applications work with only a domain, Forward to target, and TLS choice. Advanced options are for applications with unusual paths, authentication boundaries, response codes, headers, certificates, or performance needs.
What each control changes
Access List: applies reusable login and network rules before the upstream is reached.
Health-check path and method: tells Site Gateway what request to make when checking the application.
Expected status: accepts a code, list, or range such as 200, 200,204, or 200-399.
Timeout and retries: control how long a check waits and how many additional attempts are made.
Compression: controls whether Caddy negotiates gzip or zstd for responses.
Custom Locations: sends paths such as /api/* to a different upstream and can strip or preserve the path.
Request and response headers: add metadata required by an application or browser.
Upstream TLS server name: supplies the SNI name when the upstream certificate expects a hostname.
Trust an unverified upstream certificate: permits internal HTTPS with an untrusted certificate; use only on a trusted network.
HSTS: tells browsers to use HTTPS for future requests; enable only after HTTPS is reliable.
Custom Caddy configuration: an expert escape hatch for supported Caddy directives, validated before reload.
Who, where, when, and why
Who: experts operating applications with documented proxy requirements. Where: the Advanced options panel for one Proxy Host. When: only after the basic route works. Why: to solve a known requirement rather than guessing at settings.
Practical example: Jellyfin
Use http://192.168.1.20:8096 as the upstream, leave the health path at /, keep the default expected range, and enable HSTS only after public HTTPS works. If an internal HTTPS service uses a private certificate, set its upstream SNI name and consider the unverified-certificate option only when the LAN is trusted.
How to verify
Save one change at a time, watch the card’s upstream status, inspect Access Logs, and compare the result with a direct request to the application. If Caddy rejects a custom configuration, Site Gateway retains the last known-good configuration.
-
Administration · Danger Zone
Reset preferences or rebuild from zero
This page contains the two actions with the greatest impact in Site Gateway. They are intentionally separate so a routine preference correction cannot be confused with a destructive rebuild.
Restore Defaults: what it is for
Restore Defaults returns gateway preferences to their known starting values: the Default Site response, page heading and explanation, redirect behavior, backup schedule, and certificate-health thresholds. It does not remove hosts, uploaded files, users, groups, Access Lists, certificates, logs, or saved backups.
Factory Reset: what it is for
Factory Reset removes Site Gateway data under /data, including routes, hosted content, users, groups, Access Lists, certificates, logs, backups, icons, and settings. Files mounted outside /data are not touched. Use it for a lab rebuild, a clean handoff, or recovery from an intentionally abandoned configuration—not to undo one route.
Who should use these actions
Only an Administrator should use them. Standard Users and Viewers should not see or operate destructive controls. The server verifies the signed-in administrator, the entered username, and the password before showing the final confirmation.
What happens when you click the button
Validation happens in order: username, password, confirmation phrase, then a second themed dialog requiring YES. Cancel clears every field and changes nothing. Restore Defaults applies immediately and refreshes the page. Factory Reset clears the data, recreates the initial bootstrap state, shows a countdown, and returns to the first-install login/setup flow without requiring a manual container restart.
When to use a backup instead
If you want to undo a recent change while keeping the rest of the installation, create or restore a complete backup. Factory Reset is not a rollback tool; it intentionally removes the recovery material stored under /data/backups.
Practical examples
Your Default Site explanation is confusing: use Restore Defaults.
You are moving the container to a new owner: create a complete backup, verify it, then use Factory Reset.
A route stopped working: inspect Logs and restore the route or backup; do not factory-reset first.
After a Factory Reset
Open the management URL, sign in with the installation administrator credentials, and complete the initial administrator setup. Recreate or restore your hosts, certificates, users, groups, and Access Lists only after confirming the empty gateway responds correctly.
-
Common Interface Controls
Menus, status controls, and icons
The same card language is used throughout Hosted Sites, Proxy Hosts, Redirect Hosts, Access Lists, Groups, and Users so that learning one area transfers to the next.
What the three-dot menu is for
The three-dot menu contains actions that change or inspect a card. Edit opens the full form. Enable/Disable changes whether the route or control is active without deleting its saved configuration. Assignments shows which hosts use an Access List. Delete removes the record after a confirmation.
Who can use each action
Administrators can manage all cards. Standard Users see only actions allowed by their capability set. Viewers can inspect information but cannot create, edit, disable, assign, or delete configuration. Authorization is enforced by the server, not only by hiding buttons.
When to disable instead of delete
Disable a route during maintenance or testing when you expect to reuse its settings. Delete only when the route, assignments, and its configuration are no longer needed.
Changing a card icon
Select the card’s icon or choose Icon from its menu to open the icon picker. Search by service name, such as Jellyfin, then select a result. You can also upload a custom PNG, JPEG, WebP, or SVG when the service is not in the catalog. The interface scales icons into the same two-letter tile size and preserves the current initials as a fallback if an icon is removed or unavailable.
Practical examples
Disable a Proxy Host while upgrading Plex, then enable it after the upstream responds.
Assign one Access List to several hosts and inspect Assignments before changing its rules.
Choose a Jellyfin icon for a Proxy Host; if the icon catalog is unavailable, its initials remain visible.
Backup and troubleshooting
Icons and assignments are included in complete backups. If a custom icon does not appear, verify the upload completed, refresh the card list, and confirm the file format is supported. Changing an icon never changes routing, TLS, or access behavior.
-
Hosted Sites · Field reference
What each Hosted Site field means
Name is the label you see in Site Gateway; it does not have to match the domain. Primary domain is the main hostname. Additional domains are aliases that serve the same files. Upload accepts a site folder or ZIP and expects index.html at the web root. Port is the direct LAN port and must be inside the configured range. TLS controls whether the domain uses automatic public HTTPS. HSTS should be enabled only after HTTPS has been tested on every intended client.
Novice example
Name the route “Family landing page,” use port 9100, upload the ZIP, browse to the LAN address, and add a domain later.
Expert example
Use additional domains for a canonical and legacy hostname while keeping one file tree. Complete backups preserve both the route metadata and uploaded files.
-
Certificates · Field reference
Read certificate health correctly
Each configured hostname receives its own readiness result. DNS shows whether the name resolves, HTTP and HTTPS show listener reachability, and TLS shows certificate coverage and status. Issuer identifies the authority, expiration shows remaining lifetime, and “Waiting for Caddy” means issuance has not completed—not that a certificate was already created.
Novice workflow
Confirm DNS, forward ports 80 and 443, stop competing proxies, then run the certificate check. Do not troubleshoot an upstream application until the domain and HTTPS checks are healthy.
Expert workflow
Use custom certificates for externally purchased or wildcard material under the custom certificate area. Keep Caddy-managed ACME material separate and protect private keys.
-
Advanced proxy settings
Start simple, expand only when needed
Custom Locations route selected paths to different upstreams. Request headers are sent upstream; response headers are returned to visitors. Health checks accept individual codes or ranges. Unverified upstream TLS and custom Caddy configuration are expert controls—change one item at a time and rely on validation feedback.
-
Troubleshooting
When HTTPS is not detected
Confirm public DNS points to this server, router forwarding reaches ports 80 and 443, and NGINX Proxy Manager or another service is not still using those ports. Then review Certificates and Logs → Gateway events. Site Gateway cannot request a public certificate while another gateway receives the challenge.
-
No guide matched that search.
+
Site Gateway manual
Every section, every field, explained
A complete reference for Hosted Sites, Proxy Hosts, Redirect Hosts, Streaming Hosts, Certificates, Access Lists, Administration, and every advanced control between them. Start with an area’s overview, then use its field reference when you need to know what one specific setting does.
Searches every heading, field name, and explanation on this page.
Introduction
Why Site Gateway exists
Reverse proxies often expose powerful settings without explaining what they change. Site Gateway provides a visual, Caddy-powered control plane for static sites, proxy routes, redirects, raw TCP/UDP streams, HTTPS, health checks, access control, and recovery — covering everything from a single ZIP upload to a full homelab of proxied applications.
How this manual is organized
Each area below has an overview article (what it’s for and how to configure the common case) followed by a field reference article covering every advanced control, one at a time. Use the sidebar to jump straight to a section, or search for any field name, error message, or setting — search matches headings, body text, and field names together.
Novice path
Create one route, test it locally, then add a domain and TLS. Keep defaults until you have a reason to change them.
Expert note
Configuration is stored in SQLite under /data and every generated Caddy configuration is validated before reload — if validation fails, the previous working configuration stays active and the failure is explained in Gateway Events.
Getting started
From installation to your first route
Install the container with persistent /data storage, open the management port (8080 by default), and complete the administrator setup screen shown on first launch. Before publishing public domains, confirm DNS already points to this server and that ports 80 and 443 are free for Site Gateway to use.
Choosing your first route type
Hosted Site: you have static files (a ZIP or a single index.html) and want Site Gateway to serve them directly.
Proxy Host: you already have an application running somewhere — another container, a LAN device, another server — and want a domain and HTTPS in front of it.
Redirect Host: you want a domain to simply forward visitors to a different address.
Streaming Host: you need to forward a raw TCP or UDP port (SSH, Minecraft, a game server) with no domain and no HTTPS involved.
Example
Publish a ZIP on a direct port first so you can confirm it works over LAN, then add www.example.com once DNS and port forwarding are ready and Automatic HTTPS can issue a certificate.
Hosted Sites
Overview: publish a static website
A Hosted Site serves files you upload directly — no separate application or container required. Use it for a static site, a single-page app build, documentation, or anything that’s just HTML/CSS/JS.
Creating a Hosted Site
Name: the label shown in Site Gateway; it doesn’t need to match the domain.
Primary domainOptional: leave blank for port-only LAN access, or set a hostname to serve the same files there once DNS is ready.
Additional domains: one alias per line — every alias serves the same files under the same TLS settings as the primary domain.
Port: the direct LAN port this site answers on. Must fall inside the configured port range (shown as a hint on the form, default 9000–9099) and not already be used by another site.
TLS:Automatic public HTTPS (default, requires a working domain and open ports 80/443), Internal HTTPS for trusted local devices, or HTTP only.
Enable HSTS after HTTPS is verified: only turn this on once you’ve confirmed HTTPS works for every client — HSTS tells browsers to refuse HTTP entirely for this domain going forward, and that’s hard to undo quickly.
Website files: upload a ZIP whose root contains index.html (a single top-level folder inside the ZIP is automatically flattened), or upload a bare index.html file directly. Up to 250 MB.
Updating an existing site
Use Replace files from the card’s menu to upload a new ZIP or HTML file without recreating the site or losing its domain/TLS/health settings. Use Domain & TLS to change the domain, TLS mode, or any advanced setting below.
Expected behavior
Files are served immediately on the chosen port and, once configured, through the domain as well.
Hosted Sites
Advanced options and health monitoring
Expand Advanced options on the create or edit form for these controls:
Access List: applies a reusable network or login restriction before any visitor reaches this site. Choose Public — no Access List to leave it open.
Compression:Automatic zstd + gzip (default), gzip only, or Off.
Request headers / Response headers: one Name: value pair per line, up to 30 each. Request headers are added before Caddy processes the request; response headers are added to what visitors receive.
Apply HSTS to subdomains: adds includeSubDomains to the HSTS header; only takes effect when HSTS itself is on and TLS isn’t HTTP only.
Custom Caddy configuration: expert-only raw Caddyfile lines appended to this site’s block, validated before reload. Lines that would touch the global config block, the admin API, storage, or import/persist_config directives are rejected outright, since those could affect every other route on the gateway.
Monitoring this site
Hosted Sites can be health-checked the same way Proxy Hosts are: a Health-check path (default /), method (GET or HEAD), expected status (a code, list, or range such as 200, 200,204, or 200-499), a timeout in seconds (1–60, default 4), up to 3 retries, and a Monitor this site toggle. Turning monitoring off shows the card as “Monitoring paused” instead of running a periodic check.
Proxy Hosts
Overview: connect a local application
A Proxy Host puts a domain and HTTPS in front of something already running elsewhere — another container, a LAN device, or a remote service.
Creating a Proxy Host
Name: the label shown in Site Gateway.
Primary domain and Additional domains: same behavior as Hosted Sites.
Forward to: the upstream address, e.g. http://192.168.1.20:8123. Use the container name, LAN address, or application URL — no path or query string beyond a trailing slash.
Upstream poolOptional: additional http(s):// targets, one per line, up to 10. When present, Caddy load-balances across every healthy target instead of using the single Forward-to address alone.
TLS: Automatic public HTTPS, Internal HTTPS, Custom uploaded certificate, or HTTP only.
Enable HSTS after HTTPS is verified.
Example
For Jellyfin at 192.168.1.20:8096, use domain jellyfin.example.com and forward target http://192.168.1.20:8096. Site Gateway checks the upstream continuously and Caddy manages an eligible public HTTPS certificate automatically.
Proxy Hosts
Advanced options, field by field
Most applications only need a domain, Forward-to target, and TLS choice. These controls are for applications with unusual paths, authentication needs, response codes, headers, or performance requirements.
Access List: applies reusable login and network rules before the upstream is reached.
Health-check path and method: the request Site Gateway makes when checking this application (path default /; GET or HEAD).
Expected status: accepts a single code, a comma list, or a range — 200, 200,204, or 200-399.
Timeout in seconds: 1–60, default 4.
Monitor this upstream: when off, the status shows “Monitoring paused” and no periodic request is made.
Compression: Automatic zstd + gzip, gzip only, or Off.
Custom Locations: send specific paths to a different upstream. One per line: /api/* | http://192.168.1.20:3001 | strip or preserve — strip removes the matched prefix before forwarding, preserve keeps it. Up to 20 entries.
Request headers / Response headers: same Name: value-per-line format as Hosted Sites.
Upstream TLS server name: an optional SNI name expected by the upstream certificate. Only meaningful when every upstream target uses https:// — the field is disabled otherwise.
Ignore upstream TLS certificate errors: use only for a trusted internal HTTPS service with a self-signed or hostname-mismatched certificate; also requires an HTTPS upstream to take effect.
Apply HSTS to subdomains.
Custom Caddy configuration: same validation rules as Hosted Sites’ custom configuration. NGINX syntax is not supported — Site Gateway generates Caddyfile syntax.
How to verify a change
Save one setting at a time, watch the card’s upstream status line, check Access Logs, and compare against a direct request to the application. If Caddy rejects a custom configuration, Site Gateway keeps the last known-good configuration active and shows the rejection reason.
Proxy Hosts
Custom uploaded certificates
Choosing Custom uploaded certificate as the TLS mode reveals two file fields: Certificate PEM and Private key PEM. Both are required together — Site Gateway verifies the private key’s public key actually matches the certificate before accepting the pair, and confirms the certificate’s Subject Alternative Names cover every domain configured on that Proxy Host. A certificate that doesn’t cover every alias is rejected rather than silently applied to only some of them.
Accepted files are stored under /data/certificates/custom and included in complete backups. Replacing a custom certificate later works the same way — upload both files again through the same field.
Redirect Hosts
Overview: move an address safely
A Redirect Host sends visitors from one domain straight to another, with no files hosted and no application behind it.
Fields
Name.
Source domain: the old address people currently use.
Additional source domains: further aliases that redirect the same way.
Destination: a complete http:// or https:// URL to send visitors to.
TLS: Automatic HTTPS, HTTP only, or Internal HTTPS — this governs the source domain, not the destination.
Preserve path and query (on by default): when enabled, old.example.com/library?id=2 becomes new.example.com/library?id=2 instead of always landing on the destination’s root.
Access ListOptional: protects the source domain the same way it protects Hosted Sites and Proxy Hosts.
Choosing a redirect type
Use 301 or 308 only when the move is meant to be permanent — browsers and search engines cache these aggressively. Use 302 or 307 while you’re still testing the new destination.
Streaming Hosts
Overview: raw TCP/UDP port forwarding
A Streaming Host forwards a raw TCP or UDP port straight to another host and port — there’s no domain, no HTTPS, and no HTTP layer involved at all, unlike every other route type in Site Gateway. Use it for services that speak their own protocol directly over a port: SSH, a Minecraft or other game server, a VPN endpoint, or any similar TCP/UDP service.
The one prerequisite: publish the port first
Streaming Hosts listen for connections from inside the Site Gateway container itself — they are not routed through Caddy the way domains are. That means the incoming port must already be published on the container (added to your docker-compose.yaml or Unraid port mappings, with the container recreated) before you create the matching Streaming Host in the UI, or nothing outside the container will ever reach it.
Example docker-compose port mapping
To forward SSH (22) and a Minecraft server (25565):
ports: - "22:22/tcp" - "25565:25565/tcp"
Creating a Streaming Host
Name.
Incoming port: 1–65535. Cannot be the admin port, 80, 443, a port already inside the Hosted Sites port range, or a port already used by another Streaming Host.
Forward to: a plain host:port address, e.g. 192.168.1.20:25565. No http:// — this is a raw socket forward, not a web address.
TCP / UDP: enable one or both. At least one must stay checked.
Monitor this target: runs a TCP reachability probe against the forward address every check cycle, even for UDP-only streams (UDP itself has no reliable way to “ping” a service).
Streaming Hosts
How the forwarding actually works
TCP is a full one-to-one relay: every inbound connection gets its own fresh outbound connection to the forward target, and the two are piped together in both directions. Closing or erroring either side tears down the other.
UDP is connectionless, so Site Gateway multiplexes many remote clients over one listening port by tracking a short-lived “session” per unique client address, each with its own outbound socket to the forward target. An idle session is cleaned up automatically after about a minute of inactivity.
Health monitoring
The monitor always performs a plain TCP reachability check against the forward address, with a 4-second timeout — this confirms the target host and port are reachable, not that the specific game or service protocol is fully healthy. Disabling monitoring shows the card as “Monitoring paused” rather than unreachable.
Practical examples
SSH: incoming port 2222, forward to 192.168.1.30:22, TCP only.
Minecraft: incoming port 25565, forward to 192.168.1.20:25565, TCP (and UDP if the specific server/mod needs it — vanilla Minecraft is TCP-only).
Editing a Streaming Host
Changing the port, target, or protocol checkboxes restarts the listener immediately to apply the change; toggling Enable/Disable does the same.
Certificates
Overview: automatic HTTPS prerequisites
For Automatic HTTPS to succeed, a domain must resolve to your public address, inbound ports 80 and 443 must reach Site Gateway, and no other service (including another reverse proxy) can already own those ports on this host.
Domain readiness checks
DNS: confirms the domain actually resolves, and to what address.
HTTP / HTTPS: confirms Caddy itself is listening on ports 80/443 inside the container — this does not by itself prove the internet can reach you, only that the gateway is ready to answer if it can.
TLS: reflects the certificate status for that domain (healthy, renewing soon, critical, expired, or “Waiting for Caddy,” meaning issuance hasn’t completed yet — not that anything is broken).
Upstream (Proxy Hosts only): the latest health-check result for that route.
Check now
Forces an immediate re-check of every certificate, domain readiness result, and health probe instead of waiting for the periodic background check.
Novice workflow
Confirm DNS, forward ports 80 and 443, stop any competing proxy, then run Check now. Don’t troubleshoot an upstream application until the domain and HTTPS checks themselves are healthy.
Certificates
Field reference and thresholds
Expanding a certificate’s details shows: status, valid-from date, issuer, every domain it covers, serial number, SHA-256 fingerprint, and when it was last detected — deliberately excluding private key material.
Status thresholds
Set from Administration → Security & Health:
Renewing-soon warning: days remaining before a certificate is flagged as renewing soon (8–120, default 30).
Critical warning: days remaining before it’s flagged critical; must stay lower than the renewing-soon threshold (default 7).
Stale health data: minutes before a displayed check is considered old and worth re-running (2–1440, default 10).
A status of mismatch means a custom certificate was uploaded for that route but its coverage doesn’t include every configured domain — upload a replacement covering all of them.
Access Lists
Overview: protect a route
An Access List restricts who can reach a Hosted Site, Proxy Host, or Redirect Host, by network address, by login, or both. Assign a saved list from that route’s Advanced options.
Fields
Name.
Allowed networks: one IP, CIDR range, or the literal private_ranges per line. When set, every network not listed is denied — this is an allow-list, not a suggestion.
Denied networksOptional: evaluated before allowed networks and logins, so a denied entry always wins even if it would otherwise be allowed.
Logins: add one or more username/password pairs directly on the Access List (passwords need at least 8 characters; leaving a password blank while editing an existing login keeps it unchanged).
Groups: alternatively, let members of a Group (Administration → Users & Groups) authenticate with their own Site Gateway username and password instead of a separate Access-List-only login.
At least one rule — a network rule, a denied-network rule, or a login — is required before the list can be saved.
Assigning and inspecting
Use a route’s Advanced options to assign an Access List to it, or use the Access List’s own View assigned hosts menu action to see everywhere it’s currently in use. An Access List can’t be deleted while anything still references it — unassign it from every host first.
Users & Groups
Overview: control who can change the gateway
Every account has a role:
Administrator: full access, including Users, Groups, Settings, and Backups.
Standard User: can manage Hosted Sites, Proxy Hosts, Redirect Hosts, Streaming Hosts, and Access Lists, but not Users, Groups, Settings, or Backups.
Viewer: read-only — can inspect everything but change nothing.
Creating a user
Display name.
Username: 3–64 characters, letters/numbers/._-, must be unique.
Role.
Temporary password: at least 8 characters — share it securely and have the person change it after their first sign-in.
Managing an existing user
An administrator can change a user’s role, reset their password, archive them (a reversible soft-disable distinct from deleting), or delete them outright. You cannot disable, archive, delete, or change the role of your own account — another administrator has to do that — and Site Gateway always keeps at least one active Administrator, refusing any action that would leave zero.
Groups
A Group is simply a named set of users. Its only purpose is authentication: assign a Group to an Access List so its members can log in with their own Site Gateway credentials instead of a separate Access-List-only login.
Audit history
Administration includes an Audit log — a searchable, filterable, immutable record of who did what, filterable by outcome (success/failed) and free-text search across the user, action, and target. Audit entries can’t be edited or deleted.
Administration
Gateway Defaults: handling unknown addresses
Controls what happens when a visitor reaches Site Gateway on HTTP using a hostname that isn’t configured. (Unknown HTTPS hostnames are always rejected outright, regardless of this setting, since serving anything else would need a certificate Site Gateway doesn’t have — and issuing a misleading one would be worse.)
Response modes
Themed route-not-found page (404) — the safest public default.
Gateway ready page (200) — useful while confirming HTTP routing during initial setup.
No response — close connection.
Redirect elsewhere: set a destination URL, redirect code, and whether to preserve the requested path and query.
Custom HTML: administrator-authored markup, served exactly as written with no sanitization — up to 250,000 characters.
The themed page’s heading and explanation text are also editable here, independent of which mode is active.
Administration
Backup & Restore
A Configuration only backup contains a consistent SQLite snapshot of every route, user, group, Access List, and setting, plus a portable JSON export of the same data. A Complete backup adds uploaded Hosted Site files, icons, the default-site page, and certificates (both managed and custom).
Scheduled backups
Enable scheduled backups.
Type: Configuration only or Complete.
Schedule: Daily, Weekly, or Monthly, plus the hour of day to run.
Keep: how many scheduled backups to retain (1–100, default 7) — older ones beyond this count are deleted automatically after each run.
Include logs.
Encrypt scheduled backups: uses the container’s BACKUP_PASSWORD environment value — enable this only after that value is actually configured, or scheduled runs will fail.
Manual backup, encryption password
The optional backup password field on this page is used only for manually created backups and for restoring an encrypted archive — it is never stored by Site Gateway.
Restore checklist
Download or import the .sgbackup archive (importing just stages the file — restoring is a separate, explicit action).
Supply its password if it’s encrypted.
Choose Restore and allow validation to finish.
Confirm hosts, certificates, and upstream health afterward.
Site Gateway verifies every file’s checksum and automatically creates a safety backup of the current state before restoring anything. If the restored configuration turns out to be invalid, it automatically rolls back to that safety backup rather than leaving the gateway in a broken state.
Administration
Security, Health & Updates
Site Gateway validates every generated Caddy configuration before reload and keeps the previous working configuration active if validation fails. Container updates are installed by pulling a new pinned image — create a backup first.
Certificate health thresholds
See Certificates → Field reference for what Renewing-soon warning, Critical warning, and Stale health data actually control.
Support report
Downloadable by administrators only. Includes version info, Caddy/Node versions, storage integrity-check result, gateway health, a redacted route summary, full certificate and domain readiness output, and recent activity. It deliberately excludes passwords, private keys, session secrets, cookies, and certificate contents — safe to share when asking for help.
Logs & Retention
Set how many days of Access, Activity, Audit, Certificate, and Security records to keep (7–3650 days each) and whether automatic pruning is enabled. Prune Now shows exactly how many records in each category are eligible before you confirm, and Download Logs exports them.
Administration
Danger Zone
Two separate, deliberately distinct destructive actions — kept apart so a routine preference correction is never confused with a full rebuild. Both require re-entering your own administrator username and password, typing an exact confirmation phrase, and then confirming a second themed dialog by typing YES.
Restore Defaults
Confirmation phrase: RESTORE DEFAULT. Resets Gateway Defaults, backup schedule settings, and certificate-health thresholds back to their starting values. It does not remove any hosts, uploaded files, users, groups, Access Lists, certificates, logs, or backups.
Factory Reset
Confirmation phrase: FACTORY RESET. Deletes everything under /data — every host of every kind, uploaded files, certificates (managed and custom), logs, backups, icons, users, and settings. Docker-mounted files outside /data are untouched. The container returns to the initial setup screen without needing a manual restart. Because backups themselves live under /data/backups, they’re deleted too — recovery is only possible from a backup taken beforehand and stored elsewhere (downloaded, or on separately mounted storage).
When to use a backup instead
If you want to undo a recent change while keeping the rest of the installation intact, restore a backup — Factory Reset is not a rollback tool.
Logs
Access Logs and Gateway Events
Access Logs
Every request Caddy handles, with domain, path, response status, latency, and upstream outcome. Filter by host or by status-code range (2xx/3xx/4xx/5xx). Sensitive query-string values — tokens, secrets, passwords, session identifiers, API keys, credentials — are redacted before they’re ever stored, regardless of filter settings.
Gateway Events
Configuration and operational changes, filterable by severity (Normal/Warnings/Errors) and by category (certificate, health, authentication, backup, configuration, or system).
Example
Filter Access Logs for a 502, then compare the target address against a direct LAN request to the same upstream to isolate whether the problem is the gateway or the application itself.
Common Interface Controls
Menus, toggles, and role gating
The same card language is used throughout Hosted Sites, Proxy Hosts, Redirect Hosts, Streaming Hosts, Access Lists, Groups, and Users, so learning one area transfers directly to the next.
The three-dot menu
Contains actions that change or inspect a card: Edit opens the full form, kind-specific extras appear where relevant (Replace files on Hosted Sites, View assigned hosts on Access Lists), and Delete removes the record after a confirmation.
The toggle switch
A slide switch, separate from the menu, turns a route or account on or off without deleting its saved configuration — useful during maintenance or testing when you expect to reuse the exact same settings shortly after.
Who can use each control
Administrators can manage everything. Standard Users can manage Hosted Sites, Proxy Hosts, Redirect Hosts, Streaming Hosts, and Access Lists, but not Users, Groups, Settings, or Backups. Viewers can inspect information but cannot create, edit, disable, assign, or delete anything — their menus and toggles are hidden entirely. This is enforced on the server independently of what the interface shows, so hiding a button is a convenience, not the actual security boundary.
Icons
Changing a card’s icon
Every Hosted Site, Proxy Host, Redirect Host, Streaming Host, Access List, Group, and User can have its own icon. Open the picker from a card’s icon tile or its “Change icon” menu action.
Search by service name: type at least 2 characters (e.g. Jellyfin, Plex) to search a large built-in icon catalog and pick a match.
Upload a custom image: PNG, JPEG, WebP, GIF, or SVG, up to 2 MB, stored locally under /data/icons. Uploaded SVGs are checked for embedded scripts or external references before being accepted.
Image URL: paste a direct https:// image link instead of uploading a file.
Use two-letter fallback: clears any icon and reverts to initials derived from the name.
If a custom icon URL ever stops loading, the card automatically falls back to showing initials instead of a broken image.
Troubleshooting
When HTTPS is not detected
Confirm public DNS actually points to this server, that router/firewall forwarding reaches ports 80 and 443, and that NGINX Proxy Manager or another reverse proxy isn’t still holding those ports. Then check Certificates and Logs → Gateway Events for the specific rejection reason. Site Gateway cannot request a public certificate while another gateway is receiving the ACME challenge on its behalf.
A route rejected its configuration
Check the error shown on save — it names the specific problem (duplicate address, invalid upstream, malformed custom configuration, certificate/TLS issue) rather than a generic failure, and the previous working configuration stays active while you fix it.
A Streaming Host isn’t reachable from outside
This is almost always the port not being published on the container yet — see Streaming Hosts → Overview for the docker-compose/Unraid port mapping requirement.