IT-Service GmbH 


sgrx1.ulm.go-itservice.de

Asrock J5040-ITX mit Debian 11.0 Bullseye

Hardware:

TypAsrock J5040-ITX
CPUINTEL Pentium Silver Quad Core J5040
Speicher2x 4GB 2400 MHz DDR4
GrakaIntel UHD 605
Netzwerk (intern)on Board: RTL8111H 1GBit
Netzwerk (2.)DELOCK 90440 / RTL8125AG 2.5GBit
PlatteSSD Samsung 256GB

Debian 11 Bullseye Grundinstallation

Netinstall CD herunterladen, ISO auf CD Brennen und Laptop damit booten, installation - Kommandozeile auswählen.
	Language:	German<enter>
		...	
	IP:		192.168.80.11
	Netmask:	255.255.255.0
	Gateway:	192.168.80.1
	DNS:		192.168.80.1
	Rechnername:	sgrx1			(wird durch DNS automatisch erkannt)
	Domain:		ulm.go-itservice.de	(wird durch DNS automatisch erkannt)
Passwort root ..., User: dummy, es sind keine echten User nötig, diese werden von dem alten Rechner übernommen. Im weiteren Ablauf wird die SSD (256 GB) partitioniert:
	 250 MB 	sda1	EFI-System
	 80,0 GB 	sda2	83		/
	 20,0 GB 	sda3	82		swap
	155,0 GB 	sda4 	83		/local		
bei der Grundinstallation wird als Zielssysteme:
	 web
	 ssh
	 standard
ausgewählt, User "dummy" wird später gelöscht, sonst die üblichen Systemparameter und Passwörter. Nach dem Booten kommt man via ssh erstmal nicht auf die Kiste, also muss man passwortbasierten SSH Zugang erst mal aktivieren:
in /etc/ssh/sshd_config ändert man PermitRootLogin zu
PermitRootLogin yes
Bei dem Asrock Board wurde die Netzwerkkarte auf RTL 8125A Basis erkannt und konnte benutzt werden. Anscheinend lag der Totalabsturz bei dem bisher verwendeten Board (mit I7-4770T von 2014) an einer Inkompatibilität zu der PCI-Express V2.1 Karte.
Nach der Grundinstallation ist weder aptitude noch rsync oder ifconfig installiert, das wird nachgeholt. Anschliessend wird der Rest der Pakete entweder klassisch mit aptitude gesucht oder mit dem apt-get Einzeilern installiert:
# apt-get install aptitude net-tools rsync
# apt-get install apache2 bind9 catdoc cryptsetup cups curl debconf dkms dnsutils dosfstools dos2unix exiftran \n
 exfat-utils git id3 id3v2 imagemagick iptables lame laptop-mode-tools libapache2-mod-php7.4 ldap-utils \n
 lynx mcrypt mariadb-server mariadb-client nfs-kernel-server nfs4-acl-tools ntpdate openssh-server parted \n 
 php php-cli php-curl php-dev php-gd php-imagick php-imap php-intl php-ldap php-mbstring php-mysql \n
 php-pspell phpmyadmin proftpd rsh-redone-client samba slapd squid squidguard tcpdump tcptraceroute \n
 tcptrace unzip \n
Auf die bisher verwendeten Perl-Module habe ich verzichtet, da ich die letzte Applikation schon vor Jahren mit PHP nachimplementiert habe.
Damit der neue Rechner sich wie der alte verhät, werden die Hostkeys und das root-Verzeichnis vom prokyon geholt, das macht das cpHOST / /dest/ IDENTITY. Vorsicht, Besitzer der Dateien kontrollieren. Wenn z.B. /root/.ssh irgendeinem anderen User gehört, kann man sich nicht mit Zertifikat verbinden (Der Owner muss root:root sein)
cpHOST / /dest/ IDENTITY
das kopiert folgende Verzeichnisse:
/root/.ssh
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub
Anschliessend habe ich die Platte an den alten Server geängt und nach /dest gemounted. Man kann das aber auch im laufenden Betrieb machen, dann wird aus rsync -avrtHAX /root/ /dest/root/ halt rsync -avrtHAX root@sgrx1:/root/ /root/
mkdir -p /dest/etc/init.d
mkdir -p /dest/usr/local/bin/
mkdir -p /dest/etc/exim4/
rsync --progress -avurtHAX /usr/local/bin/ /dest/usr/local/bin/
scp /etc/init.d/obi1 /dest/etc/init.d/obi1
scp /etc/apache2/apache2.conf /dest/etc/apache2/apache2.conf
rsync -avrtHAX /root/ /dest/root/
rsync /etc/exports /dest/etc/exports
rsync /etc/sudoers /dest/etc/sudoers
rsync /etc/init.d/obi1 /dest/etc/init.d/obi1
rsync -avrtHAX /etc/cups/ /dest/etc/cups/
rsync -avrtHAX /etc/apache2/sites-available/ /dest/etc/apache2/sites-available/
rsync -avrtHAX /etc/apache2/sites-enabled/ /dest/etc/apache2/sites-enabled/
rsync -avrtHAX /usr/share/fonts/truetype/ /usr/share/fonts/truetype/
mkdir -p /dest/root/FILES.sgrx1/
scp /etc/passwd /dest/root/FILES.sgrx1/passwd
scp /etc/shadow /dest/root/FILES.sgrx1/shadow
scp /etc/group /dest/root/FILES.sgrx1/group
cp /dest/etc/passwd /dest/etc/passwd.ORG
cp /dest/etc/shadow /dest/etc/shadow.ORG
cp /dest/etc/group /dest/etc/group.ORG
cat /dest/root/FILES.sgrx1/passwd >> /dest/etc/passwd
cat /dest/root/FILES.sgrx1/shadow >> /dest/etc/shadow
cat /dest/root/FILES.sgrx1/group >> /dest/etc/group
Dann in den /dest/etc/ Dateien mit dem Editor die Systemuser der alten Dateien, beginnend ab dem 2. "root" löschen und nur die echten User behalten, siehe obi1
Verzeichnisse anlegen:
# mkdir /SDCARD
# mkdir /local

Samba Export

dieser ist nur für das Fotobuchprogramm wichtig, welches über die SMB-Freigabe auf gespeicherte Fotos zugreift.
# smbpasswd -a go
# smbpasswd -a uw
..
Die SMB Arbeitsgruppe lautet workgroup

cron-Jobs

Die der Job mit getPictFromDatacard wurde wegen dem besser zugänglichen USB-Anschluss auf den Rechner rigel verlegt. resizePict läuft noch auf sgrx1. Weiterhin startet alle 5 Minuten
echo 3 > /proc/sys/vm/drop_caches;
weil sonst durch irgendeinen Bug das Lesen und Schreiben auf die Platten immer langsamer wird.

Startdatei in rc.n

abhänigkeitsgesteuerte Bootskripte müssen ihre Abhänigkeiten und "start","stop" Zweige enthalten. Der Start Teil in meinem Beispiel (komplette Datei hier im Anhang)
mount 192.168.80.1:/home /home
mount /dev/sda3 /local
df -k
echo "ok"
Ist das Startskript fertig, wird es in den Bootablauf eingebunden. Hierzu wird im Verzeichnis /etc/init.d folgendes Kommando ausgeführt:
# update-rc.d obi1 defaults

User und Rechte

Benutzer und Gruppen so anlegen, dass für jeden User eine Gruppe mit GID=UID existiert. Zugriff auf gemeinsame Resourcen kann dann einfach mittels Gruppenzugehörigkeiten geregelt werden:
/etc/passwd
go:x:801:801:Guenther Obermaier:/home/go:/bin/bash
USER:x:899:899:USER:/home/USER:/bin/bash
common:x:890:890:Common User:/home/common:/bin/false
Neben der normalen Gruppe für gemeinsame Daten, habe ich wegen den Kindern noch Gruppen eingerichtet, damit diese nur auf altersgerechte Inhalte vom Server zugreifen können: /etc/group
go:x:801:go,www-data
USER:x:899:USER,www-data
child06:x:881:common,go,USER,CHILD12,CHILD06
child12:x:882:common,go,USER,CHILD12
child16:x:883:common,go,USER
adult:x:888:common,go,USER
common:x:890:common,www-data,go,USER,CHILD12,CHILD06
User www-data ist in jeder Usergruppe, deren korrespondierender User httpd-Unterverzeichnisse besitzt die via Webbrowser erreichbar sein sollen.
Genaueres siehe User- und Verzeichnisrechte für Familie mit Kindern

Apache 2

site-available und site-enabled von altem Rechner/Server kopieren:
# rsync --delete -avurtHAX root@wega:/etc/apache2/sites-available/ /etc/apache2/sites-available/
# rsync --delete -avurtHAX root@wega:/etc/apache2/sites-enabled/ /etc/apache2/sites-enabled/
Damit die Seiten unter /home/go/httpd wieder funktionieren, muss dieses Verzeichnis in der /etc/apache2/apache2.conf freigegeben werden:
<Directory /home/go/httpd>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>
Weitere Links bei Bedarf in /etc/apache2/sites-enabled mit der Endung .conf erzeugen in der Art
# ln -s ../sites-available/sece-it-dev.local 001-sece-it-dev.local.conf
/etc/hosts anpassen, damit die Entwicklungsseiten auf spica nicht im Internet gesucht werden:
127.0.0.1	sece-it-dev.local
In den Proxy-Einstellungen des Browsers muss die verwendete Domain ".local" vom Proxys ausgenommen werden
Ich habe die Aliase in den einzelnen sites-available so gestaltet, dass diese auf allen wichtigen Rechnern ohne weitere Veränderung passen sollten. Aussehen der Datei im Anhang
Da ich testhalber über Reverse Proxy auf eine Webcam zugreife, muss der mod_proxy aktiviert werden:
# a2enmod proxy
# a2enmod proxy_http
# systemctl restart apache2
Falls der Apache (der ein anderer Dienst) nicht startet, kann man mit
# systemctl status apache2.service
oder
# journalctl -xe
Details erfahren