# Een website of applicatie online zetten

Uw VPS Pro levert uw websites en applicaties op hun domeinnaam, via HTTP en HTTPS. Bezoekers komen binnen op de poorten **80** en **443** van uw server, onder de naam van uw server; de HTTPS-versleuteling loopt van begin tot eind, tot op uw server, waar uw certificaat staat.

## 1. Uw domein naar uw server laten wijzen

Maak, daar waar de DNS-zone van uw domein wordt beheerd, twee records aan voor de naam van uw server, met de adressen uit de kaart van de server, rubriek **VPS** van uw klantenruimte:

| Type   | Naam                                | Waarde                          |
| ------ | ----------------------------------- | ------------------------------- |
| `A`    | `app` (of `@` voor het domein zelf) | het **IPv4-adres** uit uw kaart |
| `AAAA` | `app` (of `@`)                      | het **IPv6-adres** uit uw kaart |

Een naam onder `vps.simafri.cloud` werkt al: daarvoor hoeft u niets aan te maken.

Wordt de DNS-zone van uw domein door Simafri beheerd, dan zet ons team deze records voor u: schrijf ons. Vraag ons ook, voordat u een website die al online is overschakelt, de levensduur (TTL) van het record te verlagen: de overschakeling is dan in enkele minuten overal doorgevoerd.

Om het vanaf uw computer te controleren:

```
dig +short A app.mijn-bedrijf.nl

dig +short AAAA app.mijn-bedrijf.nl
```

## 2. Uw webserver installeren

Uw webserver luistert op poort **80** voor HTTP en op poort **443** voor HTTPS. Twee gangbare keuzes:

* **Caddy**, dat uw HTTPS-certificaat zelf aanvraagt en vernieuwt;
* **Nginx** of **Apache**, met **Certbot** voor het certificaat.

### Met Caddy

```
apt install caddy
```

Daarna, in `/etc/caddy/Caddyfile`, voor een statische website:

```
app.mijn-bedrijf.nl {

    root * /var/www/app

    file_server

}
```

of voor een applicatie die op poort 3000 luistert:

```
app.mijn-bedrijf.nl {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, en uw website antwoordt via HTTPS: Caddy heeft het certificaat verkregen en vernieuwt het vanzelf.

### Met Nginx en Certbot

```
apt install nginx certbot python3-certbot-nginx
```

Maak de website aan in `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.mijn-bedrijf.nl;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Activeer de website en vraag daarna het certificaat aan:

```
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/

nginx -t && systemctl reload nginx

certbot --nginx -d app.mijn-bedrijf.nl
```

Certbot zet het Let's Encrypt-certificaat, voegt het luisteren op poort 443 toe en plant de automatische vernieuwing ervan. `certbot renew --dry-run` controleert of de vernieuwing klaarstaat.

## 3. Uw applicatie draaiende houden

Een Node.js-, Python-, Go- of Java-applicatie die continu draait, vertrouwt u toe aan **systemd**: ze start met de server en herstart vanzelf als ze stopt. Voorbeeld, in `/etc/systemd/system/app.service`:

```
[Unit]

Description=Mijn applicatie

After=network.target



[Service]

WorkingDirectory=/srv/app

ExecStart=/usr/bin/node server.js

Restart=always

Environment=NODE_ENV=production

User=www-data



[Install]

WantedBy=multi-user.target
```

```
systemctl daemon-reload

systemctl enable --now app

journalctl -u app -f    # de logs volgen
```

PM2 voor Node.js, Gunicorn of Uvicorn voor Python, of Docker Compose vervullen dezelfde rol als u daaraan de voorkeur geeft.

## 4. Uw database

PostgreSQL, MySQL, MariaDB, Redis of MongoDB installeert u op uw server met de pakketbeheerder, of vanuit de officiële repository van de uitgever voor de nieuwste versie:

```
apt install postgresql
```

Laat uw database luisteren op `localhost`: uw applicatie bereikt haar op de server zelf. Om haar vanaf uw computer te beheren, gebruikt u een SSH-tunnel:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.mijn-bedrijf.nl
```

Uw tool (DBeaver, pgAdmin, TablePlus) maakt dan verbinding met `localhost:5432`.

## Meerdere domeinen bedienen

Uw server antwoordt onder zijn naam, die bij de bestelling is vastgelegd. Om een ander domein of subdomein op dezelfde VPS Pro te bedienen, schrijft u naar de ondersteuning met de namen die u wilt toevoegen: ons team koppelt ze aan uw server, waarna u hun DNS-records aanmaakt zoals in stap 1 en hun blok toevoegt aan uw webserver.

## Veelgestelde vragen

### Mijn website toont een certificaatfout.

Controleer in deze volgorde: uw records `A` en `AAAA` wijzen naar de adressen uit uw kaart (`dig`), uw webserver luistert op de poorten 80 en 443 (`ss -tlnp`), en het certificaat dekt deze naam (`certbot certificates`). Het certificaat wordt verkregen zodra de naam naar uw server wijst: start Certbot opnieuw, of herlaad Caddy, zodra de DNS-wijziging is doorgevoerd.

### Mijn website antwoordt helemaal niet.

Op de server toont `curl -I http://localhost` of uw webserver antwoordt. `systemctl status nginx` (of `caddy`, of uw dienst) en de logs ervan vertellen waarom hij is gestopt. Beschrijf wat u ziet aan de ondersteuning: Full-Stack Support stelt samen met u de diagnose.

### Kan ik WordPress, Laravel of Symfony installeren?

Ja: installeer PHP-FPM, uw database en uw webserver, en daarna uw applicatie, zoals op elke Linux-server. Full-Stack Support vertelt u stap voor stap welke instellingen bij uw project passen.
