Exposing local ports on a subdomain over SSH
Go to file
Dreaded_X 6415d8b8c5
All checks were successful
Build and deploy / Build container and manifests (push) Successful in 2m27s
Fixed version string
2025-04-18 12:26:35 +02:00
.assets Added README 2025-04-17 13:58:52 +02:00
.cargo Ignore paste unmaintained for now 2025-04-15 16:18:25 +02:00
.gitea/workflows Fixed version string 2025-04-18 12:26:35 +02:00
helper Added some helper things for testing 2025-04-07 23:11:15 +02:00
manifests Switch to authelia-controller 2025-04-18 03:45:47 +02:00
src Fixed version string 2025-04-18 12:26:35 +02:00
.dockerignore Added dockerignore to improve caching 2025-04-18 12:01:20 +02:00
.gitignore Load env variables from .env file 2025-04-05 02:44:58 +02:00
.pre-commit-config.yaml Check for unused crates before commit 2025-04-15 16:23:27 +02:00
.rustfmt.toml Reformat imports properly 2025-04-16 03:00:07 +02:00
.sops.yaml Added build action and kubernetes manifests 2025-04-15 02:50:31 +02:00
.typos.toml Implemented initial user interface 2025-04-10 15:05:18 +02:00
Cargo.lock Changed name to siranga 2025-04-17 13:58:52 +02:00
Cargo.toml Added LICENSE 2025-04-18 11:44:41 +02:00
Dockerfile Fixed version string 2025-04-18 12:26:35 +02:00
LICENSE Added LICENSE 2025-04-18 11:44:41 +02:00
README.md Added README 2025-04-17 13:58:52 +02:00

Siranga

Siranga allows users to quickly create new subdomains that tunnel to local ports on their machine over SSH.

Screenshot of the Siranga user interface

Features

  • Works over SSH, no need to install any other tools to forwards ports
  • Using ForwardAuth tunnels can be
    • Private, only accessible by you
    • Protected, accessible by all logged in users
    • Public, accessible for everyone
  • SSH keys are pulled from LDAP, so no separate upload is required.
  • Provides a user interface for
    • Managing access
    • Renaming of tunnels
    • Network statistics

Siranga does NOT provide HTTPS support, it expects to run behind a reverse proxy.

Installation

Siranga is intended to be deployed using Kubernetes, example manifest files are provided in manifests. This deployment runs in a cluster with Authelia, LLDAP, and Traefik.

User guide

A tunnel can be opened using the following command:

ssh <username>@<host> [-p <ssh port>] -t -R <local port>:localhost:<local port>

This will open a new tunnel with a randomly generated name, you can specify a name for the tunnel by instead using -R <name>:<local port>:localhost:<local port>. Multiple tunnels can be opened by repeating the -R option. Once connected the tunnels can be managed using the interface.

By appending -- --help you can view the available command line options.

Tip

To make connecting slightly easier I recommend adding the following to ~/.ssh/config:

Host tunnel
	HostName <host>
    Port <ssh port>
	User <username>
	RequestTTY yes

You can now connect with ssh tunnel -R <local port>:localhost:<local port>.