Skip to content
Projects

Eugeny/tabby-web has 1,532 GitHub stars and 187 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 04:23 UTC. Last push 2026-01-01.

How these counts are measured

Tabby Web - an SSH/Telnet/Serial client in your browser.

Measured star growth

in 24h
0
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

Tabby Web

Note on project status

[!IMPORTANT]
At this time I don't have the time to work on tabby-web and won't be able to provide help or support for it. I'm still happy to merge any fixes/improvement PRs. :v:

This is the Tabby terminal, served as a web app. It also provides the config sync service for the Tabby app.

How it works

Tabby Web serves the Tabby Terminal as a web application while managing multiple config files, authentication, and providing TCP connections via a separate gateway service.

Documentation

Requirements

Software Requirements

  • Python 3.10+ (3.12 recommended)
  • Node.js 18+ (for frontend build)
  • A database server supported by Django (MariaDB, Postgres, SQLite, etc.)
  • Storage for distribution files - local, S3, GCS or others supported by fsspec
  • Docker and Docker Compose (for containerized deployment)

System Requirements

Minimum (Build & Run)

Resource Requirement
CPU 2 cores
RAM 2GB (4GB recommended for building)
Disk 5GB

Note: Building the Docker image requires significant memory for the frontend compilation step. If you're running on a memory-constrained system (like Oracle Cloud Free Tier), consider using a pre-built image or building on a machine with more RAM.

Runtime Only (Pre-built Image)

Resource Requirement
CPU 1 core
RAM 512MB
Disk 1GB + app distributions

Recommended (Production)

Resource Requirement
CPU 2+ cores
RAM 2GB
Disk 10GB

Docker Build Requirements

Building the Docker image requires significant resources due to the frontend compilation:

Resource Minimum Recommended
RAM 2 GB 4 GB
CPU 2 cores 4 cores
Disk 5 GB 10 GB

Note: The frontend build (webpack/Angular) is memory-intensive. If building on constrained systems (like Oracle Cloud Always Free tier with 1GB RAM), consider:

  • Using pre-built images from a CI/CD pipeline
  • Building on a larger machine and pushing to a registry
  • Adding swap space (not recommended for production)

Quickstart (using docker-compose)

You'll need:

  • OAuth credentials from GitHub, GitLab, Google or Microsoft for authentication.
  • For SSH and Telnet: a tabby-connection-gateway to forward traffic.

Option 1: Pre-built Image (Recommended)

Use the pre-built image from GitHub Container Registry - no build required:

docker-compose -f docker-compose.prebuilt.yml up -d

The image is available at ghcr.io/eugeny/tabby-web:latest.

Option 2: Build from Source

If you need to customize the build:

export DOCKER_BUILDKIT=1
docker-compose up -d

Both options will start Tabby Web on port 9090 with MariaDB as a storage backend.

For SSH and Telnet, once logged in, enter your connection gateway address and auth token in the settings.

Environment variables

  • DATABASE_URL (required).
  • APP_DIST_STORAGE: a file://, s3://, or gcs:// URL to store app distros in.

Authentication Providers

Only providers with credentials configured will appear as login options. Set the following environment variables for each provider you want to enable:

Provider Environment Variables
GitHub SOCIAL_AUTH_GITHUB_KEY, SOCIAL_AUTH_GITHUB_SECRET
GitLab SOCIAL_AUTH_GITLAB_KEY, SOCIAL_AUTH_GITLAB_SECRET
Google SOCIAL_AUTH_GOOGLE_OAUTH2_KEY, SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
Microsoft (multi-tenant) SOCIAL_AUTH_MICROSOFT_GRAPH_KEY, SOCIAL_AUTH_MICROSOFT_GRAPH_SECRET
Azure AD (single-tenant) SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY, SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET, SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID
Auth0 SOCIAL_AUTH_AUTH0_DOMAIN, SOCIAL_AUTH_AUTH0_KEY, SOCIAL_AUTH_AUTH0_SECRET
Generic OIDC SOCIAL_AUTH_OIDC_OIDC_ENDPOINT, SOCIAL_AUTH_OIDC_KEY, SOCIAL_AUTH_OIDC_SECRET

For Auth0, set the callback URL to: https://your-domain/api/1/auth/social/complete/auth0/

Generic OIDC Provider

The generic OIDC provider works with any OpenID Connect compliant identity provider, including:

  • Authentik - Self-hosted identity provider
  • Authelia - Self-hosted authentication server
  • Keycloak - Open source identity management
  • Okta - Enterprise identity platform
  • And any other OIDC-compliant provider

Configuration:

  • SOCIAL_AUTH_OIDC_OIDC_ENDPOINT: The OIDC discovery endpoint (e.g., https://authentik.example.com/application/o/<app-slug>/)
  • SOCIAL_AUTH_OIDC_KEY: Client ID from your identity provider
  • SOCIAL_AUTH_OIDC_SECRET: Client secret from your identity provider
  • SOCIAL_AUTH_OIDC_NAME (optional): Custom button text (default: "SSO")

Set the callback URL to: https://your-domain/api/1/auth/social/complete/oidc/

Note on MFA: Multi-factor authentication is handled by your identity provider. Enable MFA in Authentik, Authelia, or your chosen provider to require 2FA for Tabby Web logins.

Azure AD Single-Tenant

For organizations that want to restrict login to a specific Azure AD/Entra ID tenant (instead of allowing any Microsoft account), use the Azure AD single-tenant provider:

  • SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY: Application (client) ID from Azure portal
  • SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET: Client secret
  • SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID: Directory (tenant) ID

Set the callback URL to: https://your-domain/api/1/auth/social/complete/azuread-tenant-oauth2/

When registering your app in Azure portal, select "Accounts in this organizational directory only" for supported account types.

Adding Tabby app versions

  • docker-compose run tabby /manage.sh add_version 1.0.163

You can find the available version numbers here.

Development setup

Put your environment vars (DATABASE_URL, etc.) in the .env file in the root of the repo.

For the frontend:

cd frontend
yarn
yarn run build # or yarn run watch

For the backend:

cd backend
poetry install
./manage.py migrate # set up the database
./manage.py add_version 1.0.156-nightly.2 # install an app distribution
PORT=9000 poetry run gunicorn # optionally with --reload

Security

  • When using Tabby Web for SSH/Telnet connectivity, your traffic will pass through a hosted gateway service. It's encrypted in transit (HTTPS) and the gateway servers authenticate themselves with a certificate before connections are made. However there's a non-zero risk of a MITM if a gateway service is compromised and the attacker gains access to the service's private key.
  • You can alleviate this risk by hosting your own gateway service, or your own copy of Tabby Web altogether.

Explore related projects