# Publicera en webbplats eller en applikation

Din VPS Pro levererar dina webbplatser och dina applikationer på deras domännamn, över HTTP och HTTPS. Besökarna kommer till portarna **80** och **443** på din server, under din servers namn; HTTPS-krypteringen går hela vägen, ända fram till din server, där ditt certifikat finns.

## 1. Peka din domän mot din server

Där DNS-zonen för din domän hanteras skapar du två poster för din servers namn, med adresserna som visas på dess kort, avsnittet **VPS** i ditt kundområde:

| Typ    | Namn                                 | Värde                          |
| ------ | ------------------------------------ | ------------------------------ |
| `A`    | `app` (eller `@` för själva domänen) | **IPv4-adress** från ditt kort |
| `AAAA` | `app` (eller `@`)                    | **IPv6-adress** från ditt kort |

Ett namn under `vps.simafri.cloud` fungerar redan: det finns inget att skapa.

När DNS-zonen för din domän hanteras av Simafri lägger vårt team in de här posterna åt dig: skriv till oss. Innan du flyttar över en webbplats som redan är publicerad ber du oss också sänka postens livslängd (TTL): övergången sprids då på några minuter.

Så här kontrollerar du från din dator:

```
dig +short A app.dittforetag.se

dig +short AAAA app.dittforetag.se
```

## 2. Installera din webbserver

Din webbserver lyssnar på port **80** för HTTP och port **443** för HTTPS. Två vanliga val:

* **Caddy**, som själv skaffar och förnyar ditt HTTPS-certifikat;
* **Nginx** eller **Apache**, med **Certbot** för certifikatet.

### Med Caddy

```
apt install caddy
```

Sedan, i `/etc/caddy/Caddyfile`, för en statisk webbplats:

```
app.dittforetag.se {

    root * /var/www/app

    file_server

}
```

eller för en applikation som lyssnar på port 3000:

```
app.dittforetag.se {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, och din webbplats svarar över HTTPS: Caddy har skaffat certifikatet och förnyar det av sig självt.

### Med Nginx och Certbot

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

Skapa webbplatsen i `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.dittforetag.se;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktivera den och begär sedan certifikatet:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.dittforetag.se
```

Certbot installerar Let's Encrypt-certifikatet, lägger till lyssning på port 443 och schemalägger den automatiska förnyelsen. `certbot renew --dry-run` kontrollerar att förnyelsen är redo.

## 3. Hålla din applikation igång

En Node.js-, Python-, Go- eller Java-applikation som körs hela tiden anförtros åt **systemd**: den startar med servern och startar om av sig själv om den stannar. Exempel, 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ölj dess loggar
```

PM2 för Node.js, Gunicorn eller Uvicorn för Python, eller Docker Compose fyller samma funktion om du föredrar dem.

## 4. Din databas

PostgreSQL, MySQL, MariaDB, Redis eller MongoDB installeras på din server med pakethanteraren, eller från utgivarens officiella paketförråd för den senaste versionen:

```
apt install postgresql
```

Låt din databas lyssna på `localhost`: din applikation når den på själva servern. För att administrera den från din dator går du via en SSH-tunnel:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.dittforetag.se
```

Ditt verktyg (DBeaver, pgAdmin, TablePlus) ansluter då till `localhost:5432`.

## Leverera flera domäner

Din server svarar under sitt namn, som bestämdes vid beställningen. För att leverera en annan domän eller en annan underdomän på samma VPS Pro skriver du till supporten och anger namnen som ska läggas till: vårt team kopplar dem till din server, och sedan skapar du deras DNS-poster som i steg 1 och lägger till deras block i din webbserver.

## Vanliga frågor

### Min webbplats visar ett certifikatfel.

Kontrollera i tur och ordning: dina poster `A` och `AAAA` pekar på adresserna från ditt kort (`dig`), din webbserver lyssnar på portarna 80 och 443 (`ss -tlnp`), och certifikatet täcker verkligen det namnet (`certbot certificates`). Certifikatet utfärdas när namnet pekar på din server: kör Certbot igen, eller ladda om Caddy, när DNS-ändringen har spridits.

### Min webbplats svarar inte alls.

På servern visar `curl -I http://localhost` om din webbserver svarar. `systemctl status nginx` (eller `caddy`, eller din tjänst) och dess loggar berättar varför den har stannat. Beskriv vad du ser för supporten: Heltäckande support ställer diagnosen tillsammans med dig.

### Kan jag installera WordPress, Laravel eller Symfony?

Ja: installera PHP-FPM, din databas och din webbserver, och sedan din applikation, som på vilken Linux-server som helst. Heltäckande support talar om vilka inställningar som passar ditt projekt, steg för steg.
