119 lines
3.8 KiB
Markdown
119 lines
3.8 KiB
Markdown
# Ubuntu Server 18.04 auf Hetzner Cloud
|
|
|
|
Als erstes das System aktualisieren
|
|
```
|
|
apt update
|
|
apt upgrade
|
|
```
|
|
Falls der Port für SSH geändert werden soll:
|
|
```
|
|
vim /etc/ssh/sshd_config
|
|
service ssh restart
|
|
```
|
|
Nun die Firewall aktivieren und die wichtigsten Ports freischalten
|
|
```
|
|
ufw allow 22
|
|
ufw allow 80
|
|
ufw allow 443
|
|
ufw enable
|
|
```
|
|
Ein paar hilfreiche Tools installieren:
|
|
```
|
|
apt install -y htop iftop mytop tcpdump landscape-common mercurial git software-properties-common
|
|
```
|
|
|
|
## Zeitzone auf Europe/Berlin stellen
|
|
```
|
|
timedatectl set-timezone Europe/Berlin
|
|
```
|
|
## Strorage Box mounten
|
|
Die Festplatte soll über SAMBA/CIFS gemounted werden, daher müssen die entsprechenden Tools installiert sein:
|
|
```
|
|
apt install cifs-utils
|
|
```
|
|
Die Zugangsdaten für die Storagebox werden unter `/etc/storage-bx20-credentials` in folgender Form gespeichert:
|
|
```
|
|
username=<BENUTZERNAME>
|
|
password=<PASSWORT>
|
|
```
|
|
In `/etc/fstab` folgende Zeile einfügen:
|
|
```
|
|
//u138460.your-storagebox.de/backup /mnt/storage-bx20 cifs iocharset=utf8,rw,credentials=/etc/storage-bx20-credentials,uid=82,forceuid,gid=82,forcegid,file_mode=0660,dir_mode=0770 0 0
|
|
```
|
|
**Wichtig:** Hier muss ggf. der User und die Gruppe an den jeweiligen Docker-Container angepasst werden. Bisher hat nur die ID und nicht der Name funktioniert und hier in diesem Beispiel auf `82` gestellt, was dem `www-data` entsprechen soll.
|
|
|
|
## Docker und Docker-Composer installieren
|
|
Zuerst einmal Docker
|
|
```
|
|
apt install docker.io
|
|
```
|
|
Nun Docker-Composer und hier kann man die aktuelle Release-Nr. herausfinden: https://github.com/docker/compose/releases
|
|
```
|
|
sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
|
sudo chmod +x /usr/local/bin/docker-compose
|
|
```
|
|
|
|
## Cockpit zur Serverüberwachung
|
|
|
|
```
|
|
add-apt-repository universe
|
|
apt-get update
|
|
apt-get install cockpit cockpit-docker
|
|
```
|
|
|
|
`https://ip-address-of-machine:9090`
|
|
|
|
Wenn Cockpit hinter einem Proxy läuft muss folgende `cockpit.conf` in `/etc/cockpit/` erstellt werden (weitere Infos in der [Dokumentation](https://cockpit-project.org/guide/latest/cockpit.conf.5)):
|
|
```
|
|
[WebService]
|
|
Origins = https://cockpit.bmen.cc
|
|
ProtocolHeader = X-Forwarded-Proto
|
|
LoginTitle = bmens Cockpit
|
|
AllowUnencrypted = true
|
|
LoginTo = false
|
|
```
|
|
und beim Proxyserver müssen folgende Eingräge erfolgen:
|
|
```
|
|
location / {
|
|
include /config/nginx/proxy.conf;
|
|
resolver 127.0.0.11 valid=30s;
|
|
proxy_pass http://172.18.0.1:9090;
|
|
proxy_set_header Host https://cockpit.bmen.cc;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Required for web sockets to function
|
|
proxy_buffering off;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
# Pass ETag header from Cockpit to clients.
|
|
# See: https://github.com/cockpit-project/cockpit/issues/5239
|
|
gzip off;
|
|
|
|
proxy_max_temp_file_size 2048m;
|
|
}
|
|
|
|
```
|
|
Wenn der Proxy Server von [Linuxserver.io Letsencrypt](https://github.com/linuxserver/docker-letsencrypt/blob/master/README.md) verwendet wird, dann die Firewall folgendermaßen konfigurieren:
|
|
```
|
|
ufw allow from 172.18.0.0/24 to any port 9090
|
|
```
|
|
So können nur die internen Docker-Container auf Cockpit zugreifen und von außen ist Port 9090 geschlossen.
|
|
|
|
## Wichtige Befehle
|
|
Festplattenverbrauch ermitteln:
|
|
```
|
|
df -h
|
|
```
|
|
Rsync ohne Rechteübernahme (gut für gemountete Laufwerke SAMBA)
|
|
```
|
|
sudo rsync -rltv --exclude '/storage/var/lib/nextcloud/*' /storage/ /mnt/backup-storage/
|
|
```
|
|
Checken ob ein Webservice in localhost läuft. Bei Ausgabe `200` ist alles OK:
|
|
```
|
|
curl -sL -w "%{http_code}\\n" "http://0.0.0.0:9090" -o /dev/null
|
|
```
|
|
## Gute Quellen
|
|
* Bash-Skripte: https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger/
|
|
* Cronjobs: https://www.stetic.com/developer/cronjob-linux-tutorial-und-crontab-syntax.html
|