Setup Nextcloud mit Nextant Tesseract-ocr und solr Stats

Setup Nextcloud mit Nextant Tesseract-ocr und solr Stats

Ich bin es mal wieder. Poste nun eine kleine Anleitung, wie ich bei mir auf dem Server Nextcloud samt Nextant zum Indexieren installiert habe. Bei diesem Tutorial nehmen wir an, dass wir einen frisch installierten Server zu haben.
Dazu benötigen wir LAMP etwas Folgendes beinhaltet:

  • apache2 (Apache 2.4)
  • libapache2-mod-php7.0
  • php7.0
  • php7.0-mysql
  • mysql-server

Fangen wir an.
 
Inhaltsverzeichnis:

  1. Mysql Installation
  2. Apache Installation
  3. Nextcloud Installation
  4. Nextant Installation

 
 
Mysql Installation:
Zuerst machen wir ein Update des Servers dazu nutzen wir sudo apt-get Update. Anschließend installieren wir alle aufgelisteten Dinge in einem Rutsch.

sudo apt-get install apache2 libapache2-mod-php7.0 php7.0 php7.0-mysql mysql-server

Ihr werdet nun nach einigen Dingen gefragt die ihr mit „Y“ beantwortet. Bei der Installation des Mysql Servers werdet ihr gefragt nach einem Mysql „Root“ User und einem Passwort.
Lasst beides nicht leer, nehmt beispielsweise „Admin“ als den User und denkt euch ein schweres Passwort aus.

Wenn die Installation erledigt ist, prüft die Installation mit diesem Befehl mysql_secure_installation.
Dazu werdet ihr nach dem gerade erstellten Passwort gefragt. Wenn das eingegeben ist, wird man gefragt ob man mit VALIDATE PASSWORD PLUGIN Passwörter überprüfen möchte, die in Zukunft genutzt werden für die Datenbank. Das macht Sinn, denn so ist die Nutzung von unsicheren Passwörtern nicht möglich.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:

An dieser Stelle wird man gefragt, welches Level der Passwortvalidierung man nutzen möchte. Wählt hier die 2 für Medium.

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1


Nach dem auswählen des Levels werdet ihr gefragt ob ihr das Mysql-Root Passwort ändern wollt, wollt ihr das nicht drückt „n“

Jetzt gehts weiter mit der Installation von PHP und Apache2…

Da PHP schon installiert ist, muss die Installation etwas angepasst werden, nämlich inwieweit PHP Dateien ausführen soll, wenn ein Verzeichnis betreten wird. Wir wollen auf unserem Server das nach einer index.php und dann nach einer index.html gesucht wird.
Dazu öffnet ihr

sudo nano /etc/apache2/mods-enabled/dir.conf

Der Inhalt sollte so aussehen.

 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

 
Hier steht index.html direkt nach DirectoryIndex. Wir wollen nun index.php nach vorne setzen und ändern den Inhalt in

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

 
Mit STRG+X + J die Bearbeitung abschliessen und das File verlassen.
mit

sudo systemctl restart apache2

Apache neu starten und den Status überprüfen

sudo systemctl status apache2

Die Ausgabe sollt wie folgt sein (Beispsiel):

● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
CGroup: /system.slice/apache2.service
├─13623 /usr/sbin/apache2 -k start
├─13626 /usr/sbin/apache2 -k start
├─13627 /usr/sbin/apache2 -k start
├─13628 /usr/sbin/apache2 -k start
├─13629 /usr/sbin/apache2 -k start
└─13630 /usr/sbin/apache2 -k start
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Nun konfigurieren wir noch den Apache.
Zuerst prüfen wir die Installation ob die Konfiguration passt.

 sudo apache2ctl configtest

Ausgabe ist ähnlich dieser:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Jetzt wird die Konfigurationsdatei bearbeitet:

sudo nano /etc/apache2/apache2.conf


Am ende der Datei tragt ihr folgendes ein ServerName Domain oder IP-Adresse
Die Bearbeitung wieder abschließen und einen Configtest durchführen mit sudo apache2ctl configtest anschliessend den Apache neu starten sudo systemctl restart apache2.
Nun muss die Firewall noch den Traffic durchlassen. Dazu wird nun einiges angepasst.

sudo ufw app list


Ausgabe:

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Wenn man die Ausgabe von Apache Full ansieht, sollten dort die Ports 80,443/tcp angegeben sein.

sudo ufw app info „Apache Full“


Ausgabe:

Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp

Zum Schluß die Ports freigeben für den ein und ausgehenden Traffic.

sudo ufw allow in "Apache Full"


Ruft man jetzt http://deineDomain.tld oder IP sollte die Apache Standard Seite erscheinen.

PHP Einrichten:

apt-get install php-cli


Nun können wir eine Testseite einrichten und schauen ob alles richtig läuft.
Mit einer info.php kann man überprüfen welche Variablen gesetzt sind bei PHP

<!--?php phpinfo(); ?-->

ruft man nun http://deineDomain.tld/info.php auf wird eine PHP Infoseite angezeigt.
Damit wäre die Installation abgeschlossen.
Aber wir sind noch nicht am Ende.

Nextcloud Installation:

Nun geht es an die Installation von Nextcloud.
Damit Nextcloud überhaupt läuft brauchen wir noch einige Dateien die installiert werden müssen.

sudo apt-get install libxml2-dev php-zip php-dom php-xmlwriter php-xmlreader php-gd php-curl php-mbstring

sowie

sudo a2enmod rewrite

 
Anschliessend den Apache neu starten

sudo service apache2 restart

 
geht anschliessend in das Web-Verzeichnis /var/www
Nun besorgt ihr euch Nextcloud und laden diese Dateien direkt auf den Server und entpackt es.

cd /var/www
sudo wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip
sudo unzip nextcloud-21.0.1.zip

Damit alle Berechtigungen stimmen für die installation, erstellt ein Script mit dem Namen nextcloud_permissions.sh
und diesem Inhalt:

#!/bin/bash
ocpath='/var/www/nextcloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'
printf "Creating possible missing Directories"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater
printf "chmod Files and Directories"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
printf "chown Directories"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/
chmod +x ${ocpath}/occ
printf "chmod/chown .htaccessn"
if [ -f ${ocpath}/.htaccess ]
then
chmod 0644 ${ocpath}/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
then
chmod 0644 ${ocpath}/data/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

 
macht diese Datei ausführbar mit

chmod -x nextcloud_permissions.sh

 
Das war schon recht viel für den Anfang, aber es geht weiter. ?
Erstellt jetzt die Apache Konfiguration für Nextcloud
nano /etc/apache2/sites-available/nextcloud.conf

Alias /nextcloud "/var/www/nextcloud/"
 Options +FollowSymlinks
 AllowOverride All
 Dav off
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud

Datei wieder abspeichern und einen Symlink erstellen:

sudo ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf

Dann folgende Module aktivieren:

sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

Dann SSL aktivieren:

a2enmod ssl
a2ensite default-ssl
service apache2 reload

damit Nextcloud eine Datenbank hat melden wir uns in mysql an und erstellen eine Datenbank samt Nutzer:
 

CREATE Database nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nextloud. * TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;

Diese Daten dann in die Nextcloud Mysql Konfiguration eintragen.
Nun müsste Nextcloud laufen.


Installation von Nextant:
Damit Nextant irgendetwas tut muss solr installiert werden.
Dazu checkt zuerst eure Java Version.
die Ausgabe sollte so aussehen:

java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Wenn nicht schafft ein

sudo apt-get install default-jdk

oder

sudo apt-get install default-jre

abhilfe.
Dann installiert solr mit:

mkdir /opt/solr
cd /opt/solr
wget http://mirrors.ircam.fr/pub/apache/lucene/solr/6.6.0/solr-6.6.0.tgz
tar -zxvf solr-6.6.0.tgz
cd solr-6.6.0/server/

Editiert nun die etc/jetty-http.xml und ändert folgende Zeile
von
in
dann:

cd solr/
cp -fr configsets/basic_configs nextant
cd ../..

erstellt nun einen User mit dem Namen „Solr“
dann startet solr mit

sudo -u solr bin/solr start

und

sudo -u solr bin/solr create -c nextant

damit Solr administriert werden kann muss ein Admin her, den erstellen wir mit

sudo htpasswd -c /etc/apache2/htpasswd-solr admin

und vergeben dann ein Passwort. Abschliessend diese folgendes in die /etc/apache2/sites-enabled/nextcloud.conf eintragen:

# Solr
ProxyPass /solr/ http://localhost:8983/solr/
ProxyPassReverse /solr/ http://localhost:8983/solr/
AuthType Basic
AuthName "solr"
AuthUserFile /etc/apache2/htpasswd-solr
Require valid-user

Nextant Installation

Dann die Nextant App aktivieren und http://localhost:8983/solr/ in das entsprechende Feld eintragen.


Nachdem nun fast alles eingerichtet ist, fehlt nur noch eine Sache. Tesseract-ocr für die Schrifterkennung in Bildern, Dokumenten und PDF Dateien.
Hinweis: Bei einem verschlüsselten Datenverzeichnis geht dies nicht.
Installiert nun erst Tesseract-ocr sowie die Sprachdatei für Deutsch

sudo apt-get install tesseract-ocr tesseract-ocr-deu

 
Wer OCRmyPDF noch installieren möchte macht dies mit

sudo apt-get install ocrmypdf