====== Administration web====== Alles die Administration von [[freifunk:server:web]] betreffend. Es ist das Paket [[http://packages.debian.org/wheezy/etckeeper|etckeeper]] mit Git als Backend installiert um den Vorteil einer Versionsverwaltung für ''/etc'' zu haben. Nach administrativen Aufgaben einfach kurz sudo etckeeper commit und kurz eine Commit Message eingeben. Das Repository ist ausschließlich lokal vorhanden und wird nicht nach draußen gepusht! ===== Administratoren ===== (aka Nutzer mit sudo Rechten) * [[user:tux]] * nold * kwasir ===== Setup ===== ==== Netzwerk ==== === Docker-Netzwerk doc0 === docker network create --driver=bridge --ipv6 --subnet=fda9:26e:5805:bab1:aeb:d0c0::/96 doc0 ===== Installierte Dienste ===== * Docker * Grafana * Prometheus * MariaDB Backend Wordpress * Wordpress * InfluxDB * Yanic * DNS * Node Exporter * Meshviewer Server ===== Dienste ===== ==== Dienste ==== ^Query Location ^Description ^ |http://web.md.freifunk.net:8010/data/meshviewer.json |Meshviewer nodes.json v2 | |http://web.md.freifunk.net:8010/#!/de/map |Meshviewer Map| ==== Yanic Konfiguration ==== Yanic dient der erfassung der Nodes im Batman und Babel Netz Auf jeden Gateways läuft eine Yanic Instanz die Ihre information zur WEB schickt Hier läuft der zentrale Yanic Service der die Daten für den meshviewer bereitstellt. {{ :freifunk:server:yanic.png?400 |}} Der Zentrale Yanic legt seine Daten einmal as JSON für den Meshviewer ab und zusätzich in einer influxDB ==== Docker Compose 4 all Service ==== Compose File um alle Services für Freifunk zu starten. * ListenpunktGrafana * Prometheus * InfluxDB * Yanic * Meshviewer Server Location /opt/ File docker-compose.yaml Config File unter /opt/... version: '3.0' volumes: prometheus-storage: external: true grafana-storage: external: true networks: front-tier: back-tier: services: prometheus: image: prom/prometheus:latest container_name: ffmd_prometheus volumes: - /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-storage:/prometheus ports: - 9090:9090 restart: unless-stopped networks: - back-tier grafana: image: grafana/grafana:latest container_name: ffmd_grafana depends_on: - prometheus - influxdb ports: - 3000:3000 environment: - GF_INSTALL_PLUGINS:grafana-piechart-panel volumes: - grafana-storage:/var/lib/grafana - /opt/grafana/grafana.ini:/etc/grafana/grafana.ini restart: unless-stopped networks: - front-tier - back-tier yanic: image: ffmd/yanic:latest depends_on: - influxdb network_mode: "host" restart: unless-stopped container_name: ffmd_yanic volumes: - /opt/yanic/config.toml:/etc/yanic.conf meshviewer: image: ffmd/meshviewer-server:latest container_name: ffmd_meshviewer_server restart: unless-stopped depends_on: - yanic ports: - 8010:80 environment: MeshviewerRepo: "https://github.com/FreifunkMD/Meshviewer --branch ffmd" LoopHookCMD: "wget http://5.252.224.201:8080/data/meshviewer.json -O /var/www/html/data/meshviewer.json" networks: - back-tier - front-tier influxdb: environment: INFLUXDB_ADMIN_USER: user INFLUXDB_ADMIN_PASSWORD: *Ü**** INFLUXDB_USER: User INFLUXDB_USER_PASSWORD: *Ü**** INFLUXDB_DB: babelstats INFLUXDB_READ_USER: Reader INFLUXDB_READ_USER_PASSWORD: *Ü**** image: influxdb:latest container_name: ffmd_influxdb volumes: - /opt/influxdb/data/:/var/lib/influxdb - /opt/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro restart: unless-stopped networks: - back-tier - front-tier ports: - "8086:8086" ==== Meshviewer ==== siehe Compose ==== Grafana ==== === Install === docker pull grafana/grafana docker volume create grafana-storage === RUN === Siehe compose ==== Prometheus ==== === Install === docker volume create prometheus-storage docker pull prom/prometheus === Config === === Start === Sieh Compose ==== DNS ==== Der DNS verwaltet die Zone ffmd., für das Docker-Netz. Es ist außerdem eine Weiterleitung auf ns1.netz39.de eingerichtet, der die Zone md.freifunk.net. verwaltet. Setup des Docker-Containers: docker run -d --restart always --ip6 fda9:26e:5805:bab1:aeb:d0c0::53 --network doc0 --name bind9-ffmd ffmd/bind9-ffmd * Das Image wird auf Docker Hub verwaltet: [[https://hub.docker.com/repository/docker/ffmd/bind9-ffmd/|ffmd/bind9-ffmd]] * Docker-Image auf Github: [[https://github.com/FreifunkMD/ffmd_bind9|FreifunkMD/ffmd_bind9]] * Konfiguration auf Github: [[https://github.com/FreifunkMD/ffmd_bind9_cfg_ffmd|FreifunkMD/ffmd_bind9_cfg_ffmd]] Test-Aufruf: dig @fda9:26e:5805:bab1:aeb:d0c0::53 -t AAAA stable-babel.updates.firmware.ffmd Diese Firewall-Konfiguration mit ip6tables sorgt dafür, dass Aufrufe an fda9:26e:5805:bab1:53::1 an den Docker-Container weitergeleitet werden: (persistiert in ''/etc/ufw/before6.rules'') ip6tables -t nat -A PREROUTING -d fda9:26e:5805:bab1:53::0 -j DNAT --to-destination fda9:26e:5805:bab1:aeb:d0c0::53 ip6tables -t nat -A OUTPUT -d fda9:26e:5805:bab1:53::0 -j DNAT --to-destination fda9:26e:5805:bab1:aeb:d0c0::53 ip6tables -A ufw6-before-forward -p udp --dport 53 -d fda9:26e:5805:bab1:aeb:d0c0::53 -j ACCEPT ip6tables -A ufw6-before-forward -p tcp --dport 53 -d fda9:26e:5805:bab1:aeb:d0c0::53 -j ACCEPT Anschließend funktioniert folgender Test-Aufruf: dig @fda9:26e:5805:bab1:53::0 -t AAAA stable-babel.updates.firmware.ffmd Für die Auflösung der Unicast-Adresse müssen Routen angelegt werden, z.B.: ip -6 r a fda9:26e:5805:bab1:53::0 dev backend-web t local Bearbeitet in [[https://redmine.n39.eu/issues/13|#13]] ==== Node Exporter ==== === Install === curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest \ | grep browser_download_url \ | grep linux-amd64 \ | cut -d '"' -f 4 \ | wget -qi - tar xzf node_exporter-0.18.1.linux-amd64.tar.gz cd node_exporter-0.18.1.linux-amd64/ sudo cp node_exporter /usr/local/bin/ === Config === sudo nano /etc/systemd/system/node_exporter.service [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus ExecStart=/usr/local/bin/node_exporter \ --collector.cpu \ --collector.diskstats \ --collector.filesystem \ --collector.loadavg \ --collector.meminfo \ --collector.filefd \ --collector.netdev \ --collector.stat \ --collector.netstat \ --collector.systemd \ --collector.uname \ --collector.vmstat \ --collector.time \ --collector.mdadm \ --collector.zfs \ --collector.tcpstat \ --collector.bonding \ --collector.hwmon \ --collector.arp \ --web.listen-address=:9100 \ --web.telemetry-path="/metrics" /etc/systemd/system/node_exporter.service [Install] WantedBy=default.target === Engage === sudo systemctl daemon-reload sudo systemctl enable node_exporter.service sudo systemctl start node_exporter.service ==== Wordpress md.freifunk.net ==== tbd Docker-Container: * ffmd_wordpress * ffmd_mariadb === Migration === == Backup Config == Archiv vom gesamten WP Content tar -czf /tmp/website.`date +%Y%m%d-%H%M%S`.tar.gz website Datenbank dump mysqldump --databases website -u website -p > /tmp/wordpress.sql Übertragen der Daten auf den neuen Sever => Wordpress SQL Dump in das Verzeichnis initdb.d mkdir -pv /var/www/example.com/database/initdb.d cd /var/www/example.com/database/initdb.d Wordpress Content in das Verzeichnis srv entpacken mkdir -pv /var/www/example.com/src Docker-compose in ''/var/www/md.freifunk.net'' === docker_compose.yaml === version: '3' networks: frontend: backend: services: wordpress_db: image: mariadb:latest container_name: ffmd_mariadb volumes: - ./database/data:/var/lib/mysql - ./database/initdb.d:/docker-entrypoint-initdb.d restart: unless-stopped networks: - backend environment: MYSQL_ROOT_PASSWORD: **secret** MYSQL_DATABASE: **DB_Name** MYSQL_USER: **user** MYSQL_PASSWORD: **secret** wordpress: depends_on: - wordpress_db image: wordpress:latest restart: unless-stopped container_name: ffmd_wordpress networks: - backend - frontend ports: - "1234:80" environment: WORDPRESS_DB_HOST: wordpress_db:3306 WORDPRESS_DB_USER: **user** WORDPRESS_DB_PASSWORD: **secret** WORDPRESS_DB_NAME: **db_namen** restart: unless-stopped links: - wordpress_db:mariadb volumes: - ./src:/var/www/html starten der docker-compose up -d Apache / Ngingx Config erstellen ---- apache config VirtualHost *:80> ServerAdmin kontakt@md.freifunk.net ServerName web.md.freifunk.net ServerAlias web.md.freifunk.net ErrorLog /var/log/apache2/web.md.freifunk.net-error.log CustomLog /var/log/apache2/web.md.freifunk.net-access.log common Redirect / https://md.freifunk.net/ ServerAdmin kontakt@md.freifunk.net ServerName web.md.freifunk.net ServerAlias web.md.freifunk.net ErrorLog /var/log/apache2/web.md.freifunk.net-error.log CustomLog /var/log/apache2/web.md.freifunk.net-access.log common SSLEngine on SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown SSLCertificateFile ** SSLCertificateKeyFile ** SSLCertificateChainFile ** Redirect / https://md.freifunk.net/ ===== Changelog ===== * bind-ffmd als Ipv6-Docker-Container aufgesetzt, siehe [[https://redmine.n39.eu/issues/13|#13]] * Update auf Debian 10.4 --- //[[tux@netz39.de|Stefan Haun]] 2020-05-10 13:15// * md.freifunk.net wird jetzt vom Wordpress-Container auf diesem Host ausgeliefert --- //[[tux@netz39.de|Stefan Haun]] 2020-06-12 22:01// * Updaze auf Debian 10.8 ---//[[kwasit@netz39.de|Kwasir]] 2021-02-10 21:00//