Installation ecoDMS Server unter Ubuntu 16.04 LTS
1) Als erstes den Ubuntu Server Einrichten
(Festplatten Layout) wie hier beschrieben
2) ecoDMS Installieren
Zuerst Java installieren:
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-unlimited-jce-policy
Dann geht’s weiter mit ecoDMS gemäss Installationsanleitung:
sudo vi /etc/apt/sources.list
get -O - http://www.ecodms.de/gpg/ecodms.key | sudo apt-key add -
wget -O - http://www.ecodms.de/gpg/ecodms.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install ecodmsserver
Ups, hier gibt es ein Problem:
$ sudo apt-get install ecodmsserver
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ecodmsserver : Depends: gksu but it is not going to be installed or
kdesudo but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Wir haben einen Server ohne Grafische Oberfläche (nur Terminal), daher ist weder gksu noch kdesu vorhanden. Die Pakete können ohne gnome-core auch nicht installiert werden. Damit die Installation von ecoDMS trotzdem durchgeht ohne die Grafikpakete zu installieren, den Prozess mit mit –no-install-recommends durchführen:
sudo apt-get install ecodmsserver --no-install-recommends
Nun sind wir durch – Server wurde erfolgreich erstellt 🙂
The service ecoDMS Server 16.09 has been installed under: /opt/ecodms/ecodmsserver/DMSService
Starting ecoDMS Server...
ecoDMS Server installed
Achtung, EcoDMS richtet viele Standard Benutzer ein. Als erstes müssen alle Passworte geändert werden, bzw. User gelöscht und eigene Benutzer angelegt werden!
Passwort ändern von:
- Standard Benutzer
- System Administrator
FTP einrichten
Den default dmsscanner User am Besten löschen und einen eigenen Scan User anlegen (eigener Username/Passwort)
sudo deluser dmsscanner
Verzeichnisse erstellen
sudo mkdir -p /home/meinscanuser/scaninput
Nun die Berechtigungen setzen. Damit ein FTP Login möglich ist, ist es wichtig, dass der root-User im Besitz des Homeverzeichnisses ist.
sudo chown root:root /home/meinscanuser
sudo chmod 755 /home/meinscanuser
Nun noch die Berechtigungen für das Unterverzeichnis, wo die Scans hochgeladen werden. Chmod 777 wird benötigt, damit ecodms die Scans aus dem Folder holen kann.
sudo chown meinscanuser:meinscanuser /home/meinscanuser/scaninput
sudo chmod 777 /home/meinscanuser/scaninput
Jetzt noch den Symlink setzen für ecodms:
cd /opt/ecodms/workdir
sudo rm -rf scaninput/
sudo ln -s /home/meinscanuser/scaninput .
FTP User erstellen
Und jetzt noch eigenen Scan-User anlegen
sudo adduser <eigenerusername>
user@server:~$ sudo adduser meinscanuser
Adding user `meinscanuser' ...
Adding new group `meinscanuser' (1003) ...
Adding new user `meinscanuser' (1003) with group `meinscanuser' ...
The home directory `/home/meinscanuser' already exists. Not copying from `/etc/skel'.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for meinscanuser
Enter the new value, or press ENTER for the default
Full Name []: Scanner
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Folgende Line im /etc/passwd anpassen
sudo vipw
alt:
meinscanuser:x:1003:1003:Scanner,,,:/home/meinscanuser:/bin/bash
ändern in:
meinscanuser:x:1003:1003:Scanner,,,:/home/meinscanuser:/bin/false
SSH Konfiguration anpassen
sudo vi /etc/ssh/sshd_config
Am Ende des Files folgendes hinzufügen
Match User meinscanuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /home/meinscanuser
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
SSHD restarten…
sudo systemctl restart sshd
sFTP Zugang testen
sftp meinscanuser@ftpserverip
Nun müsste der sftp Promt erscheinen:
meinscanuser@ftpserverip's password:
Connected to ftpserverip.
sftp>
Nun kann man z.B. mit ls die Verzeichnisse auflisten:
sftp> ls
scaninput
sftp>
Prüfen, dass der User nicht unterhalb des Homedirectories wechseln kann:
sftp> ls
scaninput
sftp> cd ..
sftp> ls
scaninput
sftp>
Nun noch checken, dass unser Scanner User wirklich nur per FTP Connecten kann:
ssh meinscanuser@ftpserverip
meinscanuser@ftpserverip's password:
Nun müsste diese Fehlermeldung erschienen:
This service allows sftp connections only.
Connection to ftpserverip closed.
Alles richtig gemacht 🙂
Startup Script
Das Script befindet sich hier, falls man mal den Server manuell stoppen/starten müsste:
/etc/init.d/ecodms {start|stop}
EcoDMS Stoppen / Starten / Restarten
service ecodms {start|stop|restart}
Backup einrichten
ecoDMS sollte man regelmässig backupen, am Besten auf eine separate Festplatte. Ich nutze dazu die /backup Partition;
sudo mkdir /backup/ecodms
sudo chown ecodms:ecodms ecodms/
Und jetzt im ecoDMS Client das Backup aktivieren:
Optionen -> Einstellungen -> Einstellungen -> Tab "Sicherung"
Nun den gewünschten Pfad eingeben (/backup/ecodms) und den gewünschten Zeitrythmus. Ich nutze die Inkrementelle Sicherung, da diese etwas schneller geht (ausser beim ersten Run)
Scanner einrichten
Ich habe mir den Netzwerkscanner von Brother ADS-2800W für den ecoDMS Dokumentenscan zugelegt. Hier die Schritt-für-Schritt Einrichtung für das Scannen in einen sFTP Folder:
Client Schlüsselpaar
Als erstes muss das Client Schlüsselpaar erstellt werden
Nun den gewünschten Namen für den Clientschlüssel eingeben und Schlüssel generieren:
jetzt wurde der Schlüssel generiert und wir können ihn runterladen:
Nun das soeben heruntergeladene publickey.pub File in einem Texteditor öffnen und den Inhalt zwischenspeichern.
Als nächstes auf den vorher eingerichteten FTP Server einloggen
Im home Verzeichnis unseres FTP Users das Verzeichnis .ssh erstellen
cd /home/meinscanuser/
sudo mkdir .ssh
sudo chown root:root .ssh
sudo chmod 755 .ssh
und den Inhalt vom File publickey.pub in die Datei authorized_keys einfügen:
sudo vi .ssh/authorized_keys
Jetzt bei diesem File auch noch die Berechtigungen anpassen:
sudo chown meinscanuser:meinscanuser .ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys
Server Schlüsselpaar
Wir bleiben auf dem FTP Server und lesen den Serverkey aus.
cat /etc/ssh/ssh_host_rsa_key.pub
Jetzt den Inhalt von /etc/ssh/ssh_host_rsa_key.pub lokal in einem Textfile (in meinem Fall: server.pub) speichern.
Jetzt gehts wieder zurück zum Interface des Scanners. Beim Punkt Öffentlicher Serverschlüssel, das server.pub File raufladen.
Nun sind wir bereit um den sFTP Zugang einzurichten.
Scanprofile einrichten
Ich habe mal 4 Profile eingerichtet.
- A4 Graustufen für Dokumente (300dpi)
- A4 Farbig (300dpi),
- A4 Farbig Hohe Qualität (600dpi)
- SW/Automatische Dokumentengrösse
Also erst mal die ersten 4 Profile auf sFTP umstellen und speichern:
Danach die Profile einrichten (entweder auf Profil X oder SFTP klicken):
Hier meine Konfiguration für das erste Profil:
- Host-Adresse: IP oder Adresse zu deinem FTP Server
- Dein FTP Scanner Benutzername
- Authentifizierung über den öffentlichen Schlüssel
- Dein generiertes Clientschlüsselpaar auswählen
- Sowie der Serverschlüssel
- den Zielordner scaninput angeben
- die gewünschte Qualität
- Mehrseitiges PDF auswählen
- Dokumentengrösse A4
- Dateigrösse: Mittel
EcoDMS Server Upgraden auf die nächste Version
Update der Liste der Pakete
sudo apt-get update
Jetzt Server upgraden:
sudo apt install ecodmsserver
Fehlermeldungen / Lösungen
sFTP Debuggen
Sollte das Login per FTP nicht klappen, starte die FTP Verbindung im Debug Modus:
sftp -v meinscanuser@ftpserverip
In der Regel liegt das Problem bei falsch gesetzten Berechtigungen (chmod) oder Ownerships (chown)
Auf dem FTP Server suchst du nach Hinweisen im auth.log:
sudo tail -f /var/log/auth.log
Dann findest du weitere Infos wie z.B.
Apr 13 13:11:18 ftpserverip systemd-logind[1265]: New session 69 of user meinscanuser.
Apr 13 13:11:18 ftpserverip systemd: pam_unix(systemd-user:session): session opened for user meinscanuser by (uid=0)
Apr 13 13:11:18 ftpserverip sshd[12017]: fatal: bad ownership or modes for chroot directory "/home/meinscanuser/scaninput"
Apr 13 13:11:18 ftpserverip sshd[11982]: pam_unix(sshd:session): session closed for user
meinscanuser
In dem Fall prüfst du nochmal sorgfältig alle Verzeichnisse und Berechtigungen wie im Abschnitt FTP einrichten beschrieben.
Connection closed by xx.xxx.x.xxx port 10301 [preauth]
Das Login normal per FTP Funktionierte bei mir zwar, jedoch hat es nicht gleich geklappt, den Scanner zu connecten. Da ich den Scanner direkt nicht debuggen kann, muss man das direkt auf dem FTP Server machen. Hier am Besten eine zweite Instanz von openssh starten, im Debug Modus auf einem alternativen Port (in diesem Fall 2222):
sudo /usr/sbin/sshd -p 2222 -ddde
Dann die Scanverbindung nochmal testen (diesmal einfach den alternativen Port 2222 verwenden) und den Debug Output prüfen:
debug3: mm_request_send entering: type 7
debug2: monitor_read: 6 used once, disabling now
debug3: send packet: type 33 [preauth]
debug3: send packet: type 21 [preauth]
debug2: set_newkeys: mode 1 [preauth]
debug1: rekey after 4294967296 blocks [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
Connection closed by xx.xxx.x.xxx port 61547 [preauth]
debug1: do_cleanup [preauth]
debug3: PAM: sshpam_thread_cleanup entering [preauth]
debug1: monitor_read_log: child log fd closed
debug3: mm_request_receive entering
debug1: do_cleanup
debug3: PAM: sshpam_thread_cleanup entering
debug1: Killing privsep child 14522
debug1: audit_event: unhandled event 12
Das seltsame ist, wenn ich von einer anderen Linux Maschine aus connecte, funktioniert alles einwandfrei (vorher natürlich noch den local public key in das authorized_hosts file auf dem FTP Server kopiert) :
sftp -i id_rsa.pub -P 2222 meinscanuser@ftpserverip
Connected to meinscanuser@ftpserverip.
sftp>
Das Debug auf dem FTP Server zeigt dann folgendes:
debug3: mm_request_send entering: type 7
debug2: monitor_read: 6 used once, disabling now
debug3: mm_key_sign: waiting for MONITOR_ANS_SIGN [preauth]
debug3: mm_request_receive_expect entering: type 7 [preauth]
debug3: mm_request_receive entering [preauth]
debug3: send packet: type 31 [preauth]
debug3: send packet: type 21 [preauth]
debug2: set_newkeys: mode 1 [preauth]
debug1: rekey after 134217728 blocks [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug3: send packet: type 7 [preauth]
debug3: receive packet: type 21 [preauth]
debug2: set_newkeys: mode 0 [preauth]
debug1: rekey after 134217728 blocks [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: KEX done [preauth]
Nach stundenlangem Debuggen habe ich die Lösung gefunden: Das Problem lag am known_hosts bzw. Server Key. Ich habe den privaten id_rsa.pub Key von meinem Scanuser verwendet statt dem Serverkey (/etc/ssh/ssh_host_rsa_key.pub). Wenn ich beim öffentlichen Serverschlüssel den korrekten Serverkey verwende, funktioniert die Connection einwandfrei 🙂
EcoDMS wird automatisch deinstalliert
Ich habe nicht schlecht gestaunt, als ich eines Morgens Dokumente aufrufen wollte und keine Verbindung mehr zu EcoDMS hatte. Den Server neu starten ging nicht – da das Startup Script weg war. Und tatsächlich – EcoDMS wurde im Hintergrund einfach so deinstalliert. Das ist mir jetzt schon zwei mal passiert.
im dpkg.log habe ich dann auch entsprechende Hinweise gefunden:
2019-05-28 06:03:55 startup packages remove
2019-05-28 06:03:55 status installed ecodmsserver:amd64 16.09-3-1
2019-05-28 06:03:56 remove ecodmsserver:amd64 16.09-3-1 <none>
2019-05-28 06:03:56 status half-configured ecodmsserver:amd64 16.09-3-1
2019-05-28 06:03:59 status half-installed ecodmsserver:amd64 16.09-3-1
2019-05-28 06:03:59 status triggers-pending desktop-file-utils:amd64 0.22-1ubuntu5.2
2019-05-28 06:03:59 status triggers-pending gnome-menus:amd64 3.13.3-6ubuntu3.1
2019-05-28 06:03:59 status triggers-pending mime-support:all 3.59ubuntu1
2019-05-28 06:03:59 status triggers-pending ureadahead:amd64 0.100.0-19.1
2019-05-28 06:03:59 status triggers-pending systemd:amd64 229-4ubuntu21.21
2019-05-28 06:03:59 status config-files ecodmsserver:amd64 16.09-3-1
2019-05-28 06:03:59 status config-files ecodmsserver:amd64 16.09-3-1
2019-05-28 06:03:59 status config-files ecodmsserver:amd64 16.09-3-1
2019-05-28 06:03:59 status not-installed ecodmsserver:amd64 <none>
2019-05-28 06:03:59 status installed samba:amd64 2:4.3.11+dfsg-0ubuntu0.16.04.20
2019-05-28 06:03:59 remove samba:amd64 2:4.3.11+dfsg-0ubuntu0.16.04.20 <none>
2019-05-28 06:03:59 status triggers-pending libc-bin:amd64 2.23-0ubuntu11
2019-05-28 06:03:59 status half-configured samba:amd64 2:4.3.11+dfsg-0ubuntu0.16.04.20
und im auth.log
May 28 06:03:57 patsy sudo: root : TTY=unknown ; PWD=/ ; USER=ecodms ; COMMAND=/opt/ecodms/ecodmsserver/stop.sh
May 28 06:03:57 patsy sudo: pam_unix(sudo:session): session opened for user ecodms by (uid=0)
May 28 06:03:59 patsy sudo: pam_unix(sudo:session): session closed for user ecodms
Also offensichtlich wird ecodms bei mir regelmässig von Aufräumarbeiten entfernt. Muss noch schauen, wie ich das verhindern kann. Momentan hilft nur ein re-installieren :-/
sudo apt-get install ecodmsserver --no-install-recommends
sudo service ecodms stop
cd /opt/ecodms/workdir
sudo rm -rf scaninput/
sudo ln -s /home/meinscanuser/scaninput .
sudo service ecodms start
LibreOffice Extension: java.lang.reflect.InvocationTargetException
Beim Versuch der Installation der EcoDMS Extension für LibreOffice kam dieser Java Fehler.
Lösung:
sudo apt-get install libreoffice-java-common
.