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!

https://www.ecodms.de/index.php/de/support/22-wissensdatenbank-faq/96-welche-zugangsdaten-werden-fuer-die-arbeit-mit-ecodms-benoetigt-und-wie-lauten-diese

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

     

    .

    nach oben