Steffens Spickzettel · v1.0 · selbst editierbar

Neue Website anlegen

Trag oben deine Werte ein, dann werden alle Code-Schnipsel automatisch befüllt. Hak jeden Schritt ab — der Stand bleibt gespeichert, auch nach Browser-Schließen.

┌─ Wo läuft was? ───────────────────────────────────────────── Browser FritzBox 192.168.178.131 (NPM + Docker + CrowdSec) Reverse Proxy 192.168.178.132:80 (Nginx-Webserver) server_name match /var/www/html/... .121 (CoolDBCatta · Datenbank) .132 + Cron-Jobs für DynDNS-Update └──────────────────────────────────────────────────────────────────

① Deine Werte

Werden in alle Befehle eingesetzt
0 von 9 erledigt 0%
i
DNS bei ipv64 anlegen
ipv64.net

Bei ipv64.net einloggen und eine neue Subdomain anlegen. Du bekommst einen Update-Key, den du brauchst, um die FritzBox-IP dynamisch zu melden (weil sie sich ändert).

Tipp Den Key sicher speichern (Passwort-Manager). Geht er verloren, muss neu generiert werden.
ii
Auf .132 einloggen
via SSH

SSH-Verbindung zum Webserver aufbauen.

ssh root@192.168.178.132
iii
Content-Verzeichnis anlegen
.132 · /var/www

Verzeichnis für die HTML-Dateien anlegen.

mkdir -p /var/www/html/<webdir>

Eine Test-Datei einfügen, damit du gleich was zum Aufrufen hast:

echo "<h1>Hello from <fqdn></h1>" > /var/www/html/<webdir>/index.html
iv
Nginx-Config erweitern
.132 · /etc/nginx

In /etc/nginx/sites-enabled/default einen neuen Server-Block hinzufügen. Da NPM alle Anfragen auf Port 80 schickt, entscheidet hier der server_name, welches Verzeichnis ausgeliefert wird.

nano /etc/nginx/sites-enabled/default

Diesen Block am Ende der Datei einfügen:

server {
    listen 80;
    listen [::]:80;
    server_name <fqdn>;
    root /var/www/html/<webdir>;
    index index.html;

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

Config testen und Nginx neu laden:

nginx -t && systemctl reload nginx
Wichtig Wenn nginx -t einen Fehler zeigt, NICHT reloaden — sonst geht der Webserver komplett down!
v
DynDNS-Update-Script anlegen
.132 · /websitesscript

Das Script meldet täglich die aktuelle FritzBox-IP an ipv64. Pro Script maximal 3 URLs, sonst Timeout-Risiko.

nano /websitesscript/websites<num>-upd-cronjob.sh

Inhalt einfügen:

#!/bin/bash
# DynDNS-Update für <fqdn>
urls=(
    "https://ipv4.ipv64.net/nic/update?key=<key>&domain=<fqdn>"
)
for url in "${urls[@]}"; do
    curl -sS "$url" >/dev/null
done

Script ausführbar machen — wichtig, sonst läuft's nicht!

chmod +x /websitesscript/websites<num>-upd-cronjob.sh

Manuell testen, ob's funktioniert:

/websitesscript/websites<num>-upd-cronjob.sh && echo "OK"
Erinnerung Du kannst auch mehrere URLs in einem Script bündeln (max. 3), wenn mehrere neue Domains gleichzeitig dran sind. Einfach weitere Zeilen im urls=(...)-Array.
vi
Cron-Job eintragen
.132 · crontab

Crontab öffnen und das neue Script eintragen. Mindestens 15 Minuten Abstand zu anderen Cron-Jobs einhalten!

crontab -e

Diese Zeile am Ende einfügen:

<crontime> /websitesscript/websites<num>-upd-cronjob.sh

Aktuelle Cron-Jobs ansehen, damit der Abstand stimmt:

crontab -l
15-Minuten-Regel Wenn der letzte Job um 0 3 * * * läuft, frühestens 15 3 * * * für den nächsten.
vii
NPM Proxy Host anlegen
.131 · NPM-GUI

Auf http://192.168.178.131:81 einloggen und einen neuen Proxy Host anlegen.

Erst HTTP testen Bevor du SSL anforderst, prüfen ob die Seite über HTTP erreichbar ist. So findest du Routing-Fehler schneller.
viii
SSL-Zertifikat anfordern
.131 · NPM-GUI

Im Proxy Host auf den SSL-Tab wechseln und Let's Encrypt anfordern.

Falls SSL fehlschlägt Häufige Ursache: DNS noch nicht propagiert. Warte 5–10 Minuten und versuche es nochmal. Test: dig <fqdn> sollte deine öffentliche IP zurückgeben.
ix
Im Browser testen
Browser

Aufrufen und prüfen ob alles passt.

https://<fqdn>
Geschafft! 🎉 Die neue Website läuft. Den finalen Content kannst du jetzt nach /var/www/html/<webdir>/ hochladen.
Kopiert!