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:
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