Ich möchte mit Euch meine Installation von JTLWAWI auf meiner TrueNAS teilen. Das besondere ist, daß der in einer VM laufende Ubuntu-Server weniger ressourcenhungrig ist, als wenn ich beispielsweise einen Server von Microsoft verwenden würde, ganz abgesehn von den Lizenkosten.
Ich setze JTL-Wawi seit 5-6 Jahren mit Erfolg ein und da ich nur zwei kleine (aber feine) Ebay- Shop habe, hatte ich mich für die Einzelplatzinstallation entschieden. Ich installierte den MSSQL Express unter Windows 10 habe ihn bis heute betrieben. Da ich der einzige User war, hat es mich nicht gestört, keinen Server zu haben, abgesehen davon, daß ich mich um die regelmäßigen Backups kümmern mußte, die zuerst auf dem lokalen System erstellt und dann auf meine NAS kopiert wurden. Wie oft, habe ich diese Backups nur in unregelmäßigen Abständen erledigt.
Zum ersten Mal über den Sinn und Unsinn einer Einzelplatzinstallation dachte ich nach einem Ausfall meiner Samsung SSD, die sich dadurch bemerkbar machte, daß das OS mal langsam mal wieder normal lief bis ich irgendwann durch einen Tipp auf adminstrator.de mit dem Tool CrystalDiskInfo herausgefunden habe, daß der Speicher für die Fehlerkorrektur der SSD restlos ausgeschöpft war. Ein Gure fragte mich damals, ob ich evtl. einen SQL-Server betrieben hatte... Ab da wollte ich die Datenbank auf einen Server auslagern, weil dort drehende Festplatte im Einsatz sind (4 rote WD's als RAIDZ2). Ich hatte kontroverse Diskussionen über das pro und Kontra von RAID und ZFS gelesen, aber nach meinem Verständnis bestehen beide Systeme (auch) aus Sofware mit dem Unterschied, daß man das "Hardware-RAID" meist auf einer Steckkarte findet, während das ZFS "Software-RAID" im Rechner steckt. Was am Ende auf das gleiche hinausläuft. Ich habe mich jahrelang mit FreeBSD beschäftigt und weil das Betriebssystem sehr stabil ist und sich kein einzige Mal aufgehängt hat, bin ich dem ZFS treugeblieben.
Mein NAS-Verbund besteht aus zwei HP Microservern Gen8 (diese schicken schwarzen Würfel), die je 4 Festplatten fassen und eine SSD für das Betriebssystem sowie eine Micro-SD für den GRUB-Bootloader. Auf den NAS läuft das TrueNAS Core in der gegenwärtigen Version 13.0-U5.3.
Bislang habe ich die Möglichkeit der virtuellen Maschinen auf der NAS zum Spielen bzw. Lernen genutzt. Vor Jahren, als Microsoft in einer Stunde guter Ideen den MSSQL für Linux herausbrachte, versuchte ich mich mit der Installation. Kläglich gescheitert, einerseits mangels meines rudimentären Wissens von Linux, anderseits weil niemand ein wirkliches Interesse hatte, daß das ganze unter Linux läuft.
Vor zwei Wochen bin ich wieder über den MSSQL für Linux gestolpert und wollte es diesmal mal wissen. Fragt mich nicht, wieviele Nächte ich erst um 6 Uhr ins Bett gegangen bin und in wievielen Sackgassen ich gelandet bin. Aber dank einiger geduldiger, mir nur als Alias bekannter Profis, gelang es mir heute Nacht das erste Mal einen funktionierenden MSSQL auf Ubuntu zum Laufen zu bringen und nicht nur das, sondern auch, von zwei meinen Rechnern auf meine aktuelle JTL-Datenbank (mit der ich ein wenig Geld auf Ebay verdiene...), zuzugeifen.
Hier meine Anleitung:
Hardware:
HP Microserver Gen8 mit Intel(R) Xeon(R) CPU E31265L @ 2.40GHz mit 16 GB RAM (mehr geht nicht) und 4x WD 4 TB red als RAIDZ2
NAS-Betriebssystem TrueNAS 13.0-U5.3
Eine gleiche zweite NAS als Backp dienend steht 700 km entfernt und auf diese wird über VPN (IPSEC) täglich alles kopiert, was nicht zerstört werden darf. Dann gibt es noch diverse externe USB-Festplatten, die in unregelmäigen Abständen an- und abgestöpft werden, denn ich sage mir immer: Backup, Backup und nochmal Backup.
Schritt 1 - Installation einer VM:
a) Installation von Ubuntu Server 20.04. Dazu laden wir uns das Image 'ubuntu-20.04.6-live-server-amd64.iso' und speichern es auf einem Laufwerk, auf das man von der NAS zugreifen kann.
b) Jetzt legen wir eine neue ZVOL an. Ich habe beim Experiementieren eine 60 GiB große ZVOL angelegt und übersehen, daß MSSQL alles auf die nur 20 GiB große Partition mit dem OS packte und wunderte mich, weshalb ich für meine 10 GiB große Datenbank keinen Platz hatte und Fehlermeldungen, die alles andere sagten, als Festplatte voll. Wir sollten großzügig sein und 100-200 GiB wählen. Diejenigen, die sich mit Linux auskennen, können das hinbekommen, denn sie werden den MSSQL auf eine andere Partition installieren. Ich habe das vor, aber erst in einiger Zeit, wenn mein Freund Alzheimer für einen Monat in Urlaub gehen wird.
c) Auf der TrueNAS auswählen: 'Storage-Pools-AddZvol-Zvol-Name (z.B. sql1) -size (z.B. 200 GiB) - compression level (lz4) - advanced options - block size (4 KiB) - submit - An dieser Stelle schreibe ich das FETT: wer als Block Size etwas anders wählt, also die als Standard vorgegebenen 16 KiB, wird sein Wunder erleben und den MSSQl nie zum Laufen bekommen. Nur Dank eines anderen Users im TrueNAS-Forum habe ich erfahren, daß die Blockgröße dafür verantwortlich ist, daß der MSSQL den Fehler meldet, daß er nicht über Schreibrechte verfügt
d) Virtual Machines - Add - Guest operating System (Linux) - Name (z.B. sql1) - next -Virtual CPUs (2) - Cores (1) - Threads (2) - Memory size (3072) - next - Use existing disk image - select existing pool (z.b. unser sql1) - next - operating system (das ISO des zuvor heruntergeladenen Ubuntu-Servers einstellen) - abschließen.
e) VM starten, auf VNC und und die Schritte befolgen. Wichtig, den Open-SSH-Server auszuwählen (Erklärung folgt später). Ich arbeite gerne mit einer festen IP, also überlegt Euch, ob der neue Server seine IP von einem DHCP-Server beziehen soll oder Ihr vergebt sie selbst. Bei der Installation wird in der obersten Zeite nach dem Netzwerk gefragt, dort gebt Ihr beispielsweise 192.168.2.0/24 ein wobei das '/' nicht über der 7 funktioniert, sondern auf dem Nummernblock. Dann die IP des Servers und das Gatewax und den DNS-Server. Ich halte es einfach und habe die IP meiner pfSende (ein selbstgebauter OpenSource-Router) eingegeben.
Beachtet, daß es nach Abschluß aller Abfragen mitunter länger dauert, bis das Ubuntu vollständig installiert wird. Dummerweise steht oben in der Leiste, daß es fertig ist, obwohl das nicht der Fall ist. Das ist ein Trugschluß und am Besten wählt man unten den Log anzeigen. Es kann 10-20 Minuten dauern, denn wir arbeiten ja in einer VM und die ist langsamer. Wenn man vorzeitig auf reboot geht, dann startet die VM neu, obwohl das OS noch nicht vollständig installiert wurde und man kann bestenfalls vom Neuen beginnen. Aber das ist das schöne an VM's...
f) Wenn das OS installiert ist, vor dem reboot nochmal auf die VM in die Einstellungen und auf "Devices" und das ISO aus dem CD-ROM ausbinden (aufs NAS Hauptverzeichnis zeigen uns bestätigen). Sonst bootet die VM wieder in die Installation und es ist m.U. umständlich, sie aus diesem Loop auszuschalten.
g) Wenn alles geklappt hat, dann finden wir uns hoffentlich am Anmeldescreen vom Ubuntu Server und melden uns an.
h) Ich verbinde mich mit der VM nicht nur über VNC, sondern parallel über SSH und nutze dazu den 'Bitvise SSH Client'. Diese Software hat den Vorteil, daß ich dort die Zugangsdaten zu meinen VM's speichern kann und sie über einen praktischen SFTP-Explorer verfügt, mit dem man Dateien auf die VM übertragen kann. Außerdem kann man die Befehle mit dem Rechtsklick einfügen, was aus dem VNC nicht geht.
Schritt 2 - Installation des MSSQL und mehrerer Tools:
Es folgen jede Menge Befehle, die ich zunächst teilweise unkommentiert lasse. Ich ergänze sie später, aber glaubt mir, ich habe es bestimmt 30 Mal gemacht und es funktioniert. Kopiert alles bis zum # - das dahinter ist mein Kommentar
sudo passwd root # wir setzen das Root-Passwort
/etc/ssh/sshd_config change FROM: #PermitRootLogin prohibit-password TO: PermitRootLogin yes # damit kann man SSH als Root (braucht man manchmal)
sudo systemctl restart ssh
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install net-tools
sudo apt-get install mc # das ist eine Art Norton Commander, den ich aus der Anfangszeit der PC's kenne und wenn man dieses Tool schätzt, oft wirk es Wunder
sudo apt install ntp # NTP Server installieren - ich mag es, wenn auch die VM die gleiche Zeit hat, wie meine anderen Systeme
sudo nano /etc/ntp.conf # dies nachfolgeden 4 Zeilen kopieren, ans Ende der Datei gehen und mit Rechtsklick einfügen und mit CTRL-O speichern und CTRL-X verlassen. Ich habe die in der urprünglichen Datei gelisteten Server gelöscht und durch diese ersetzt.
0.de.pool.ntp.org
1.de.pool.ntp.org
2.de.pool.ntp.org
3.de.pool.ntp.org
sudo timedatectl set-timezone Europe/Berlin # dies setzt die richtige Zeitzone ein
sudo apt-get install -y gnupg # diese Utilities werden auch gebraucht
sudo apt-get install -y gnupg2
sudo apt-get install -y sudo
sudo apt-get install -y curl
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo nano /etc/apt/sources.list # die nachfolgenden zwei Zeilen am Ende der Datei setzen und mit CTRL-O speichern und CTRL-X verlassen
deb https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019 focal main
deb https://packages.microsoft.com/ubuntu/20.04/prod focal main
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
sudo apt-get update
sudo apt-get install -y mssql-server # hier wird der MSSQL installiert
sudo /opt/mssql/bin/mssql-conf setup # hier wird der Typ des MSSQL ausgewählt. Man kann immer wieder, nachdem man den MSSQL ausgeschaltet hat, die Art der Lizenz ändern. Also ruhig mal experimentieren
sudo apt-get update
sudo apt-get install -y fail2ban # Ein Spezialist hat in einer Anleitung auch diese Installtion beschrieben. Ich werde recherchieren, wozu sie dient.
sudo nano /etc/fail2ban/jail.conf # Die nachfolgenden 10 Zeilen einfügen und abspeichern
[mssqld]
enabled = true
logpath = /var/opt/mssql/log/errorlog
maxfailures = 10
findtime = 1200
bantime = 3600
filter = mssqld-auth
port = 1433
action = iptables-allports
backend=polling #!important
su # sich als root anmelden
cd /etc/fail2ban/filter.d # in dieses Verzeichnis wechseln
cat > mssqld-auth.conf # Damit erstellt man eine leere Datei, die später editiert wird. Man kann die Datei direkt mit CTRL +D
nano /etc/fail2ban/filter.d/mssqld-auth.conf # die nachfolgenden 7 Zeilen kopieren, einfügen und abspeichern
[INCLUDES]
before = common.conf
[Definition]
_daemon = mssqld
failregex = Login failed for user .* \[CLIENT: <HOST>\]
ignoreregex =
service fail2ban restart # den service neu starten
exit # als root ausloggen
sudo ufw allow 1433 # in der Firewall die beiden Standrporst öffnen (bei Bedarf anpassen)
sudo ufw allow 1434
sudo su # das braucht man für die Tools
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get install mssql-tools18 unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
systemctl status mssql-server --no-pager # damit überprüft man, ob der MSSQL läuft. Wenn keine Fehler kommen und alles grün ist, hat man die Installation geschafft.
Schritt 3 - Die vorhandene JTLWAWI-Datenbank auf unseren Server umziehen:
Als erstes macht Ihr ein Backup von Eurer Datenbank. Wie das geht, brauche ich Euch nicht zu erklären, denn wenn Ihr das nicht wißt, dann wird es eng. Denk immer daran: Backup, Backup, Backup...
Ihr verbindet Euch mit dem neuen Server am Besten mit einem der beiden Tools Bitvise SSH oder Filezilla und kopiert das soeben erstellte Backup der JTLWAWI in das Verzeichnis /var/opt/mssql/data/
Das dauert ein wenig (wir arbeiten ja in einer VM). Solange es kopiert, könnt Ihr Euch - sofern noch nicht erfolgt - das MSSMS (Microsoft SQL Server Management Studio) herunteraden und installieren. Dort gebt ihr unter Server Name die IP Eures neuen Ubuntu Servers ein (bei mir 192.168.2.211), im Feld Authentication SQL Server Authentication, unter login 'sa' und das Password, was Ihr beim Einrichten des SQL-Servers eingegeben habt.
Dann auf Connect gehen und links auf Databases mit Rechtsklick Restore Database. Unter General 'Device' auswählen und rechts ... add - aus dem Verzeichnis /var/opt/mssql/data die dort zuvor abgelegte Backup-Datei auswählen.
Jetzt unter Files (neben dem Schraubenschlüssel) Klick auf Relocate all files to folder, der da vorgegeben /var/opt/mssql/data, sonst versucht das Backup auf die nicht vorhandene Windows-Maschine zu schreiben und es kommt zu einem Fehler.
Sofern alles richtig eingestellt wurde, dauert es erstaunlicherweise nicht sehr lange (bei mir 7 GiB), bis die Datenbank wiederhergestellt ist.
Schritt 4 - JTLWAWI den neuen Ort der Datenbank mitteilen:
JTL-Wawi starten und im Anmeldefenster auf die drei Zahnräder klicken.
Das grüne New profile + auswählen.
Einen Namen wählen (ich habe sql1)
Servername: hier kommt de IP (bei mir 192.168.2.211)
Auf die Schaltfläche 'Weiter' klicken und (hoffentlich) seid Ihr jetzt mit dem neuen SQL-Server verbunden.
Das war's vorerst. Für mich war es positiv, daß ich jetzt trotz eines schnellen i7 mit 64 GB RAM und 4 TB SSD jetzt noch schneller auf die SQL-Datenbank in einer VM auf einem 'alten' HP-Microserver zugreifen kann, als zuvor auf meinem Laptop. Und ich bin mir sicher, daß der MSSQL meine SSD nicht mehr ruiniert, denn jetzt ist die Datenbank auf gewöhnlichen NAS-Festplatten. Auf die ich mit einer IPSEC-VPN-Verbindung von jedem Ort dieser Welt zugreifen kann
Ich setze JTL-Wawi seit 5-6 Jahren mit Erfolg ein und da ich nur zwei kleine (aber feine) Ebay- Shop habe, hatte ich mich für die Einzelplatzinstallation entschieden. Ich installierte den MSSQL Express unter Windows 10 habe ihn bis heute betrieben. Da ich der einzige User war, hat es mich nicht gestört, keinen Server zu haben, abgesehen davon, daß ich mich um die regelmäßigen Backups kümmern mußte, die zuerst auf dem lokalen System erstellt und dann auf meine NAS kopiert wurden. Wie oft, habe ich diese Backups nur in unregelmäßigen Abständen erledigt.
Zum ersten Mal über den Sinn und Unsinn einer Einzelplatzinstallation dachte ich nach einem Ausfall meiner Samsung SSD, die sich dadurch bemerkbar machte, daß das OS mal langsam mal wieder normal lief bis ich irgendwann durch einen Tipp auf adminstrator.de mit dem Tool CrystalDiskInfo herausgefunden habe, daß der Speicher für die Fehlerkorrektur der SSD restlos ausgeschöpft war. Ein Gure fragte mich damals, ob ich evtl. einen SQL-Server betrieben hatte... Ab da wollte ich die Datenbank auf einen Server auslagern, weil dort drehende Festplatte im Einsatz sind (4 rote WD's als RAIDZ2). Ich hatte kontroverse Diskussionen über das pro und Kontra von RAID und ZFS gelesen, aber nach meinem Verständnis bestehen beide Systeme (auch) aus Sofware mit dem Unterschied, daß man das "Hardware-RAID" meist auf einer Steckkarte findet, während das ZFS "Software-RAID" im Rechner steckt. Was am Ende auf das gleiche hinausläuft. Ich habe mich jahrelang mit FreeBSD beschäftigt und weil das Betriebssystem sehr stabil ist und sich kein einzige Mal aufgehängt hat, bin ich dem ZFS treugeblieben.
Mein NAS-Verbund besteht aus zwei HP Microservern Gen8 (diese schicken schwarzen Würfel), die je 4 Festplatten fassen und eine SSD für das Betriebssystem sowie eine Micro-SD für den GRUB-Bootloader. Auf den NAS läuft das TrueNAS Core in der gegenwärtigen Version 13.0-U5.3.
Bislang habe ich die Möglichkeit der virtuellen Maschinen auf der NAS zum Spielen bzw. Lernen genutzt. Vor Jahren, als Microsoft in einer Stunde guter Ideen den MSSQL für Linux herausbrachte, versuchte ich mich mit der Installation. Kläglich gescheitert, einerseits mangels meines rudimentären Wissens von Linux, anderseits weil niemand ein wirkliches Interesse hatte, daß das ganze unter Linux läuft.
Vor zwei Wochen bin ich wieder über den MSSQL für Linux gestolpert und wollte es diesmal mal wissen. Fragt mich nicht, wieviele Nächte ich erst um 6 Uhr ins Bett gegangen bin und in wievielen Sackgassen ich gelandet bin. Aber dank einiger geduldiger, mir nur als Alias bekannter Profis, gelang es mir heute Nacht das erste Mal einen funktionierenden MSSQL auf Ubuntu zum Laufen zu bringen und nicht nur das, sondern auch, von zwei meinen Rechnern auf meine aktuelle JTL-Datenbank (mit der ich ein wenig Geld auf Ebay verdiene...), zuzugeifen.
Hier meine Anleitung:
Hardware:
HP Microserver Gen8 mit Intel(R) Xeon(R) CPU E31265L @ 2.40GHz mit 16 GB RAM (mehr geht nicht) und 4x WD 4 TB red als RAIDZ2
NAS-Betriebssystem TrueNAS 13.0-U5.3
Eine gleiche zweite NAS als Backp dienend steht 700 km entfernt und auf diese wird über VPN (IPSEC) täglich alles kopiert, was nicht zerstört werden darf. Dann gibt es noch diverse externe USB-Festplatten, die in unregelmäigen Abständen an- und abgestöpft werden, denn ich sage mir immer: Backup, Backup und nochmal Backup.
Schritt 1 - Installation einer VM:
a) Installation von Ubuntu Server 20.04. Dazu laden wir uns das Image 'ubuntu-20.04.6-live-server-amd64.iso' und speichern es auf einem Laufwerk, auf das man von der NAS zugreifen kann.
b) Jetzt legen wir eine neue ZVOL an. Ich habe beim Experiementieren eine 60 GiB große ZVOL angelegt und übersehen, daß MSSQL alles auf die nur 20 GiB große Partition mit dem OS packte und wunderte mich, weshalb ich für meine 10 GiB große Datenbank keinen Platz hatte und Fehlermeldungen, die alles andere sagten, als Festplatte voll. Wir sollten großzügig sein und 100-200 GiB wählen. Diejenigen, die sich mit Linux auskennen, können das hinbekommen, denn sie werden den MSSQL auf eine andere Partition installieren. Ich habe das vor, aber erst in einiger Zeit, wenn mein Freund Alzheimer für einen Monat in Urlaub gehen wird.
c) Auf der TrueNAS auswählen: 'Storage-Pools-AddZvol-Zvol-Name (z.B. sql1) -size (z.B. 200 GiB) - compression level (lz4) - advanced options - block size (4 KiB) - submit - An dieser Stelle schreibe ich das FETT: wer als Block Size etwas anders wählt, also die als Standard vorgegebenen 16 KiB, wird sein Wunder erleben und den MSSQl nie zum Laufen bekommen. Nur Dank eines anderen Users im TrueNAS-Forum habe ich erfahren, daß die Blockgröße dafür verantwortlich ist, daß der MSSQL den Fehler meldet, daß er nicht über Schreibrechte verfügt
d) Virtual Machines - Add - Guest operating System (Linux) - Name (z.B. sql1) - next -Virtual CPUs (2) - Cores (1) - Threads (2) - Memory size (3072) - next - Use existing disk image - select existing pool (z.b. unser sql1) - next - operating system (das ISO des zuvor heruntergeladenen Ubuntu-Servers einstellen) - abschließen.
e) VM starten, auf VNC und und die Schritte befolgen. Wichtig, den Open-SSH-Server auszuwählen (Erklärung folgt später). Ich arbeite gerne mit einer festen IP, also überlegt Euch, ob der neue Server seine IP von einem DHCP-Server beziehen soll oder Ihr vergebt sie selbst. Bei der Installation wird in der obersten Zeite nach dem Netzwerk gefragt, dort gebt Ihr beispielsweise 192.168.2.0/24 ein wobei das '/' nicht über der 7 funktioniert, sondern auf dem Nummernblock. Dann die IP des Servers und das Gatewax und den DNS-Server. Ich halte es einfach und habe die IP meiner pfSende (ein selbstgebauter OpenSource-Router) eingegeben.
Beachtet, daß es nach Abschluß aller Abfragen mitunter länger dauert, bis das Ubuntu vollständig installiert wird. Dummerweise steht oben in der Leiste, daß es fertig ist, obwohl das nicht der Fall ist. Das ist ein Trugschluß und am Besten wählt man unten den Log anzeigen. Es kann 10-20 Minuten dauern, denn wir arbeiten ja in einer VM und die ist langsamer. Wenn man vorzeitig auf reboot geht, dann startet die VM neu, obwohl das OS noch nicht vollständig installiert wurde und man kann bestenfalls vom Neuen beginnen. Aber das ist das schöne an VM's...
f) Wenn das OS installiert ist, vor dem reboot nochmal auf die VM in die Einstellungen und auf "Devices" und das ISO aus dem CD-ROM ausbinden (aufs NAS Hauptverzeichnis zeigen uns bestätigen). Sonst bootet die VM wieder in die Installation und es ist m.U. umständlich, sie aus diesem Loop auszuschalten.
g) Wenn alles geklappt hat, dann finden wir uns hoffentlich am Anmeldescreen vom Ubuntu Server und melden uns an.
h) Ich verbinde mich mit der VM nicht nur über VNC, sondern parallel über SSH und nutze dazu den 'Bitvise SSH Client'. Diese Software hat den Vorteil, daß ich dort die Zugangsdaten zu meinen VM's speichern kann und sie über einen praktischen SFTP-Explorer verfügt, mit dem man Dateien auf die VM übertragen kann. Außerdem kann man die Befehle mit dem Rechtsklick einfügen, was aus dem VNC nicht geht.
Schritt 2 - Installation des MSSQL und mehrerer Tools:
Es folgen jede Menge Befehle, die ich zunächst teilweise unkommentiert lasse. Ich ergänze sie später, aber glaubt mir, ich habe es bestimmt 30 Mal gemacht und es funktioniert. Kopiert alles bis zum # - das dahinter ist mein Kommentar
sudo passwd root # wir setzen das Root-Passwort
/etc/ssh/sshd_config change FROM: #PermitRootLogin prohibit-password TO: PermitRootLogin yes # damit kann man SSH als Root (braucht man manchmal)
sudo systemctl restart ssh
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install net-tools
sudo apt-get install mc # das ist eine Art Norton Commander, den ich aus der Anfangszeit der PC's kenne und wenn man dieses Tool schätzt, oft wirk es Wunder
sudo apt install ntp # NTP Server installieren - ich mag es, wenn auch die VM die gleiche Zeit hat, wie meine anderen Systeme
sudo nano /etc/ntp.conf # dies nachfolgeden 4 Zeilen kopieren, ans Ende der Datei gehen und mit Rechtsklick einfügen und mit CTRL-O speichern und CTRL-X verlassen. Ich habe die in der urprünglichen Datei gelisteten Server gelöscht und durch diese ersetzt.
0.de.pool.ntp.org
1.de.pool.ntp.org
2.de.pool.ntp.org
3.de.pool.ntp.org
sudo timedatectl set-timezone Europe/Berlin # dies setzt die richtige Zeitzone ein
sudo apt-get install -y gnupg # diese Utilities werden auch gebraucht
sudo apt-get install -y gnupg2
sudo apt-get install -y sudo
sudo apt-get install -y curl
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo nano /etc/apt/sources.list # die nachfolgenden zwei Zeilen am Ende der Datei setzen und mit CTRL-O speichern und CTRL-X verlassen
deb https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019 focal main
deb https://packages.microsoft.com/ubuntu/20.04/prod focal main
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
sudo apt-get update
sudo apt-get install -y mssql-server # hier wird der MSSQL installiert
sudo /opt/mssql/bin/mssql-conf setup # hier wird der Typ des MSSQL ausgewählt. Man kann immer wieder, nachdem man den MSSQL ausgeschaltet hat, die Art der Lizenz ändern. Also ruhig mal experimentieren
sudo apt-get update
sudo apt-get install -y fail2ban # Ein Spezialist hat in einer Anleitung auch diese Installtion beschrieben. Ich werde recherchieren, wozu sie dient.
sudo nano /etc/fail2ban/jail.conf # Die nachfolgenden 10 Zeilen einfügen und abspeichern
[mssqld]
enabled = true
logpath = /var/opt/mssql/log/errorlog
maxfailures = 10
findtime = 1200
bantime = 3600
filter = mssqld-auth
port = 1433
action = iptables-allports
backend=polling #!important
su # sich als root anmelden
cd /etc/fail2ban/filter.d # in dieses Verzeichnis wechseln
cat > mssqld-auth.conf # Damit erstellt man eine leere Datei, die später editiert wird. Man kann die Datei direkt mit CTRL +D
nano /etc/fail2ban/filter.d/mssqld-auth.conf # die nachfolgenden 7 Zeilen kopieren, einfügen und abspeichern
[INCLUDES]
before = common.conf
[Definition]
_daemon = mssqld
failregex = Login failed for user .* \[CLIENT: <HOST>\]
ignoreregex =
service fail2ban restart # den service neu starten
exit # als root ausloggen
sudo ufw allow 1433 # in der Firewall die beiden Standrporst öffnen (bei Bedarf anpassen)
sudo ufw allow 1434
sudo su # das braucht man für die Tools
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get install mssql-tools18 unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
systemctl status mssql-server --no-pager # damit überprüft man, ob der MSSQL läuft. Wenn keine Fehler kommen und alles grün ist, hat man die Installation geschafft.
Schritt 3 - Die vorhandene JTLWAWI-Datenbank auf unseren Server umziehen:
Als erstes macht Ihr ein Backup von Eurer Datenbank. Wie das geht, brauche ich Euch nicht zu erklären, denn wenn Ihr das nicht wißt, dann wird es eng. Denk immer daran: Backup, Backup, Backup...
Ihr verbindet Euch mit dem neuen Server am Besten mit einem der beiden Tools Bitvise SSH oder Filezilla und kopiert das soeben erstellte Backup der JTLWAWI in das Verzeichnis /var/opt/mssql/data/
Das dauert ein wenig (wir arbeiten ja in einer VM). Solange es kopiert, könnt Ihr Euch - sofern noch nicht erfolgt - das MSSMS (Microsoft SQL Server Management Studio) herunteraden und installieren. Dort gebt ihr unter Server Name die IP Eures neuen Ubuntu Servers ein (bei mir 192.168.2.211), im Feld Authentication SQL Server Authentication, unter login 'sa' und das Password, was Ihr beim Einrichten des SQL-Servers eingegeben habt.
Dann auf Connect gehen und links auf Databases mit Rechtsklick Restore Database. Unter General 'Device' auswählen und rechts ... add - aus dem Verzeichnis /var/opt/mssql/data die dort zuvor abgelegte Backup-Datei auswählen.
Jetzt unter Files (neben dem Schraubenschlüssel) Klick auf Relocate all files to folder, der da vorgegeben /var/opt/mssql/data, sonst versucht das Backup auf die nicht vorhandene Windows-Maschine zu schreiben und es kommt zu einem Fehler.
Sofern alles richtig eingestellt wurde, dauert es erstaunlicherweise nicht sehr lange (bei mir 7 GiB), bis die Datenbank wiederhergestellt ist.
Schritt 4 - JTLWAWI den neuen Ort der Datenbank mitteilen:
JTL-Wawi starten und im Anmeldefenster auf die drei Zahnräder klicken.
Das grüne New profile + auswählen.
Einen Namen wählen (ich habe sql1)
Servername: hier kommt de IP (bei mir 192.168.2.211)
Auf die Schaltfläche 'Weiter' klicken und (hoffentlich) seid Ihr jetzt mit dem neuen SQL-Server verbunden.
Das war's vorerst. Für mich war es positiv, daß ich jetzt trotz eines schnellen i7 mit 64 GB RAM und 4 TB SSD jetzt noch schneller auf die SQL-Datenbank in einer VM auf einem 'alten' HP-Microserver zugreifen kann, als zuvor auf meinem Laptop. Und ich bin mir sicher, daß der MSSQL meine SSD nicht mehr ruiniert, denn jetzt ist die Datenbank auf gewöhnlichen NAS-Festplatten. Auf die ich mit einer IPSEC-VPN-Verbindung von jedem Ort dieser Welt zugreifen kann
Zuletzt bearbeitet: