Hosting a website on your VPS
What this is
The path from a fresh VPS to a live website: pick how you'll serve it, point the domain, and put HTTPS on it. This is the map with the key commands, each step has endless deeper tutorials (and an AI chatbot walks through any of them patiently).
Choose your route
- One-click Applications (least work). When you deploy or reinstall, you can pick an Application instead of a bare OS (how one-clicks work). Coolify in particular is a self-hosted platform that deploys sites and apps from a git repository and handles the web server and HTTPS for you, a lot of "how do I host X" ends right there.
- A classic web server (most control). Install nginx or Apache on a clean OS, the standard for a reason, with certbot for SSL (below). Or use Caddy, which is friendlier: it configures HTTPS automatically with no extra steps.
For a typical stack, e.g. WordPress, the recipe is web server + PHP + MariaDB, and every distro has a well-worn guide for exactly that. Update the OS first (apt update && apt upgrade), install the stack, and put your site files where the server expects them (conventionally under /var/www/, uploaded over SFTP).
Point the domain
Create the A record for your domain and give it a few minutes to propagate, see Pointing your domain. Do this before requesting SSL: Let's Encrypt validates your domain by reaching your server, so DNS has to resolve first.
Free SSL (HTTPS) with Let's Encrypt
There's no reason to pay for a standard certificate, and no reason to skip HTTPS. With nginx or Apache, certbot does the whole thing:
apt install certbot python3-certbot-nginx # or python3-certbot-apache
certbot --nginx -d example.com -d www.example.com
It obtains the certificate, rewires your config for HTTPS, and sets up automatic renewal (certificates last 90 days; the installed timer renews them, verify with certbot renew --dry-run). If a certificate error ever shows up later, expiry, name mismatch, Cloudflare mode trouble, the fixes are in Fixing SSL certificate errors.
- Using Caddy? Nothing to do, it provisions and renews certificates automatically for the domains in its config.
- Behind Cloudflare's proxy? Your visitors get HTTPS at the edge; still put a certificate on the VPS so the Cloudflare-to-origin leg is encrypted too (certbot as above works, or Cloudflare's origin certificates).
When the site won't load
Work down this list, it catches nearly every case:
- DNS: does
dig +short yourdomain.comprint your VPS IP? If not, DNS first. - Is the server listening? On the VPS:
ss -tulnp | grep -E ':80|:443'. No listener means the web server isn't running (systemctl status nginx) or your app is bound to127.0.0.1with no reverse proxy in front. - Your own firewall: if you set up ufw and forgot the web ports,
ufw allow 80andufw allow 443. (Our managed firewall never blocks web ports, so it's not the cause.) - HTTPS works, HTTP doesn't (or vice versa): one of the two server blocks/vhosts is missing or not redirecting, check the config certbot wrote.
- It worked until now and "nothing changed": check the disk, a full disk silently takes down databases and apps, and it's a ten-second
df -hto rule out. - Seeing a 502, 503, or 504 instead of nothing? That's your web server reporting that the app behind it didn't answer, a different diagnosis with its own guide.
After it's live
Two habits make the site durable: secure the VPS (the site's admin panel and database included) and back it up, a nightly database dump plus off-site copies, so a bad update or a compromise is an inconvenience rather than a disaster.
Still need help?
You can open a support ticket. So we can help on the first reply, it's worth mentioning:
- the VPS and the domain,
- what you're serving it with (nginx, Apache, Caddy, Coolify),
- what exactly fails (DNS, connection, certificate error), with the message.
Related questions
- "How do I host a website on my VPS?"
- "How do I get a free SSL certificate?"
- "How do I set up HTTPS with Let's Encrypt?"
- "Why isn't my website loading?"
- "Can I run WordPress on my VPS?"
- "Do your one-click apps include a website platform?"