Deploy Debian 12 Web Terminal

Debian 12 shell in your browser and over SSH, with tmux

Deploy Debian 12 Web Terminal

Deploy and Host self hosted Debian 12 Web Terminal (Browser Shell & SSH Server) on Railway

Debian 12 Web Terminal gives you a bookworm shell in your browser or over real OpenSSH, with both sharing one tmux session.

About Hosting Debian 12 Web Terminal open-source software on Railway (self hosted Debian 12 Web Terminal template)

This template runs a Debian 12 bookworm box with ttyd 1.7.7 for the browser and OpenSSH on port 2222 through a Railway TCP proxy.

Railway handles the public HTTPS domain, the SSH TCP proxy, the volume, and restarts.

Why Deploy Debian 12 Web Terminal, the Google Cloud Shell / Debian VPS alternative on Railway (Railway Free Trial)

Google Cloud Shell is free and handy, but it runs on a short-lived VM tied to your Google account, while this box stays up on your own Railway project with real SSH.

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 Debian 12 Web Terminal 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.

Railway vs Other Hosting Providers and VPS for Debian 12 Web Terminal self hosting

ProviderWhat You Get with RailwayWhat You Get with the Other Provider
DigitalOceanZero-input deploy, a generated TERMINAL_PASSWORD, and a /home volume that keeps SSH host keys across redeploys.A Droplet you own, with root, systemd, and Docker, but you handle sshd hardening and updates.
AWSA browser shell and SSH sharing one tmux session, with no VPC or security group setup.Fine-grained networking, IAM, and real VM features, at the cost of more configuration.
HetznerA working Debian 12 shell with no server provisioning or firewall rules to write.Low-cost servers with generous bandwidth, best if you are happy to manage the OS yourself.

Common Use Cases for hosted Debian 12 Web Terminal

  • SSH jump box into Railway private networking: Run dig and curl against *.railway.internal hosts from the shell, and use ssh -L to forward a local port to a private database with no public address.
  • Testing scripts against Debian stable: bookworm is Debian 12, so you test against the same libc, OpenSSL, and package versions your stable hosts run.
  • Long rsync or batch jobs in tmux: Start a big copy inside the shared main tmux session, detach, and reattach later from the browser or ssh with the job still running.
  • A stable admin shell from any browser: On a locked-down machine or a phone, you still get a real Debian bash prompt with sudo, and nothing needs installing on the client.
  • A persistent home for dotfiles and CLI tools: Everything under /home survives redeploys, including tools installed to ~/.local. Apt packages do not survive, so keep long-term tools out of /usr.

Dependencies for Debian 12 Web Terminal Docker hosted on Railway

This template runs as one Railway service built from ghcr.io/onepush-dev/debian-web-terminal:12-ttyd1.7.7, assembled by GitHub Actions from debian:bookworm pinned by digest. ttyd listens on port 7681 behind the public domain with HTTP basic auth, and sshd listens on port 2222 through a Railway TCP proxy.

Deployment Dependencies for Managed Debian 12 Web Terminal Service (ttyd + OpenSSH + tmux)

You need nothing from the deploy form.

Implementation Details for Debian 12 Web Terminal (Debian 12 bookworm, ttyd 1.7.7, OpenSSH, tmux 3.3a)

The ttyd binary is the 1.7.7 static x86_64 build, verified by SHA-256 at build time, and tini runs as PID 1.

How does Debian 12 Web Terminal compare against other cloud shell and remote terminal options

Debian 12 Web Terminal vs Google Cloud Shell (Google Cloud Shell Alternative)

  • Persistence: Cloud Shell sessions time out when idle and the VM is recycled. Here /home sits on a Railway volume, so dotfiles and SSH host keys survive redeploys.
  • Access Path: Cloud Shell is browser-first and tied to the GCP console. Here the browser terminal and OpenSSH share one tmux session, so ssh -p PORT debian@HOST works from your laptop.
  • Where Google Wins: Cloud Shell arrives with gcloud preinstalled and authenticated to your project, which saves real setup for Google Cloud work.

Debian 12 Web Terminal vs browser-only Debian terminal templates (Browser Terminal Template Alternative)

  • SSH Access: Browser-only templates give you a tab and nothing else. This one runs sshd behind a TCP proxy, so scp, rsync and ssh -L work from your normal terminal.
  • Shared Session: Browser and SSH logins attach to the same tmux session named main, so a job started over SSH is still there when you reopen the page.
  • Where Browser-Only Wins: For a quick shell in a tab with no keys or second port, a browser-only template is simpler.

Debian 12 Web Terminal vs a Debian Desktop Template (Debian Desktop Alternative)

  • Weight: A desktop template runs a full X or VNC session, costing more RAM and patching. This is a shell only, with ttyd and sshd and no GUI.
  • Scripting Target: Both can run Debian stable, but here you get a lean bookworm base with sudo, git, rsync, dnsutils and tmux.
  • Where the Desktop Wins: If you need a graphical browser to test against, a desktop template is the only sensible choice.

Debian 12 Web Terminal vs a Debian VPS (Debian VPS Alternative)

  • Control: A VPS is a real VM with systemd, Docker and inbound UDP. This is a container, so none of those are available.
  • Setup Effort: On a VPS you handle hardening, keys and updates yourself. Here the template creates the debian user, a generated password and host keys on first boot, with zero deploy inputs.
  • Where the VPS Wins: Anything needing a real init system or kernel features belongs on a VPS, and heavily customized machines fit better there since apt installs vanish on redeploy here.

How to use Debian 12 Web Terminal (the browser shell and SSH box)?

  1. Deploy the template and wait for the Debian service to show as running.
  2. Open the Variables tab and copy TERMINAL_PASSWORD. It is a 24-character secret generated for this deploy, and it works for both the browser and SSH.
  3. Open the public URL, sign in as debian, and you land in the shared tmux session named main.
  4. For SSH, go to Settings, then Networking, and note the TCP proxy host and port. Then connect:
ssh -p PORT debian@HOST
  1. Once you have a key, set SSH_AUTHORIZED_KEYS to your public key (separate multiple keys with semicolons), then set SSH_PASSWORD_AUTH=false to turn off password logins over SSH.
  2. To reach a private service on the Railway network, forward a local port through the box:
ssh -L 5432:your-db.railway.internal:5432 -p PORT debian@HOST

How to self host Debian 12 Web Terminal on other VPS Services (Debian 12 Web Terminal self hosting guide)

Your own VPS works fine since the image is a plain Dockerfile on Debian bookworm.

Clone the Repository

Pin the source to commit 3c32c09 so you know what you are running.

git clone https://github.com/onepush-dev/debian-web-terminal.git
cd debian-web-terminal
git checkout 3c32c09

Install Dependencies

Docker is the only host requirement.

sudo apt update
sudo apt install -y docker.io

Configure Environment Variables

Set a strong password and the user name. Keep port 7681 behind TLS if you expose it publicly.

export TERMINAL_PASSWORD='choose-a-long-password'
export TERMINAL_USER=debian

Start the Debian 12 Web Terminal Application

Build the image and run it with a named volume on /home so SSH host keys and your files survive restarts.

docker build -t debian-web-terminal .
docker run -d --restart always -p 7681:7681 -p 2222:2222 \
  -e TERMINAL_PASSWORD -e TERMINAL_USER \
  -v terminal-home:/home debian-web-terminal

On Railway, the TLS certificate and SSH TCP proxy are handled for you.

Official Pricing of Debian 12 Web Terminal (Debian 12 Web Terminal pricing)

Debian 12 Web Terminal is free and open source under the MIT license, so there is no license fee to pay.

Debian 12 Web Terminal cloud vs self hosted comparison (Pricing, features, costs, and more)

Running this template on Railway or on a VPS you manage gives you the same Debian 12 bookworm box with ttyd and OpenSSH sharing one tmux session.

Monthly cost of self hosting Debian 12 Web Terminal on Railway

Railway bills on resource usage, so cost follows CPU, memory, and volume storage plus how often the service runs.

System Requirements for Hosting Debian 12 Web Terminal on a VPS

You need a Linux host with Docker, an x86_64 CPU since the bundled ttyd binary targets that architecture, and a persistent disk mounted at /home so SSH host keys and files survive restarts.

Frequently Asked Questions (FAQs)

Why Debian 12 instead of Ubuntu?

Debian 12 (bookworm) is Debian stable, with long security support and conservative package versions that suit scripts expecting a slow-moving distro.

Does apt survive redeploys?

No. Only /home persists, so install tools into ~/.local or fork the Dockerfile.

Can I use key-only SSH?

Yes. Add SSH_AUTHORIZED_KEYS yourself, then set SSH_PASSWORD_AUTH=false and redeploy.

Why does SSH go through a TCP proxy?

Railway public HTTP domains only carry web traffic, so sshd on port 2222 is exposed through a Railway TCP proxy with a random host and port.

How do I reach a private service through this box?

Use local port forwarding, for example ssh -L 5432:the-private-host:5432 debian@the-proxy-host -p PORT, and then connect to localhost.

Is this a full VM with systemd and Docker?

No. It's one container with tini as PID 1, so there's no systemd, no Docker-in-Docker and no inbound UDP.


Template Content

More templates in this category

View Template
NEW
Openfront Gym
Opensource Mindbody alternative based on Next.js and Keystone.js

Openship
0
View Template
open-excalidraw
Self-hostable collaborative drawing built on Excalidraw

Prateek Mohanty
5
View Template
NEW
Next.js + Prisma + PostgreSQL Starter
Deploy a Next.js app with Prisma ORM and PostgreSQL in one click.

blueorange
0