Server Internes: Unterschied zwischen den Versionen
Creme (Diskussion | Beiträge) |
Creme (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
[[Category:Dokumentation]][[Category:Server]] | [[Category:Dokumentation]][[Category:Server]] | ||
− | + | == Allgemeines == | |
+ | [https://freifunk-dresden.github.io/ffdd-server/ Projektseite] | ||
− | == Git-Repository == | + | [https://github.com/Freifunk-Dresden/ffdd-server/releases Releases] - [https://github.com/Freifunk-Dresden/ffdd-server/tree/T_RELEASE_latest latest Stable Release] - [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/CHANGELOG.md CHANGELOG] - [https://github.com/Freifunk-Dresden/ffdd-server/issues Issues] |
− | Die aktuellste ''ffdd-server'' Version sowie Release Informationen findest du direkt auf der | + | |
+ | [https://www.debian.org/security/ Debian Security Informations] - [https://docs.saltstack.com/en/latest/ Salt Dokumentation] | ||
+ | |||
+ | === Git-Repository === | ||
+ | Die aktuellste ''ffdd-server'' Version sowie Release Informationen findest du direkt auf der Projektseite. | ||
https://github.com/Freifunk-Dresden/ffdd-server | https://github.com/Freifunk-Dresden/ffdd-server | ||
== Bereitstellung / Initialisierung == | == Bereitstellung / Initialisierung == | ||
− | Die Initialisierung des Gateway-Server erfolgt über das ''[https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/init_server.sh init_server.sh]'' Script. Dieses stellt sicher dass der Server | + | Die Initialisierung des Gateway-Server erfolgt über das ''[https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/init_server.sh init_server.sh]'' Script. Dieses stellt sicher dass der Server auch den Grundlegenden Anforderungen entspricht und die Basis Konfiguration für Salt vorhanden ist.<br> |
Wichtige Punkte sind hier: | Wichtige Punkte sind hier: | ||
Zeile 19: | Zeile 24: | ||
* Bereitstellung des Repositoryies unter <code>/srv/ffdd-server/</code> | * Bereitstellung des Repositoryies unter <code>/srv/ffdd-server/</code> | ||
− | [https://docs.saltstack.com/en/latest/ Salt] | + | Im init_server.sh Script wird der "''salt-call state.highstate --local''" Befehl aufgerufen. Damit übernimmt [https://docs.saltstack.com/en/latest/ Salt] nun die weitere Initialisierung des Gateway-Server und wird die von uns definierten Packet und Konfiguratonen wie gewünscht auf das System spielen. |
− | |||
− | |||
== Betrieb / Operating == | == Betrieb / Operating == | ||
Zeile 38: | Zeile 41: | ||
einen Unterordner ( ''..freifunk/base/AUFGABE/'' ) welcher eine ''init.sls'' enthält. | einen Unterordner ( ''..freifunk/base/AUFGABE/'' ) welcher eine ''init.sls'' enthält. | ||
− | + | Des weiteren gibt es noch ein Konfigurationfile, die [https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/salt/freifunk/base/config.jinja config.jinja], welche dynamische Variablen enthält. Diese Variablen können in den einzelnen "Aufgaben-Scripten" einfach eingebunden und genutzt werden. | |
=== Salt - Aufgaben (''[https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/salt/freifunk/base/top.sls top.sls]'') === | === Salt - Aufgaben (''[https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/salt/freifunk/base/top.sls top.sls]'') === | ||
+ | Über SLS-Dateien (Salt State), die im YAML-Format verfasst werden, legen wir die Konfiguration, zu installierende Packete und einiges mehr für FFDD-Gateway-Server fest. | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/apt apt] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/apt apt] ==== | ||
− | + | Das Kommandline Interface für die Paketverwaltung. Hier werden die aktuellen 'source.list' für die Paketverwaltung hinterlegt.<br> | |
+ | Weiterhin definieren wir in der 'apt.conf.d' dass einmal am Tag ein Packagelist-Update sowie ein Security-Update gemacht werden soll.<br> | ||
+ | Sollten Updates einen Neustartet benötigen so wird dieser um 4:30 Uhr (Serverzeit) durchgeführt. | ||
+ | |||
+ | Ebenso hinterlegen wir einen Cronjob der prüft ob siche eine alte Kernel-Version auf dem Server befindet welche entfernt werden kann. | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/remove_pkg.sls remove_pkg] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/remove_pkg.sls remove_pkg] ==== | ||
− | Entfernt alle Pakete welche die Funktionalität des Servers einschränken könnten. | + | Entfernt alle überflüssigen Pakete welche die Funktionalität des Servers einschränken könnten. |
+ | |||
+ | ==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/cleanup_old_env.sls cleanup_old_env] ==== | ||
+ | 'cleanup_old_env' wird für die Bereinigung alter und Überflüssiger Konfigurations-Versionen genutzt. | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/install_pkg.sls install_pkg] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/install_pkg.sls install_pkg] ==== | ||
Zeile 64: | Zeile 75: | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/bash bash] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/bash bash] ==== | ||
− | Hinterlegt die Standart Konfiguration für "bash". | + | Hinterlegt die Standart Konfiguration für die default Shell "bash". |
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/inputrc inputrc] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/inputrc inputrc] ==== | ||
Zeile 70: | Zeile 81: | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/locales.sls locales] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/locales.sls locales] ==== | ||
− | Konfiguriert die | + | Konfiguriert die Ausgabe-Sprache des Servers. |
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/timezone.sls timezone] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/timezone.sls timezone] ==== | ||
− | Konfiguriert die | + | Konfiguriert die Zeitzone nach der die Uhr des Servers gestellt wird. |
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/ntp ntp] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/ntp ntp] ==== | ||
Zeile 79: | Zeile 90: | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/kernel kernel] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/kernel kernel] ==== | ||
− | + | ==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/kernel/sysctl.sls kernel.sysctl] ==== | |
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/systemd systemd] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/systemd systemd] ==== | ||
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/sudo sudo] ==== | ==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/sudo sudo] ==== | ||
Zeile 95: | Zeile 106: | ||
===== nvram Konfigurtations Optionen ===== | ===== nvram Konfigurtations Optionen ===== | ||
− | Hier ist eine nvram.conf mit allen verfügbaren Optionen: | + | Hier ist eine nvram.conf Beispiel mit allen verfügbaren Optionen: |
# install_dir !Please do not touch! | # install_dir !Please do not touch! | ||
Zeile 166: | Zeile 177: | ||
== Development == | == Development == | ||
− | [https://github.com/Freifunk-Dresden/ffdd-server#development | + | [https://github.com/Freifunk-Dresden/ffdd-server#development siehe Github README.md]. |
== Wichig für Communitiy Forks == | == Wichig für Communitiy Forks == | ||
− | [https://github.com/Freifunk-Dresden/ffdd-server#wichig-f%C3%BCr-communitiy-forks | + | '''HINWEIS:'''<br> |
+ | Der FFDD-Server ist auf Freifunk Dresden zugeschnitten. Soll dieses als Basis für andere Freifunk Communities | ||
+ | verwendet werden, müssen Anpassungen gemacht werden. Bitte ein [https://github.com/Freifunk-Dresden/ffdd-server/issues Issue] im Github erstellen. | ||
+ | |||
+ | - Es empfielt sich dringend für andere Communities, dieses Repository zu forken, da hier generelle Umstellungen zusammen mit der passenden Firmware für Dresdener Anforderungen erfolgen.<br/> | ||
+ | Communities sollten dann auf das geforkte Repository (gilt auch für das "[https://github.com/Freifunk-Dresden/firmware-freifunk-dresden firmware]" Repository) aufbauen. Jede Community trägt die alleinige Verantwortung und Kontrolle über ihr Netz und sollte eigene Erfahrene Leute/Admins bereitstellen. Hilfe von Dresden ist aber jederzeit möglich, aber Administrative Aufgaben oder Garantien werden nicht übernommen, da das einfach den organisatorischen Aufwand sprengt.<br/> | ||
+ | |||
+ | Weiterführendes findest du in der Github [https://github.com/Freifunk-Dresden/ffdd-server#wichig-f%C3%BCr-communitiy-forks README.md]. |
Version vom 3. November 2019, 10:48 Uhr
Inhaltsverzeichnis
- 1 Allgemeines
- 2 Bereitstellung / Initialisierung
- 3 Betrieb / Operating
- 3.1 Salt Basics
- 3.2 Salt - Aufgaben (top.sls)
- 3.2.1 apt
- 3.2.2 remove_pkg
- 3.2.3 cleanup_old_env
- 3.2.4 install_pkg
- 3.2.5 tools
- 3.2.6 root
- 3.2.7 users
- 3.2.8 bash
- 3.2.9 inputrc
- 3.2.10 locales
- 3.2.11 timezone
- 3.2.12 ntp
- 3.2.13 kernel
- 3.2.14 kernel.sysctl
- 3.2.15 systemd
- 3.2.16 sudo
- 3.2.17 rsyslog
- 3.2.18 logrotate
- 3.2.19 cron
- 3.2.20 devel
- 3.2.21 bmxd
- 3.2.22 fastd
- 3.2.23 salt-minion
- 3.2.24 ddmesh
- 3.2.25 nvram
- 3.2.26 iproute2
- 3.2.27 network
- 3.2.28 iptables
- 3.2.29 conntrack
- 3.2.30 fail2ban
- 3.2.31 ssh
- 3.2.32 openvpn
- 3.2.33 wireguard
- 3.2.34 bind
- 3.2.35 iperf3
- 3.2.36 apache2
- 3.2.37 php
- 3.2.38 letsencrypt
- 3.2.39 monitorix
- 3.2.40 vnstat
- 4 Development
- 5 Wichig für Communitiy Forks
Allgemeines
Releases - latest Stable Release - CHANGELOG - Issues
Debian Security Informations - Salt Dokumentation
Git-Repository
Die aktuellste ffdd-server Version sowie Release Informationen findest du direkt auf der Projektseite.
https://github.com/Freifunk-Dresden/ffdd-server
Bereitstellung / Initialisierung
Die Initialisierung des Gateway-Server erfolgt über das init_server.sh Script. Dieses stellt sicher dass der Server auch den Grundlegenden Anforderungen entspricht und die Basis Konfiguration für Salt vorhanden ist.
Wichtige Punkte sind hier:
- Konfiguration:
- /etc/nvram.conf (Enthält alle Gateway Spezifische Informationen)
- /etc/salt/minion.d/freifunk-masterless.conf (Definiert das Arbeitsverzeichnis für Salt - /srv/ffdd-server/salt/freifunk/base/ )
- Pakete:
- git - für die Bereitstellung und Aktualisierung des Repositories
- salt-minion (Salt) - Automatisierung 'Masterless-Orchestration-Management'
- Bereitstellung des Repositoryies unter
/srv/ffdd-server/
Im init_server.sh Script wird der "salt-call state.highstate --local" Befehl aufgerufen. Damit übernimmt Salt nun die weitere Initialisierung des Gateway-Server und wird die von uns definierten Packet und Konfiguratonen wie gewünscht auf das System spielen.
Betrieb / Operating
Salt Basics
Salt benötigt seine Konfiguration ( /etc/salt/minion.d/freifunk-masterless.conf )
file_client: local file_roots: base: - /srv/ffdd-server/salt/freifunk/base
und das Arbeitsverzeichnis ( /srv/ffdd-server/salt/freifunk/base/ ) welches einen "Ablaufplan" die top.sls bereitstellt.
Alle hier definierten Aufgaben bekommen je nach Umfang und Komplexität im Arbeitsverzeichnis entweder:
eine Konfigurationsdatei ( ../freifunk/base/AUFGABE.sls )
oder
einen Unterordner ( ..freifunk/base/AUFGABE/ ) welcher eine init.sls enthält.
Des weiteren gibt es noch ein Konfigurationfile, die config.jinja, welche dynamische Variablen enthält. Diese Variablen können in den einzelnen "Aufgaben-Scripten" einfach eingebunden und genutzt werden.
Salt - Aufgaben (top.sls)
Über SLS-Dateien (Salt State), die im YAML-Format verfasst werden, legen wir die Konfiguration, zu installierende Packete und einiges mehr für FFDD-Gateway-Server fest.
apt
Das Kommandline Interface für die Paketverwaltung. Hier werden die aktuellen 'source.list' für die Paketverwaltung hinterlegt.
Weiterhin definieren wir in der 'apt.conf.d' dass einmal am Tag ein Packagelist-Update sowie ein Security-Update gemacht werden soll.
Sollten Updates einen Neustartet benötigen so wird dieser um 4:30 Uhr (Serverzeit) durchgeführt.
Ebenso hinterlegen wir einen Cronjob der prüft ob siche eine alte Kernel-Version auf dem Server befindet welche entfernt werden kann.
remove_pkg
Entfernt alle überflüssigen Pakete welche die Funktionalität des Servers einschränken könnten.
cleanup_old_env
'cleanup_old_env' wird für die Bereinigung alter und Überflüssiger Konfigurations-Versionen genutzt.
install_pkg
Installiert alle für den Server nötigen Pakete welche keine zusätzliche Konfiguration benötigen.
tools
Stellt Programme und Verknüpfungen als "Helferlein" für die Unterstützung des Administrators bereit.
root
Hinterlegt für den User 'root' eine .bashrc Konfiguration für die default shell: bash.
In dieser werden unter anderem aliases (Kürzel) bereitgestellt Kommandos abzukürzen.
Es gibt die Möglichkeit auch eigene aliases in der /root/.bash_user_aliases
zu definieren. Diese wird in '/root/.bash_aliases' eingebunden und automatisch mitgeladen.
users
Stellt sicher das alle Benutzer für den Betrieb mit den richtigen Berechtigungen vorhanden sind.
bash
Hinterlegt die Standart Konfiguration für die default Shell "bash".
inputrc
Hinterlegt die Standart Konfiguration für das Console-Verhalten.
locales
Konfiguriert die Ausgabe-Sprache des Servers.
timezone
Konfiguriert die Zeitzone nach der die Uhr des Servers gestellt wird.
ntp
Stellt sicher dass die Serverzeit immer aktuell ist.
kernel
kernel.sysctl
systemd
sudo
rsyslog
logrotate
cron
devel
bmxd
fastd
salt-minion
ddmesh
nvram
Die /etc/nvram.conf
enthält alle Gateway Spezifische Informationen.
nvram Konfigurtations Optionen
Hier ist eine nvram.conf Beispiel mit allen verfügbaren Optionen:
# install_dir !Please do not touch! install_dir=/srv/ffdd-server # set autoupdate (0=off 1=on) autoupdate=1 # Git-Branch branch=T_RELEASE_latest # Register key must be uniq. See http://wiki.freifunk-dresden.de/index.php/Technische_Information#Berechnung_IP_Adressen ddmesh_node= ddmesh_registerkey= # If set to 1, vserver will not announce itself as gateway. normally you do not need to change this. ddmesh_disable_gateway=0 # used by webpage and /etc/issue.net servername=VPN Server <number> #vserver network interface; this depends on vserver provider (hoster) ifname=eth0 # this is the secret key which is used to decrypt secured backbone connection # the corresponding public key should be given to the peers, so those can encrpyt/connect to this server # To generate the keys: /etc/init.d/S53backbone-fastd genkey fastd_secret= fastd_public= # to accept all in comming connection, set this to 0 or remove this line. # When set to 1, only already known connections are accepted. this may be used # to prevent overloading a server. fastd_restrict=0 # SSH Password-Authentification # To disable tunneled clear text passwords (0=off 1=on) ssh_pwauth=1 # BMXD #bmxd_prefered_gateway= # gps coordinates. see /var/www/sysinfo.json # this functionality is not part of Basic Vserver installation, as this service should only run on one or an backup server. gps_latitude=51.033865 gps_longitude=13.653252 gps_altitude=0 city=Dresden contact_name= contact_location=your Hosting Provider contact_email= contact_note=VPN X
iproute2
network
iptables
conntrack
fail2ban
ssh
openvpn
wireguard
bind
iperf3
apache2
php
letsencrypt
monitorix
vnstat
Development
Wichig für Communitiy Forks
HINWEIS:
Der FFDD-Server ist auf Freifunk Dresden zugeschnitten. Soll dieses als Basis für andere Freifunk Communities
verwendet werden, müssen Anpassungen gemacht werden. Bitte ein Issue im Github erstellen.
- Es empfielt sich dringend für andere Communities, dieses Repository zu forken, da hier generelle Umstellungen zusammen mit der passenden Firmware für Dresdener Anforderungen erfolgen.
Communities sollten dann auf das geforkte Repository (gilt auch für das "firmware" Repository) aufbauen. Jede Community trägt die alleinige Verantwortung und Kontrolle über ihr Netz und sollte eigene Erfahrene Leute/Admins bereitstellen. Hilfe von Dresden ist aber jederzeit möglich, aber Administrative Aufgaben oder Garantien werden nicht übernommen, da das einfach den organisatorischen Aufwand sprengt.
Weiterführendes findest du in der Github README.md.