Your own servers: a VPS, lab or on-prem machine
Besides AWS, Google Cloud, Azure and DigitalOcean, The Deployer can deploy to a machine you already have: a VPS or dedicated server from a hosting company (Hostinger, GoDaddy, OVH and others), a machine lent to you by a lab such as Lenovo or NVIDIA, or a server in your office or company network. Your app runs on it in Docker. The Deployer never creates, resizes or deletes the machine itself.
Use this when you already pay for a server, when a partner gives you one, or when the app has to run inside your own network.
What the server needs
- Ubuntu 22.04 or newer, or Debian 12 or newer, with systemd
- At least 1 GB of memory and 5 GB of free disk
- Outbound internet access
- Ports 80 and 443 free: no cPanel, Plesk or other web server on them
- Someone who can run one command on it with sudo
Shared web hosting plans (cPanel, hPanel, Plesk) can't run your app: they give no root access and can't run Docker. You need a VPS or a dedicated server.
Adding a server
Only the workspace owner can add a server.
- Open Connections in the sidebar. Under Your own servers, click Add a server.
- Where is the server? Pick Hostinger VPS, GoDaddy VPS or dedicated, Another hosting company, Lenovo, NVIDIA or partner lab or Company network or office. This only sets sensible defaults and the help you see next.
- About the server:
- Name: whatever helps you recognise it.
- How does The Deployer reach it? Choose It has a public address and enter its Public IP address or host name and SSH port. Or choose It's behind a VPN, firewall or NAT: the server then keeps one outbound connection to The Deployer, so nothing is opened on your network. If this option says it isn't available yet, use a server with a public address for now.
- Who else uses it? Only my apps lets The Deployer add its firewall rules, swap, monitoring and other add-ons. Shared with other people means only your app's own containers run, and nothing of anyone else's is changed: no upgrades, firewall, SSH or Docker settings.
- Under More (optional): Access ends on (for a lent machine; you're warned in its last week), What your host charges a month (USD) (shown only in your costs; nothing is billed through The Deployer, your host bills you directly), and Group, to keep servers together.
- Click Next: set it up.
Running the setup command
- Open a terminal on the server. The screen tells you how for the hosting you picked, for example the browser terminal in Hostinger's hPanel.
- Copy the command under Then run this once and run it. To see exactly what it does first, click Read the script before running it.
- The command works once, for a limited time. If it runs out, click New command.
What it does: checks the operating system, creates an account called deployer with The Deployer's key and no password, and lets it use sudo. That is root-level access for The Deployer on this server. It installs sudo /usr/local/sbin/deployer-uninstall, which removes all of this again, and reports what the server is (OS, CPU, memory, disk, GPUs, Docker). It installs no packages and changes no firewall, SSH or Docker setting. When sudo asks for your password, The Deployer never sees it.
The screen then shows Waiting for the server to run the command…, then The server reported in. Logging in to check it…, and finally connected, with a checklist: operating system, processor, memory, free disk, internet, ports 80 and 443, SSH, and Docker. Anything that fails is explained in the list.
You can close the window and finish later. The server's card has buttons to check it again and to show a setup command.
Deploying to it
When you create a project, choose your servers group under Where it runs. The Deployer picks a server in that group that is set up and free. To put a second project on a server that already runs one, see Servers.
On the first deployment, the Prepare the server step adds only what is missing and never upgrades what's there. If Docker is already installed, it is used as it is. On a server that's only yours with less than 8 GB of memory, it adds swap.
GPUs: if the server has an NVIDIA driver and Docker isn't installed yet, The Deployer installs the NVIDIA Container Toolkit before Docker, so your containers can use the GPUs. By default an app gets all of the server's GPUs. If the GPUs can't be set up, the app still deploys and runs without them.
A Hostinger account (optional)
Connecting your Hostinger account lets you pick a VPS from a list, start and stop it, and take snapshots, all from The Deployer.
- In hPanel, open your profile menu, then Account information, then API. Create a token and copy it.
- In The Deployer, next to your servers group, click Connect a Hostinger account, paste the token and click Check and connect. It is checked with Hostinger before it's kept, encrypted.
- When you add a Hostinger VPS, pick it from Your Hostinger VPS. For a server you added before, click Link to its Hostinger VPS on its card.
Snapshots: on the project's Dashboard, the This project's server card has a Snapshot button. Hostinger keeps one snapshot per VPS, the whole disk at one moment, and Take a snapshot now replaces it. Restore the snapshot asks you to type the server's name. Restoring puts the whole server back to that moment: everything written since (data, uploads, logs) is lost, and the app is offline until it finishes.
A server without a Hostinger account can be restarted from the Dashboard, but not stopped. With one, you can stop and start it through Hostinger. Hostinger keeps billing a stopped VPS for the rest of its paid term.
Removing a server
Click the bin icon on the server's card. Removing works the same as on the Servers page: see Servers. If The Deployer can't reach the server to remove its access, it shows you a command to run on it yourself.
Common problems
- "This setup command has expired or was already used." Click New command on the server and run the new one.
- Port 80 or 443 is already used. Another web server or a control panel holds them. Stop it, or use a different server.
- The server shows offline (behind a VPN or NAT). Its outbound connection to The Deployer is down; outbound access is often blocked by a firewall.
- "None of the servers in this connection is ready and free." Add a server and run its setup command, or free one by deleting the project that uses it, then choose the architecture again.