July 28, 2026

Deploy Any Public Git Repository Without Forking It

Paste a public HTTPS repository URL from GitHub, GitLab, or Bitbucket, pick a branch, and deploy — no account connection, no fork, and the app you get has full redeploy, rollback, and backup support.

ServerCompass Team • 5 min read
Deploy Any Public Git Repository Without Forking It

You find a self-hosted tool you want to run — an analytics dashboard, a status page, someone's tidy little URL shortener. The repo is public. The Dockerfile is right there. You want it on your VPS in five minutes.

Instead you fork it, so a tool can see it through your GitHub account. Now you own a copy you never wanted to maintain, sitting in your repo list next to your real projects. Or you skip the fork, SSH in, git clone, write a compose file by hand, and accept that this app now lives outside everything else — no deployment history, no rollback, no backups, no preview environment. It's a pet, and you'll remember how you set it up for about a week.

What changed

You can now paste a public HTTPS Git URL and deploy it, with no account connection and no fork. GitHub, GitLab, Bitbucket, and other compatible Git hosts all work, and the app you get is a normal Server Compass app — not a special case.

Create Your App wizard on the Public URL tab with a public HTTPS repository pasted in and a Check & prepare button beside it

How it works in practice

Paste the URL, then let it inspect the repo

In Create Your App, pick Git repository as the source. There are two tabs now: Public URL and Connected GitHub. Paste an HTTPS repository URL into Public URL and click Check & prepare.

Server Compass probes the remote, identifies the host, reads the available branches, and prepares the repository on your server. If the repo ships its own Dockerfile or compose file, those are used as-is. If it doesn't, a build is generated from the detected framework — the same buildpack path a connected-GitHub deploy uses. By the time you hit Next, you're looking at real content pulled from the actual branch, not a blank template.

Nothing about this requires an account, a token, or a fork. The repository is public; Server Compass reads it the way any git clone would.

Your upstream stays untouched

The wizard is explicit about this, in a panel labelled Read-only upstream: Server Compass clones the selected branch and keeps generated deployment files on your server. It never commits to a public repository.

That matters because Server Compass does generate files — a compose file, sometimes a Dockerfile — and on a connected private repo it can commit them back so your repo stays the source of truth. On a public repo you don't own, that would be nonsense. So those files live on your server instead. Edit the Dockerfile in the app's editor and the edit stays on your server, versioned in your deployment history, invisible to upstream.

Connected GitHub still does what it always did

Private repositories and GitHub Actions builds are unchanged — and Connected GitHub is now the first option in the wizard, because that's the right default when you're deploying your own code. Pick your account, pick the repo, pick the branch, and continue exactly as before.

The split is simple: Connected GitHub for code you own, where webhooks, Actions builds, and auto-deploy on push all apply. Public URL for someone else's code, where none of that is relevant and an account connection would just be friction.

Select GitHub Repository dialog with an account, repository, and branch dropdown open on main and production

It's a real app afterwards, not a one-off

This is the part that separates it from git clone on the server. A public-repo app gets the full lifecycle:

  • Redeploy from the newest commit on your chosen branch, whenever you want it
  • Zero-downtime redeploys, so the running version stays up while the new one builds
  • Rollback to any previous deployment, with the logs to prove what happened
  • Preview environments off a different branch
  • Backups and server transfers, same as any other app

Upstream ships a fix? Hit redeploy. It pulls the newest commit on the branch you picked and rebuilds. Upstream ships a regression? Roll back to the deployment that worked.

Deployment History panel showing successful Rollback and Redeploy entries with expandable per-deployment logs

Before vs After

Running someone else's public repoBeforeNow
Get the code where a tool can see itFork it, or connect an accountPaste the HTTPS URL
Pick a branchWhatever git clone gave youBranch list read from the remote
Get a compose fileWrite it yourselfRead from the repo, or generated
Update to a newer versionSSH in, git pull, rebuildRedeploy from the latest commit
Undo a bad updateReconstruct it from memoryRoll back to a known-good deployment
Backups and transfersNot covered — it's a petSame as every other app
Your GitHub accountOne more fork you don't maintainUntouched

Who benefits most

Self-hosters trying things out. Most of what you want to run is a public repo with a Dockerfile. Now the distance between finding it and running it is one paste — and if you don't like it, you delete an app instead of cleaning up a fork.

Teams on GitLab, Bitbucket, or self-hosted Git. Deploying no longer means the repo has to live on GitHub. If it's reachable over public HTTPS, it deploys.

Anyone assembling a stack from other people's tools. Uptime monitor here, analytics there, docs site somewhere else. Each one becomes a managed app with history and rollback, instead of three untracked clones you'll be afraid to touch in six months.

Try it

Open Create Your App, choose Git repository, switch to Public URL, and paste a repo you've been meaning to try. Click Check & prepare and watch it read the branches. The interesting part isn't the deploy — it's what you have afterwards: an app with a history, a rollback button, and a backup schedule, built from code you never had to copy into your own account.