# Sæt et websted eller en applikation online

Din VPS Pro leverer dine websteder og dine applikationer på deres domænenavn via HTTP og HTTPS. De besøgende ankommer på portene **80** og **443** på din server, under din servers navn; HTTPS-krypteringen går hele vejen til din server, hvor dit certifikat ligger.

## 1. Peg dit domæne på din server

Der, hvor dit domænes DNS-zone administreres, opretter du to poster for din servers navn med de adresser, der vises på dens kort i afsnittet **VPS** i dit kundeområde:

| Type   | Navn                                | Værdi                         |
| ------ | ----------------------------------- | ----------------------------- |
| `A`    | `app` (eller `@` for selve domænet) | **IPv4-adresse** fra dit kort |
| `AAAA` | `app` (eller `@`)                   | **IPv6-adresse** fra dit kort |

Et navn under `vps.simafri.cloud` virker allerede: der er intet at oprette.

Når dit domænes DNS-zone administreres af Simafri, opretter vores team disse poster for dig: skriv til os. Før du flytter et websted, der allerede er online, så bed os også om at sænke postens levetid (TTL): så udbredes omlægningen på få minutter.

Sådan kontrollerer du det fra din computer:

```
dig +short A app.min-virksomhed.dk

dig +short AAAA app.min-virksomhed.dk
```

## 2. Installer din webserver

Din webserver lytter på port **80** for HTTP og på port **443** for HTTPS. To almindelige valg:

* **Caddy**, der selv henter og fornyer dit HTTPS-certifikat;
* **Nginx** eller **Apache** med **Certbot** til certifikatet.

### Med Caddy

```
apt install caddy
```

Derefter, i `/etc/caddy/Caddyfile`, for et statisk websted:

```
app.min-virksomhed.dk {

    root * /var/www/app

    file_server

}
```

eller for en applikation, der lytter på port 3000:

```
app.min-virksomhed.dk {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, og dit websted svarer over HTTPS: Caddy har hentet certifikatet og fornyer det selv.

### Med Nginx og Certbot

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

Opret webstedet i `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.min-virksomhed.dk;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktiver det, og bestil derefter certifikatet:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.min-virksomhed.dk
```

Certbot installerer Let's Encrypt-certifikatet, tilføjer lytning på port 443 og planlægger den automatiske fornyelse. `certbot renew --dry-run` kontrollerer, at fornyelsen er klar.

## 3. Hold din applikation kørende

En Node.js-, Python-, Go- eller Java-applikation, der kører hele tiden, overlades til **systemd**: den starter med serveren og genstarter selv, hvis den stopper. Eksempel i `/etc/systemd/system/app.service`:

```
[Unit]

Description=Min applikation

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    # følg dens logfiler
```

PM2 til Node.js, Gunicorn eller Uvicorn til Python eller Docker Compose udfylder samme rolle, hvis du foretrækker dem.

## 4. Din database

PostgreSQL, MySQL, MariaDB, Redis eller MongoDB installeres på din server med pakkehåndteringen, eller fra producentens officielle pakkearkiv for at få den nyeste version:

```
apt install postgresql
```

Lad din database lytte på `localhost`: din applikation når den på selve serveren. Vil du administrere den fra din computer, så gå via en SSH-tunnel:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.min-virksomhed.dk
```

Dit værktøj (DBeaver, pgAdmin, TablePlus) forbinder derefter til `localhost:5432`.

## Lever flere domæner

Din server svarer under sit navn, der blev fastlagt ved bestillingen. Vil du levere et andet domæne eller et andet underdomæne på den samme VPS Pro, så skriv til supporten med de navne, der skal tilføjes: vores team kobler dem på din server, og derefter opretter du deres DNS-poster som i trin 1 og tilføjer deres blok til din webserver.

## Ofte stillede spørgsmål

### Mit websted viser en certifikatfejl.

Kontroller i denne rækkefølge: dine `A`- og `AAAA`-poster peger på adresserne fra dit kort (`dig`), din webserver lytter på portene 80 og 443 (`ss -tlnp`), og certifikatet dækker dette navn (`certbot certificates`). Certifikatet kan hentes, når navnet peger på din server: kør Certbot igen, eller genindlæs Caddy, når DNS-ændringen er udbredt.

### Mit websted svarer slet ikke.

På serveren viser `curl -I http://localhost`, om din webserver svarer. `systemctl status nginx` (eller `caddy`, eller din tjeneste) og dens logfiler fortæller, hvorfor den er stoppet. Beskriv det, du ser, for supporten: Totalsupport stiller diagnosen sammen med dig.

### Kan jeg installere WordPress, Laravel eller Symfony?

Ja: installer PHP-FPM, din database og din webserver og derefter din applikation, som på enhver Linux-server. Totalsupport fortæller dig, hvilke indstillinger der passer til dit projekt, trin for trin.
