# How do you host a website or blog on your own VPS?

> Host a website or blog on a Linux VPS: A and AAAA records, nginx, a free Let’s Encrypt certificate with certbot, rsync deploys and backups. 2026 guide.

- URL: https://vpswithcrypto.com/host-a-website-on-a-vps/
- Last updated: 2026-11-03
- Publisher: VPS With Crypto (https://vpswithcrypto.com)

From an empty Debian 13 or Ubuntu 24.04 VPS to a site on HTTPS: DNS records, an nginx server block, a free certificate that renews itself, deploys with rsync, PHP for WordPress, mail for contact forms, and backups.

**Quick answer — How do I host my own website on a VPS?**

Point an A record and an AAAA record at the VPS, install nginx, put the site in `/var/www`, then get a free Let's Encrypt certificate with `certbot --nginx`. On VPS With Crypto, a static site or a small blog fits on Byte (1 vCPU / 2 GB / 40 GB); WordPress with its database is more comfortable on Kilo. Commands checked on 3 November 2026 for Debian 13 and Ubuntu 24.04.

## Static site, blog engine or WordPress: what changes on the server?

**A static site is files that nginx serves; a dynamic one adds a runtime and a database to run, update and back up.**

- **Static** (Hugo, Eleventy, Astro and similar): you build on your computer and copy the output. A few MB of RAM, nothing to patch beyond nginx and the system.
- **WordPress**: PHP and MariaDB or MySQL. WordPress asks for PHP 8.3 or newer, MariaDB 10.11 or newer or MySQL 8.0 or newer, and HTTPS. Debian 13 ships PHP 8.4 and MariaDB 11.8; Ubuntu 24.04 ships PHP 8.3. Debian 12 ships PHP 8.2, below that recommendation.
- **A Node, Python or Go app**: it listens on a local port and nginx forwards requests to it.

The steps below start with the static case, then add PHP and the reverse proxy.

## Which DNS records do you need?

**An A record for the IPv4 address and an AAAA record for the IPv6 address, for the bare domain and for `www`.** Each VPS comes with a dedicated IPv4 address and a routed IPv6 /64. Every plan lists its outbound traffic per month in TB, and going over it never triggers an automatic charge. Both addresses are in your dashboard. Create the records at your DNS provider, then check them from your own computer before asking for a certificate: Let's Encrypt has to reach the server under that name.

*Check the records from your computer*

```bash
dig +short example.com A
dig +short example.com AAAA
dig +short www.example.com A
```

## How do you set up nginx for one site?

**One server block per site in `/etc/nginx/sites-available/`, a link in `sites-enabled/`, and `nginx -t` before every reload.** Debian and Ubuntu package nginx this way. Remove the default site so a request for the bare IP address does not land on a placeholder page. Give your deploy user ownership of the document root, so publishing never needs root. Open ports 80 and 443 in the firewall; port 80 stays useful for the certificate checks and the redirect to HTTPS.

*/etc/nginx/sites-available/example.com*

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
```

*Install, enable, open the firewall*

```bash
apt install nginx
mkdir -p /var/www/example.com && chown alice:alice /var/www/example.com

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

ufw allow 80,443/tcp
```

## How do you get HTTPS that renews itself?

**Install certbot with its nginx plugin from the distribution, ask for one certificate covering both names, and check that renewal works.** Certbot edits the server block to serve HTTPS and can add the redirect from HTTP, and Debian's and Ubuntu's packages install a systemd timer that renews certificates before they expire. `certbot renew --dry-run` proves the renewal path without touching the real certificate.

Caddy is the other common choice: it obtains and renews certificates on its own for every site name in its Caddyfile. Install it from Caddy's own apt repository, as its documentation shows.

*Certificate for both names, then a renewal test*

```bash
apt install certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
certbot renew --dry-run
systemctl list-timers | grep certbot
```

## How do you publish updates?

**Build on your computer and copy the output with rsync.** `--delete` removes files you deleted locally; run it once with `-n` to see what it would do. For WordPress, nginx hands `.php` requests to PHP-FPM; for an app, it forwards requests to the app's local port and passes on the original host name and scheme. Keep the app bound to `127.0.0.1`, so only nginx can reach it.

*Deploy a static build*

```bash
# from your computer
rsync -avz --delete -n public/ alice@203.0.113.10:/var/www/example.com/
rsync -avz --delete public/ alice@203.0.113.10:/var/www/example.com/
```

*Inside the server block: PHP for WordPress, or a proxy to an app*

```nginx
# WordPress (Debian 13: php8.4-fpm, Ubuntu 24.04: php8.3-fpm)
index index.php index.html;
location / {
    try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}

# or an app listening on 127.0.0.1:3000
location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
```

## How does a contact form send email?

**Through a mail provider, never straight from the VPS.** Outbound port 25 is closed on every VPS and is not opened on request; send mail through a mail provider on port 465 or 587. In WordPress, an SMTP plugin with your provider's host, port and credentials does it; most frameworks take the same three settings in their configuration. Add the SPF and DKIM records your provider gives you, or receiving servers will treat the messages as spam.

## How do you back up the site?

**Keep what you cannot rebuild somewhere else.** No plan includes backups, so keep your own copy of anything that matters.

- **Static site:** the source in git on your computer, plus a remote, is already the backup. The server is rebuilt from it.
- **WordPress:** the database and `wp-content`, which holds uploads, themes and plugins. A nightly dump and copy to another machine, from cron, covers it. Test a restore before you need one.

## Which plan fits a website?

**Byte for static sites and small blogs, Kilo for WordPress, Mega for several dynamic sites on one server.** Traffic rarely limits a small site: a 2 MB page viewed 100,000 times sends 200 GB. Plans connect through a 1 Gbit/s port that the VPS on the same host share.

- **Byte** (1 vCPU / 2 GB / 40 GB), 2 TB a month: $2.25 a month on a 12-month term, $3.21 month to month.
- **Kilo** (2 vCPU / 4 GB / 65 GB), 2 TB a month: $4.49 a month on a 12-month term, $6.42 month to month.
- **Mega** (2 vCPU / 6 GB / 120 GB), 6 TB a month: $6.75 a month on a 12-month term, $9.64 month to month.

Put the site close to its readers: [a VPS in the USA](https://vpswithcrypto.com/usa-vps/ "Where can I buy a USA VPS with Bitcoin or USDT without ID?") or [in Europe](https://vpswithcrypto.com/europe-vps/ "Where can I get a VPS in Europe paid with crypto and no KYC?"). Your VPS runs in a data centre in the city you pick, on IP addresses registered in that country (US, GB, NL or DE in the registry whois).

## What else do people ask about hosting a site on a VPS?

### Can I host several sites on one VPS?

Yes. Each domain gets its own server block and its own certificate from `certbot --nginx -d`. RAM decides how many dynamic sites fit; static sites cost almost nothing each.

### Do I need a control panel?

No. nginx, certbot and a few files do the job described here, and every change stays visible in plain text under `/etc/nginx`. A panel adds its own software to update and its own login to protect.

### Should the site have an AAAA record?

Yes, if nginx listens on IPv6, which the `listen [::]:80` line does. Visitors on IPv6 networks then connect directly. Check that both records point at the same server before you request the certificate.

### Can the VPS send the site's email itself?

Outbound port 25 is closed on every VPS and is not opened on request; send mail through a mail provider on port 465 or 587. Use your mail provider's SMTP settings in the site or its plugin.

### What happens if the site uses more traffic than the plan lists?

Each VPS comes with a dedicated IPv4 address and a routed IPv6 /64. Every plan lists its outbound traffic per month in TB, and going over it never triggers an automatic charge. Check the outbound figure of each plan before you pick one, and move up a plan if a busy month comes close.

**Put your site on a server you control** Byte is $2.25 a month on a 12-month term and Kilo $4.49, the same in all six cities, paid in crypto with no ID. A team member sets up every VPS once your payment confirms, usually within minutes and never more than 1 hour later; your dashboard follows the build and then shows the IP address. [See plans and prices](https://vpswithcrypto.com/pricing/ "How much does a VPS With Crypto server cost per month?") · [How ordering works](https://vpswithcrypto.com/how-it-works/ "How do I order a VPS with crypto, from payment to SSH?")

## Sources

1. [Beginner's guide (server blocks, static files, proxying)](https://nginx.org/en/docs/beginners_guide.html) — nginx (read 2026-11-03)
2. [Certbot instructions (nginx)](https://certbot.eff.org/instructions?ws=nginx&os=pip) — Electronic Frontier Foundation (read 2026-11-03)
3. [Install Caddy (Debian, Ubuntu packages)](https://caddyserver.com/docs/install) — Caddy (read 2026-11-03)
4. [WordPress requirements](https://wordpress.org/about/requirements/) — WordPress.org (read 2026-11-03)
5. [Debian 13 release notes: what's new (nginx 1.26, PHP 8.4, MariaDB 11.8)](https://www.debian.org/releases/trixie/release-notes/whats-new.en.html) — Debian (read 2026-11-03)
6. [Package php in Ubuntu 24.04 (depends on php8.3)](https://packages.ubuntu.com/noble/php) — Ubuntu (read 2026-11-03)
7. [rsync(1), Debian 13](https://manpages.debian.org/trixie/rsync/rsync.1.en.html) — Debian (read 2026-11-03)

---

VPS With Crypto: VPS With Crypto sells Linux KVM VPS in New York, Dallas, Los Angeles, London, Amsterdam and Frankfurt, paid in crypto with no ID upload. The business behind it is DomaineGoat LLC, registered in Panama. A plan costs the same in all six cities, and on a 12-month term it is priced at least 25% under a named comparable plan, chosen among 34 no-KYC crypto hosts and read on 3 November 2026.
