# Installation des Servers unter Debian

#### Teil 1. Installation im Terminal

  
Abbhängikeiten installieren.

```
apt update && apt install -y wireguard curl tar iptables resolvconf
```

<div id="bkmrk-hinweis%3A%C2%A0bei-debian-" style="border: 1px solid #ffc107; background-color: #fff3cd; padding: 15px; margin-bottom: 20px;">**Hinweis:**   
Bei Debian 12/13 wird die resolv.conf nicht angelegt. Das heißt nach installtaion von resolvconf funktioniert die Namensauflösung nicht. Daher rersolv.conf anlegen mit Inhalt des google dns Servers als Beispiel  
  
nameserver 8.8.8.8  
  
Denn Sonst funktioniert das Update/Installationsskript nicht</div>Falls die ufw Firewall aktiv ist, bei dieser folgenden UDP Port öffnen 51820, wenn nicht überspringen

```
ufw allow 51820/udp
```

**!!Sollte der Wireguard Server hinter einem Router stehen das NAT Portforwarding UDP 51820 nicht vergessen einzurichten!!**

Nun in der Systemctl Portforwarding aktivieren

```
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
```

Nun das Startscript für den Wireguard WEBGUI erstellen.  
In dem Systemstart wird das Programm so eingestellt das es die Datenbank zum Wireguard Server in  
`/etc/wireguard/db/` abgelegt

```
cat <<EOF > /etc/wireguard/start-wgui.sh
#!/bin/bash
 
cd /etc/wireguard
./wireguard-ui -bind-address 0.0.0.0:5000
EOF
```

<span style="color: #ff0000;">**ACHTUNG:**</span> Die *-bind-address **0.0.0.0**:5000* sollte aus Sicherheitsgründen, sobald der erste Tunnel steht, gegen die WireGuard Server IP-Adresse ***10.252.1.0*** ausgetauscht werden!

Nun das Script ausführbar machen.

```
chmod +x /etc/wireguard/start-wgui.sh
```

Nun die Systemdienste anlegen

```
cat <<EOF > /etc/systemd/system/wgui-web.service
[Unit]
Description=WireGuard UI
 
[Service]
Type=simple
ExecStart=/etc/wireguard/start-wgui.sh
 
[Install]
WantedBy=multi-user.target
EOF
```

Nun das Install / Update script erstellen, damit können wir immer die aktuellste Version downloaden.

```
cat <<EOF > /etc/wireguard/update.sh
#!/bin/bash
 
VER=\$(curl -sI https://github.com/ngoduykhanh/wireguard-ui/releases/latest | grep "location:" | cut -d "/" -f8 | tr -d '\r')
 
echo "downloading wireguard-ui \$VER"
curl -sL "https://github.com/ngoduykhanh/wireguard-ui/releases/download/\$VER/wireguard-ui-\$VER-linux-amd64.tar.gz" -o wireguard-ui-\$VER-linux-amd64.tar.gz
 
echo -n "extracting "; tar xvf wireguard-ui-\$VER-linux-amd64.tar.gz
 
echo "restarting wgui-web.service"
systemctl restart wgui-web.service
EOF
```

Das Script ausführbar machen und starten

```
chmod +x /etc/wireguard/update.sh
cd /etc/wireguard; ./update.sh
```

Es erscheinen folgende fehler in der Ausgabe, aber es wird trotzdem korrekt installiert

```
Ausgabe

/update.sh: Zeile 2:  : Kommando nicht gefunden.
./update.sh: Zeile 4:  : Kommando nicht gefunden.
downloading wireguard-ui v0.3.7
./update.sh: Zeile 7:  : Kommando nicht gefunden.
extracting wireguard-ui
./update.sh: Zeile 9:  : Kommando nicht gefunden.
restarting wgui-web.service

```

Wireguard conf von Systemd überwachen lassen und bei Änderung wiregaurd neustarten.  
Dienst 1

```
cat <<EOF > /etc/systemd/system/wgui.service
[Unit]
Description=Restart WireGuard
After=network.target
 
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart wg-quick@wg0.service
 
[Install]
RequiredBy=wgui.path
EOF
```

Dienst 2

```
cat <<EOF > /etc/systemd/system/wgui.path
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
 
[Path]
PathModified=/etc/wireguard/wg0.conf
 
[Install]
WantedBy=multi-user.target
EOF
```

Nun alle 3 Dienste aktivieren und starten

```
touch /etc/wireguard/wg0.conf
systemctl enable wgui.{path,service} wg-quick@wg0.service wgui-web.service
systemctl start wgui.{path,service}
```

Nun können wir auf den Wireguard Server über die Weboberfläche zugreifen.

[http://ipadresse:5000](http://ipadresse:5000)

Standard Anmeldedaten :   
Benutzername : admin   
Kennwort : admin

  
**In der alten version über die Datei!!!!**  
Diese ändern wir ab in der Datei <span class="crayon-title">/etc/wireguard/db/server/users.json</span>

```
nano /etc/wireguard/db/server/users.json
```

<span class="crayon-title">Inhalt, einfach neues Passwort setzten</span>

```
{
        "username": "admin",
        "password": "<neues passwort>"
}
```

**In der neuen Version endlich über GUI.**  
Auf User Setting und dann Edit.  
Endlich können auch mehrere Benutzer erstellt werden ;-)  
Über den Button new user oben rechts

[![01.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-07/scaled-1680-/d1tDBhigArereYQ9-01.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-07/d1tDBhigArereYQ9-01.png)

Nun neues Passwort vergeben und auf save klicken

[![02.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-07/scaled-1680-/jGkMeknvo6iUR6Hu-02.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-07/jGkMeknvo6iUR6Hu-02.png)

#### <span class="crayon-title">Teil 2. Email sender Einrichten (Optional)</span>

<span class="crayon-title">Wenn man gerne die Files per Email versendet möchte müssen in der Service Datei folgende Environment Variablen angelegt werden</span>

<span class="crayon-title">Die Service datei editieren</span>

```
nano /etc/systemd/system/wgui-web.service
```

<span class="crayon-title">Das SMTP PASSWORT muss leer gesetzt werden.  
und in die Passwort Datei muss das Passwort</span>

<table border="1" id="bkmrk-variable-m%C3%B6cgliche-o" style="border-collapse: collapse; width: 100%; height: 89.4px;"><tbody><tr style="height: 29.8px;"><td style="width: 49.9383%; height: 29.8px;">Variable  
</td><td style="width: 49.9383%; height: 29.8px;">Möcgliche optionen  
</td></tr><tr style="height: 29.8px;"><td style="width: 49.9383%; height: 29.8px;">`SMTP_AUTH_TYPE`</td><td style="width: 49.9383%; height: 29.8px;">Die SMTP authentication Typen. : `PLAIN`, `LOGIN`, `NONE`</td></tr><tr style="height: 29.8px;"><td style="width: 49.9383%; height: 29.8px;">`SMTP_ENCRYPTION`</td><td style="width: 49.9383%; height: 29.8px;">Dieencryption Methode. : `NONE`, `SSL`, `SSLTLS`, `TLS`, `STARTTLS`  
jenachdem was für ein Port gesetzt wurde  
</td></tr></tbody></table>

<span class="crayon-title">Inhalt hinzufügen</span>

```
[Unit]
Description=WireGuard UI
 
[Service]
Type=simple
ExecStart=/etc/wireguard/start-wgui.sh
Environment="SMTP_HOSTNAME=<smtpserver>"
Environment="SMTP_PORT=465"
Environment="SMTP_USERNAME=<benutzername>"
Environment="SMTP_PASSWORD=" 
Environment="SMTP_PASSWORD_FILE=/etc/wireguard/smtppass"
Environment="SMTP_AUTH_TYPE=LOGIN"
Environment="SMTP_ENCRYPTION=SSL"
Environment="EMAIL_FROM_ADDRESS=<emailadresse>"
Environment="EMAIL_FROM_NAME="Anzeigename"
[Install]
WantedBy=multi-user.target

```

<span class="crayon-title">Danach den Systemd daemon neustarten</span>

```
systemctl daemon-reload
```

<span class="crayon-title">Nun die Passwortfile erstellen</span>

```
nano /etc/wireguard/smtppass
```

<span class="crayon-title">Inhalt</span>

```
absolutgeheimesmtppasswort
```

<span class="crayon-title">Nun den Dienst neustarten</span>

```
service wgui-web restart
```

<span class="crayon-title">Nun kann man über die GUI die Datei wegsenden.  
Dazu bei dem Client auf den Button Email klicken  
  
[![Auswahl_001.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-10/scaled-1680-/mWQqyi4qZNiajzK2-auswahl-001.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-10/mWQqyi4qZNiajzK2-auswahl-001.png)  
Nun entweder hinterleget Adresse nutzen, oder andere eingeben dann auf send  
[![Auswahl_002.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-10/scaled-1680-/ivOMIc7s23tqFXUh-auswahl-002.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-10/ivOMIc7s23tqFXUh-auswahl-002.png)  
Die Email wurde erfolgreich gesendet  
[![Auswahl_003.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-10/scaled-1680-/x19xFRhbXlrwE16e-auswahl-003.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-10/x19xFRhbXlrwE16e-auswahl-003.png)  
</span>

####   


#### <span class="crayon-title">Teil 3. Weiter in der Webgui</span>

[![Bildschirmfoto vom 2022-12-01 09-07-44.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/k0AtP1nhZIkYBUAO-bildschirmfoto-vom-2022-12-01-09-07-44.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/k0AtP1nhZIkYBUAO-bildschirmfoto-vom-2022-12-01-09-07-44.png)

Nach dem Einloggen links auf den Menüpunkt Global Settings.

[![Bildschirmfoto vom 2022-12-01 09-08-00.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/bqeE0bg5bkSfWqOx-bildschirmfoto-vom-2022-12-01-09-08-00.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/bqeE0bg5bkSfWqOx-bildschirmfoto-vom-2022-12-01-09-08-00.png)

Die Endpoint Address mit dem DNS namen oder Public ip tauschen.  
um die Public IP rauszubekommen, im Terminal.

```
curl ifconfig.me
```

  
DNS Server auf 8.8.8.8 setzen und MTU rauslöschen.und auf save klicken

[![Bildschirmfoto vom 2022-12-01 09-45-43.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/mCJNl4jqCKHf1l7t-bildschirmfoto-vom-2022-12-01-09-45-43.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/mCJNl4jqCKHf1l7t-bildschirmfoto-vom-2022-12-01-09-45-43.png)

und dann apply Config klicken

[![Bildschirmfoto vom 2022-12-01 09-20-42.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/IJ1evwM22hVqYvpR-bildschirmfoto-vom-2022-12-01-09-20-42.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/IJ1evwM22hVqYvpR-bildschirmfoto-vom-2022-12-01-09-20-42.png)

Dann sehe das ganze so aus als Beispiel

[![Auswahl_277.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-02/scaled-1680-/XGk07yytrt5Fvxu2-auswahl-277.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-02/XGk07yytrt5Fvxu2-auswahl-277.png)

Nun auf den Menüpunkt links Wireguard Server.  
Nun mittels terminal und ip a herausfinden welche Netzwerkkarte für lan es gibt.

```
Ausgabe

ip a

 ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2a:xx:xxx:xx:85 brd ff:ff:ff:ff:ff:ff
    altname enp0s18

```

Nun bei Postup folgendes eintragen (die ens18 durch eure Netzwerkkarte erstezen)

```
iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j
ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE

```

Nun bei Postdown folgendes eintragen (die ens18 durch eure Netzwerkkarte erstezen)

```
iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o
%i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE

```

Nun auf save

[![Bildschirmfoto vom 2022-12-01 09-45-43.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/mCJNl4jqCKHf1l7t-bildschirmfoto-vom-2022-12-01-09-45-43.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/mCJNl4jqCKHf1l7t-bildschirmfoto-vom-2022-12-01-09-45-43.png)

und apply config klicken

[![Bildschirmfoto vom 2022-12-01 09-20-42.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/IJ1evwM22hVqYvpR-bildschirmfoto-vom-2022-12-01-09-20-42.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/IJ1evwM22hVqYvpR-bildschirmfoto-vom-2022-12-01-09-20-42.png)

Dann sieht das ganze so aus.

[![Bildschirmfoto vom 2022-12-01 09-28-34.png](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/scaled-1680-/vMwk2yupZVZHB2Gv-bildschirmfoto-vom-2022-12-01-09-28-34.png)](https://wiki.hacker-net.de/uploads/images/gallery/2022-12/vMwk2yupZVZHB2Gv-bildschirmfoto-vom-2022-12-01-09-28-34.png)

Damit ist die Installation abgeschlossen