Deploying Warpgate
Introduction
Warpgate is a smart SSH, HTTPS, and MySQL bastion host designed for modern infrastructure security. It acts as a single point of entry to your servers, providing authentication, authorization, session recording, and audit logging for all remote access connections.
Unlike traditional bastion hosts, Warpgate is protocol-aware, meaning it understands SSH, HTTP/HTTPS, and MySQL protocols natively. This enables features like live session viewing, command logging, and granular access control without requiring agents on target systems.
Key features of Warpgate include:
- Multi-Protocol Support: Handle SSH, HTTPS, and MySQL connections through a single gateway
- Session Recording: Record all sessions for security auditing and compliance
- Live Session Viewing: Watch active sessions in real-time from the admin panel
- SSO Integration: Authenticate users via OpenID Connect providers
- Role-Based Access Control: Define granular permissions for users and groups
- No Agent Required: Connect to any standard SSH, HTTP, or MySQL server
- Web Admin Interface: Manage users, targets, and view logs through a web UI
- Two-Factor Authentication: Built-in TOTP support for additional security
- Audit Logging: Comprehensive logs for all authentication and access events
This guide walks you through deploying Warpgate on Klutch.sh using Docker for secure remote access management.
Prerequisites
Before deploying Warpgate on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Warpgate configuration
- Target servers you want to access through Warpgate
- Basic understanding of SSH and bastion host concepts
Repository Structure
Create a GitHub repository with the following structure:
warpgate-deploy/├── Dockerfile└── .dockerignoreDockerfile
Create a Dockerfile in your repository:
FROM ghcr.io/warp-tech/warpgate:latest
# Web admin interfaceEXPOSE 8888
# SSH protocolEXPOSE 2222
# MySQL protocolEXPOSE 33306
# The base image handles the entrypointEnvironment Variables
Warpgate configuration is primarily done through the web interface after initial setup. The first run will generate a configuration file.
| Variable | Required | Default | Description |
|---|---|---|---|
WARPGATE_ADMIN_PASSWORD | No | Generated | Initial admin password (shown in logs if not set) |
Deployment on Klutch.sh
- Push your Dockerfile to your GitHub repository.
- Log in to Klutch.sh and create a new project.
- Create a new app within your project and connect your GitHub repository containing the Dockerfile.
- Configure the deployment settings: - Select **HTTP** as the traffic type - Set the internal port to **8888** (for the web admin interface)
- Attach persistent volumes: - Mount path: `/data` - Recommended size: 10 GB - Purpose: Configuration, session recordings, and logs
- Click **Deploy** and wait for the build to complete.
- Access the web admin interface at the provided URL. Check the deployment logs for the initial admin password if not set via environment variable.
- Configure your target servers and user access through the web interface.
Post-Deployment Configuration
After deployment:
- Log in with the admin credentials from the deployment logs
- Add target servers (SSH hosts, HTTP endpoints, MySQL servers)
- Create user accounts and assign permissions
- Configure SSO integration if using an identity provider
- Set up session recording policies
Important Notes
The SSH and MySQL protocol ports (2222 and 33306) require TCP traffic routing. For full bastion host functionality including SSH access, you may need to configure additional port mappings depending on your Klutch.sh plan.
Troubleshooting
Cannot Access Admin Interface
Verify the deployment is running and check logs for startup errors. Ensure port 8888 is correctly configured for HTTP traffic.
Session Recordings Missing
Ensure the /data volume is properly mounted and has sufficient space.