September 9, 2026

Deploy a PHP or Static Site Without a Git Repo

New Static Site and PHP Site templates put HTML on Nginx or PHP 8.3 on Apache with an editable document root — no repository, no build step, and a redeploy that keeps your files.

ServerCompass Team • 5 min read
Deploy a PHP or Static Site Without a Git Repo

Some sites are three files. A landing page for a client. A PHP contact form. A holding page that has to go up this afternoon and be edited again next week when someone sends you different copy.

The modern way to put those on a VPS is genuinely absurd. Create a Git repository for four hundred lines of HTML. Push it somewhere. Wire up a deploy key. Write a Dockerfile, or trust a buildpack to guess what you meant. Then, when the client emails a new phone number, do the whole loop again — edit, commit, push, wait for a build — to change one line of text.

The old way was better for this one job: put the files on the server, point a web server at the folder, and edit them in place. That is what static hosting was for two decades before deployment got opinions.

What changed

The Stack Wizard now includes Static Site and PHP Site templates that need no Git repository at all. Static Site serves HTML, CSS and JavaScript from Nginx. PHP Site runs PHP 8.3 on Apache. Both give you an editable document root, and both keep your edits when you redeploy.

The Apps list showing a freshly deployed php-site running alongside postgresql, both created from templates, with the Activity panel confirming the deploy completed in 1m 14s

How it works in practice

Deploy takes about a minute and leaves a working page

Pick PHP Site or Static Site from the Stack Wizard, name the app, choose a port. Server Compass writes a compose file — php:8.3-apache or nginx:alpine — mounts a public directory into the container's document root, and brings it up.

What you get is not an empty 403. It is a starter page that confirms the stack is actually running, including the live PHP version and the document root it resolved. If something is wrong with the deploy, you find out here rather than after you have uploaded a site on top of it.

The in-app preview of a deployed PHP site reporting PHP 8.3.33 and a public/ document root, with post-deployment steps explaining how to replace the starter page

Editing the site is one button from the app overview

The app overview carries a Site content card — Edit or upload files in the deployed public directory — with an Edit site content button next to it.

The php-site app overview with a Site content card and its Edit site content button, which opens the deployed public directory in the file manager

That button drops you straight into the file manager at the document root, already scoped to the right folder. No remembering that this particular app lives under apps/php-site/public, no cd-ing around in a terminal to find it.

The files are just files

From there it is the file manager you already use for everything else: open index.php and edit it in place, upload individual files, upload a whole folder, or drag a build output onto the drop target.

The Folders file manager opened at the php-site public directory showing index.html and index.php, with a drag-and-drop upload target below the file list

This is the part that makes the template worth using rather than clever. A client sends new copy; you open the file, change the line, save. The change is live. There is no build to wait for, because there is nothing to build.

A redeploy will not eat your work

The obvious trap with a starter page is that redeploying overwrites it — and by then "it" is the client's site.

Server Compass writes the starter page only when the document root is empty. Once you have put your own files there, a redeploy brings the container back up around them and leaves the contents alone. You can restart, change the port, or move the app between groups without thinking about whether your site survives it.

Before vs after

StepGit-based deployStatic Site / PHP Site
Start a three-file siteCreate a repo, push it, add a deploy keyPick a template, name it, deploy
Get PHP runningWrite a Dockerfile or configure a buildpackIncluded — PHP 8.3 on Apache
Change one line of copyEdit, commit, push, wait for the buildOpen the file, edit, save
Upload a folder of assetsCommit them and pushDrag them onto the file manager
RedeployRebuilds from the repoContainer restarts, your files stay

Who benefits most

Anyone shipping client sites. A brochure site does not need a pipeline; it needs to be live and easy to amend when the client asks for a different headline the day after launch.

People with a legacy PHP page to keep alive. A contact form or a small admin script does not deserve a containerisation project. Drop it in public, point a domain at it, move on.

Anyone using a static site generator locally. Build on your own machine, drag dist onto the drop target, done. You keep your local toolchain and skip CI entirely.

Try it

Open the Stack Wizard on any server with Docker installed and look for Static Site or PHP Site under templates. Deploy one, open the starter page to confirm it is running, then hit Edit site content and replace it with yours.

Attach a domain when you want HTTPS, and the whole thing is a site you can edit as quickly as you can open a file.