SwiftServer
Networking

Port Forwarding

Local, remote, and dynamic SOCKS forwards saved as reusable rules, with auto-start and a built-in browser.

Port forwarding rules live in the Port Forwarding section. A rule is saved once and started whenever you need it — from the rule list, from terminal output, or automatically with the app.

On the free plan one forwarding session can run at a time; Premium runs unlimited sessions.

The three modes

Local — expose a service on (or behind) the server to your device. Set Target Host and Target Port as seen from the server (defaults target 127.0.0.1:80), and optionally pin the Local Port — leave it on Auto to let SwiftServer pick a free one. Open localhost:<local port> on your device and you're talking to the server-side service through SSH.

Remote — the reverse: connections arriving at a port on the server are forwarded back to an address reachable from your device. Handy for showing a local dev server to something running remotely.

Dynamic SOCKS — start a SOCKS proxy on your device that routes traffic through the server. Point a browser or tool at the local SOCKS endpoint and its traffic exits from the server's network.

Every rule also has Auto Start — the rule starts as soon as SwiftServer launches.

Running sessions

A session's status moves through Connecting → Starting → Running; the session page keeps a live log (for example SOCKS proxy listening on 127.0.0.1:1080) plus the same Event Log and SSH Diagnostics every connection in SwiftServer gets.

On iPhone and iPad, a running local forward can open straight into the built-in browser — with back/forward, reload, and Open in Safari — so checking a forwarded dashboard doesn't even leave the app.

Forwarding sessions show up as Live Activities on iPhone while you're out of the app.

Per-rule proxy

A rule normally connects the way its machine does. The rule's Proxy picker (default Machine Default) can override that with a specific connection proxy when one forward needs a different path.

If a forward won't start

  • The local port is taken — set Local Port to Auto, or pick another port. Ports below 1024 are reserved on iOS and macOS.
  • The target isn't reachable from the server — remember Local-mode targets resolve on the server's side; test with curl in a terminal session first.
  • Anything else lands in the session's diagnostics with the SSH-level error.

On this page