Deploy App
Deploy App — put a website online
Put a website on your own server from a Git repository or a .zip, with Docker, nginx and free HTTPS, then redeploy or roll back in one click.
Deploy App puts a website on one of your servers and keeps it running. You give
it a domain, the code (a Git repository or a .zip) and a server. We build it
with Docker, start it, and point nginx at it. Every later deploy is one click,
or one message to the chatbot.
It's for anything that runs in a browser: a Next.js or React site, a Node.js
API, a PHP or Laravel app, a WordPress blog, a plain HTML site, or anything
else with its own Dockerfile. It also runs custom containers:
any public Docker image, like Redis or ClickHouse, with your own ports and
volumes.
Before you start
- A server added on the Servers page, with a
login that is root or can use
sudowithout a password. Docker, nginx and git are installed for you on the first deploy if they're missing. - A domain whose DNS you can change. You'll add an A record pointing at the server's public IP. You can deploy before the DNS is right, but visitors only reach the site once it is.
- The code: a Git repository (GitHub, GitLab, Bitbucket or any HTTPS Git
host), or the project folder zipped up (leave
node_modulesout, up to 100 MB).
Deploy your first app
- Open Deploy App in the sidebar, press New app and choose Application / Website (for a custom container, see Custom containers).
- Domain — type
example.com. Addwww.example.comon a second line if you want both. The first one is the app's main domain and can't be changed later (it names the app's folder and settings on the server). - Server — pick one. We check it straight away: Docker, nginx, free memory and disk.
- Project type — Next.js, Node.js server, React / Vite / Vue, static HTML, PHP, Laravel, WordPress, or My own Dockerfile. The type decides how we build it; you don't need to write a Dockerfile. See PHP, Laravel and WordPress.
- Source — paste the repository's HTTPS URL and branch, or upload a
.zip. For a private repository pick a saved Git credential; Test access checks it from the server before you continue. - Environment — paste your
.envif the app needs one. - Press Create. The deploy starts and you watch its log live.
When it finishes, the Deployments tab shows ✓ and the app answers on your domain over HTTP. Then add HTTPS: Domains and HTTPS.
What a deploy does
- Fetches the code. Git: the latest commit of the branch. Anything changed
on the server by hand is put back to what's in the repository, and the log
lists what was reverted. Upload: the
.zipis unpacked fresh. - Builds a Docker image. For the built-in types we write the Dockerfile (you can read it on each deploy); for My own Dockerfile we build yours.
- Starts the new version beside the live one and waits until it answers. Only then does it replace the live version. If the new version fails to build, crashes, or doesn't answer, your site keeps running the previous version and the deploy is marked failed with the reason.
- Updates nginx for all of the app's domains.
Day to day
| You want to | Do this |
|---|---|
| Ship new code | Push to the branch, then Deploy (or ask the chatbot "deploy example.com") |
| Undo a bad release | Deployments → Roll back to this on an earlier version. Takes seconds: the last 3 builds are kept on the server |
| Change an environment variable | Environment tab → paste → then Deploy (Next.js, React/Vite read variables while building) or Restart with current settings (everything else) |
| See why it's broken | Logs tab (what the app prints), or the failed deploy's log. Or ask the chatbot "why is example.com down?" |
| Get an email when it goes down | Add an uptime monitor — the app shows a reminder until you do |
Where things live on the server
| What | Where |
|---|---|
| Your code | /var/www/<domain>/app |
| The container | dcp-app-<domain with dashes>, reachable only on 127.0.0.1 |
| The nginx site | /etc/nginx/sites-available/<domain>.conf (or conf.d on RHEL / Amazon Linux) |
| The HTTPS certificate | /etc/letsencrypt/live/<domain>/ |
These are managed by the panel: edits made to them by hand are replaced on the next deploy. Change the app's settings instead.
Who can do what
| Owner, Admin | Operator | Viewer | |
|---|---|---|---|
| See apps, deploy logs, runtime logs | ✓ | ✓ | ✓ |
| Deploy, roll back, restart, stop, Apply SSL | ✓ | ✓ | — |
| Create, settings, environment, domains, Git credentials, delete | ✓ | — | — |
The Free plan includes one app.
