---
title: "Deploy Portunus Server"
description: "Portunus server with Web UI, SQLite state, HTTP and TCP proxy."
category: "Other"
url: https://railway.com/deploy/portunus-server
---

# Deploy Portunus Server

Portunus server with Web UI, SQLite state, HTTP and TCP proxy.

**[Deploy Portunus Server on Railway](https://railway.com/template/portunus-server)**

- **Creator:** 勤劳的小蜜蜂's Projects
- **Category:** Other
- **Total deploys:** 2

## Template content

### zingerlittlebee/portunus-server:latest

- **Image:** ghcr.io/zingerlittlebee/portunus-server:latest
- **Health check:** /
- **Public domain:** Yes

## Documentation

# Deploy and Host Portunus Server on Railway

Portunus is a Rust control-plane server for managing port-based TCP and UDP forwarding. This template deploys the server directly from its prebuilt multi-arch image on GHCR — nothing is built on Railway. It ships the embedded Web UI, operator HTTP API, persistent SQLite state, and a TCP proxy endpoint for client gRPC connections.

## About Hosting Portunus Server

The template pulls `ghcr.io/zingerlittlebee/portunus-server:latest` (a distroless multi-arch image) and runs it as a single service. Railway exposes the Web UI / operator API over HTTP on port 7080 and the control-plane gRPC listener over a TCP proxy on port 7443. A mounted volume at `/var/lib/portunus` stores the SQLite database, self-signed TLS material, and server state.

The advertised gRPC endpoint is wired automatically: `PORTUNUS_ADVERTISED_ENDPOINT` is set to `${{RAILWAY_TCP_PROXY_DOMAIN}}:${{RAILWAY_TCP_PROXY_PORT}}`, so Railway resolves the public TCP proxy address for you — no manual step. The server self-signs its TLS certificate against that host and regenerates it if the host changes.

Image Auto Updates is enabled against the `:latest` tag, so the service redeploys automatically when a new image is published (the volume is backed up first; expect a short downtime).

## First login

After the first deploy, open the service Deploy Logs and copy the line `Portunus onboarding setup token: `. Visit the HTTP domain — the Web UI routes the empty store to an onboarding page where you paste the token and create the first superadmin. From the Clients page (or the `provision-client` CLI) generate a client bundle; it already embeds the TCP proxy endpoint and pinned cert fingerprint, so `portunus-client` dials the public gRPC endpoint directly.

## Common Use Cases

- Self-host a lightweight TCP/UDP forwarding control plane.
- Manage forwarding clients and rules from a Web UI.
- Keep Portunus state persistent across Railway deploys.

## Dependencies for Portunus Server Hosting

- The prebuilt GHCR image `ghcr.io/zingerlittlebee/portunus-server:latest`.
- A Railway volume mounted at `/var/lib/portunus`.
- Railway HTTP networking on port 7080.
- Railway TCP Proxy on application port 7443.

### Deployment Dependencies

- Image: https://github.com/ZingerLittleBee/Portunus/pkgs/container/portunus-server
- Source: https://github.com/ZingerLittleBee/Portunus
- Railway deployment docs: https://docs.railway.com

## Why Deploy Portunus Server on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Portunus Server on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/portunus-server
