Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# This configures commits to ignore when running blame.
#
# Configure this locally with
# git config blame.ignoreRevsFile .git-blame-ignore-revs


# remove version from docker-compose, fix whitespaces
3dcc6a9383cd155de6b0de7aefcf31cbdbcd68fb
18 changes: 6 additions & 12 deletions docs/22_internal_networks.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,19 @@ sudo docker network create --subnet 172.20.255.0/24 database

## Beispielkonfiguration
In diesem Beispiel wird eine zentrale MariaDB Datenbank verwendet.
Die beiden Diensten (Nextcloud, HedgeDoc) nutzen ein docker-internes
Netzwerk zur Kommunikation mit der Datenbank.
Die beiden Dienste (Nextcloud, HedgeDoc) nutzen ein docker-internes
Netzwerk zur Kommunikation mit der Datenbank.

### MariaDB
```yaml
# /home/admin/mariadb/docker-compose.yml
version: '3.9'

services:
mariadb:
image: mariadb
image: mariadb
restart: always
env_file: .mariadb.env
volumes:
- "/srv/mariadb:/var/lib/mysql"
- "/srv/mariadb:/var/lib/mysql"
networks:
- "database"

Expand All @@ -42,8 +40,6 @@ networks:
### HedgeDoc
```yaml
# /home/admin/hedgedoc/docker-compose.yml
version: '3.9'

services:
hedgedoc:
image: quay.io/hedgedoc/hedgedoc
Expand All @@ -62,7 +58,7 @@ networks:
```

### Nextcloud
Im Falle von Nextcloud wird der `nextcloud` Container neben dem
Im Falle von Nextcloud wird der `nextcloud` Container neben dem
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wird das online richtig angezeigt? Ist zwischen dem "dem" und dem "´database´" online ein Leerzeichen bzw eine Leerzeile?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

natürlich, newline ist ja auch ein white space char (\n, \t, space)
image

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nvm, bild zeigt falsche stelle aber richtigen Ausschnitt :D

`database` Netzwerk auch noch in das `default` Netzwerk aufgenommen.
Dieses Netzwerk ermöglicht die Kommunikation mit der in der gleichen
Containerdefinition existierenden Redis Instanz. Wird in einem Service
Expand All @@ -71,12 +67,10 @@ wird dieser in das `default` Netzwerk aufgenommen.

```yaml
# /home/admin/nextcloud/docker-compose.yml
version: '3.9'

services:
redis:
image: redis
restart: always
restart: always

nextcloud:
image: nextcloud
Expand Down
2 changes: 1 addition & 1 deletion docs/30_backup.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Während meiner Zeit als Administrator für Linux Systeme habe ich einige Skript
[DBM](https://github.com/felbinger/dbm)). Mittlerweile verwende ich für dateibasierte Sicherungen
hauptsächlich [borg backup](https://borgbackup.readthedocs.io/en/stable/).

Im Backup des Servers sollten zumindest die Containerdefinitionen `/home/admin`
Im Backup des Servers sollten zumindest die Containerdefinitionen `/home/admin`
sowie Daten der Container (`/srv`) enthalten sein. Sofern nginx als Reverse
Proxy genutzt wird, ist auch eine Sicherung von `/etc/nginx/sites-availabe/` sinnvoll.

Expand Down
20 changes: 9 additions & 11 deletions docs/31_monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,21 @@

Als Monitoring verwenden wir den Prometheus Stack (
[Prometheus](https://github.com/prometheus/prometheus)
+ [Alertmanager](https://github.com/prometheus/alertmanager)
+ [Pushgateway](https://github.com/prometheus/pushgateway)) mit
+ [Alertmanager](https://github.com/prometheus/alertmanager)
+ [Pushgateway](https://github.com/prometheus/pushgateway)) mit
[Grafana](https://grafana.com/) zur Visualisierung.

Zum Erfassen der Sensordaten verwenden wir neben
[node_exporter](https://github.com/prometheus/node_exporter) (generelle Hoststatistiken),
Zum Erfassen der Sensordaten verwenden wir neben
[node_exporter](https://github.com/prometheus/node_exporter) (generelle Hoststatistiken),
[blackbox_exporter](https://github.com/prometheus/blackbox_exporter) (ICMP & HTTP Tests) und
[cAdvisor](https://github.com/google/cadvisor) (für Docker) auch Anwendungsspezifische Prometheus
Exporter (nginx, mysql, postgresql, ssh, gitlab, grafana, ...). Viele von diesen sind in
[cAdvisor](https://github.com/google/cadvisor) (für Docker) auch Anwendungsspezifische Prometheus
Exporter (nginx, mysql, postgresql, ssh, gitlab, grafana, ...). Viele von diesen sind in
[dieser Liste](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters) zu finden.

Möchte man bereitgestellte Sensordaten einer Anwendung (die sich nicht im Prometheus-Format befinden)
verarbeiten, so kann man auch einen [eigenen Exporter schreiben](https://prometheus.io/docs/instrumenting/writing_exporters/).

```yaml
version: '3.9'

services:
grafana:
image: grafana/grafana
Expand Down Expand Up @@ -98,7 +96,7 @@ alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- targets:
- 'alertmanager:9093'

scrape_configs:
Expand All @@ -108,7 +106,7 @@ scrape_configs:

- job_name: 'blackbox_exporter_http'
metrics_path: '/probe'
params:
params:
module: [http_2xx]
static_configs:
- targets:
Expand All @@ -123,7 +121,7 @@ scrape_configs:

- job_name: 'blackbox_exporter_icmp'
metrics_path: '/probe'
params:
params:
module: [icmp]
static_configs:
- targets:
Expand Down
22 changes: 11 additions & 11 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
# Startseite

Diese Informationssammlung beschreibt das von mir eingesetzten Verfahren zum
Aufsetzen eines Linux Servers mit Anwendungen in Docker Containern. Hauptsächlich
handelt es sich in meinem Fall um webbasierte Anwendungen. Diese werden mit einem
Reverse Proxy ([Traefik](https://traefik.io/) als Docker Container, oder
Diese Informationssammlung beschreibt das von mir eingesetzten Verfahren zum
Aufsetzen eines Linux Servers mit Anwendungen in Docker Containern. Hauptsächlich
handelt es sich in meinem Fall um webbasierte Anwendungen. Diese werden mit einem
Reverse Proxy ([Traefik](https://traefik.io/) als Docker Container, oder
[nginx](https://www.nginx.com/) auf dem Host) erreichbar gemacht.

## Lokales HTTP Routing
Nachdem die Anfragen den Reverse Proxy auf unserem eigenen Host erreicht haben, werden
Nachdem die Anfragen den Reverse Proxy auf unserem eigenen Host erreicht haben, werden
diese je nach verwendetem Reverse Proxy über lokal gebundene Ports oder Docker Labels
an den Container weitergeleitet, der den Dienst bereitstellt.

## Verzeichnisstruktur
Jeder bereitgestellte Dienst erhält zwei Verzeichnisse:
1. Im Verzeichnis `/home/admin/<service>` liegt die Containerdefinition (`docker-compose.yml`),
Jeder bereitgestellte Dienst erhält zwei Verzeichnisse:
1. Im Verzeichnis `/home/admin/<service>` liegt die Containerdefinition (`docker-compose.yml`),
2. die Daten des Dienstes werden im Verzeichnis `/srv/<service>` gespeichert.

### Umgebungsvariablen
Schützenswerte Umgebungsvariablen (Passwörter, API Tokens, ...) werden nicht in der
Containerdefinition abgelegt, sondern in einer separaten `env`-Datei, um die Gefahr einer
Offenlegung dieser (z. B. beim Teilen des Bildschirms) zu reduzieren. Diese werden entsprechend
Schützenswerte Umgebungsvariablen (Passwörter, API Tokens, ...) werden nicht in der
Containerdefinition abgelegt, sondern in einer separaten `env`-Datei, um die Gefahr einer
Offenlegung dieser (z. B. beim Teilen des Bildschirms) zu reduzieren. Diese werden entsprechend
des Container-Namen im docker-compose Kontext benannt.

Im folgenden Beispiel-Dienst (`service: example`, `service_name: example_srv`) würde die
Im folgenden Beispiel-Dienst (`service: example`, `service_name: example_srv`) würde die
`env`-Datei unter dem Pfad `/home/admin/example/.example_srv.env` angelegt werden.
```yaml
# /home/admin/example/docker-compose.yml
Expand Down
4 changes: 0 additions & 4 deletions docs/installation/20_traefik.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

Zunächst wird die Containerdefinition im Verzeichnis `/home/admin/traefik/docker-compose.yml` angelegt:
```yaml
version: "3.9"

service:
traefik:
image: traefik:v2.9
Expand Down Expand Up @@ -94,5 +92,3 @@ networks:
{% include-markdown "../../includes/installation/traefik/docker-network.md" %}

{% include-markdown "../../includes/installation/traefik/new.md" %}


20 changes: 9 additions & 11 deletions docs/services/arma3.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# Arma 3 Server

Ein Arma 3 Gameserver ermöglicht es Arma 3 Spielern eine
gemeinsame Mission zu spielen. Das hier beschriebene Vorgehen
erweitert die Grundfunktionalität von LGSM (Linux Game Server
Ein Arma 3 Gameserver ermöglicht es Arma 3 Spielern eine
gemeinsame Mission zu spielen. Das hier beschriebene Vorgehen
erweitert die Grundfunktionalität von LGSM (Linux Game Server
Manager) um die benötigten Paketen für extdb3.

In diesem Beispiel wird ein Arma 3 Exile Mod Server aufgesetzt:

```yaml
version: '3.9'

services:
arma3:
image: ghcr.io/felbinger/arma3server
Expand All @@ -27,7 +25,7 @@ services:
- '2306:2306/udp' # BattleEye
volumes:
- '/srv/arma3:/home/linuxgsm'

mariadb:
image: mariadb
restart: always
Expand All @@ -46,7 +44,7 @@ mkdir /srv/arma3
chown 1000:1000 /srv/arma3
```

Anschließend können die Container gestartet werden (`docker compose up -d arma3`),
Anschließend können die Container gestartet werden (`docker compose up -d arma3`),
wodurch die Installation angestoßen wird.

Für Exile müssen nun einige Mods im Verzeichnis `/srv/arma3/serverfiles/` hinzugefügt werden:
Expand All @@ -56,8 +54,8 @@ cd /srv/arma3/serverfiles/
# download and extract mods
wget http://bravofoxtrotcompany.com/exile/@Exile-1.0.4.zip
wget http://exilemod.com/ExileServer-1.0.4a.zip
unzip @Exile-1.0.4.zip
unzip ExileServer-1.0.4a.zip
unzip @Exile-1.0.4.zip
unzip ExileServer-1.0.4a.zip
rm *.zip

# move the extracted files into the correct locations
Expand All @@ -74,7 +72,7 @@ sed -i 's/^Password = /Password = S3cr3T/' /srv/arma3/serverfiles/@ExileServer/e

# arma 3 server configs
mv /srv/arma3/serverfiles/@ExileServer/basic.cfg /srv/arma3/serverfiles/cfg/arma3server.network.cfg
mv /srv/arma3/serverfiles/@ExileServer/config.cfg /srv/arma3/serverfiles/cfg/arma3server.server.cfg
mv /srv/arma3/serverfiles/@ExileServer/config.cfg /srv/arma3/serverfiles/cfg/arma3server.server.cfg

# add mods to server startup configuration
cat <<_EOF > /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg
Expand All @@ -87,7 +85,7 @@ rm -r /srv/arma3/serverfiles/Arma\ 3\ Server/
rm -r /srv/arma3/serverfiles/MySQL
```

Nach einem Neustart der Container (`docker compose down && docker compose up -d`)
Nach einem Neustart der Container (`docker compose down && docker compose up -d`)
sollten diese geladen werden, falls Probleme auftreten können diese dem Serverlog
entnommen werden (`docker compose exec arma3 arma3server console`).

Expand Down
2 changes: 0 additions & 2 deletions docs/services/bookstack.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
Bookstack ist eine einfache Wiki- / KnowledgeBase Software.

```yaml
version: '3.9'

services:
mariadb:
image: mariadb
Expand Down
2 changes: 0 additions & 2 deletions docs/services/calibre.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
Calibre ist ein Programm zur Verarbeitung, Konvertierung und Verwaltung von E-Books.

```yaml
version: '3.9'

services:
calibre:
image: linuxserver/calibre-web
Expand Down
4 changes: 1 addition & 3 deletions docs/services/docky-onion.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

Um einen [tor hidden services](https://2019.www.torproject.org/docs/onion-services) mit docker zu verwenden, kann man
[docky-onion](https://github.com/use-to/docky-onion) verwenden, um jeden Dienst in [tor](https://www.torproject.org/)
erreichbar zu machen. Hier ein Beispiel: `docker-compose.yml` um [nginx](https://www.nginx.com/)
erreichbar zu machen. Hier ein Beispiel: `docker-compose.yml` um [nginx](https://www.nginx.com/)
als hidden service auf port `80` und `8080` zur verfügung zustellen:

```yaml
version: "3.9"

services:
docky-onion:
image: useto/docky-onion
Expand Down
6 changes: 2 additions & 4 deletions docs/services/gitea.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
# Gitea

Gitea ist eine webbasierte Git-Plattform, die es Benutzern ermöglicht, Code-Repositories zu hosten, zu verwalten und zu
Gitea ist eine webbasierte Git-Plattform, die es Benutzern ermöglicht, Code-Repositories zu hosten, zu verwalten und zu
teilen.

```yaml
version: '3.9'

services:
gitea:
image: gitea/gitea
image: gitea/gitea
restart: always
ports:
- "[::1]:8000:3000"
Expand Down
2 changes: 0 additions & 2 deletions docs/services/gitlab.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ GitLab ist eine Software für Code-Management und Versionierung. Außerdem biete
Zusammenarbeit in Teams wie Issue-Tracking, CI/CD-Pipelines und Wikis.

```yaml
version: '3.9'

services:
gitlab:
image: 'gitlab/gitlab-ce'
Expand Down
16 changes: 7 additions & 9 deletions docs/services/grafana.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
# Grafana

Grafana ist ein Dienst, welcher zur Datenvisualisierung und Überwachung verwendet wird.
Grafana ist ein Dienst, welcher zur Datenvisualisierung und Überwachung verwendet wird.

```yaml
version: '3.9'

services:
grafana:
image: grafana/grafana
Expand Down Expand Up @@ -89,17 +87,17 @@ Entfernen Sie anschließend die Kommentarzeichen vor den Volumes in der Containe
```


Anschließend können wir den Container starten und uns unter der
Anschließend können wir den Container starten und uns unter der
angegebene Domain mit den Zugangsdaten `admin`:`admin` anmelden.

Die nächsten Schritte sind die Einrichtung von Data Sources (z. B.
[InfluxDB](https://adminguide.pages.dev/services/influxdb/),
[Prometheus](https://adminguide.pages.dev/services/prometheus/),
[Loki](https://grafana.com/oss/loki/)) und das Hinzufügen/Erstellen von
Die nächsten Schritte sind die Einrichtung von Data Sources (z. B.
[InfluxDB](https://adminguide.pages.dev/services/influxdb/),
[Prometheus](https://adminguide.pages.dev/services/prometheus/),
[Loki](https://grafana.com/oss/loki/)) und das Hinzufügen/Erstellen von
Dashboards (z. B. [Node Exporter Full](https://grafana.com/grafana/dashboards/1860-node-exporter-full/))
([siehe: officially supported datasources](https://grafana.com/docs/grafana/latest/datasources/#supported-data-sources)).

Über die Umgebungsvariable `GF_INSTALL_PLUGINS` kann eine Liste von
Über die Umgebungsvariable `GF_INSTALL_PLUGINS` kann eine Liste von
Plugins angegeben werden, welche für die Grafana Instanz aktiviert werden.

### LDAP Auth
Expand Down
2 changes: 0 additions & 2 deletions docs/services/guacamole.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ Guacamole ist ein Webanwendungsdienst, welcher es ermöglicht, über einen Webbr
zuzugreifen, ohne dass spezielle Client-Software installiert werden muss.

```yaml
version: '3.9'

services:
postgres:
image: postgres
Expand Down
2 changes: 0 additions & 2 deletions docs/services/hedgedoc.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ HedgeDoc ist eine Open-Source-Plattform für die kollaborative Bearbeitung von D
Docs oder Microsoft Office Online.

```yaml
version: '3.9'

services:
postgres:
image: postgres
Expand Down
2 changes: 0 additions & 2 deletions docs/services/influxdb.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ InfluxDB ist eine Open-Source-Zeitreihendatenbank, die speziell für die Speiche
Zeitreihendaten optimiert ist.

```yaml
version: '3.9'

services:
# shell: docker-compose exec influxdb influx -precision rfc3339
influxdb:
Expand Down
4 changes: 2 additions & 2 deletions docs/services/jitsi.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ Passen Sie die `.env` Datei nach Ihren Wünschen an und richten die Port-Weiterl
```

## Jitsi Konfiguration
Da bei jedem Start des Containers die Datei `/srv/jitsi/web/config.js`
von den Umgebungsvariablen (`.env`) generiert wird, sind Änderungen
Da bei jedem Start des Containers die Datei `/srv/jitsi/web/config.js`
von den Umgebungsvariablen (`.env`) generiert wird, sind Änderungen
an dieser Datei nicht Zielführend. Die Datei `/srv/jitsi/web/interface_config.js`
kann angepasst werden, um Beispielsweise das Wasserzeichen von Jitsi zu entfernen.

Expand Down
2 changes: 0 additions & 2 deletions docs/services/jupyter.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ Jupyter Notebook ist eine interaktive Entwicklungsumgebung, die es Benutzern erm
auszuführen, um interaktive Datenanalysen und Visualisierungen durchzuführen.

```yaml
version: '3.9'

services:
jupyter:
image: jupyter/scipy-notebook
Expand Down
Loading
Loading