Server Internes: Unterschied zwischen den Versionen

Aus Freifunk Dresden - Anwender-Wiki
Zur Navigation springen Zur Suche springen
Zeile 2: Zeile 2:
 
<big>'''IN BEARBEITUNG!!!'''</big>
 
<big>'''IN BEARBEITUNG!!!'''</big>
  
 
+
== Git-Repository ==
== Git Repository ==
+
Die aktuellste ''ffdd-server'' Version sowie Release Informationen findest du direkt auf der [https://freifunk-dresden.github.io/ffdd-server/ 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 auf dem aktuellen Stand ist und alle Abhängigkeiten sowie Konfigurationen vorhanden sind.<br>
Die Initialisierung des Gateway-Server erfolgt über die ''[https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/init_server.sh init_server.sh]'' welches sicherstellt dass der Server auf dem aktuellen Stand ist und alle Abhängigkeiten vorhanden sind.<br>
 
  
 
Wichtige Punkte sind hier:
 
Wichtige Punkte sind hier:
* User check
 
 
* Konfiguration:
 
* Konfiguration:
 
** /etc/nvram.conf ''(Enthält alle Gateway Spezifische Informationen)''
 
** /etc/nvram.conf ''(Enthält alle Gateway Spezifische Informationen)''
Zeile 18: Zeile 16:
 
* Pakete:
 
* Pakete:
 
** git - für die Bereitstellung und Aktualisierung des Repositories
 
** git - für die Bereitstellung und Aktualisierung des Repositories
** salt-minion (Salt) - Automatisierung 'Masterless-Orchestration-Management' für Konfigurationen und Pakete
+
** salt-minion (Salt) - Automatisierung 'Masterless-Orchestration-Management'
* Bereitstellung des Repositoryies unter /srv/ffdd-server/
+
* Bereitstellung des Repositoryies unter <code>/srv/ffdd-server/</code>
  
[https://docs.saltstack.com/en/latest/ Salt] übernimmt nun die weitere Initialisierung des Gateway-Server. Desweiteren wird Salt mit dem "''salt-call state.highstate --local''" Befehl im weiteren Betrieb dauerhaft verwendet um sicherzustellen das alle Konfigurationen wie gewünscht korrekt vorhanden sind und alle Services funktionieren. Dies geschieht per Aufruf über einen Cronjob (siehe XXXXXX).
+
[https://docs.saltstack.com/en/latest/ Salt] übernimmt nun die weitere Initialisierung des Gateway-Server.<br>
 +
Im init_server.sh Script wird der "''salt-call state.highstate --local''" Befehl aufgerufen um sicherzustellen das alle Konfigurationen, Paket,.. wie gewünscht auf dem Server bereitgestellt werden.<br>
 +
Dies geschieht im laufenden Betrieb auch regelmäßig über einen Cronjob (siehe: [[Server_Internes#cron]]).
  
 
== Betrieb / Operating ==
 
== Betrieb / Operating ==
 
+
=== Salt Basics ===
=== Salt ===
 
 
 
 
Salt benötigt seine Konfiguration ( ''/etc/salt/minion.d/freifunk-masterless.conf'' )
 
Salt benötigt seine Konfiguration ( ''/etc/salt/minion.d/freifunk-masterless.conf'' )
 
  file_client: local
 
  file_client: local
Zeile 40: Zeile 38:
 
einen Unterordner ( ''..freifunk/base/AUFGABE/'' ) welcher eine ''init.sls'' enthält.
 
einen Unterordner ( ''..freifunk/base/AUFGABE/'' ) welcher eine ''init.sls'' enthält.
  
Desweiteren 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 für dynamische Variablen die in den "Aufgaben-Scripten" genutzt wird.
+
Desweiteren 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 (top.sls) ===
+
=== Salt - Aufgaben (''[https://github.com/Freifunk-Dresden/ffdd-server/blob/T_RELEASE_latest/salt/freifunk/base/top.sls top.sls]'') ===
==== clear_oldenv ====
 
Säubert ältere Pakete, Konfigurationen, Dateien und Verzeichnisse ältere Gateway-Server Versionen.
 
  
==== apt ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/apt apt] ====
 
Konfiguriert benötigte Pakete um das Betriebssystem des Gateway-Server aktuell zuhalten.
 
Konfiguriert benötigte Pakete um das Betriebssystem des Gateway-Server aktuell zuhalten.
  
==== 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 Pakete welche die Funktionalität des Servers einschränken könnten.
  
==== install_pkg ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/install_pkg.sls install_pkg] ====
 
Installiert alle für den Server nötigen Pakete welche keine zusätzliche Konfiguration benötigen.
 
Installiert alle für den Server nötigen Pakete welche keine zusätzliche Konfiguration benötigen.
  
==== tools ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/tools tools] ====
Stellt Programme und Verknüpfungen für die Unterstützung des Administrators bereit.
+
Stellt Programme und Verknüpfungen als "Helferlein" für die Unterstützung des Administrators bereit.
 +
 
 +
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/root root] ====
 +
Hinterlegt für den User 'root' eine .bashrc Konfiguration für die default shell: bash.<br>
 +
In dieser werden unter anderem aliases (Kürzel) bereitgestellt Kommandos abzukürzen.
  
==== root ====
+
Es gibt die Möglichkeit auch eigene aliases in der <code>/root/.bash_user_aliases</code> zu definieren. Diese wird in '/root/.bash_aliases' eingebunden und automatisch mitgeladen.
Hinterlegt die aktuelle root user .bashrc .
 
  
==== users ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/users users] ====
 
Stellt sicher das alle Benutzer für den Betrieb mit den richtigen Berechtigungen vorhanden sind.
 
Stellt sicher das alle Benutzer für den Betrieb mit den richtigen Berechtigungen vorhanden sind.
  
==== 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 "bash".
  
==== vim ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/inputrc inputrc] ====
Hinterlegt die Standart Konfiguration für "vim".
+
Hinterlegt die Standart Konfiguration für das Console-Verhalten.
 
 
==== inputrc ====
 
  
==== locales ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/locales.sls locales] ====
 
Konfiguriert die Server-Ausgabe-Sprache.
 
Konfiguriert die Server-Ausgabe-Sprache.
  
==== timezone ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/timezone.sls timezone] ====
 
Konfiguriert die Serverzeit.
 
Konfiguriert die Serverzeit.
  
==== ntp ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/ntp ntp] ====
 
Stellt sicher dass die Serverzeit immer aktuell ist.
 
Stellt sicher dass die Serverzeit immer aktuell ist.
  
==== cron ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/kernel kernel] ====
==== sysctl ====
+
===== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/kernel/sysctl.sls kernel.sysctl] =====
==== systemd ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/systemd systemd] ====
==== sudo ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/sudo sudo] ====
==== rsyslog ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/rsyslog rsyslog] ====
==== logrotate ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/logrotate logrotate] ====
==== devel ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/cron cron] ====
==== bmxd ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/devel.sls devel] ====
==== fastd ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/bmxd bmxd] ====
==== salt-minion ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/fastd fastd] ====
==== ddmesh ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/salt-minion salt-minion] ====
==== nvram ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/ddmesh ddmesh] ====
 +
 
 +
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/nvram nvram] ====
 +
Die [https://github.com/Freifunk-Dresden/ffdd-server/blob/master/salt/freifunk/base/nvram/etc/nvram.conf <code>/etc/nvram.conf</code>] enthält alle Gateway Spezifische Informationen.
  
 
===== nvram Konfigurtations Optionen =====
 
===== nvram Konfigurtations Optionen =====
 +
Hier ist eine nvram.conf mit allen verfügbaren Optionen:
  
  # install_dir !Please do not touch!
+
# install_dir !Please do not touch!
  install_dir=/srv/ffdd-server
+
install_dir=/srv/ffdd-server
 
+
  # set autoupdate (0=off 1=on)
+
# set autoupdate (0=off 1=on)
  autoupdate=1
+
autoupdate=1
 
+
  # Git-Branch
+
# Git-Branch
  branch=T_RELEASE_latest
+
branch=T_RELEASE_latest
 
+
  # Register key must be uniq. See http://wiki.freifunk-dresden.de/index.php/Technische_Information#Berechnung_IP_Adressen
+
# Register key must be uniq. See http://wiki.freifunk-dresden.de/index.php/Technische_Information#Berechnung_IP_Adressen
  ddmesh_node=
+
ddmesh_node=
  ddmesh_registerkey=
+
ddmesh_registerkey=
 
+
  # If set to 1, vserver will not announce itself as gateway. normally you do not need to change this.
+
# If set to 1, vserver will not announce itself as gateway. normally you do not need to change this.
  ddmesh_disable_gateway=0
+
ddmesh_disable_gateway=0
 
+
  # used by webpage and /etc/issue.net
+
# used by webpage and /etc/issue.net
  servername=VPN Server <number>
+
servername=VPN Server <number>
 
+
  #vserver network interface; this depends on vserver provider (hoster)
+
#vserver network interface; this depends on vserver provider (hoster)
  ifname=eth0
+
ifname=eth0
 
+
  # this is the secret key which is used to decrypt secured backbone connection
+
# 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
+
# 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
+
# To generate the keys: /etc/init.d/S53backbone-fastd genkey
  fastd_secret=
+
fastd_secret=
  fastd_public=
+
fastd_public=
 
+
  # to accept all in comming connection, set this to 0 or remove this line.
+
# 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
+
# When set to 1, only already known connections are accepted. this may be used
  # to prevent overloading a server.
+
# to prevent overloading a server.
  fastd_restrict=0
+
fastd_restrict=0
 
+
  # SSH Password-Authentification
+
# SSH Password-Authentification
  # To disable tunneled clear text passwords (0=off 1=on)
+
# To disable tunneled clear text passwords (0=off 1=on)
  ssh_pwauth=1
+
ssh_pwauth=1
 
+
  # BMXD
+
# BMXD
  #bmxd_prefered_gateway=
+
#bmxd_prefered_gateway=
 
+
  # gps coordinates. see /var/www/sysinfo.json
+
# 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.
+
# 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_latitude=51.033865
  gps_longitude=13.653252
+
gps_longitude=13.653252
  gps_altitude=0
+
gps_altitude=0
  city=Dresden
+
city=Dresden
 
+
  contact_name=
+
contact_name=
  contact_location=your Hosting Provider
+
contact_location=your Hosting Provider
  contact_email=
+
contact_email=
  contact_note=VPN X
+
contact_note=VPN X
  
==== iproute2 ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/iproute2 iproute2] ====
==== network ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/network network] ====
==== iptables ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/iptables iptables] ====
==== conntrack ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/conntrack conntrack] ====
==== fail2ban ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/fail2ban fail2ban] ====
==== ssh ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/ssh ssh] ====
==== openvpn ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/openvpn openvpn] ====
==== bind ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/wireguard wireguard] ====
==== iperf3 ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/bind bind] ====
==== apache2 ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/iperf3 iperf3] ====
==== php ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/apache2 apache2] ====
==== letsencrypt ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/php php] ====
==== monitorix ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/letsencrypt letsencrypt] ====
==== vnstat ====
+
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/monitorix monitorix] ====
 +
==== [https://github.com/Freifunk-Dresden/ffdd-server/tree/master/salt/freifunk/base/vnstat vnstat] ====

Version vom 2. November 2019, 13:48 Uhr

IN BEARBEITUNG!!!

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 auf dem aktuellen Stand ist und alle Abhängigkeiten sowie Konfigurationen vorhanden sind.

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/

Salt übernimmt nun die weitere Initialisierung des Gateway-Server.
Im init_server.sh Script wird der "salt-call state.highstate --local" Befehl aufgerufen um sicherzustellen das alle Konfigurationen, Paket,.. wie gewünscht auf dem Server bereitgestellt werden.
Dies geschieht im laufenden Betrieb auch regelmäßig über einen Cronjob (siehe: Server_Internes#cron).

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.

Desweiteren 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)

apt

Konfiguriert benötigte Pakete um das Betriebssystem des Gateway-Server aktuell zuhalten.

remove_pkg

Entfernt alle Pakete welche die Funktionalität des Servers einschränken könnten.

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 "bash".

inputrc

Hinterlegt die Standart Konfiguration für das Console-Verhalten.

locales

Konfiguriert die Server-Ausgabe-Sprache.

timezone

Konfiguriert die Serverzeit.

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 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