self-hosted 4 min read

Jig — Self-Hosted Deployment Tool with Docker and Traefik

Jig brings Vercel-level DX to your own VPS — Docker, Traefik, and automatic HTTPS in one command. Inspired by Zeit and Exoframe.

By
Share: X in
Jig self-hosted deployment tool thumbnail

TL;DR

TL;DR: Jig is a self-hosted deployment tool that brings Vercel-level DX to your own VPS using Docker, Traefik, and automatic HTTPS.

Source and Accuracy Notes

⚠️ This section is MANDATORY. All links must be verified from actual source, not guessed.

What Is Jig?

Jig is a self-hosted deployment tool for automating routine work with Docker, Docker Compose, and Traefik on your own virtual servers. It is heavily inspired by Vercel and Exoframe.js, aiming to bring Vercel’s developer experience (DX) to self-hosted infrastructure.

The tool targets developers who want the convenience of a modern deployment platform without surrendering control to a third-party cloud. The author describes it as:

“a device that holds a piece of work and guides the tool operating on it.”

Jig is currently experimental — the client and server versions are expected to stay in sync.

Setup Workflow

Step 1: Prepare Your Server

Docker is required on the server. Install Docker if it is not already available.

Open ports 80 (HTTP) and 443 (HTTPS) on your server. Traefik handles HTTPS redirection and Let’s Encrypt challenges automatically.

Step 2: Run the Bootstrap Script

Run the official bootstrap script on your server:

curl -fsSL https://deploywithjig.askh.at/init.sh | bash

The script installs Traefik and Jig, prompts for initial settings, and prints a login command for the client.

Step 3: Choose Your Control Plane Mode

The bootstrap script offers two control-plane modes:

  • public: exposes the Jig API through Traefik on a public domain
  • tailscale: keeps the Jig API private on your tailnet using tailscale serve

If the tailscale CLI is already installed, the script defaults to tailscale mode.

Step 4: Install the Client and Authenticate

Download the Jig client and log in with the command printed by the bootstrap script.

Step 5: Deploy Your First App

After authentication, deploy a containerised app with a single command. Traefik automatically handles routing and issues Let’s Encrypt certificates for your domain.

Key Features

  • Traefik integration: automatic HTTPS, routing, and certificate management out of the box
  • Docker and Docker Compose: deploy single containers or full stacks
  • Swarm mode: cluster support for multi-node deployments with a shared internal registry
  • Tailscale mode: private control plane reachable only over your tailnet
  • Minimal DX: one-line deployments with streaming output and minimal disk writes
  • Inspired by Vercel and Exoframe: aims for the same developer experience standard

Practical Evaluation Checklist

  • Docker installed on target server: required
  • Ports 80 and 443 open: required
  • Domain pointed to server: required for public mode
  • Tailscale available: optional, enables private mode
  • Swarm join token: only for multi-node clusters
  • Client/server version sync: must stay in sync (experimental)

Security Notes

  • Only ports 80/tcp and 443/tcp should be exposed publicly for application traffic
  • Port 5000/tcp (internal Docker registry) must be blocked from external networks in Swarm mode — if reachable publicly, the registry is a serious security risk
  • In tailscale mode, the Jig API is bound to loopback (127.0.0.1:5050) and exposed only through Tailscale Serve, eliminating the need for a separate firewall exception on port 5050
  • The bootstrap script can apply the insecure registry config automatically on Debian/Ubuntu systems if jq is present

FAQ

Q: What is the difference between Jig and Vercel? A: Vercel is a managed cloud platform. Jig brings the same deployment workflow to your own VPS — you control the server, Docker images, and certificates.

Q: Does Jig support multiple servers? A: Yes, via Docker Swarm mode. Additional nodes join the Swarm as workers and run Jig workloads.

Q: Is Jig production-ready? A: Jig is marked experimental. Client and server versions are expected to stay in sync, so coordinate updates before deploying.

Q: How does certificate management work? A: Traefik automatically requests and renews Let’s Encrypt certificates via HTTP challenges when a domain is pointed to your server.

Conclusion

Jig is a practical tool for developers who want Vercel’s one-command deployment experience on infrastructure they own. It handles the repetitive parts — Traefik config, HTTPS certificates, Docker registry — and leaves you with a clean CLI for pushing code. The experimental status means you should test it in a non-critical environment first, but the core workflow is solid for self-hosting Docker workloads on a VPS.

Source and Accuracy Notes