Metainformationen zur Seite
Administration des Wiki-Linux-Servers
Installation
Update
$ sudo apt update && sudo apt list --upgradable && sudo apt upgrade -y
Hostname
Ersetze localhost durch Name plus Domain.
$ sudo nano /etc/hostname bkb.wiki
$ sudo nano /etc/hosts 127.0.0.1 localhost 127.0.1.1 bkb.wiki bkb
Zeitzone setzen
$ sudo timedatectl set-timezone Europe/Berlin
Statische Adresse einrichten
Current DNS Server: 192.168.134.121 inet 192.168.134.10 netmask 255.255.255.0 broadcast 192.168.134.255
Gateway ermitteln:
$ ip r | grep ^def default via 192.168.134.252 dev ens160 proto dhcp src 192.168.134.10 metric 100
$ sudo nano /etc/netplan/00-installer-config.yaml network: renderer: networkd ethernets: ens160: addresses: [192.168.134.10/24] routes: - to: default via: 192.168.134.252 nameservers: addresses: [192.168.134.121] version: 2
$ sudo netplan apply
Apache installieren
$ sudo apt install apache2 apache2-docs apache2-utils
$ sudo systemctl status apache2
$ sudo apache2ctl configtest
$ sudo systemctl restart apache2
$ sudo a2dissite 000-default.conf
Firewall einrichten
$ sudo ufw app list Available applications: Apache Apache Full Apache Secure OpenSSH syncthing syncthing-gui
$ sudo ufw allow 'Apache Full' $ sudo ufw allow OpenSSH
$ sudo ufw enable $ sudo ufw status
Ordner anlegen
$ sudo mkdir /var/www/html/bkb.wiki $ sudo mkdir /var/www/html/bkb.wiki/public_html $ sudo mkdir /var/www/html/bkb.wiki/logs $ sudo mkdir /var/www/html/bkb.wiki/backups
Ordner für test.wiki
$ sudo mkdir /var/www/html/test.wiki $ sudo mkdir /var/www/html/test.wiki/public_html $ sudo mkdir /var/www/html/test.wiki/logs $ sudo mkdir /var/www/html/test.wiki/backups
Ordner für limesurvey
$ sudo mkdir /var/www/html/limesurvey $ sudo mkdir /var/www/html/limesurvey/public_html $ sudo mkdir /var/www/html/limesurvey/logs $ sudo mkdir /var/www/html/limesurvey/backups
Konfig
$ sudo nano /etc/apache2/sites-available/bkb.wiki.conf <VirtualHost *:80> ServerAdmin stefan.baeumer@berufskolleg-borken.de ServerName bkb.wiki ServerAlias www.bkb.wiki DocumentRoot /var/www/html/bkb.wiki/public_html/ ErrorLog /var/www/html/bkb.wiki/logs/error.log CustomLog /var/www/html/bkb.wiki/logs/access.log combined </VirtualHost>
$ sudo a2ensite bkb.wiki.conf
$ systemctl reload apache2
Konfig test.wiki
$ sudo nano /etc/apache2/sites-available/test.wiki.conf <VirtualHost *:81> ServerAdmin stefan.baeumer@berufskolleg-borken.de ServerName test.wiki ServerAlias www.test.wiki DocumentRoot /var/www/html/test.wiki/public_html/ ErrorLog /var/www/html/test.wiki/logs/error.log CustomLog /var/www/html/test.wiki/logs/access.log combined </VirtualHost>
$ sudo ufw allow 81
$ sudo a2ensite test.wiki.conf
$ systemctl reload apache2
Konfig limesurvey
$ sudo nano /etc/apache2/sites-available/limesurvey.conf <VirtualHost *:82> ServerAdmin stefan.baeumer@berufskolleg-borken.de ServerName limesurvey ServerAlias www.limesurvey DocumentRoot /var/www/html/limesurvey/public_html/ ErrorLog /var/www/html/limesurvey/logs/error.log CustomLog /var/www/html/limesurvey/logs/access.log combined </VirtualHost>
$ sudo ufw allow 82
$ sudo a2ensite limesurvey.conf
$ systemctl reload apache2
Test
$ sudo apt install w3m
Beenden mit q:
$ w3m 192.168.134.10 $ w3m http://bkb.wiki $ w3m 192.168.134.10:81 $ w3m 192.168.134.10:82
SSL
$ sudo apt install certbot python3-certbot-apache
$ sudo certbot --apache -d bkb.wiki
$ sudo mv www.bkb.wiki_private_key.key /etc/ssl/private/ $ sudo mv www.bkb.wiki_ssl_certificate.cer /etc/ssl/certs/
$ sudo nano /etc/apache2/sites-available/bkb.wiki.conf <VirtualHost *:443> DocumentRoot "/var/www/html/bkb.wiki" ServerName bkb.wiki SSLEngine on SSLCertificateFile /etc/ssl/certs/www.bkb.wiki_ssl_certificate.cer SSLCertificateKeyFile /etc/ssl/private/www.bkb.wiki_private_key.key #SSLCertificateChainFile /path/to/DigiCertCA.crt </VirtualHost>
URL-Rewrite
$ sudo nano /var/www/html/bkb.wiki/public_html/.htaccess: ## Uncomment these rules if you want to have nice URLs using ## $conf['userewrite'] = 1 - not needed for rewrite mode 2 RewriteEngine on # RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] RewriteRule ^$ doku.php [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) doku.php?id=$1 [QSA,L] #RewriteRule ^index.php$ doku.php # ## Not all installations will require the following line. If you do, ## change "/dokuwiki" to the path to your dokuwiki directory relative ## to your document root. #RewriteBase /bkb.wiki
sudo nano /etc/apache2/apache2.conf: <Directory /var/www/> Options Indexes FollowSymLinks # Folgende Zeile ersetzen #AllowOverride None # durch diese Zeile: AllowOverride AuthConfig FileInfo Limit Require all granted </Directory>
Backup Strategie
$ sudo chmod +x rsync-bkb-wiki-nach-home-stefan-public_html.sh $ sudo chmod +x rsync-bkb-wiki-nach-test-wiki.sh $ sudo chmod +x rsync-push2dokuwiki.sh $ sudo crontab -e
# jede Stunde: 0 * * * * sh /home/stefan/rsync-bkb-wiki-nach-home-stefan-bkb-wik> 0 * * * * sh /home/stefan/rsync-bkb-wiki-nach-test-wiki.sh 0 * * * * sh /home/stefan/rsync-push2dokuwiki.sh
rsync-bkb-wiki-nach-home-stefan-bkb-wiki-backup.sh
Alle Ordner werden mit rsync nach bkb-wiki-backup kopiert und anschließend mit Syncthing [[http://192.168.134.10:8384/]] kopiert. # https://www.dokuwiki.org/de:faq:backup # Mit dem Schalter --delete könnten zusätzlich die gelöschten Dateien im Backup gelöscht werden. # Aus Sicherheitsgründen wird der Schalter nicht gesetzt. # aktuelle Seiten #rsync -a -i /var/www/html/bkb.wiki/public_html/data/pages/ /home/stefan/bkb-wiki-backup/data/pages/ # alte Versionen #rsync -a -i /var/www/html/bkb.wiki/public_html/data/attic/ /home/stefan/bkb-wiki-backup/data/attic/ # Metadaten zu den Seiten (Wer hat die Seite erstellt, …) #rsync -a -i /var/www/html/bkb.wiki/public_html/data/meta/ /home/stefan/bkb-wiki-backup/data/meta/ # Beinhaltet die Medien (Bilder, PDFs, …) #rsync -a -i /var/www/html/bkb.wiki/public_html/data/media/ /home/stefan/bkb-wiki-backup/data/media/ # Veraltete Medien #rsync -a -i /var/www/html/bkb.wiki/public_html/data/media_attic/ /home/stefan/bkb-wiki-backup/data/media_attic/ # Metadaten für die Medien #rsync -a -i /var/www/html/bkb.wiki/public_html/data/media_meta/ /home/stefan/bkb-wiki-backup/data/media_meta/ # Konfigurationseinstellungen #rsync -a -i /var/www/html/bkb.wiki/public_html/conf/ /home/stefan/bkb-wiki-backup/conf/ rsync -a -i /var/www/html/bkb.wiki/public_html/ /home/stefan/bkb-wiki-backup/ sudo sed -i "s|https://bkb.wiki/|http://192.168.134.10.142/|g" /var/www/html/test.wiki/public_html/conf/local.php
rsync-bkb-wiki-nach-test-wiki.sh
#!/bin/bash rsync -a -i --delete /var/www/html/bkb.wiki/public_html/ /var/www/html/test.wiki/public_html/ # bkb.wiki durch test.wiki ersetzen sudo sed -i 's|#cbe4cf|#FFAAA8|g' /var/www/html/test.wiki/public_html/conf/tpl/sprintdoc/style.ini sudo sed -i "s|https://bkb.wiki/|http://192.168.134.10:81/|g" /var/www/html/test.wiki/public_html/conf/local.php sudo sed -i "s|Berufskolleg Borken|Testinstanz|g" /var/www/html/test.wiki/public_html/conf/local.php # Fancy URLs, indem der Wert auf 1 gesetzt wird. sudo sed -i "s|\$conf\['userewrite'\] = .*;|\$conf['userewrite'] = '1';|g" /var/www/html/test.wiki/public_html/conf/local.php # Dateien für www-data schreibbar machen chown -R www-data:www-data /var/www/html/test.wiki/public_html/* # Hinweis auf Testinstanz in die erste Zeile sudo sed -i '1i<WRAP ALERT>Testinstanz</WRAP>' /var/www/html/test.wiki/public_html/data/pages/start.txt
rsync-push2dokuwiki.sh
#!/bin/bash # Mit dem Schalter --delete könnten zusätzlich die gelöschten Dateien im Backup gelöscht werden. # Aus Sicherheitsgründen wird der Schalter nicht gesetzt. # einzelne Seiten / Ordner werden ge-rsynct: rsync -a -i /home/stefan/push2dokuwiki-seiten/klausurbelegungsplaene.txt /var/www/html/bkb.wiki/public_html/data/pages/bildungsgaenge/berufliches_gymnasium/klausurbelegungsplaene.txt chown -R www-data:www-data /var/www/html/data/pages/bildungsgaenge/berufliches_gymnasium/
Backup mit syncthing
Syncthing muss so eingestellt sein, dass der Ordner /home/stefan/public_html/ zum Backup-Target BM01 syncronisiert wird.
$ sudo apt install syncthing $ sudo nano /etc/systemd/system/syncthing@.service
[Unit] Description=Syncthing - Open Source Continuous File Synchronization Documentation=man:syncthing(1) After=network.target [Service] User=%i ExecStart=/usr/bin/syncthing -no-browser -logflags=0 Restart=on-failure SuccessExitStatus=3 4 RestartForceExitStatus=3 4 [Install] WantedBy=default.target
# Don't start after Reboot: $ sudo systemctl enable syncthing@stefan.service
$ sudo systemctl start syncthing@stefan.service $ sudo systemctl status syncthing@stefan.service
Syncthing von extern erreichbar machen
127.0.0.1 muss nach 0.0.0.0 geändert werden
$ sudo nano ~/.config/syncthing/config.xml <gui enabled="true" tls="false" debugging="false"> <address>0.0.0.0:8384</address>
$ sudo ufw allow 22000/tcp $ sudo ufw reload $ systemctl restart syncthing@stefan.service
Syncthing steuern
$ sudo systemctl start syncthing@stefan.service $ sudo systemctl stop syncthing@stefan.service $ systemctl status syncthing@stefan.service
$ w3m http://localhost:8384
LDAP-Auth
$ sudo ufw allow out to 10.40.38.181 port 389 proto tcp $ sudo ufw allow out to 10.40.38.181 port 636 proto tcp $ sudo ufw status numbered
XMLRPC
SQLite
$ sudo find /var/www/html/bkb.wiki/public_html -type f -name "*.sqlite3" /var/www/html/bkb.wiki/public_html/data/meta/tagging.sqlite3 /var/www/html/bkb.wiki/public_html/data/meta/struct.sqlite3 $ sudo apt install sqlite
$ sqlite3 struct.sqlite3 ".tables" $ sqlite3 struct.sqlite3 "select * from reliabwaehler;" $ sqlite3 struct.sqlite3 "select * from data_reliabwaehler;" $ sqlite3 struct.sqlite3 ".dump data_reliabwaehler;" > data_reliabwaehler.sql
SSH/OpenSSH/Keys
Generating RSA Keys
Auf dem Client:
mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/home/stefan/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/stefan/.ssh/id_rsa. Your public key has been saved in /home/stefan/.ssh/id_rsa.pub.
Transfer Client Key to Host
ssh-copy-id stefan@192.168.134.10