# Server

Tutorials für Linux Server

# Neuer User

Neuer User durch
```code
sudo useradd -m <Benutzername>
```

mit Passwort:
```
sudo passwd <Benutzername>
```

Im User update und Shell
```
sudo apt install git build-essential
chsh -s /bin/bash
```
(danach **reconnect**)

Optional zu sudo und docker hinzufügen:
```
adduser <Benutzername> sudo
adduser <Benutzername> docker
```

# SSH sicher nutzen

Zum einen sollte ein SSH-key genutzt werden.
Anleitung dazu [hier](https://oldwiki.002.wbnext.de/doku.php?id=tut:lnxcmd#ssh_keys)
##### Key zu server kopieren:
```
ssh-copy-id user@adresse.de
```

## SSH_D Config
Zusätzlich sollten folgende Werte auf dem Server in **/etc/ssh/sshd_config** auf **no** gesetzt werden:
- PermitRootLogin
- PasswordAuthentication
- ChallengeResponseAuthentication

Anschließend sshd **neustarten**:
```
sudo service ssh restart
```


Um ein neues Gerät hinzuzufügen kann wie oben beschrieben der Wert von **PasswordAuthentication** auf **yes** gesetzt werden.\
**NICHT VERGESSEN** wieder auf **no** zu setzten und zwischendurch den shhd service neustarten!

# UFW-Firewall

Mehr Infos [hier](https://www.configserverfirewall.com/ufw-ubuntu-firewall/). \
Einen neuen Port freigeben:
```
sudo ufw allow <PORT>
```

Einen neuen Port [limitiert](https://serverfault.com/questions/368523/rate-limiting-with-ufw-setting-limits) freigeben:
```
sudo ufw limit <PORT>
```

Alle Regeln anzeigen lassen:
```
sudo ufw status
```

Die Firewall starten / stoppen:
```
sudo ufw enable
```
```
sudo ufw disable
```
Regel entfernen:
```
ufw status numbered
ufw delete <number>
```

# WebDAV einbinden

Inspiriert von dieser Website: [wiki.ubuntuusers.de/WebDAV/](https://wiki.ubuntuusers.de/WebDAV/) unter der Sektion Verbindung per davfs2

## Zu installierende Paket

  - ca-certificates
  - davfs2 (universe)

## Vorgehen

In der Datei /etc/fstab muss folgende Zeile hinzugefügt werden:

```
http://<webdavurl> <mountpunkt> davfs defaults,_netdev 0 0
```

Um nun ein Auto-Login einzubinden muss in folgender Datei /etc/davfs2/secrets Folgende Zeile eingebunden werden:

```
<Mountpunkt / WebDAV-URL> <login> "<passwort>"
```

Eventuell müssen noch die Berechtigungen angepasst werden mit:

```
chmod 600 /etc/davfs2/secrets
```

Nun kann es eingehängt werden mit:

```
mount <mountpunkt>
```

Gegebenfalls muss das Mountverzeichnis vorher noch erstellt werden.

# Docker und Docker Netzwerke ipv6 ready machen

- Docker ipv6 enabeln [Tutorial](https://docs.docker.com/config/daemon/ipv6/)
- Falls netzwerk schon vorhanden dieses löschen. Es muss neu erstellt werden.
- [Tutorial](https://medium.com/@skleeschulte/how-to-enable-ipv6-for-docker-containers-on-ubuntu-18-04-c68394a219a2) öffen
- Sektion **Configuring IPv6 NAT** ausführen für <code>-s</code> selbe einstellung wie bei <code>fixed-cidr-v6</code> beim enablen benutzen und selben command nochmal mit subnet für ein eigens Netzwerk zb.: <code>fc00::/80</code>
- folgenden Command für das neue netzwerk mit dem vergeben subnet ausführen:

```
docker network create --ipv6 --subnet=fc00::/80 name_meines_netzwerks
```
- die iptables speicher [Tutorial](https://askubuntu.com/questions/1252275/ubuntu-20-04-cant-persist-the-iptables-configuration) dazu muss man sudo apt-get install iptables-persistent ausführen

# Skript wiederholt als Service ausführen

Als Tutorial wird hier eine Anleitung beschrieben anhand des Falls für die Synchronisation eines Ordners mit der Nextcloud.
Für die Synchronisation mit der Nextcloud soll der Command <code>nextcloudcmd</code> periodisch ausgeführt werden.
Anleitung Orientiert sich am Fall mit [restic](https://blog.bithive.space/post/automatic-backups-with-restic/).

## Skript erstellen
Im Verzeichnis <code>/etc/nextcloud</code> wird das folgende Skript <code>auto_sync.sh</code> erstellt (USER und PASSWORT entsprechend anpassen):

```bash
#!/bin/bash
nextcloudcmd /opt/nextcloud/ https://<USER>:<PASSWORT>@nx22569.your-storageshare.de/
```

Das Skript wird ausführbar gemacht:

```
chmod +x auto_sync.sh
```

## Timer erstellen

<code>/etc/systemd/system/nextcloud-sync.timer</code> erstellen:

```
[Unit]
Description=Nextcloud Sync every 30 seconds

[Timer]
OnCalendar=*-*-* *:*:00,30
Persistent=true

[Install]
WantedBy=timers.target
```

<code>/etc/systemd/system/nextcloud-sync.service</code> erstellen:

```
[Unit]
Description=Nextcloud Sync with nextcloudcmd
[Service]
Type=simple
Nice=10
ExecStart=/etc/nextcloud/auto_sync.sh
```

## Timer starten
Timer muss einmalig gestartet werden mit 

```
systemctl enable nextcloud-sync.timer --now
```

# Nextcloud mounten mit WebDAV

Ausführlich ist das mounten der Nextcloud in der [offiziellen Dokumentation](https://docs.nextcloud.com/server/20/user_manual/en/files/access_webdav.html) beschieben.

### Anmerkung zur Anleitung aus der offiziellen Dokumentation
- In **Abschnitt 3** kann der <code>nextcloud</code> Ordner in einem beliebigen Verzeichnis erstellt werdne. Sinnvoll ist möglichweise auch das <code>/mnt</code> Verzeichnis.
- In **Abschnitt 7** kann <code>auto</code> durch <code>noauto</code> ersetzt werden, wenn das mounten nicht bei jedem Neustart geschehen muss.
- Wie im Abschnitt **Known Issues** beschrieben **muss** <code>use_locks 0</code> gesetzt werden

# Dolibarr CheatSheet

[![DolibarrUserCheatSheet-EN-v1.jpg](https://wiki.wbnext.de/uploads/images/gallery/2023-10/scaled-1680-/VUa6K1Ro4UdUJRUd-dolibarrusercheatsheet-en-v1.jpg)](https://wiki.wbnext.de/uploads/images/gallery/2023-10/VUa6K1Ro4UdUJRUd-dolibarrusercheatsheet-en-v1.jpg)