<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chg93-hsdoku</id>
	<title>Hostsharing Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chg93-hsdoku"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Chg93-hsdoku"/>
	<updated>2026-04-25T16:25:45Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=7544</id>
		<title>Spamfilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=7544"/>
		<updated>2026-04-08T12:30:49Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Filtern lernen teilnehmen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einrichtung, Konfiguration und Optimierung eines Spamfilters auf den Hostsharing Servern. Der Artikel beschreibt drei alternative Möglichkeiten: &lt;br /&gt;
&lt;br /&gt;
1. Die Nutzung der &amp;quot;xmailin&amp;quot;-Server für eine komplette Domain&lt;br /&gt;
&lt;br /&gt;
2. Die Einrichtung von Spamassassin für das persönliche Postfach&lt;br /&gt;
&lt;br /&gt;
3. Nutzung der Spam-Appliance &amp;quot;SecureMX&amp;quot; für eine komplette Domain&lt;br /&gt;
&lt;br /&gt;
= Alternative 1: Maileingangsserver mit Spamfilter nutzen =&lt;br /&gt;
&lt;br /&gt;
Diese Alternative kann von einer Domain-Administration oder vom &amp;quot;Webmaster on Demand&amp;quot; für eine oder mehrere E-Mail-Domains eingerichtet werden. Ein globaler Sieve-Filter für markiete Spam-Nachrichten ist in der Standard-Konfiguration voreingestellt, &lt;br /&gt;
so dass Nachrichten mit Spam-Bewertung in einen vorhandenen Spam-Ordner einsortiert werden.&lt;br /&gt;
&lt;br /&gt;
Seit einigen Jahren betreibt Hostsharing zusätzlich zu den vorkonfigurierte Maileingangsservern einen zweiten Satz von Maileingangsservern, bei denen Spamassassin bereits beim Annehmen einer E-Mail ausgeführt wird. Anfang 2026 ist eine Gruppe von Eingangsserver mit der Software &amp;quot;rspamd&amp;quot; hinzugekommen. Eingehende Nachrichten mit Malware oder sehr hoher Bewertung als Spam werden bereits im SMTP-Dialog abgewiesen. Nachrichten mit einem geringeren Spam-Score werden angenommen und zugestellt. Spamassassin fügt die Bewertung für diese Nachrichten in die Header der Nachricht ein, zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
X-Spam-Status: Yes, score=11.29&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der globale Sieve-Filter schiebt Nachrichten mit der Markierung &amp;quot;X-Spam-Status: Yes&amp;quot; in einen Ordner &amp;quot;Junk&amp;quot;, wenn der Ordner vorhanden ist. Viele Mailprogramme legen beim ersten Verbinden mit dem IMAP-Server einen solchen Ordner an. Unser &amp;quot;Roundcube&amp;quot;&lt;br /&gt;
unter https://webmail.hostsharing.net ist entsprechend eingerichtet, so dass der Ordner nach einer Nutzung von Webmail vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
== Eingangsserver konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Die Maileingangsserver mit Rspamd lassen sich pro Domain konfigurieren, indem die MX-Records im DNS-Zonefile gegenüber dem Default-Zonefile angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Im Zonefile entfällt der Platzhalter &amp;quot;{MX_RR}&amp;quot;. Stattdessen werden die folgenden MX-Records eingefügt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin1.hostsharing.net.&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin2.hostsharing.net.&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin3.hostsharing.net.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Änderung der DNS-Zone siehe: https://www.hostsharing.net/doc/managed-operations-platform/zonefile/&lt;br /&gt;
Wer sich die Aktion auf der Shell nicht zutraut, möge bitte den &amp;quot;Webmaster on Demand&amp;quot; beauftragen.&lt;br /&gt;
&lt;br /&gt;
Die Änderung des Zonefile kann für eine Domain &amp;quot;hs-example.de&amp;quot; wie folgt überprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
dig +short -t MX hs-example.de @dns1.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Ausgabe wird erwartet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
30 xmailin2.hostsharing.net.&lt;br /&gt;
30 xmailin3.hostsharing.net.&lt;br /&gt;
30 xmailin1.hostsharing.net.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Reihenfolge der drei Eingangsserver kann variieren. &lt;br /&gt;
Die führende Zahl ist die Priorität im MX-Record (hier der Wert &amp;quot;30&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Filtern lernen teilnehmen ==&lt;br /&gt;
Wer auch am lernen des Filters mitwirken möchte der sendet den/die Benutzername/n xyz00-name (das ist der eMail Benutzername)  an :&lt;br /&gt;
service (at) hostsharing (dot) net&lt;br /&gt;
&lt;br /&gt;
= Alternative 2: Persönlichen Spamfilter einrichten =&lt;br /&gt;
&lt;br /&gt;
Hier geht es darum, wie Personen mit (grundlegenden) Kenntnissen in der Shell-Bedienung für ihr persönliches Postfach einen Spam-Filter einrichten können. Spamassassin kann für jedes Postfach individuell konfiguriert werden. Für die Einrichtung und Pflege ist Shell-Zugang zur Mailbox erforderlich.  &lt;br /&gt;
&lt;br /&gt;
Ein Bayesfilter kann mit den persönlichen Nachrichten angelernt werden. Dazu sind tiefergehende Shell-Kenntnisse erforderlich (Shell-Skript und Einrichtung eines systemd-Timers).&lt;br /&gt;
&lt;br /&gt;
== Spamassassin Konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Der Spamfilter &amp;quot;Spamassassin&amp;quot; ist bei HS vorinstalliert. Es muss über das Kommando &amp;quot;spamc&amp;quot;, das Kommando zur Nutzung des Spamassassin-Daemon, in der Datei &amp;quot;.forward&amp;quot; eines Mail-Users aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;|/usr/bin/spamc -U /var/run/spamd -e /usr/lib/dovecot/deliver&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Effekt: Spammassassin schreibt seine Testergebnisse in die Headerzeilen jeder E-Mail und leitet die E-Mails weiter an das Programm &amp;quot;deliver&amp;quot; aus dem Dovecot-Paket. Das Sortieren von Spam-EMail in einen Spam-Ordner lässt sich mit Sieve-Filtern umsetzen.&lt;br /&gt;
&lt;br /&gt;
In dieser Variante kann man Spamassassin individuell konfigurieren. Dazu legt man im $HOME des Mailbox-Account ein Verzeichnis &amp;quot;$HOME/.spamassassin&amp;quot; an. Die Konfiguration erfolgt in der Datei &amp;quot;$HOME/.spamassassin/user_prefs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsbeispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
required_score          4.0&lt;br /&gt;
report_safe             0&lt;br /&gt;
use_bayes               1&lt;br /&gt;
bayes_auto_learn        1&lt;br /&gt;
skip_rbl_checks         0&lt;br /&gt;
use_razor2              1&lt;br /&gt;
use_pyzor               1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayesfilter anlernen ==&lt;br /&gt;
&lt;br /&gt;
Wenn der Bayesfilter eingeschaltet ist, macht es Sinn den Filter mit den Befehlen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
sa-learn --spam &amp;lt;platzhalter-spam-nachricht-oder-verzeichnis&amp;gt;&lt;br /&gt;
sa-learn --ham &amp;lt;platzhalter-erwünschte-nachricht-oder-verzeichnis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
anzulernen. Ein Bash-Skript für das Erlernen von Spam/Nonspam kann wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
HAM_MIN_AGE_DAYS=5&lt;br /&gt;
MAILDIR_HAM=${HOME}/Maildir/cur&lt;br /&gt;
TMPDIR=${HOME}/sa-learn-tmp&lt;br /&gt;
SPAMFOLDER=Junk&lt;br /&gt;
SPAMFOLDER_LEARNED=${SPAMFOLDER}.sa-learned&lt;br /&gt;
MAILDIR_SPAM=${HOME}/Maildir/.${SPAMFOLDER}&lt;br /&gt;
&lt;br /&gt;
# Learn spam from MAILDIR_SPAM&lt;br /&gt;
mkdir -p ${TMPDIR}/spam&lt;br /&gt;
rm -f ${TMPDIR}/spam/*&lt;br /&gt;
SPAM_COUNT=0&lt;br /&gt;
for DIR in &amp;quot;cur&amp;quot; &amp;quot;new&amp;quot;; do&lt;br /&gt;
	DIR=&amp;quot;${MAILDIR_SPAM}/${DIR}&amp;quot;&lt;br /&gt;
	cd ${DIR}&lt;br /&gt;
	# echo &amp;quot;---&amp;quot; DIR ${DIR}&lt;br /&gt;
	for SPAMFILE in $( ls ); do&lt;br /&gt;
		# echo &amp;quot;   &amp;quot; ${SPAMFILE}&lt;br /&gt;
		TMPFILE=&amp;quot;${TMPDIR}/spam/${SPAMFILE}&amp;quot;&lt;br /&gt;
		if ! zcat &amp;quot;${SPAMFILE}&amp;quot; &amp;gt; &amp;quot;${TMPFILE}&amp;quot; 2&amp;gt;/dev/null; then&lt;br /&gt;
			cp &amp;quot;${SPAMFILE}&amp;quot; &amp;quot;${TMPFILE}&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		SPAM_COUNT=$((SPAM_COUNT + 1))&lt;br /&gt;
	done&lt;br /&gt;
done&lt;br /&gt;
sa-learn --spam ${TMPDIR}/spam/*&lt;br /&gt;
&lt;br /&gt;
# Move processed spam to keep it in another folder&lt;br /&gt;
doveadm move -u $(whoami) INBOX.${SPAMFOLDER_LEARNED} mailbox INBOX.${SPAMFOLDER} all 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
# Learn ham from MAILDIR_HAM (&amp;gt; HAM_MIN_AGE_DAYS days; max. 2x spam count)&lt;br /&gt;
mkdir -p ${TMPDIR}/ham&lt;br /&gt;
rm -f ${TMPDIR}/ham/*&lt;br /&gt;
cd ${MAILDIR_HAM}&lt;br /&gt;
MAX_HAM=$((SPAM_COUNT * 2))&lt;br /&gt;
HAM_COUNT=0&lt;br /&gt;
for HAMFILE in $( find . -type f -mtime +${HAM_MIN_AGE_DAYS} -printf &#039;%T@ %p\n&#039; | sort -rn | cut -d&#039; &#039; -f2- | head -n ${MAX_HAM} ); do&lt;br /&gt;
	TMPFILE=&amp;quot;${TMPDIR}/ham/${HAMFILE}&amp;quot;&lt;br /&gt;
	if ! zcat &amp;quot;${HAMFILE}&amp;quot; &amp;gt; &amp;quot;${TMPFILE}&amp;quot; 2&amp;gt;/dev/null; then&lt;br /&gt;
		cp &amp;quot;${HAMFILE}&amp;quot; &amp;quot;${TMPFILE}&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	HAM_COUNT=$((HAM_COUNT + 1))&lt;br /&gt;
done&lt;br /&gt;
sa-learn --ham ${TMPDIR}/ham/*&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Training erfolgte mit ${SPAM_COUNT} Spam, ${HAM_COUNT} (max ${MAX_HAM}) Ham Mails.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei werden Mails verarbeitet, unabhängig davon, ob sie durch Procmail (unkomprimiert) oder über den Mailclient (komprimiert) verschoben vorliegen.&lt;br /&gt;
Für Ham wird ein Teil des Inhalts der Inbox verwendet, wobei die empfohlene Maximalanzahl von zweimal der Spammailanzahl und ein minimales Alter in Tagen gilt. Das Mindestalter garantiert ein inzwischen erfolgtes manuelles Aussortieren des Spams. Der verarbeitete Spam wird anschließend in ein separates Verzeichnis verschoben um den späteren Zugriff auf False Positives zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Das Skript wird über einen systemd-Timer täglich ausgeführt, der pro Mailbox eingerichtet werden muss.&lt;br /&gt;
&lt;br /&gt;
= Alternative 3: SecureMX zubuchen =&lt;br /&gt;
&lt;br /&gt;
Über unseren Domain-Anbieter &amp;quot;Partnergate&amp;quot; bietet Hostsharing als dritte Alternative die kommerzielle Spam-Appliance von Cisco an. Das Produkt heißt bei Partnergate &amp;quot;SecureMX&amp;quot;: https://www.hostsharing.net/loesungen/email/spam-abwehr/&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von SecureMX ist kostenpflichtig und wird auf Wunsch vom Hostsharing-Service eingerichtet. &lt;br /&gt;
&lt;br /&gt;
Es ist zu beachten, dass bei der Nutzung von SecureMX alle eingehenden E-Mail Nachrichten über Server geleitet werden, die nicht unter der Kontrolle von Hostsharing stehen und proprietäre Software einsetzen. Dieser Sachverhalt muss vom Mitglied ggf. datenschutzrechtlich bewertet werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=7543</id>
		<title>Spamfilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=7543"/>
		<updated>2026-04-08T12:30:12Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Filtern leren teilnehmen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einrichtung, Konfiguration und Optimierung eines Spamfilters auf den Hostsharing Servern. Der Artikel beschreibt drei alternative Möglichkeiten: &lt;br /&gt;
&lt;br /&gt;
1. Die Nutzung der &amp;quot;xmailin&amp;quot;-Server für eine komplette Domain&lt;br /&gt;
&lt;br /&gt;
2. Die Einrichtung von Spamassassin für das persönliche Postfach&lt;br /&gt;
&lt;br /&gt;
3. Nutzung der Spam-Appliance &amp;quot;SecureMX&amp;quot; für eine komplette Domain&lt;br /&gt;
&lt;br /&gt;
= Alternative 1: Maileingangsserver mit Spamfilter nutzen =&lt;br /&gt;
&lt;br /&gt;
Diese Alternative kann von einer Domain-Administration oder vom &amp;quot;Webmaster on Demand&amp;quot; für eine oder mehrere E-Mail-Domains eingerichtet werden. Ein globaler Sieve-Filter für markiete Spam-Nachrichten ist in der Standard-Konfiguration voreingestellt, &lt;br /&gt;
so dass Nachrichten mit Spam-Bewertung in einen vorhandenen Spam-Ordner einsortiert werden.&lt;br /&gt;
&lt;br /&gt;
Seit einigen Jahren betreibt Hostsharing zusätzlich zu den vorkonfigurierte Maileingangsservern einen zweiten Satz von Maileingangsservern, bei denen Spamassassin bereits beim Annehmen einer E-Mail ausgeführt wird. Anfang 2026 ist eine Gruppe von Eingangsserver mit der Software &amp;quot;rspamd&amp;quot; hinzugekommen. Eingehende Nachrichten mit Malware oder sehr hoher Bewertung als Spam werden bereits im SMTP-Dialog abgewiesen. Nachrichten mit einem geringeren Spam-Score werden angenommen und zugestellt. Spamassassin fügt die Bewertung für diese Nachrichten in die Header der Nachricht ein, zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
X-Spam-Status: Yes, score=11.29&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der globale Sieve-Filter schiebt Nachrichten mit der Markierung &amp;quot;X-Spam-Status: Yes&amp;quot; in einen Ordner &amp;quot;Junk&amp;quot;, wenn der Ordner vorhanden ist. Viele Mailprogramme legen beim ersten Verbinden mit dem IMAP-Server einen solchen Ordner an. Unser &amp;quot;Roundcube&amp;quot;&lt;br /&gt;
unter https://webmail.hostsharing.net ist entsprechend eingerichtet, so dass der Ordner nach einer Nutzung von Webmail vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
== Eingangsserver konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Die Maileingangsserver mit Rspamd lassen sich pro Domain konfigurieren, indem die MX-Records im DNS-Zonefile gegenüber dem Default-Zonefile angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Im Zonefile entfällt der Platzhalter &amp;quot;{MX_RR}&amp;quot;. Stattdessen werden die folgenden MX-Records eingefügt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin1.hostsharing.net.&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin2.hostsharing.net.&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin3.hostsharing.net.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Änderung der DNS-Zone siehe: https://www.hostsharing.net/doc/managed-operations-platform/zonefile/&lt;br /&gt;
Wer sich die Aktion auf der Shell nicht zutraut, möge bitte den &amp;quot;Webmaster on Demand&amp;quot; beauftragen.&lt;br /&gt;
&lt;br /&gt;
Die Änderung des Zonefile kann für eine Domain &amp;quot;hs-example.de&amp;quot; wie folgt überprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
dig +short -t MX hs-example.de @dns1.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Ausgabe wird erwartet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
30 xmailin2.hostsharing.net.&lt;br /&gt;
30 xmailin3.hostsharing.net.&lt;br /&gt;
30 xmailin1.hostsharing.net.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Reihenfolge der drei Eingangsserver kann variieren. &lt;br /&gt;
Die führende Zahl ist die Priorität im MX-Record (hier der Wert &amp;quot;30&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Filtern lernen teilnehmen ==&lt;br /&gt;
Wer auch am lernen des Filters mitwirken möchte der senden den/die Benutzername/n xyz00-name (das ist der eMail Benutzername)  an :&lt;br /&gt;
service (at) hostsharing (dot) net&lt;br /&gt;
&lt;br /&gt;
= Alternative 2: Persönlichen Spamfilter einrichten =&lt;br /&gt;
&lt;br /&gt;
Hier geht es darum, wie Personen mit (grundlegenden) Kenntnissen in der Shell-Bedienung für ihr persönliches Postfach einen Spam-Filter einrichten können. Spamassassin kann für jedes Postfach individuell konfiguriert werden. Für die Einrichtung und Pflege ist Shell-Zugang zur Mailbox erforderlich.  &lt;br /&gt;
&lt;br /&gt;
Ein Bayesfilter kann mit den persönlichen Nachrichten angelernt werden. Dazu sind tiefergehende Shell-Kenntnisse erforderlich (Shell-Skript und Einrichtung eines systemd-Timers).&lt;br /&gt;
&lt;br /&gt;
== Spamassassin Konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Der Spamfilter &amp;quot;Spamassassin&amp;quot; ist bei HS vorinstalliert. Es muss über das Kommando &amp;quot;spamc&amp;quot;, das Kommando zur Nutzung des Spamassassin-Daemon, in der Datei &amp;quot;.forward&amp;quot; eines Mail-Users aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;|/usr/bin/spamc -U /var/run/spamd -e /usr/lib/dovecot/deliver&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Effekt: Spammassassin schreibt seine Testergebnisse in die Headerzeilen jeder E-Mail und leitet die E-Mails weiter an das Programm &amp;quot;deliver&amp;quot; aus dem Dovecot-Paket. Das Sortieren von Spam-EMail in einen Spam-Ordner lässt sich mit Sieve-Filtern umsetzen.&lt;br /&gt;
&lt;br /&gt;
In dieser Variante kann man Spamassassin individuell konfigurieren. Dazu legt man im $HOME des Mailbox-Account ein Verzeichnis &amp;quot;$HOME/.spamassassin&amp;quot; an. Die Konfiguration erfolgt in der Datei &amp;quot;$HOME/.spamassassin/user_prefs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsbeispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
required_score          4.0&lt;br /&gt;
report_safe             0&lt;br /&gt;
use_bayes               1&lt;br /&gt;
bayes_auto_learn        1&lt;br /&gt;
skip_rbl_checks         0&lt;br /&gt;
use_razor2              1&lt;br /&gt;
use_pyzor               1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayesfilter anlernen ==&lt;br /&gt;
&lt;br /&gt;
Wenn der Bayesfilter eingeschaltet ist, macht es Sinn den Filter mit den Befehlen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
sa-learn --spam &amp;lt;platzhalter-spam-nachricht-oder-verzeichnis&amp;gt;&lt;br /&gt;
sa-learn --ham &amp;lt;platzhalter-erwünschte-nachricht-oder-verzeichnis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
anzulernen. Ein Bash-Skript für das Erlernen von Spam/Nonspam kann wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
HAM_MIN_AGE_DAYS=5&lt;br /&gt;
MAILDIR_HAM=${HOME}/Maildir/cur&lt;br /&gt;
TMPDIR=${HOME}/sa-learn-tmp&lt;br /&gt;
SPAMFOLDER=Junk&lt;br /&gt;
SPAMFOLDER_LEARNED=${SPAMFOLDER}.sa-learned&lt;br /&gt;
MAILDIR_SPAM=${HOME}/Maildir/.${SPAMFOLDER}&lt;br /&gt;
&lt;br /&gt;
# Learn spam from MAILDIR_SPAM&lt;br /&gt;
mkdir -p ${TMPDIR}/spam&lt;br /&gt;
rm -f ${TMPDIR}/spam/*&lt;br /&gt;
SPAM_COUNT=0&lt;br /&gt;
for DIR in &amp;quot;cur&amp;quot; &amp;quot;new&amp;quot;; do&lt;br /&gt;
	DIR=&amp;quot;${MAILDIR_SPAM}/${DIR}&amp;quot;&lt;br /&gt;
	cd ${DIR}&lt;br /&gt;
	# echo &amp;quot;---&amp;quot; DIR ${DIR}&lt;br /&gt;
	for SPAMFILE in $( ls ); do&lt;br /&gt;
		# echo &amp;quot;   &amp;quot; ${SPAMFILE}&lt;br /&gt;
		TMPFILE=&amp;quot;${TMPDIR}/spam/${SPAMFILE}&amp;quot;&lt;br /&gt;
		if ! zcat &amp;quot;${SPAMFILE}&amp;quot; &amp;gt; &amp;quot;${TMPFILE}&amp;quot; 2&amp;gt;/dev/null; then&lt;br /&gt;
			cp &amp;quot;${SPAMFILE}&amp;quot; &amp;quot;${TMPFILE}&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		SPAM_COUNT=$((SPAM_COUNT + 1))&lt;br /&gt;
	done&lt;br /&gt;
done&lt;br /&gt;
sa-learn --spam ${TMPDIR}/spam/*&lt;br /&gt;
&lt;br /&gt;
# Move processed spam to keep it in another folder&lt;br /&gt;
doveadm move -u $(whoami) INBOX.${SPAMFOLDER_LEARNED} mailbox INBOX.${SPAMFOLDER} all 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
# Learn ham from MAILDIR_HAM (&amp;gt; HAM_MIN_AGE_DAYS days; max. 2x spam count)&lt;br /&gt;
mkdir -p ${TMPDIR}/ham&lt;br /&gt;
rm -f ${TMPDIR}/ham/*&lt;br /&gt;
cd ${MAILDIR_HAM}&lt;br /&gt;
MAX_HAM=$((SPAM_COUNT * 2))&lt;br /&gt;
HAM_COUNT=0&lt;br /&gt;
for HAMFILE in $( find . -type f -mtime +${HAM_MIN_AGE_DAYS} -printf &#039;%T@ %p\n&#039; | sort -rn | cut -d&#039; &#039; -f2- | head -n ${MAX_HAM} ); do&lt;br /&gt;
	TMPFILE=&amp;quot;${TMPDIR}/ham/${HAMFILE}&amp;quot;&lt;br /&gt;
	if ! zcat &amp;quot;${HAMFILE}&amp;quot; &amp;gt; &amp;quot;${TMPFILE}&amp;quot; 2&amp;gt;/dev/null; then&lt;br /&gt;
		cp &amp;quot;${HAMFILE}&amp;quot; &amp;quot;${TMPFILE}&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	HAM_COUNT=$((HAM_COUNT + 1))&lt;br /&gt;
done&lt;br /&gt;
sa-learn --ham ${TMPDIR}/ham/*&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Training erfolgte mit ${SPAM_COUNT} Spam, ${HAM_COUNT} (max ${MAX_HAM}) Ham Mails.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei werden Mails verarbeitet, unabhängig davon, ob sie durch Procmail (unkomprimiert) oder über den Mailclient (komprimiert) verschoben vorliegen.&lt;br /&gt;
Für Ham wird ein Teil des Inhalts der Inbox verwendet, wobei die empfohlene Maximalanzahl von zweimal der Spammailanzahl und ein minimales Alter in Tagen gilt. Das Mindestalter garantiert ein inzwischen erfolgtes manuelles Aussortieren des Spams. Der verarbeitete Spam wird anschließend in ein separates Verzeichnis verschoben um den späteren Zugriff auf False Positives zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Das Skript wird über einen systemd-Timer täglich ausgeführt, der pro Mailbox eingerichtet werden muss.&lt;br /&gt;
&lt;br /&gt;
= Alternative 3: SecureMX zubuchen =&lt;br /&gt;
&lt;br /&gt;
Über unseren Domain-Anbieter &amp;quot;Partnergate&amp;quot; bietet Hostsharing als dritte Alternative die kommerzielle Spam-Appliance von Cisco an. Das Produkt heißt bei Partnergate &amp;quot;SecureMX&amp;quot;: https://www.hostsharing.net/loesungen/email/spam-abwehr/&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von SecureMX ist kostenpflichtig und wird auf Wunsch vom Hostsharing-Service eingerichtet. &lt;br /&gt;
&lt;br /&gt;
Es ist zu beachten, dass bei der Nutzung von SecureMX alle eingehenden E-Mail Nachrichten über Server geleitet werden, die nicht unter der Kontrolle von Hostsharing stehen und proprietäre Software einsetzen. Dieser Sachverhalt muss vom Mitglied ggf. datenschutzrechtlich bewertet werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=7542</id>
		<title>Spamfilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=7542"/>
		<updated>2026-04-08T12:15:41Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: Filtern lernen bei xmailin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einrichtung, Konfiguration und Optimierung eines Spamfilters auf den Hostsharing Servern. Der Artikel beschreibt drei alternative Möglichkeiten: &lt;br /&gt;
&lt;br /&gt;
1. Die Nutzung der &amp;quot;xmailin&amp;quot;-Server für eine komplette Domain&lt;br /&gt;
&lt;br /&gt;
2. Die Einrichtung von Spamassassin für das persönliche Postfach&lt;br /&gt;
&lt;br /&gt;
3. Nutzung der Spam-Appliance &amp;quot;SecureMX&amp;quot; für eine komplette Domain&lt;br /&gt;
&lt;br /&gt;
= Alternative 1: Maileingangsserver mit Spamfilter nutzen =&lt;br /&gt;
&lt;br /&gt;
Diese Alternative kann von einer Domain-Administration oder vom &amp;quot;Webmaster on Demand&amp;quot; für eine oder mehrere E-Mail-Domains eingerichtet werden. Ein globaler Sieve-Filter für markiete Spam-Nachrichten ist in der Standard-Konfiguration voreingestellt, &lt;br /&gt;
so dass Nachrichten mit Spam-Bewertung in einen vorhandenen Spam-Ordner einsortiert werden.&lt;br /&gt;
&lt;br /&gt;
Seit einigen Jahren betreibt Hostsharing zusätzlich zu den vorkonfigurierte Maileingangsservern einen zweiten Satz von Maileingangsservern, bei denen Spamassassin bereits beim Annehmen einer E-Mail ausgeführt wird. Anfang 2026 ist eine Gruppe von Eingangsserver mit der Software &amp;quot;rspamd&amp;quot; hinzugekommen. Eingehende Nachrichten mit Malware oder sehr hoher Bewertung als Spam werden bereits im SMTP-Dialog abgewiesen. Nachrichten mit einem geringeren Spam-Score werden angenommen und zugestellt. Spamassassin fügt die Bewertung für diese Nachrichten in die Header der Nachricht ein, zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
X-Spam-Status: Yes, score=11.29&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der globale Sieve-Filter schiebt Nachrichten mit der Markierung &amp;quot;X-Spam-Status: Yes&amp;quot; in einen Ordner &amp;quot;Junk&amp;quot;, wenn der Ordner vorhanden ist. Viele Mailprogramme legen beim ersten Verbinden mit dem IMAP-Server einen solchen Ordner an. Unser &amp;quot;Roundcube&amp;quot;&lt;br /&gt;
unter https://webmail.hostsharing.net ist entsprechend eingerichtet, so dass der Ordner nach einer Nutzung von Webmail vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
== Eingangsserver konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Die Maileingangsserver mit Rspamd lassen sich pro Domain konfigurieren, indem die MX-Records im DNS-Zonefile gegenüber dem Default-Zonefile angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Im Zonefile entfällt der Platzhalter &amp;quot;{MX_RR}&amp;quot;. Stattdessen werden die folgenden MX-Records eingefügt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin1.hostsharing.net.&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin2.hostsharing.net.&lt;br /&gt;
{DOM_HOSTNAME}.    IN  MX  30  xmailin3.hostsharing.net.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Änderung der DNS-Zone siehe: https://www.hostsharing.net/doc/managed-operations-platform/zonefile/&lt;br /&gt;
Wer sich die Aktion auf der Shell nicht zutraut, möge bitte den &amp;quot;Webmaster on Demand&amp;quot; beauftragen.&lt;br /&gt;
&lt;br /&gt;
Die Änderung des Zonefile kann für eine Domain &amp;quot;hs-example.de&amp;quot; wie folgt überprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
dig +short -t MX hs-example.de @dns1.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Ausgabe wird erwartet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
30 xmailin2.hostsharing.net.&lt;br /&gt;
30 xmailin3.hostsharing.net.&lt;br /&gt;
30 xmailin1.hostsharing.net.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Reihenfolge der drei Eingangsserver kann variieren. &lt;br /&gt;
Die führende Zahl ist die Priorität im MX-Record (hier der Wert &amp;quot;30&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Filtern leren teilnehmen ==&lt;br /&gt;
Wer auch am lernen des Filters mitwirken möchte der senden den/die Benuztername/n xyz00-name an service (at) hostsharing (dot) net&lt;br /&gt;
&lt;br /&gt;
= Alternative 2: Persönlichen Spamfilter einrichten =&lt;br /&gt;
&lt;br /&gt;
Hier geht es darum, wie Personen mit (grundlegenden) Kenntnissen in der Shell-Bedienung für ihr persönliches Postfach einen Spam-Filter einrichten können. Spamassassin kann für jedes Postfach individuell konfiguriert werden. Für die Einrichtung und Pflege ist Shell-Zugang zur Mailbox erforderlich.  &lt;br /&gt;
&lt;br /&gt;
Ein Bayesfilter kann mit den persönlichen Nachrichten angelernt werden. Dazu sind tiefergehende Shell-Kenntnisse erforderlich (Shell-Skript und Einrichtung eines systemd-Timers).&lt;br /&gt;
&lt;br /&gt;
== Spamassassin Konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Der Spamfilter &amp;quot;Spamassassin&amp;quot; ist bei HS vorinstalliert. Es muss über das Kommando &amp;quot;spamc&amp;quot;, das Kommando zur Nutzung des Spamassassin-Daemon, in der Datei &amp;quot;.forward&amp;quot; eines Mail-Users aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;|/usr/bin/spamc -U /var/run/spamd -e /usr/lib/dovecot/deliver&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Effekt: Spammassassin schreibt seine Testergebnisse in die Headerzeilen jeder E-Mail und leitet die E-Mails weiter an das Programm &amp;quot;deliver&amp;quot; aus dem Dovecot-Paket. Das Sortieren von Spam-EMail in einen Spam-Ordner lässt sich mit Sieve-Filtern umsetzen.&lt;br /&gt;
&lt;br /&gt;
In dieser Variante kann man Spamassassin individuell konfigurieren. Dazu legt man im $HOME des Mailbox-Account ein Verzeichnis &amp;quot;$HOME/.spamassassin&amp;quot; an. Die Konfiguration erfolgt in der Datei &amp;quot;$HOME/.spamassassin/user_prefs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsbeispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
required_score          4.0&lt;br /&gt;
report_safe             0&lt;br /&gt;
use_bayes               1&lt;br /&gt;
bayes_auto_learn        1&lt;br /&gt;
skip_rbl_checks         0&lt;br /&gt;
use_razor2              1&lt;br /&gt;
use_pyzor               1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayesfilter anlernen ==&lt;br /&gt;
&lt;br /&gt;
Wenn der Bayesfilter eingeschaltet ist, macht es Sinn den Filter mit den Befehlen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
sa-learn --spam &amp;lt;platzhalter-spam-nachricht-oder-verzeichnis&amp;gt;&lt;br /&gt;
sa-learn --ham &amp;lt;platzhalter-erwünschte-nachricht-oder-verzeichnis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
anzulernen. Ein Bash-Skript für das Erlernen von Spam/Nonspam kann wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
HAM_MIN_AGE_DAYS=5&lt;br /&gt;
MAILDIR_HAM=${HOME}/Maildir/cur&lt;br /&gt;
TMPDIR=${HOME}/sa-learn-tmp&lt;br /&gt;
SPAMFOLDER=Junk&lt;br /&gt;
SPAMFOLDER_LEARNED=${SPAMFOLDER}.sa-learned&lt;br /&gt;
MAILDIR_SPAM=${HOME}/Maildir/.${SPAMFOLDER}&lt;br /&gt;
&lt;br /&gt;
# Learn spam from MAILDIR_SPAM&lt;br /&gt;
mkdir -p ${TMPDIR}/spam&lt;br /&gt;
rm -f ${TMPDIR}/spam/*&lt;br /&gt;
SPAM_COUNT=0&lt;br /&gt;
for DIR in &amp;quot;cur&amp;quot; &amp;quot;new&amp;quot;; do&lt;br /&gt;
	DIR=&amp;quot;${MAILDIR_SPAM}/${DIR}&amp;quot;&lt;br /&gt;
	cd ${DIR}&lt;br /&gt;
	# echo &amp;quot;---&amp;quot; DIR ${DIR}&lt;br /&gt;
	for SPAMFILE in $( ls ); do&lt;br /&gt;
		# echo &amp;quot;   &amp;quot; ${SPAMFILE}&lt;br /&gt;
		TMPFILE=&amp;quot;${TMPDIR}/spam/${SPAMFILE}&amp;quot;&lt;br /&gt;
		if ! zcat &amp;quot;${SPAMFILE}&amp;quot; &amp;gt; &amp;quot;${TMPFILE}&amp;quot; 2&amp;gt;/dev/null; then&lt;br /&gt;
			cp &amp;quot;${SPAMFILE}&amp;quot; &amp;quot;${TMPFILE}&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		SPAM_COUNT=$((SPAM_COUNT + 1))&lt;br /&gt;
	done&lt;br /&gt;
done&lt;br /&gt;
sa-learn --spam ${TMPDIR}/spam/*&lt;br /&gt;
&lt;br /&gt;
# Move processed spam to keep it in another folder&lt;br /&gt;
doveadm move -u $(whoami) INBOX.${SPAMFOLDER_LEARNED} mailbox INBOX.${SPAMFOLDER} all 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
# Learn ham from MAILDIR_HAM (&amp;gt; HAM_MIN_AGE_DAYS days; max. 2x spam count)&lt;br /&gt;
mkdir -p ${TMPDIR}/ham&lt;br /&gt;
rm -f ${TMPDIR}/ham/*&lt;br /&gt;
cd ${MAILDIR_HAM}&lt;br /&gt;
MAX_HAM=$((SPAM_COUNT * 2))&lt;br /&gt;
HAM_COUNT=0&lt;br /&gt;
for HAMFILE in $( find . -type f -mtime +${HAM_MIN_AGE_DAYS} -printf &#039;%T@ %p\n&#039; | sort -rn | cut -d&#039; &#039; -f2- | head -n ${MAX_HAM} ); do&lt;br /&gt;
	TMPFILE=&amp;quot;${TMPDIR}/ham/${HAMFILE}&amp;quot;&lt;br /&gt;
	if ! zcat &amp;quot;${HAMFILE}&amp;quot; &amp;gt; &amp;quot;${TMPFILE}&amp;quot; 2&amp;gt;/dev/null; then&lt;br /&gt;
		cp &amp;quot;${HAMFILE}&amp;quot; &amp;quot;${TMPFILE}&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	HAM_COUNT=$((HAM_COUNT + 1))&lt;br /&gt;
done&lt;br /&gt;
sa-learn --ham ${TMPDIR}/ham/*&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Training erfolgte mit ${SPAM_COUNT} Spam, ${HAM_COUNT} (max ${MAX_HAM}) Ham Mails.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei werden Mails verarbeitet, unabhängig davon, ob sie durch Procmail (unkomprimiert) oder über den Mailclient (komprimiert) verschoben vorliegen.&lt;br /&gt;
Für Ham wird ein Teil des Inhalts der Inbox verwendet, wobei die empfohlene Maximalanzahl von zweimal der Spammailanzahl und ein minimales Alter in Tagen gilt. Das Mindestalter garantiert ein inzwischen erfolgtes manuelles Aussortieren des Spams. Der verarbeitete Spam wird anschließend in ein separates Verzeichnis verschoben um den späteren Zugriff auf False Positives zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Das Skript wird über einen systemd-Timer täglich ausgeführt, der pro Mailbox eingerichtet werden muss.&lt;br /&gt;
&lt;br /&gt;
= Alternative 3: SecureMX zubuchen =&lt;br /&gt;
&lt;br /&gt;
Über unseren Domain-Anbieter &amp;quot;Partnergate&amp;quot; bietet Hostsharing als dritte Alternative die kommerzielle Spam-Appliance von Cisco an. Das Produkt heißt bei Partnergate &amp;quot;SecureMX&amp;quot;: https://www.hostsharing.net/loesungen/email/spam-abwehr/&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von SecureMX ist kostenpflichtig und wird auf Wunsch vom Hostsharing-Service eingerichtet. &lt;br /&gt;
&lt;br /&gt;
Es ist zu beachten, dass bei der Nutzung von SecureMX alle eingehenden E-Mail Nachrichten über Server geleitet werden, die nicht unter der Kontrolle von Hostsharing stehen und proprietäre Software einsetzen. Dieser Sachverhalt muss vom Mitglied ggf. datenschutzrechtlich bewertet werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Chg93-hsdoku&amp;diff=7471</id>
		<title>Benutzer:Chg93-hsdoku</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Chg93-hsdoku&amp;diff=7471"/>
		<updated>2026-01-05T09:01:48Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:Christian-guenter.jpg‎|miniatur|100px|right|Christian Günter]]&lt;br /&gt;
Christian Günter seit Feb 2001 bei HS, also ein Mitglied der ersten Stunden.&lt;br /&gt;
&lt;br /&gt;
.&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zonefile&amp;diff=7369</id>
		<title>Zonefile</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zonefile&amp;diff=7369"/>
		<updated>2025-06-02T10:22:08Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Fehler beim Übernehmen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die technische Dokumentation befindet sich hier: https://www.hostsharing.net/doc/managed-operations-platform/zonefile/&lt;br /&gt;
&lt;br /&gt;
Im Normalfall wird für eine bei Hostsharing liegende Domain (in diesem Beispiel &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;example.com&amp;lt;/code&amp;gt; die Konfiguration der {{lang|en|[[Nameserver]]}} automatisch erledigt. Die zugehörige Konfigurationsdatei wird englisch {{lang|en|[[zonefile]]}} oder auf Deutsch Zonendatei genannt. &lt;br /&gt;
&lt;br /&gt;
== Eigene Zonendateien ==&lt;br /&gt;
Die Konfiguration kann man anpassen durch das Anlegen oder Ändern eines [[Verwalten_der_Zonendaten|eigenen {{lang|en|zonefile}}]]. Diese Textdatei findet man als &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;/home/doms/example.com/etc/pri.example.com&amp;lt;/code&amp;gt; auf dem Server. In dieser Datei kann man diverse Platzhalter verwenden, die erlauben, Dinge automatisch erledigen zu lassen. Da individuelle Zonendateien über ein automatisch ablaufendes Programm nur auf Anforderung ins System übernommen werden, kann man aus dem Vorhandensein oder Fehlen dieser Datei keine Schlüsse ziehen, ob sie bereits übernommen wurde oder womöglich nach dem Übernehmen gelöscht wurde,&lt;br /&gt;
&lt;br /&gt;
== Fehler beim Übernehmen ==&lt;br /&gt;
Eine eigene Zonendatei kann fehlerhaft sein und beim Übernehemn kann theoretisch auch etwas schief laufen. Dann wird möglichwerweise eine fehlerhafte Datei &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;/etc/bind/pri.example.com&amp;lt;/code&amp;gt; erzeugt (keine Leseberechtigung für Benutzer) und mit einer kleinen Zeitverzögerung den {{lang|en|Nameserver}}n angeboten. Solange das der Fall ist, findet man die entsprechenden Fehlermeldungen in der Textdatei &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;/var/log/named/named.log&amp;lt;/code&amp;gt; und nach einer erfolgreichen Übernahme eine Erfolgsmeldung. Keine Meldung nach einer Änderung deutet darauf hin, daß (noch) nichts übernommen wurde.&lt;br /&gt;
&lt;br /&gt;
== Standard-Zonendatei ==&lt;br /&gt;
Auch die Standard-{{lang|en|zonefile}} wird über Platzhalter generiert. In ihrer allgemeinen Form, also mit Platzhaltern, findet man sie &#039;&#039;wo?&#039;&#039; auf dem Server. &lt;br /&gt;
&lt;br /&gt;
== Standard-Zonendatei herstellen lassen ==&lt;br /&gt;
Wer die Standardkonfiguration für die eigene Domain wieder herstellen möchte, leert das vorhandene {{lang|en|zonefile}} &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;~/doms/example.com/etc/pri.example.com&amp;lt;/code&amp;gt; komplett. Es muß danach 0 Byte groß sein. Dann läßt man die Datei ins System übernehmen, wobei sie automatisch gelöscht wird.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[Verwalten der Zonendaten]]&lt;br /&gt;
&amp;lt;!-- Aufschalten einer Domain --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Zonefile]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:DNS]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zonefile&amp;diff=7368</id>
		<title>Zonefile</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zonefile&amp;diff=7368"/>
		<updated>2025-06-02T10:20:56Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /etc/bind entfernt da kein lese zugriff mehr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die technische Dokumentation befindet sich hier: https://www.hostsharing.net/doc/managed-operations-platform/zonefile/&lt;br /&gt;
&lt;br /&gt;
Im Normalfall wird für eine bei Hostsharing liegende Domain (in diesem Beispiel &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;example.com&amp;lt;/code&amp;gt; die Konfiguration der {{lang|en|[[Nameserver]]}} automatisch erledigt. Die zugehörige Konfigurationsdatei wird englisch {{lang|en|[[zonefile]]}} oder auf Deutsch Zonendatei genannt. &lt;br /&gt;
&lt;br /&gt;
== Eigene Zonendateien ==&lt;br /&gt;
Die Konfiguration kann man anpassen durch das Anlegen oder Ändern eines [[Verwalten_der_Zonendaten|eigenen {{lang|en|zonefile}}]]. Diese Textdatei findet man als &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;/home/doms/example.com/etc/pri.example.com&amp;lt;/code&amp;gt; auf dem Server. In dieser Datei kann man diverse Platzhalter verwenden, die erlauben, Dinge automatisch erledigen zu lassen. Da individuelle Zonendateien über ein automatisch ablaufendes Programm nur auf Anforderung ins System übernommen werden, kann man aus dem Vorhandensein oder Fehlen dieser Datei keine Schlüsse ziehen, ob sie bereits übernommen wurde oder womöglich nach dem Übernehmen gelöscht wurde,&lt;br /&gt;
&lt;br /&gt;
== Fehler beim Übernehmen ==&lt;br /&gt;
Eine eigene Zonendatei kann fehlerhaft sein und beim Übernehemn kann theoretisch auch etwas schief laufen. Dann wird möglichwerweise eine fehlerhafte Datei &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;/etc/bind/pri.example.com&amp;lt;/code&amp;gt; erzeugt und mit einer kleinen Zeitverzögerung den {{lang|en|Nameserver}}n angeboten. Solange das der Fall ist, findet man die entsprechenden Fehlermeldungen der der Textdatei &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;/var/log/named/named.log&amp;lt;/code&amp;gt; und nach einer erfolgreichen Übernahme eine Erfolgsmeldung. Keine Meldung nach einer Änderung deutet darauf hin, daß (noch) nichts übernommen wurde.&lt;br /&gt;
&lt;br /&gt;
== Standard-Zonendatei ==&lt;br /&gt;
Auch die Standard-{{lang|en|zonefile}} wird über Platzhalter generiert. In ihrer allgemeinen Form, also mit Platzhaltern, findet man sie &#039;&#039;wo?&#039;&#039; auf dem Server. &lt;br /&gt;
&lt;br /&gt;
== Standard-Zonendatei herstellen lassen ==&lt;br /&gt;
Wer die Standardkonfiguration für die eigene Domain wieder herstellen möchte, leert das vorhandene {{lang|en|zonefile}} &amp;lt;code lang=&amp;quot;en&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;~/doms/example.com/etc/pri.example.com&amp;lt;/code&amp;gt; komplett. Es muß danach 0 Byte groß sein. Dann läßt man die Datei ins System übernehmen, wobei sie automatisch gelöscht wird.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[Verwalten der Zonendaten]]&lt;br /&gt;
&amp;lt;!-- Aufschalten einer Domain --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Zonefile]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:DNS]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainregistrierung&amp;diff=7335</id>
		<title>Domainregistrierung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainregistrierung&amp;diff=7335"/>
		<updated>2025-04-10T09:28:37Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Neuregistrierung oder Transfer zu Hostsharing (KK) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Erst eine neue Domain über HSAdmin einrichten, dann über das Domain-Bestellsystem registrieren oder von einem anderen Provider transferieren ===&lt;br /&gt;
&lt;br /&gt;
Wird eine neue Domain registriert oder von einem anderen Provider zu Hostsharing transferiert, sollte im Normalfall die Domain bei Hostsharing über HSAdmin eingerichtet werden, bevor die Registrierung letztlich eingeleitet bzw. aktualisiert wird. Sonst kann es zu Problemen beim Konnektieren der Domain kommen.&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Domain auf den HS Servern =&lt;br /&gt;
&lt;br /&gt;
{{Kerndoku|https://www.hostsharing.net/doc/managed-operations-platform/domain/#domainverwaltung}}&lt;br /&gt;
&lt;br /&gt;
Der Domainname muss im Punicode Format angelegt werden aus münster.de wird xn--mnster-3ya.de .&lt;br /&gt;
&lt;br /&gt;
Bei diesem Vorgang werden die Verzeichnisse für die Domain im eigenen Paket angelegt und die Domain wird auf die Mail, Web- und Nameserver von HS [[Aufschaltung|aufgeschaltet]]. Letzteres (das Nameserver-Update) ist Voraussetzung für den nächsten Schritt.&lt;br /&gt;
&lt;br /&gt;
= Domainregistrierung oder eingehender Transfer ([[KK]]) =&lt;br /&gt;
&lt;br /&gt;
== Bei fremdem Provider registrierte Domain zum Transfer freischalten ==&lt;br /&gt;
&lt;br /&gt;
Falls die Domain bisher bei einem anderen Provider gehostet ist, muss diesem die Transfer-Absicht mitgeteilt werden. Dafür gibt es bei den jeweiligen Providern etablierte Verfahren, die dort zu erfragen sind. Üblicherweise bekommt man dort einen AuthCode für die Domain mitgeteilt. Gibt es kein etabliertes Verfahren, so kann man wie folgt verfahren:&lt;br /&gt;
&lt;br /&gt;
* Formlos per Brief/Fax den Transfer ankündigen und um Zustimmung bitten, z.B.:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=output line&amp;gt;&lt;br /&gt;
Hiermit kündige ich als Owner/Admin-C den Transfer (KK) der &lt;br /&gt;
Domain example.com zur Hostsharing eG, vertreten durch den Registrar &lt;br /&gt;
RegistryGate GmbH, an. Ich bitte, dem folgenden Transferantrag zuzustimmen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Nach Absendung der Transfer-Ankündigung 3-4 Tage warten, um dem alten Provider  Zeit zu geben auf den Transferantrag zu reagieren. &lt;br /&gt;
* Wenn dem Transfer nicht stattgegeben wird, den Registrar der Domain herausfinden (z.B. über die Nameserver oder zuständige Registry) und bitten den Transfer zuzulassen.&lt;br /&gt;
&lt;br /&gt;
== Neuregistrierung oder Transfer zu Hostsharing ([[KK]]) ==&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise ist unter https://www.hostsharing.net/doc/managed-operations-platform/domain/#domainverwaltung beschrieben. &lt;br /&gt;
&lt;br /&gt;
* Bei der allerersten Domainregistrierung im Domainbestellsystem müssen die Hostsharing Nameserver noch manuell eingegeben werden. Es sind dies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=output line&amp;gt;&lt;br /&gt;
dns1.hostsharing.net&lt;br /&gt;
dns2.hostsharing.net&lt;br /&gt;
dns3.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= E-Mail-Adressen der neu eingerichteten Domain =&lt;br /&gt;
&lt;br /&gt;
Ist die Domain bei Hostsharing aufgeschaltet, sind standardmäßig nur die E-Mail-Adressen webmaster@..., postmaster@... und abuse@... eingerichtet. Die Einrichtung weiterer E-Mail-Adressen ist unter https://doc.hostsharing.net/einstieg/email.html beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Gitea&amp;diff=7301</id>
		<title>Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Gitea&amp;diff=7301"/>
		<updated>2025-03-11T18:37:10Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Gitea installieren */ Daemon -&amp;gt; RAM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Gitea installieren ==&lt;br /&gt;
&lt;br /&gt;
[https://gitea.io/en-us/ Gitea] ist ein einfacher, selbst gehosteter Git-Service wie GitHub oder GitLab. Die Software ist ein Fork von Gogs und ebenfalls in der Programmiersprache Go geschrieben. Gitea benötigt wenig Ressourcen. &lt;br /&gt;
Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option &amp;quot;RAM&amp;quot;. Benötigt werden min. 128 MB. Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/ gebucht werden muss der RAM auch bei einem Managed-Server. &lt;br /&gt;
Gitea unterstützt verschiedene Datenbanken. Wir gehen in dieser Anleitung davon aus, dass PostgreSQL benutzt wird.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung der Installation ===&lt;br /&gt;
&lt;br /&gt;
Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.&lt;br /&gt;
&lt;br /&gt;
# Anlegen eines Domain-Benutzers. In unserem Beispiel &amp;lt;code&amp;gt;xyz00-gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Anlegen einer Domain. In unserem Beispiel &amp;lt;code&amp;gt;gitea.hs-example.de&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Anlegen eines Datenbank-Benutzers. Hier &amp;lt;code&amp;gt;xyz00_giteadbuser&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Anlegen einer Datenbank. Hier &amp;lt;code&amp;gt;xyz00_giteadb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Auf der Kommandozeile kann man dies folgendermaßen erledigen.&lt;br /&gt;
&lt;br /&gt;
Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl &amp;lt;code&amp;gt;hsscript&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-gitea&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;gitea.hs-example.de&#039;,user:&#039;xyz00-gitea&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; postgresqluser.add({set:{name:&#039;xyz00_giteadbuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; postgresqldb.add({set:{name:&#039;xyz00_giteadb&#039;,owner:&#039;xyz00_giteadbuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation von Gitea ===&lt;br /&gt;
&lt;br /&gt;
Gitea wird als Binary zur Verfügung gestellt.&lt;br /&gt;
Wir installieren das Binary im Verzeichnis des Domain-Benutzers.&lt;br /&gt;
Wenn wir als Paketbenutzer eingeloggt sind, können wir den Benutzer folgendermaßen wechseln:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
sudo -u xyz00-gitea -i&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Nun laden wir das passende Binary herunter.&lt;br /&gt;
Auf der Website https://dl.gitea.io/gitea/ finden Sie das jeweils aktuelle Binary (hier die 64-Bit-Version, &lt;br /&gt;
für die shared Server h01 bis h08 bitte die 32-Bit-Version gitea-1.7.0-linux-i386 herunterladen).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64&lt;br /&gt;
chmod +x gitea&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir laden die GPG-Signatur herunter und überprüfen sie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc&lt;br /&gt;
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2&lt;br /&gt;
gpg --verify gitea-1.7.0-linux-amd64.asc gitea&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir Gitea testweise starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
./gitea web&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Webserver von Gitea startet auf dem Port 3000. Das werden wir später ändern.&lt;br /&gt;
&lt;br /&gt;
Der Server kann mit Ctrl-C beendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration der Domain ===&lt;br /&gt;
&lt;br /&gt;
Zunächst wechseln wir in das Verzeichnis &amp;lt;code&amp;gt;doms/gitea.hs-example.de&amp;lt;/code&amp;gt; und löschen den Ordner für die Subdomain &#039;www&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
rm -rf subs/www&lt;br /&gt;
rm -rf subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend tragen wir die Umleitung auf HTTPS ein, falls dies nicht schon geschehen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
vi htdocs/.htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Der Eintrag muss lauten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
Redirect permanent / https://gitea.hs-example.com/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Dann legen wir die Datei &amp;lt;code&amp;gt;htdocs-ssl/.htaccess&amp;lt;/code&amp;gt; mit folgendem Inhalt an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Merken Sie sich die Portnummer 31580.&lt;br /&gt;
Sie wird später bei der Konfiguration von Gitea gebraucht.&lt;br /&gt;
Die Portnummer bekommen Sie vom Hostmaster, wenn Sie für Ihren Webspace RAM buchen.&lt;br /&gt;
Wenn Sie einen Managed Server haben, können Sie selbst die Portnummer auswählen.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Konfiguration von Apache abgeschlossen.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von Gitea ===&lt;br /&gt;
&lt;br /&gt;
Wir editieren nun die Konfigurationsdatei von Gitea &amp;lt;code&amp;gt;app.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
Sie befindet sich in dem Verzeichnis &amp;lt;code&amp;gt;~/custom/conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039;: Sie können die Konfiguration teilweise auch über das Webinterface durchführen. Starten Sie dazu Gitea, wie oben beschrieben, und versuchen Sie einen Benutzer zu registrieren. Daraufhin öffnet sich der Konfigurationsdialog. Sie müssen den Gitea-Benutzer, den Namen der Datenbank, den Datenbank-Benutzer und sein Passwort parat haben.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei beginnt mit allgemeinen Einträgen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
APP_NAME = Gitea: Git with a cup of tea&lt;br /&gt;
RUN_USER = xyz00-gitea&lt;br /&gt;
RUN_MODE = prod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt [database] folgen die Angaben zur Datenbank:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
DB_TYPE  = postgres&lt;br /&gt;
HOST     = 127.0.0.1:5432&lt;br /&gt;
NAME     = xyz00_giteadb&lt;br /&gt;
USER     = xyz00_giteadbuser&lt;br /&gt;
PASSWD   = geheim&lt;br /&gt;
SSL_MODE = disable&lt;br /&gt;
PATH     = data/gitea.db&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[repository]&lt;br /&gt;
ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories&lt;br /&gt;
    &lt;br /&gt;
[server]&lt;br /&gt;
PROTOCOL         = http&lt;br /&gt;
SSH_DOMAIN       = gitea.hs-example.de &lt;br /&gt;
DOMAIN           = gitea.hs-example.de&lt;br /&gt;
HTTP_ADDR        = localhost&lt;br /&gt;
HTTP_PORT        = 31580&lt;br /&gt;
ROOT_URL         = https://gitea.hs-example.de/&lt;br /&gt;
DISABLE_SSH      = false&lt;br /&gt;
SSH_PORT         = 22&lt;br /&gt;
LFS_START_SERVER = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für das Schreiben der Log Datei können Sie folgendes konfigurieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[log]&lt;br /&gt;
MODE       = file&lt;br /&gt;
LEVEL      = info&lt;br /&gt;
ROOT_PATH  = /home/pacs/xyz00/users/gitea/custom/logs/&lt;br /&gt;
ROUTER     = file&lt;br /&gt;
LOG_ROTATE = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039;: Bitte prüfen Sie, ob der Ordner zum Speichern der Log-Dateien von Gitea vorhanden ist. Bei Bedarf erstellen Sie die Ordnerstruktur entsprechend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
mkdir -p /home/pacs/xyz00/users/gitea/custom/logs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können nun Gitea starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
./gitea web&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar.&lt;br /&gt;
&lt;br /&gt;
=== Service einrichten ===&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen Sie noch den Service zum Starten von Gitea einrichten.&lt;br /&gt;
&lt;br /&gt;
Das Service Skript speichern Sie unter dem Pfad &amp;lt;code&amp;gt;~/.config/systemd/user/gitea.service&amp;lt;/code&amp;gt; ab.&lt;br /&gt;
Es hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
Description=Gitea&lt;br /&gt;
    &lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
Restart=on-abort&lt;br /&gt;
WorkingDirectory=%h&lt;br /&gt;
ExecStart=%h/gitea web&lt;br /&gt;
    &lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können Sie noch die Rotation der Logfiles konfigurieren.&lt;br /&gt;
Dies geschieht in der Datei &amp;lt;code&amp;gt;~/.logrotate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
/home/pacs/xyz00/users/gitea/custom/logs/gitea.log {&lt;br /&gt;
  copytruncate&lt;br /&gt;
  daily&lt;br /&gt;
  rotate 7&lt;br /&gt;
  compress&lt;br /&gt;
  missingok&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit logrotate regelmäßig ausgeführt wird, müssen Sie folgenden systemd Timer für denv Domain-Benutzers einrichten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;~/.config/systemd/user/gitea_logrotate.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=rotate gittea logs&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/sbin/logrotate -s /home/pacs/xyz00/users/gitea/.logrotate.state /home/pacs/xyz00/users/gitea/.logrotate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;~/.config/systemd/user/gitea_logrotate.timer&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=rotate gittea logs&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=1:51&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
$ systemctl --user enable gitea_logrotate.timer&lt;br /&gt;
$ systemctl --user start gitea_logrotate.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Uhrzeit für die Logrotation können Sie beliebig einstellen.&lt;br /&gt;
&lt;br /&gt;
Abschließend können Sie Ihre Gitea-Instanz starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
export XDG_RUNTIME_DIR=/run/user/$UID&lt;br /&gt;
systemctl --user start gitea&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039;: Bitte beachten Sie, dass für die Ausführung von Benutzerskripten mit systemctl für den aktuellen Benutzer im hsadmin die Shell &amp;quot;/bin/bash&amp;quot; konfiguriert sein muss.&lt;br /&gt;
&lt;br /&gt;
=== Anmeldung über LDAP einrichten ===&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Konfiguration, können nun lokale Benutzer angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Falls Sie die Benutzerverwaltung noch an ein LDAP Verzeichnis anschließen wollen, können Sie diese Schritte ausführen:&lt;br /&gt;
&lt;br /&gt;
Sie finden hier die Informationen zum Einrichten eines OpenLDAP Dienstes: [[OpenLDAP]]&lt;br /&gt;
&lt;br /&gt;
Gehen Sie in der Weboberfläche von Git in die Administration, und dort in den Reiter &amp;quot;Authentifizierungsquellen&amp;quot;, oder direkt auf dem Link https://git.hs-example.de/-/admin/auths&lt;br /&gt;
&lt;br /&gt;
Dort sollten dann folgende Werte eingetragen werden:&lt;br /&gt;
* Authentifizierungstyp: LDAP (via BindDN)&lt;br /&gt;
* Host: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; (bzw. der Name des Servers, auf dem OpenLDAP erreichbar ist)&lt;br /&gt;
* Port: &amp;lt;code&amp;gt;30389&amp;lt;/code&amp;gt; (bzw. der Port auf dem OpenLDAP erreichbar ist)&lt;br /&gt;
* DN binden: &amp;lt;code&amp;gt;cn=admin,dc=hs-example,dc=de&amp;lt;/code&amp;gt; (Der Benutzer der Zugriff auf alle Benutzer hat)&lt;br /&gt;
* Passwort binden: Das Passwort von dem DN Benutzer&lt;br /&gt;
* Basis für Benutzersuche: &amp;lt;code&amp;gt;ou=users,dc=hs-example,dc=de&amp;lt;/code&amp;gt;&lt;br /&gt;
* Benutzerfilter: &amp;lt;code&amp;gt;(&amp;amp;(objectClass=inetOrgPerson)(uid=%s))&amp;lt;/code&amp;gt;&lt;br /&gt;
* Admin-Filter: &amp;lt;code&amp;gt;(memberof=cn=admins,ou=groups,dc=hs-example,dc=de)&amp;lt;/code&amp;gt; (diese Benutzer haben Admin Rechte in Gitea)&lt;br /&gt;
* Benutzernamens-Attribute: &amp;lt;code&amp;gt;DN&amp;lt;/code&amp;gt;&lt;br /&gt;
* Vornamensattribut: &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
* Nachnamensattribut: &amp;lt;code&amp;gt;sn&amp;lt;/code&amp;gt;&lt;br /&gt;
* E-Mail-Attribut: &amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier noch ein Screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Gitea_LDAP_Einrichtung.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Default Branches ohne Force Push ===&lt;br /&gt;
&lt;br /&gt;
In den Einstellungen von jedem Repository kann unter &amp;quot;Branches&amp;quot; eine Regel z.B. für den Hauptbranch erstellt werden, damit entweder nur Pull Requests und kein direkter Push erlaubt ist, oder dass Push erlaubt ist, aber kein Verändern der Historie mit force push.&lt;br /&gt;
&lt;br /&gt;
Über diese SQL Befehl können die Einstellungen überprüft werden:&lt;br /&gt;
&lt;br /&gt;
Zeige alle Repositories, die noch keine Regel für den Hauptbranch haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sql&amp;gt;&lt;br /&gt;
SELECT r.id, owner_name, lower_name, r.default_branch&lt;br /&gt;
FROM repository r&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
        SELECT 1&lt;br /&gt;
        FROM protected_branch pb&lt;br /&gt;
        WHERE pb.repo_id = r.id AND pb.branch_name = r.default_branch&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeige die Regeln für die Hauptbranches:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sql&amp;gt;&lt;br /&gt;
SELECT r.id, owner_name, lower_name, r.default_branch, pb.can_push, pb.required_approvals&lt;br /&gt;
FROM repository r JOIN protected_branch pb ON pb.repo_id = r.id AND pb.branch_name = r.default_branch;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitea.io/ Gitea Webseite]&lt;br /&gt;
* [https://docs.gitea.io/ Dokumentation von Gitea]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/gitea Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Projektmanagement]]&lt;br /&gt;
[[Kategorie:Projektverwaltung]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Hsadmin-mail&amp;diff=7218</id>
		<title>Hsadmin-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Hsadmin-mail&amp;diff=7218"/>
		<updated>2025-01-09T14:40:15Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textkasten|rot|Hinweis:|Inhalt ist nun in der HS Dokumentation.&lt;br /&gt;
https://www.hostsharing.net/doc/managed-operations-platform/tutorials/email-einrichten/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mono_bei_Hostsharing&amp;diff=7207</id>
		<title>Mono bei Hostsharing</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mono_bei_Hostsharing&amp;diff=7207"/>
		<updated>2025-01-03T16:08:24Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Mono und fastcgi Server im Produktiveinsatz */ systemd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
&lt;br /&gt;
Mono [https://www.mono-project.com/] ist ein Open Source .NET Framework und ermöglicht es, .NET Anwendungen in C# unter Linux auszuführen.&lt;br /&gt;
&lt;br /&gt;
== Mono bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Momentan ist Mono nicht zentral auf den Hostsharing Servern installiert. &lt;br /&gt;
&lt;br /&gt;
Mono wird als Debian Paket bereitgestellt, siehe https://packages.debian.org/de/buster/mono-complete&lt;br /&gt;
&lt;br /&gt;
Das könnten wir bei Bedarf einrichten, allerdings ist die Version von Mono in unserem aktuell verwendeten Debian 10 (Buster) schon ziemlich alt (Mono 5.18).&lt;br /&gt;
&lt;br /&gt;
Das ist ganz normal, bei nodejs/npm sieht es ähnlich aus, weil die Entwicklung solcher Projekte etwas schneller fortschreitet als die Debian Releases, die auf Stabilität bedacht sind.&lt;br /&gt;
&lt;br /&gt;
== Mono lokal im Benutzer installieren ==&lt;br /&gt;
&lt;br /&gt;
Es gibt aber einen Weg, ein binäres Paket im eigenen Benutzerverzeichnis zu installieren,&lt;br /&gt;
welches die gewünschte Funktionalität einer ziemlich aktuellen Mono Version (Mono 6.8) bietet.&lt;br /&gt;
&lt;br /&gt;
Das binäre Paket kann hier heruntergeladen werden: https://download.solidcharity.com/tarballs/tpokorra/mono/mono-6.8.0.105.bin.debian10.tar.gz&lt;br /&gt;
&lt;br /&gt;
Es enthält eine env.sh Datei, die ausgeführt werden muss, um die entsprechenden Pfade zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://download.solidcharity.com/tarballs/tpokorra/mono/mono-6.8.0.105.bin.debian10.tar.gz&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Prüfen der Hash Summe sollte OK zeigen:&amp;quot;&lt;br /&gt;
echo &amp;quot;f2c27f11141f81a131b6417084c31ab3ae9d050aab8f13d75b406b377a7a1c670bdfc386f276317115e791af0ad34842 *mono-6.8.0.105.bin.debian10.tar.gz&amp;quot; | sha384sum --check&lt;br /&gt;
&lt;br /&gt;
tar xzf mono-6.8.0.105.bin.debian10.tar.gz&lt;br /&gt;
ln -s mono-6.8.0.105 mono&lt;br /&gt;
source mono/env.sh&lt;br /&gt;
mono --version&lt;br /&gt;
	Mono JIT compiler version 6.8.0.105 (Debian 6.8.0.105+dfsg-3 Sun Dec 13 21:52:01 CET 2020)&lt;br /&gt;
	Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com&lt;br /&gt;
		TLS:           __thread&lt;br /&gt;
		SIGSEGV:       altstack&lt;br /&gt;
		Notifications: epoll&lt;br /&gt;
		Architecture:  amd64&lt;br /&gt;
		Disabled:      none&lt;br /&gt;
		Misc:          softdebug &lt;br /&gt;
		Interpreter:   yes&lt;br /&gt;
		LLVM:          supported, not enabled.&lt;br /&gt;
		Suspend:       hybrid&lt;br /&gt;
		GC:            sgen (concurrent by default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung zur Erstellung des binären Pakets ===&lt;br /&gt;
&lt;br /&gt;
Natürlich muss man immer hinterfragen, ob man fremden binären Paketen vertraut. Alternativ kann man anhand der folgenden Anleitung das binäre Paket gegebenenfalls selber herstellen:&lt;br /&gt;
&lt;br /&gt;
Zuerst werden aktuelle Mono Pakete für Debian Buster benötigt. Diese können aus den Quellen der Mono Pakete von Debian Bullseye für Debian Buster gebaut werden.&lt;br /&gt;
Die entsprechenden Skripte liegen hier: https://github.com/tpokorra/lbs-mono/tree/master/mono und https://github.com/tpokorra/lbs-mono/tree/master/xsp&lt;br /&gt;
Beim XSP wurde allerdings eine neuere Version verwendet (4.7.1) als momentan von Debian bereitgestellt wird (4.2, siehe https://packages.debian.org/de/bullseye/mono-xsp).&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Bash Skript [https://github.com/tpokorra/lbs-mono/blob/master/mono2bintarball/setup.sh] und ein Python Skript [https://github.com/tpokorra/lbs-mono/blob/master/mono2bintarball/mono2bintarball.py].&lt;br /&gt;
Diese werden auf einem Build Server ausgeführt, und es werden die folgenden Schritte ausgeführt:&lt;br /&gt;
&lt;br /&gt;
* Es werden die Namen der aktuell installierten Pakete auf dem Hostsharing Server heruntergeladen.&lt;br /&gt;
* Dann wird eine Liste angefertigt von Paketen, die wir lokal installieren wollen für Mono.&lt;br /&gt;
* Dann werden lokal die gewünschten Mono Pakete installiert.&lt;br /&gt;
* Dann werden die Pakete, die installiert worden sind, mit den Paketen auf dem Hostsharing Server abgeglichen. Die Inhalte der zusätzlichen Pakete werden in das binäre Paket gepackt.&lt;br /&gt;
* Auch einige spezifische Mono Dateien, die teilweise erst mit den Installationsskripten installiert wurden (z.B. aot Cache, config Dateien), werden in das binäre Paket gepackt.&lt;br /&gt;
* Die Pfade in den bash Skripten zum Starten von Mono werden angepasst, damit es im Benutzerverzeichnis ausgeführt werden kann.&lt;br /&gt;
* Es wird eine env.sh Datei dazu gepackt.&lt;br /&gt;
&lt;br /&gt;
== Mono Anwendung mit xsp debuggen ==&lt;br /&gt;
&lt;br /&gt;
Man kann eine Mono Anwendung direkt mit xsp ausführen, ohne den Umweg über den Apache. Das kann beim Debuggen nützlich sein.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
index.aspx&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Import Namespace=&amp;quot;System&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;%&lt;br /&gt;
            Response.Write( &amp;quot;Hello World&amp;lt;br/&amp;gt;&amp;quot;);&lt;br /&gt;
            Response.Write( String.Format(&amp;quot;Current Time is {0}&amp;lt;br/&amp;gt;&amp;quot;, DateTime.Now));&lt;br /&gt;
        %&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Kompilierfehler im Browser zu sehen, diese Datei anlegen:&lt;br /&gt;
&lt;br /&gt;
web.config&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
    &amp;lt;system.web&amp;gt;&lt;br /&gt;
        &amp;lt;customErrors mode=&amp;quot;Off&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eigene IP Adresse herausfinden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
ping -4 xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun kann der Server mit dieser IP Adresse gestartet werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xsp4 --port=8080 --address=aa.bbb.cc.ddd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Seite ist nun über http://xyz00.hostsharing.net:8080 erreichbar.&lt;br /&gt;
&lt;br /&gt;
== Mono und fastcgi Server im Produktiveinsatz ==&lt;br /&gt;
&lt;br /&gt;
Für den produktiven Einsatz benutzt man den fastcgi Server.&lt;br /&gt;
&lt;br /&gt;
Dazu muss man entsprechend RAM für den Webspace buchen, und beim Service um einen freien Port bitten. Wir benutzen im Beispiel den Port 4001.&lt;br /&gt;
&lt;br /&gt;
bin/start-mono.sh&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cd $HOME/aspnetapp&lt;br /&gt;
. $HOME/mono/env.sh&lt;br /&gt;
exec fastcgi-mono-server4 \&lt;br /&gt;
  /socket=tcp:127.0.0.1:4001 \&lt;br /&gt;
  /applications=/:$HOME/aspnetapp \&lt;br /&gt;
  --logfile=$HOME/var/log/monoserver.log \&lt;br /&gt;
  --loglevels=All \&lt;br /&gt;
  --verbose \&lt;br /&gt;
  &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
echo $! &amp;gt; $HOME/var/run/mono.pid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bin/stop-mono.sh&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
kill -QUIT $( cat $HOME/var/run/mono.pid )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.monitrc&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
set daemon 60 with start delay 10&lt;br /&gt;
set logfile /home/pacs/xyz00/users/meinuser/var/log/monit.log&lt;br /&gt;
set idfile /home/pacs/xyz00/users/meinuser/var/run/monit.id&lt;br /&gt;
set statefile /home/pacs/xyz00/users/meinuser/var/run/monit.state&lt;br /&gt;
set mailserver localhost&lt;br /&gt;
set mail-format { from: monit@xyz00.hostsharing.net }&lt;br /&gt;
check process mono with pidfile /home/pacs/xyz00/users/meinuser/var/run/mono.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/meinuser/bin/start-mono.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/meinuser/bin/stop-mono.sh&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es sollten die entsprechenden leeren Verzeichnisse erstellt werden, und die Rechte für .monitrc geändert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
mkdir -p $HOME/var/log&lt;br /&gt;
mkdir -p $HOME/var/run&lt;br /&gt;
chmod 600 .monitrc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und dann noch einen systemd service für Monit anlegen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/monit.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=monit&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStartPre=rm -f %h/.monit.id&lt;br /&gt;
ExecStart=/usr/bin/monit -c %h/.monitrc&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Service aktivieren und starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ systemctl --user enable monit.service&lt;br /&gt;
$ systemctl --user start monit.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun muss noch dem Apache mitgeteilt werden, wie er auf den fastcgi Server zugreift:&lt;br /&gt;
&lt;br /&gt;
doms/meine-domain.de/subs-ssl/www/.htaccess&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
DirectoryIndex index.aspx&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteRule ^(.*) fcgi://127.0.0.1:4001/$1 [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann sollte unter https://www.meinedomain.de/ die Mono Applikation erreichbar sein!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mono]]&lt;br /&gt;
[[Kategorie:Eigene Daemons]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Monit_installieren&amp;diff=7205</id>
		<title>Monit installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Monit_installieren&amp;diff=7205"/>
		<updated>2025-01-03T15:36:47Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Monit Starten und Stoppen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:eigene Daemons]]&lt;br /&gt;
[[Kategorie:Managed Server]]&lt;br /&gt;
== Über Monit ==&lt;br /&gt;
Monit ist ein ressourcensparendes Programm zur Überwachung eines Server oder von [[Daemon|Diensten (&amp;quot;Daemons&amp;quot;)]] auf einem Server. &lt;br /&gt;
&lt;br /&gt;
Es fragt regelmäßig den Zustand des zu überwachenden Prozesses ab und kann bei einem Absturz den Prozess selbstständig neu starten. Für Betriebssystem-Ressourcen, wie Festplatten-Kapazität oder CPU- und RAM-Auslastung, können Schwellwerte angegeben werden, bei deren Überschreitung Monit per E-Mail alarmiert und in eine Log-Datei protokolliert.&lt;br /&gt;
&lt;br /&gt;
In dieser Beschreibung wird der Start des Servers und von Monit durch den Paketadmin angenommen. Sollte ein davon verschiedener Domain-Admin der &amp;quot;Befehlshaber&amp;quot; sein, so müssen die Pfade entsprechend korrigiert werden. Von &amp;quot;/home/pacs/xyz00&amp;quot; zu &amp;quot;/home/pacs/xyz00/users/user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Besser systemd benutzen|Achtung: wir empfehlen nicht mehr den Einsatz von monit als Prozessmanager. Alle Anwendungen sollten mit [[Prozessmanagement mit systemd im Userspace|Systemd im Userspace]] gestartet werden. Monit kann weiterhin zur Überwachung des Servers eingesetzt werden.}}&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Monit sucht seine Konfiguration beim Start zuerst in der Datei ~/.monitrc im Homeverzeichnis des Users, der monit startet.&lt;br /&gt;
&lt;br /&gt;
Wir erstellen also diese Datei im Hauptverzeichnis des Users und sorgen dafür, dass sie nur von diesem gelesen und beschrieben werden kann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hxx:~$ cd&lt;br /&gt;
xyz00@hxx:~$ touch .monitrc&lt;br /&gt;
xyz00@hxx:~$ chmod 0600 .monitrc&lt;br /&gt;
xyz00@hxx:~$ edit .monitrc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und füllen sie mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
set daemon 600&lt;br /&gt;
set logfile /home/pacs/xyz00/var/monit.log&lt;br /&gt;
set mailserver localhost&lt;br /&gt;
set alert admin@example.tld&lt;br /&gt;
&lt;br /&gt;
check process apache2 with pidfile /home/pacs/xyz00/etc/apache2/run/apache2.pid&lt;br /&gt;
    start program &amp;quot;/bin/bash -c &#039;/home/pacs/xyz00/etc/apache2/apache2_start&#039;&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/bin/bash -c &#039;/home/pacs/xyz00/etc/apache2/apache2_stop&#039;&amp;quot;&lt;br /&gt;
    if failed host example.tld port 8080 with timeout 60 seconds then restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dieses Beispiel geht davon aus, dass die entsprechenden Start- und Stopskripte existieren und der Pfad zum pidfile des Apachen stimmt.&lt;br /&gt;
&lt;br /&gt;
== Monit Starten und Stoppen ==&lt;br /&gt;
&lt;br /&gt;
Wird nun per systemd realisiert dazu&lt;br /&gt;
&lt;br /&gt;
noch einen systemd service für Monit anlegen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/monit.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=monit&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStartPre=rm -f %h/.monit.id&lt;br /&gt;
ExecStart=/usr/bin/monit -c %h/.monitrc&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Service aktivieren und starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ systemctl --user enable monit.service&lt;br /&gt;
$ systemctl --user start monit.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managed Server monitoren ==&lt;br /&gt;
&lt;br /&gt;
Bei der Nutzung eines Managed Server ist das Hostsharing-Mitglied selbst dafür verantwortlich, die Ressourcen des Servers&lt;br /&gt;
ausreichend zu dimensionieren. Monit kann helfen Engpässe zu entdecken.&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Zeilen in der .monitrc wird bei der Überschreitung von bestimmten Schwellwerten beim Load,&lt;br /&gt;
bei der RAM- und CPU-Auslastung und der Festplatten-Auslastung der E-Mail alarmiert und ins monit.log protokolliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
check system h00.hostsharing.net&lt;br /&gt;
    if loadavg (1min) &amp;gt; 5 then alert&lt;br /&gt;
    if loadavg (5min) &amp;gt; 3 then alert&lt;br /&gt;
    if memory usage &amp;gt; 85% then alert&lt;br /&gt;
    if cpu usage (user) &amp;gt; 70% then alert&lt;br /&gt;
    if cpu usage (system) &amp;gt; 30% then alert&lt;br /&gt;
    if cpu usage (wait) &amp;gt; 20% then alert&lt;br /&gt;
&lt;br /&gt;
check device datafs with path /dev/vda2&lt;br /&gt;
    if failed permission 0660 then alert&lt;br /&gt;
    if failed uid root then alert&lt;br /&gt;
    if failed gid &amp;quot;disk&amp;quot; then alert&lt;br /&gt;
    if space usage &amp;gt; 85 % then alert&lt;br /&gt;
    if inode usage &amp;gt; 85 % then alert&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logfiles kontrollieren ==&lt;br /&gt;
&lt;br /&gt;
Monit loggt entsprechend der Konfiguration seine &amp;quot;Taten&amp;quot; in ~/var/monit.log&lt;br /&gt;
&lt;br /&gt;
Damit das Logfile nicht zu groß wird, benutzen wir &#039;&#039;&#039;logrotate&#039;&#039;&#039;, das von [[cron]] aufgerufen wird, einmal pro Woche das Logfile komprimiert und zwei alte Versionen hält. Dazu erstellen wir die Konfigdatei .logrotate im Hauptverzeichnis des Users:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
touch .logrotate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darin schreiben wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
compress&lt;br /&gt;
&lt;br /&gt;
/home/pacs/xyz00/var/monit.log {&lt;br /&gt;
rotate 2&lt;br /&gt;
weekly&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun brauchen wir noch einen Aufruf von logrotate durch [[cron]]. Bitte beachten, logrotate merkt sich den letzten Zustand der Logdatei in einem Statusfile. Das muss in der [[Cron#Crontab|crontab]] mit angegeben werden. Wir editieren die crontab und schreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
27 7 * * 5	logrotate -s /home/pacs/xyz00/.logrotate_state /home/pacs/xyz00/.logrotate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird jeden Freitag um 7:27 Uhr das monit.log &amp;quot;rotiert&amp;quot;. &#039;&#039;&#039;Achtung:&#039;&#039;&#039; bitte einen anderen Tag und eine andere Uhrzeit wählen, damit nicht alle logrotates zur gleichen Zeit starten.&lt;br /&gt;
&lt;br /&gt;
== externe Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mmonit.com/monit/ Monit Homepage]&lt;br /&gt;
* [https://www.mmonit.com/monit/documentation/monit.html Monit Dokumentation]&lt;br /&gt;
* [https://www.mmonit.com/wiki/ Monit Wiki]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Monit_installieren&amp;diff=7202</id>
		<title>Monit installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Monit_installieren&amp;diff=7202"/>
		<updated>2025-01-03T14:25:24Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Monit Starten und Stoppen */  mit systemd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:eigene Daemons]]&lt;br /&gt;
[[Kategorie:Managed Server]]&lt;br /&gt;
== Über Monit ==&lt;br /&gt;
Monit ist ein ressourcensparendes Programm zur Überwachung eines Server oder von [[Daemon|Diensten (&amp;quot;Daemons&amp;quot;)]] auf einem Server. &lt;br /&gt;
&lt;br /&gt;
Es fragt regelmäßig den Zustand des zu überwachenden Prozesses ab und kann bei einem Absturz den Prozess selbstständig neu starten. Für Betriebssystem-Ressourcen, wie Festplatten-Kapazität oder CPU- und RAM-Auslastung, können Schwellwerte angegeben werden, bei deren Überschreitung Monit per E-Mail alarmiert und in eine Log-Datei protokolliert.&lt;br /&gt;
&lt;br /&gt;
In dieser Beschreibung wird der Start des Servers und von Monit durch den Paketadmin angenommen. Sollte ein davon verschiedener Domain-Admin der &amp;quot;Befehlshaber&amp;quot; sein, so müssen die Pfade entsprechend korrigiert werden. Von &amp;quot;/home/pacs/xyz00&amp;quot; zu &amp;quot;/home/pacs/xyz00/users/user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Besser systemd benutzen|Achtung: wir empfehlen nicht mehr den Einsatz von monit. Alle Anwendungen sollten mit [[Prozessmanagement mit systemd im Userspace|Systemd im Userspace]] laufen.}}&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Monit sucht seine Konfiguration beim Start zuerst in der Datei ~/.monitrc im Homeverzeichnis des Users, der monit startet.&lt;br /&gt;
&lt;br /&gt;
Wir erstellen also diese Datei im Hauptverzeichnis des Users und sorgen dafür, dass sie nur von diesem gelesen und beschrieben werden kann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hxx:~$ cd&lt;br /&gt;
xyz00@hxx:~$ touch .monitrc&lt;br /&gt;
xyz00@hxx:~$ chmod 0600 .monitrc&lt;br /&gt;
xyz00@hxx:~$ edit .monitrc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und füllen sie mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
set daemon 600&lt;br /&gt;
set logfile /home/pacs/xyz00/var/monit.log&lt;br /&gt;
set mailserver localhost&lt;br /&gt;
set alert admin@example.tld&lt;br /&gt;
&lt;br /&gt;
check process apache2 with pidfile /home/pacs/xyz00/etc/apache2/run/apache2.pid&lt;br /&gt;
    start program &amp;quot;/bin/bash -c &#039;/home/pacs/xyz00/etc/apache2/apache2_start&#039;&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/bin/bash -c &#039;/home/pacs/xyz00/etc/apache2/apache2_stop&#039;&amp;quot;&lt;br /&gt;
    if failed host example.tld port 8080 with timeout 60 seconds then restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dieses Beispiel geht davon aus, dass die entsprechenden Start- und Stopskripte existieren und der Pfad zum pidfile des Apachen stimmt.&lt;br /&gt;
&lt;br /&gt;
== Monit Starten und Stoppen ==&lt;br /&gt;
&lt;br /&gt;
Wird nun per systemd realisiert dazu&lt;br /&gt;
&lt;br /&gt;
noch einen systemd service für Monit anlegen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/monit.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=monit&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=rm -f $HOME/var/run/monit.id &amp;amp;&amp;amp; /usr/bin/monit -c &amp;quot;$HOME/.monitrc&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Service aktivieren und starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ systemctl --user enable monit.service&lt;br /&gt;
$ systemctl --user start monit.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managed Server monitoren ==&lt;br /&gt;
&lt;br /&gt;
Bei der Nutzung eines Managed Server ist das Hostsharing-Mitglied selbst dafür verantwortlich, die Ressourcen des Servers&lt;br /&gt;
ausreichend zu dimensionieren. Monit kann helfen Engpässe zu entdecken.&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Zeilen in der .monitrc wird bei der Überschreitung von bestimmten Schwellwerten beim Load,&lt;br /&gt;
bei der RAM- und CPU-Auslastung und der Festplatten-Auslastung der E-Mail alarmiert und ins monit.log protokolliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
check system h00.hostsharing.net&lt;br /&gt;
    if loadavg (1min) &amp;gt; 5 then alert&lt;br /&gt;
    if loadavg (5min) &amp;gt; 3 then alert&lt;br /&gt;
    if memory usage &amp;gt; 85% then alert&lt;br /&gt;
    if cpu usage (user) &amp;gt; 70% then alert&lt;br /&gt;
    if cpu usage (system) &amp;gt; 30% then alert&lt;br /&gt;
    if cpu usage (wait) &amp;gt; 20% then alert&lt;br /&gt;
&lt;br /&gt;
check device datafs with path /dev/vda2&lt;br /&gt;
    if failed permission 0660 then alert&lt;br /&gt;
    if failed uid root then alert&lt;br /&gt;
    if failed gid &amp;quot;disk&amp;quot; then alert&lt;br /&gt;
    if space usage &amp;gt; 85 % then alert&lt;br /&gt;
    if inode usage &amp;gt; 85 % then alert&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logfiles kontrollieren ==&lt;br /&gt;
&lt;br /&gt;
Monit loggt entsprechend der Konfiguration seine &amp;quot;Taten&amp;quot; in ~/var/monit.log&lt;br /&gt;
&lt;br /&gt;
Damit das Logfile nicht zu groß wird, benutzen wir &#039;&#039;&#039;logrotate&#039;&#039;&#039;, das von [[cron]] aufgerufen wird, einmal pro Woche das Logfile komprimiert und zwei alte Versionen hält. Dazu erstellen wir die Konfigdatei .logrotate im Hauptverzeichnis des Users:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
touch .logrotate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darin schreiben wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
compress&lt;br /&gt;
&lt;br /&gt;
/home/pacs/xyz00/var/monit.log {&lt;br /&gt;
rotate 2&lt;br /&gt;
weekly&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun brauchen wir noch einen Aufruf von logrotate durch [[cron]]. Bitte beachten, logrotate merkt sich den letzten Zustand der Logdatei in einem Statusfile. Das muss in der [[Cron#Crontab|crontab]] mit angegeben werden. Wir editieren die crontab und schreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
27 7 * * 5	logrotate -s /home/pacs/xyz00/.logrotate_state /home/pacs/xyz00/.logrotate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird jeden Freitag um 7:27 Uhr das monit.log &amp;quot;rotiert&amp;quot;. &#039;&#039;&#039;Achtung:&#039;&#039;&#039; bitte einen anderen Tag und eine andere Uhrzeit wählen, damit nicht alle logrotates zur gleichen Zeit starten.&lt;br /&gt;
&lt;br /&gt;
== externe Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mmonit.com/monit/ Monit Homepage]&lt;br /&gt;
* [https://www.mmonit.com/monit/documentation/monit.html Monit Dokumentation]&lt;br /&gt;
* [https://www.mmonit.com/wiki/ Monit Wiki]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Tomcat_Installieren&amp;diff=7195</id>
		<title>Tomcat Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Tomcat_Installieren&amp;diff=7195"/>
		<updated>2025-01-02T16:02:35Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Spezielle Installation bei Hostsharing */  RAM buchen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apache Tomcat installieren&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
&lt;br /&gt;
[http://tomcat.apache.org/ Apache Tomcat] ist ein Webserver (HTTP-Server), der in der Programmiersprache Java entwickelt ist. Er dient in erster Linie dazu, dynamische Web-Anwendungen zu betreiben, die ebenfalls in Java programmiert sind. Basis-Technologien sind [http://de.wikipedia.org/wiki/Servlet Java-Servlets] und [http://de.wikipedia.org/wiki/JSP Java Server Pages (JSP)].&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von Apache Tomcat ist bei Hostsharing das Hosting von komplexen Java Web-Applikationen problemlos möglich.&lt;br /&gt;
&lt;br /&gt;
== Spezielle Installation bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
In jedem dynamischen Webhosting-Paket der Hostsharing eG können einer (oder mehrere) Tomcat-Webserver betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option &amp;quot;RAM&amp;quot;. Benötigt werden min. 512 MB. Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/ gebucht werden muss der RAM auch bei einem Managed-Server. &lt;br /&gt;
&lt;br /&gt;
Diese Anleitung dokumentiert die Installation des Apache Tomcat Servers als Service-User in einem WEB-Paket bei Hostsharing.  Mit der Einrichtung der Option &amp;quot;eigener Serverdienst&amp;quot; werden für die Paket-IP-Adresse einer oder mehrere IP-Ports reserviert. An diese Ports wird der eigene Serverdienst (also der Tomcat-Server) am Localhost-Interface gebunden.&lt;br /&gt;
&lt;br /&gt;
Bei der Anmeldung (bei service(at)hostsharing.net bitte angeben:&lt;br /&gt;
&lt;br /&gt;
# den Service User, mit dessen Rechten der Tomcat-Dienst laufen soll (also zum Beispiel &amp;quot;xyz00-tomcat&amp;quot;)&lt;br /&gt;
# wieviele IP-Ports reserviert werden sollen (in der folgenden Anleitung verwenden wir drei nicht-privilegierte Ports: &lt;br /&gt;
* 38005 als &amp;quot;Shutdown&amp;quot;-Schnittstelle&lt;br /&gt;
* 38006 für eine AJP-Listener&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
&lt;br /&gt;
Vorbemerkung: Mit Debian 12 (&#039;Bookworm&#039;) wird Tomcat 10 von der Distribution mitgeliefert. &lt;br /&gt;
&lt;br /&gt;
Auf den Hostsharing-Servern ist das Debian-Paket &amp;quot;tomcat10-user&amp;quot; installiert. Es stellt den &lt;br /&gt;
Apache Tomcat Server in der Version 10.1.x für den Betrieb als normaler (nicht privilegierter) User bereit.&lt;br /&gt;
Dabei wird die zentral installierte Tomcat-Software benutzt, die über Betriebssystem-Updates mit Sicherheits-Updates versorgt wird.&lt;br /&gt;
&lt;br /&gt;
Für die Installation der Konfigurations-Dateien in Heimat-Verzeichnis des Benutzers wird folgender Befehl&lt;br /&gt;
mit den Rechten des Service-Users aufgerufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-tomcat@h00:~$ tomcat10-instance-create tomcat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich bevorzuge das catalina.sh-Startskript zum Testen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-tomcat@h00:~$ cp /usr/share/tomcat10/bin/catalina.sh tomcat/bin/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl legt ein Verzeichnis &amp;quot;tomcat&amp;quot; mit der üblichen Dateistruktur für einen Tomcat-Server an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bin&lt;br /&gt;
bin/catalina.sh&lt;br /&gt;
bin/setenv.sh&lt;br /&gt;
bin/shutdown.sh&lt;br /&gt;
bin/startup.sh&lt;br /&gt;
conf&lt;br /&gt;
conf/catalina.properties&lt;br /&gt;
conf/context.xml&lt;br /&gt;
conf/jaspic-providers.xml&lt;br /&gt;
conf/logging.properties&lt;br /&gt;
conf/server.xml&lt;br /&gt;
conf/tomcat-users.xml&lt;br /&gt;
conf/web.xml&lt;br /&gt;
logs&lt;br /&gt;
policy&lt;br /&gt;
policy/catalina.policy&lt;br /&gt;
temp&lt;br /&gt;
webapps&lt;br /&gt;
work&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Hauptsache muss die Konfigurationsdatei &amp;quot;server.xml&amp;quot; im Verzeichnis &amp;quot;~/tomcat/conf/&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine minimale &amp;quot;server.xml&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Server port=&amp;quot;38005&amp;quot; shutdown=&amp;quot;SHUTDOWN&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.startup.VersionLoggerListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.AprLifecycleListener&amp;quot; SSLEngine=&amp;quot;on&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JreMemoryLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.mbeans.GlobalResourcesLifecycleListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.ThreadLocalLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;GlobalNamingResources&amp;gt;&lt;br /&gt;
    &amp;lt;Resource name=&amp;quot;UserDatabase&amp;quot; auth=&amp;quot;Container&amp;quot;&lt;br /&gt;
              type=&amp;quot;org.apache.catalina.UserDatabase&amp;quot;&lt;br /&gt;
              description=&amp;quot;User database that can be updated and saved&amp;quot;&lt;br /&gt;
              factory=&amp;quot;org.apache.catalina.users.MemoryUserDatabaseFactory&amp;quot;&lt;br /&gt;
              pathname=&amp;quot;conf/tomcat-users.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/GlobalNamingResources&amp;gt;&lt;br /&gt;
  &amp;lt;Service name=&amp;quot;Catalina&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Connector protocol=&amp;quot;AJP/1.3&amp;quot; address=&amp;quot;127.0.0.1&amp;quot; port=&amp;quot;38006&amp;quot; redirectPort=&amp;quot;443&amp;quot; secretRequired=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.LockOutRealm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.UserDatabaseRealm&amp;quot; resourceName=&amp;quot;UserDatabase&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Realm&amp;gt;&lt;br /&gt;
      &amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;../webapps&amp;quot; unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/Host&amp;gt;&lt;br /&gt;
    &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/Server&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Angepasst werden müssen:&lt;br /&gt;
* die beiden IP-Ports (im Beispiel 38005 und 38006 am Localhost-Interface)&lt;br /&gt;
&lt;br /&gt;
== Deployment einer Anwendung ==&lt;br /&gt;
&lt;br /&gt;
In der Beispiel-Konfiguration wurde das Verzeichnis &#039;&#039;$HOME/webapps/&#039;&#039; für die Anwendungen konfiguriert. Wir legen dieses Verzeichnis an und kopieren eine minimale Anwendung hinein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p $HOME/webapps/hello/WEB-INF/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort legen wir die Datei ~/webapps/hello/WEB-INF/web.xml mit folgendem Inhalt an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app &lt;br /&gt;
	xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
	xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot;&lt;br /&gt;
	xmlns:web=&amp;quot;http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd&amp;quot;&lt;br /&gt;
	xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd&amp;quot; &lt;br /&gt;
	id=&amp;quot;WebApp_ID&amp;quot; version=&amp;quot;3.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu eine einfache JSP-Datei ~/webapps/hello/index.jsp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;%@ page language=&amp;quot;java&amp;quot; contentType=&amp;quot;text/html; charset=UTF-8&amp;quot; pageEncoding=&amp;quot;UTF-8&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;de-de&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hallo Welt&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Java Version: &amp;lt;%= System.getProperty(&amp;quot;java.version&amp;quot;)  %&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir die HTTP-Requests, die an eine Domain im Paket gesendet werden, an den Tomcat weiterleiten.&lt;br /&gt;
Das funktioniert über eine &#039;&#039;.htaccess&#039;&#039;-Datei, zum Beispiel im Verzeichnis &#039;&#039;~/doms/hs-example.de/htdocs-ssl&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot; line&amp;gt;&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule ^(.*) ajp://127.0.0.1:38006/$1 [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung der IP-Port 38006 muss hier wieder angepasst werden!&lt;br /&gt;
&lt;br /&gt;
Dadurch ist die Mini-Anwendung unter der URL &amp;quot;https://hs-example.de/hello/&amp;quot; erreichbar.&lt;br /&gt;
&lt;br /&gt;
== Start des Tomcat Servers ==&lt;br /&gt;
&lt;br /&gt;
Der Tomcat kann über die Skripte in &amp;quot;~/tomcat/bin/&amp;quot; gestartet und gestoppt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/tomcat&lt;br /&gt;
./bin/startup.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Log-Ausgaben des Servers sind in &amp;quot;~/tomcat/logs/catalina.out&amp;quot; zu finden.&lt;br /&gt;
&lt;br /&gt;
Damit der Tomcat bei einem Reboot der Hostsharing-Server automatisch gestartet wird,&lt;br /&gt;
konfigurieren wir den Prozessmonitor &#039;&#039;systemd&#039;&#039; entsprechend.&lt;br /&gt;
&lt;br /&gt;
Wir legen ein Verzeichnis für die Konfiguration des &#039;&#039;systemd&#039;&#039; an und legen eine Unit-Konfiguration für einen Service dort ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p ~/.config/systemd/user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Unit-Datei &#039;&#039;~/.config/systemd/user/tomcat.service&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Tomcat User Service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
WorkingDirectory=%h/tomcat&lt;br /&gt;
Environment=&amp;quot;PATH=/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
Environment=&amp;quot;JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64&amp;quot;&lt;br /&gt;
Environment=&amp;quot;JAVA_OPTS=-Xms256M -Xmx512M&amp;quot;&lt;br /&gt;
ExecStart=%h/tomcat/bin/catalina.sh run&lt;br /&gt;
StandardOutput=append:%h/tomcat/logs/catalina.log&lt;br /&gt;
StandardError=inherit&lt;br /&gt;
Restart=always&lt;br /&gt;
PrivateTmp=true&lt;br /&gt;
NoNewPrivileges=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf Wunsch kann &#039;&#039;SystemD&#039;&#039; RAM- und CPU-Ressourcen begrenzen. Dazu wird der Abschnitt &#039;&#039;Service&#039;&#039; ergänzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
MemoryAccounting=true&lt;br /&gt;
CPUAccounting=true&lt;br /&gt;
MemoryHigh=512M&lt;br /&gt;
MemoryMax=768M&lt;br /&gt;
CPUQuota=50%&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die letzte Aufgabe ist das Einrichten der Bereinigung für die Log-Dateien.&lt;br /&gt;
&lt;br /&gt;
Dazu lege ich die Konfigurationsdatei &#039;&#039;.logrotate&#039;&#039; im $HOME-Verzeichnis an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
/home/pacs/xyz00/users/tomcat/tomcat/logs/catalina.log {&lt;br /&gt;
   copytruncate&lt;br /&gt;
   compress&lt;br /&gt;
   rotate 5&lt;br /&gt;
   daily&lt;br /&gt;
   missingok&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Bereinigung der Log-Dateien noch zwei systemd-Timer:&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/logrotate.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=rotate tomcat logs&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/sbin/logrotate -s /home/pacs/xyz00/users/tomcat/.logrotate.state /home/pacs/xyz00/users/tomcat/.logrotate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/logrotate.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=rotate tomcat logs&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=1:1&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/delete_old_logs.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=delete old log files&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/find /home/pacs/xyz00/users/tomcat/tomcat/logs -type f -mmin +10080 -delete&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/delete_old_logs.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=delete old log files&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=14:3&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ systemctl --user enable logrotate.timer&lt;br /&gt;
$ systemctl --user start logrotate.timer&lt;br /&gt;
$ systemctl --user enable delete_old_logs.timer&lt;br /&gt;
$ systemctl --user start delete_old_logs.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann gehen wir daran unsere Anwendungen im Tomcat zu deployen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[http://tomcat.apache.org/ Apache Tomcat Homepage (Englisch)]&lt;br /&gt;
*[http://tomcat.apache.org/tomcat-9.0-doc/index.html Apache Tomcat Dokumentation (Version 9.0, Englisch)]&lt;br /&gt;
*[http://wiki.apache.org/tomcat/FrontPage Apache Tomcat Wiki (Englisch)]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-Tomcat Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Eigene Daemons]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Matrix_Synapse_installieren&amp;diff=7194</id>
		<title>Matrix Synapse installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Matrix_Synapse_installieren&amp;diff=7194"/>
		<updated>2025-01-02T15:55:48Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: Ram buchen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Matrix Server &#039;&#039;Synapse&#039;&#039;, der sogenannte &#039;Homeserver&#039;, ist aktuell die einzige vollständige serverseitige Implementierung des Matrix-Protokolls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gelb|Work in Progress|Leider funktioniert die Server-zu-Server-Kommunikation von Synapse hinter dem Apache-Proxy mit den genannten Rewrite-Rules nicht. Bitten Sie dazu den Service, Ihren Apache VHost individuell für den Matrix Server anzupassen.}}&lt;br /&gt;
&lt;br /&gt;
Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option &amp;quot;RAM&amp;quot;. Benötigt werden min. 512 MB. Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/ gebucht werden muss der RAM auch bei einem Managed-Server.&lt;br /&gt;
Wir empfehlen für den Betrieb einen &#039;&#039;Managed Server&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt, wie man den Matrix-Homeserver Synapse auf der Managed Hosting Plattform von Hostsharing installieren kann. Dabei sind die User-IDs nach dem Schema @user:beispiel.de aufgebaut, der Homeserver an sich ist unter matrix.beispiel.de erreichbar.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von HSAdmin werden angelegt:&lt;br /&gt;
# Ein User als Service-User mit &#039;&#039;/bin/bash&#039;&#039; als Shell, zum Beispiel Beispiel: &#039;&#039;xyz00-matrix&#039;&#039;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-matrix&#039;&#039; als Domain-Administrator, zum Beispiel &#039;&#039;matrix.beispiel.de&#039;&#039;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_matrixuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_matrixdb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_matrixuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verwendeter IP-Port für den Server-Dienst:&lt;br /&gt;
# Synapse: localhost:32801&lt;br /&gt;
&lt;br /&gt;
== Installation von Synapse ==&lt;br /&gt;
&lt;br /&gt;
Installationsanleitung basierend auf https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-as-a-python-module-from-pypi&lt;br /&gt;
&lt;br /&gt;
Auf Debian Buster muss ein neueres Python, z.B. Python 3.9 installiert werden, siehe [https://wiki.hostsharing.net/index.php?title=Eigenes_Python_installieren#Installation_mit_pyenv Eigenes Python mit pyenv installieren].&lt;br /&gt;
&lt;br /&gt;
Als User &#039;&#039;xyz00-matrix&amp;quot; ein Python3 virtualenv mit Python 3.9 erstellen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p ~/synapse&lt;br /&gt;
cd ~/synapse&lt;br /&gt;
pipenv install --python 3.9.18&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synapse und Postgres-Dependencies installieren&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/synapse&lt;br /&gt;
pipenv shell&lt;br /&gt;
pipenv install matrix-synapse[postgres]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initiale Konfiguration mit richtigem server-name &amp;quot;beispiel.de&amp;quot; generieren, außerdem im laufenden Betrieb keine Statistiken an Matrix.org senden&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/synapse&lt;br /&gt;
pipenv run python -m synapse.app.homeserver --server-name beispiel.de --config-path homeserver.yaml --generate-config --report-stats=no&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfiguration von Synapse ==&lt;br /&gt;
&lt;br /&gt;
In die initial generierte Konfiguration muss noch die Port- und Datenbank-Konfiguration eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
Port: Innerhalb der listener-section den Port 8008 auf 32801 (wie initial definiert) ändern, alles andere beibehalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
- port: 32801&lt;br /&gt;
    tls: false&lt;br /&gt;
    bind_addresses: [&#039;::1&#039;, &#039;127.0.0.1&#039;]&lt;br /&gt;
    type: http&lt;br /&gt;
    x_forwarded: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Postgres-Datenbank:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
    # The database engine name&lt;br /&gt;
    name: &amp;quot;psycopg2&amp;quot;&lt;br /&gt;
    # Arguments to pass to the engine&lt;br /&gt;
    args:&lt;br /&gt;
    host: &amp;quot;localhost&amp;quot;&lt;br /&gt;
    database: &amp;quot;xyz00_matrixdb&amp;quot;&lt;br /&gt;
    user: &amp;quot;xyz00_matrixuser&amp;quot;&lt;br /&gt;
    password: &amp;quot;meinPasswort&amp;quot;&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Starten der Dienste  ==&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;Synapse&#039;&#039;-Dienst wird hier als Service-Unit im SystemD des Users eingetragen.&lt;br /&gt;
&lt;br /&gt;
Lege dazu die folgende Datei an: &#039;&#039;~/.config/systemd/user/synapse.service&#039;&#039; mit dem Inhalt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Synapse&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
WorkingDirectory=%h/synapse&lt;br /&gt;
Environment=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2&lt;br /&gt;
ExecStart=pipenv run python -m synapse.app.homeserver --config-path=%h/synapse/homeserver.yaml&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch Aufruf der folgenden Kommandos wird der Dienst aktiviert und gestartet:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; lines&amp;gt;&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user enable synapse.service&lt;br /&gt;
systemctl --user start synapse.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Einrichten des Apache VHost ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;~/doms/matrix.beispiel.de/.htaccess&#039;&#039; mit dem Editor der Wahl öffnen und &lt;br /&gt;
folgende Konfiguration einfügen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* http://localhost:32801%{REQUEST_URI} [NE,proxy]&lt;br /&gt;
RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Well-Known unter beispiel.de ==&lt;br /&gt;
&lt;br /&gt;
Damit die User-Accounts das Format @user:beispiel.de haben, der Server aber unter matrix.beispiel.de erreichbar ist, müssen noch folgende zwei Dateien unter der Domain beispiel.de abgelegt werden:&lt;br /&gt;
&lt;br /&gt;
https://beispiel.de/.well-known/matrix/server&lt;br /&gt;
&amp;lt;syntaxhighlight lang=json line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;m.server&amp;quot;: &amp;quot;matrix.beispiel.de:443&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://beispiel.de/.well-known/matrix/client&lt;br /&gt;
&amp;lt;syntaxhighlight lang=json line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;m.homeserver&amp;quot;: {&lt;br /&gt;
        &amp;quot;base_url&amp;quot;: &amp;quot;https://matrix.beispiel.de&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;m.identity_server&amp;quot;: {&lt;br /&gt;
        &amp;quot;base_url&amp;quot;: &amp;quot;https://vector.im&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die muss noch der CORS-Header Access-Control-Allow-Origin &amp;quot;*&amp;quot; gesetzt werden, damit die Datei aus beliebigem Riot-Web im Browser abrufbar ist. Dazu in den Ordner .well-known/matrix/ folgende .htaccess anlegen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_headers.c&amp;gt;&lt;br /&gt;
  Header set Access-Control-Allow-Origin &amp;quot;*&amp;quot;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Dokumentation dazu findet man unter https://matrix.org/docs/spec/server_server/r0.1.2#get-well-known-matrix-server und https://matrix.org/docs/spec/client_server/r0.5.0#get-well-known-matrix-client&lt;br /&gt;
&lt;br /&gt;
== Update von Synapse ==&lt;br /&gt;
&lt;br /&gt;
mit pipenv:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
systemctl --user stop synapse.service&lt;br /&gt;
cd ~/synapse&lt;br /&gt;
source .venv/bin/activate || pipenv shell&lt;br /&gt;
pipenv install update&lt;br /&gt;
systemctl --user start synapse.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder falls Synapse mit pip verwaltet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
systemctl --user stop synapse.service&lt;br /&gt;
cd ~/synapse&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip freeze &amp;gt; requirements.txt&lt;br /&gt;
sed -i &amp;quot;s/==.*//g&amp;quot; requirements.txt&lt;br /&gt;
pip install -r requirements.txt --upgrade&lt;br /&gt;
systemctl --user start synapse.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls Monit verwendet wird statt systemctl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
monit stop synapse&lt;br /&gt;
#... updaten ...&lt;br /&gt;
monit start synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die Föderation für den Synapse Server aktiviert ist, kann mit dem [https://federationtester.matrix.org/ Matrix Federation Tester] die eigene Instanz auf die laufende Version geprüft werden. Als Server nicht matrix.example.org eingeben, sondern den öffentlichen Namen, wo auch die Benutzernamen drauf laufen, z.B. example.org&lt;br /&gt;
&lt;br /&gt;
Ansonsten ist die laufende Version auch über die URL https://matrix.example.org/_synapse/admin/v1/server_version zu erfahren.&lt;br /&gt;
&lt;br /&gt;
== Element-Web ==&lt;br /&gt;
&lt;br /&gt;
Element-Web ist aus Server-Seite eine rein statische html+javascript-Kombination, daher:&lt;br /&gt;
&lt;br /&gt;
* Account und Domain anlegen (separat von der Synapse-Domain)&lt;br /&gt;
* [https://github.com/element-hq/element-web/releases/latest aktuelles element-web release] .tgz herunterladen&lt;br /&gt;
* Symlink von htdocs-ssl auf entpacktes element-web-Verzeichnis&lt;br /&gt;
* config.sample.json in config.json kopieren und Matrix-Homeserver-Einträge anpassen&lt;br /&gt;
* Piwik aus config.json entfernen&lt;br /&gt;
&lt;br /&gt;
== SAML mit Synapse ==&lt;br /&gt;
&lt;br /&gt;
Synapse unterstützt mit Version 1.1.0 SAML. Dazu wie folgt vorgehen:&lt;br /&gt;
&lt;br /&gt;
Das Paket xmlsec1 muss installiert sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ xmlsec1  --version&lt;br /&gt;
xmlsec1 1.2.23 (openssl)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Python-Paket pysaml2 installieren&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd ~/synapse&lt;br /&gt;
pipenv shell&lt;br /&gt;
pipenv install pysaml2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der homeserver.yaml die SAML-Direktiven einkommentieren, hier mit dem Beispiel eines SAML IdP unter https://login.beispiel.de/simplesaml/saml2/idp/metadata.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
# Once SAML support is enabled, a metadata file will be exposed at&lt;br /&gt;
# https://&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;/_matrix/saml2/metadata.xml, which you may be able to &lt;br /&gt;
# use to configure your SAML IdP with. Alternatively, you can manually configure&lt;br /&gt;
# the IdP to use an ACS location of&lt;br /&gt;
# https://&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;/_matrix/saml2/authn_response.&lt;br /&gt;
#&lt;br /&gt;
saml2_config:&lt;br /&gt;
    sp_config:&lt;br /&gt;
        # point this to the IdP&#039;s metadata. You can use either a local file or&lt;br /&gt;
        # (preferably) a URL.&lt;br /&gt;
        metadata:&lt;br /&gt;
        #local: [&amp;quot;saml2/idp.xml&amp;quot;]&lt;br /&gt;
        remote:&lt;br /&gt;
            - url: https://login.beispiel.de/simplesaml/saml2/idp/metadata.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wichtig ist außerdem, dass die public_baseurl in der homeserver.yaml gesetzt ist, damit Synapse weiß, wie es erreichbar ist und dies in seine SP-Metadaten einbauen kann:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
public_baseurl: https://matrix.beispiel.de/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Service-Provider-Konfiguration als XML bekommt man von Synapse dann wie schon in der homeserver.yaml als Kommentar beschrieben, unter https://matrix.beispiel.de/_matrix/saml2/metadata.xml&lt;br /&gt;
&lt;br /&gt;
Diese dann in den SAML-IdP-importieren und dann sollte der Single-Sign-On via SAML funktionieren.&lt;br /&gt;
&lt;br /&gt;
== Federation Sender Worker für Synapse ==&lt;br /&gt;
&lt;br /&gt;
Zur Parallelisierung bietet Synapse das Konzept &amp;quot;Worker&amp;quot; an, die spezifische Aufgaben übernehmen, damit der Hauptprozess diese nicht durchführen muss.&lt;br /&gt;
&lt;br /&gt;
Details dazu: https://github.com/matrix-org/synapse/blob/master/docs/workers.md&lt;br /&gt;
&lt;br /&gt;
Ein einfach einzurichtender Worker, der auch viel Last abfedert, ist der Federation Sender Worker, da das Verschicken des Federation-Traffics 10-50% der Serverlast ausmacht.&lt;br /&gt;
&lt;br /&gt;
In der homeserver.yaml die Worker-Konfiguration aktivieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
## Worker ##&lt;br /&gt;
worker_app: synapse.app.homeserver&lt;br /&gt;
daemonize: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dazugehörige Listener (Abschnitt listener:) aktivieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
# The TCP replication port&lt;br /&gt;
- port: 32892&lt;br /&gt;
  bind_address: &#039;127.0.0.1&#039;&lt;br /&gt;
  type: replication&lt;br /&gt;
# The HTTP replication port&lt;br /&gt;
- port: 32893&lt;br /&gt;
  bind_address: &#039;127.0.0.1&#039;&lt;br /&gt;
  type: http&lt;br /&gt;
  resources:&lt;br /&gt;
   - names: [replication]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionen, die Worker machen sollen, in der homeserver.yaml deaktivieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
# disable federation sending here, use worker for it&lt;br /&gt;
send_federation: False&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dann Verzeichnis synapse/workers anlegen, darin federation_sender.yaml:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
worker_app: synapse.app.federation_sender&lt;br /&gt;
&lt;br /&gt;
# The replication listener on the synapse to talk to.&lt;br /&gt;
worker_replication_host: 127.0.0.1&lt;br /&gt;
worker_replication_port: 32892&lt;br /&gt;
worker_replication_http_port: 32893&lt;br /&gt;
&lt;br /&gt;
worker_daemonize: True&lt;br /&gt;
worker_pid_file: /home/pacs/xyz00/users/matrix/synapse/federation_sender.pid&lt;br /&gt;
worker_log_config: /home/pacs/xyz00/users/matrix/synapse/federation_sender.log.config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
.monitrc um worker erweitern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
check process federation_sender with pidfile /home/pacs/xyz00/users/matrix/synapse/federation_sender.pid&lt;br /&gt;
    start program &amp;quot;/bin/bash -c &#039;export VIRTUAL_ENV=$HOME/synapse/env &amp;amp;&amp;amp; export PATH=$VIRTUAL_ENV/bin:$PATH &amp;amp;&amp;amp; cd $HOME/synapse &amp;amp;&amp;amp; synctl -w workers/federation_sender.yaml start&#039;&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat $HOME/synapse/federation_sender.pid )&#039;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Monit neu laden und synapse und federation_sender neustarten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
monit reload&lt;br /&gt;
monit restart all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Updates ebenfalls immer Hauptprozess und alle Worker neustarten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
monit restart all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sliding Sync Proxy ==&lt;br /&gt;
Zum Zeitpunkt dieser Anleitung werden aktiv neue Element Anwendungen (Element X) und ein neues Syncverfahren entwickelt um Matrix performanter und weniger ressourcenhungrig zu machen. Bei stärkerer Matrix Nutzung können die neuen Anwendungen besonders mobil schon eine große Entlastung sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Ende 2024 wurden grundlegende Funktionen direkt in Synapse implementiert. Der Proxy wird nicht länger weiterentwickelt und sollte deinstalliert werden (nicht vergessen die .well-known zurück zu ändern).&amp;lt;/strong&amp;gt; Auch der 3rdparty Server [[Conduit]] bringt nativ Support für Sliding Sync.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* https://matrix.org/docs/projects/server/synapse &lt;br /&gt;
* https://github.com/element-hq/synapse&lt;br /&gt;
* https://github.com/element-hq/synapse/blob/master/INSTALL.md&lt;br /&gt;
* https://github.com/matrix-org/sliding-sync&lt;br /&gt;
* https://matrix.org/docs/spec/&lt;br /&gt;
* https://www.hostsharing.net/loesungen/matrix/&lt;br /&gt;
* https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/synapse&lt;br /&gt;
* https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/element&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Messenger]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Eigene Daemons]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=CAS_Authentication_Server&amp;diff=7193</id>
		<title>CAS Authentication Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=CAS_Authentication_Server&amp;diff=7193"/>
		<updated>2025-01-02T15:51:16Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Einrichtung des Tomcat */ RAM buchen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CAS Authentication Server =&lt;br /&gt;
&lt;br /&gt;
Der CAS Server (&amp;quot;Central Authentication Service&amp;quot; oder &amp;quot;CAS Authentication Server&amp;quot;) ist eine SSO- (&amp;quot;Single Sign On&amp;quot;) Lösung.&lt;br /&gt;
&lt;br /&gt;
CAS ist für große, verteilte Deployments von Web-Anwendungen geeignet. Er stammt aus dem Universitätsumfeld in den USA. Er wurde bei der Yale Universität entwickelt und wird aktuell bei JA-SIG / Apereo als freie Software unter der Apache Lizenz gepflegt. [1], [2]&lt;br /&gt;
&lt;br /&gt;
Die Hostsharing eG nutzt CAS seit Jahren als Login-Lösung insbesondere für die Administrationswerkzeuge von [[Hsadmin|HSAdmin]].&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag erläutert die Installation von CAS in einem Hostsharing Webspace und die Konfiguration von Beispielanwendungen zum Login mit CAS. Als Nutzerdatenbank wird ein vorhandener Nutzerstamm in einer SQL-Datenbank benutzt.&lt;br /&gt;
&lt;br /&gt;
== Erste Installation ==&lt;br /&gt;
&lt;br /&gt;
Die aktuelle stabile Version des CAS Server ist v6.6.7 (Stand August 2024: v7.0.6). Diese Version erfordert Java 11. Die empfohlene Installation eines Standalone-CAS erfolgt über das WAR Overlay Projekt [3]. Eine ausführliche Deployment-Anleitung (leider noch für Version 5.x) findet sich bei [https://www.newschool.edu/ The New School] [4]. Eine Anleitung für die aktuelle Version 6.6.x ist unter [10] verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Service-User und Domain ===&lt;br /&gt;
&lt;br /&gt;
Zunächst werden mit HSAdmin ein User und eine Domain eingerichtet. Darauf achten, dass der User eine gültige Login-Shell erhält, hier die Bash (&#039;&#039;/bin/bash&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@h50:~$ hsscript -i&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-login&#039;,shell:&#039;/bin/bash&#039;,password:&#039;***&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{user:&#039;xyz00-login&#039;,name:&#039;login.hs-example.de&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des Tomcat ===&lt;br /&gt;
&lt;br /&gt;
Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option &amp;quot;RAM&amp;quot;. Benötigt werden min. 512 MB. Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/ gebucht werden muss der RAM auch bei einem Managed-Server.&lt;br /&gt;
Bei der Anmeldung (bei service(at)hostsharing.net bitte den Service User &#039;&#039;xyz00-login&#039;&#039; und die gewünschte Anzahl IP-Ports angeben). Hier verwenden wir die Ports 31530, 31531 und 31532.&lt;br /&gt;
&lt;br /&gt;
Weiter geht es als User &#039;&#039;xyz00-login&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Einrichten eines Apache Tomcat 9 (Stand August 2024: [[Tomcat Installieren|Apache Tomcat 10]]) im Userspace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;output&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-login@h50:~$ tomcat9-instance-create tomcat9&lt;br /&gt;
You are about to create a Tomcat instance in directory &#039;tomcat9&#039;&lt;br /&gt;
Warning: HTTP port 8080 appears to be in use.&lt;br /&gt;
Type &amp;lt;ENTER&amp;gt; to continue, &amp;lt;CTRL-C&amp;gt; to abort.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;Enter&amp;gt; bestätigen, dann wird eine Tomcat-Konfiguration im neuen Verzeichnis $HOME/tomcat9 angelegt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;server.xml&#039;&#039; im Verzeichnis $HOME/tomcat9/conf wird angepasst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Server port=&amp;quot;31530&amp;quot; shutdown=&amp;quot;SHUTDOWN&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.startup.VersionLoggerListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.AprLifecycleListener&amp;quot; SSLEngine=&amp;quot;on&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JreMemoryLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.mbeans.GlobalResourcesLifecycleListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.ThreadLocalLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;GlobalNamingResources&amp;gt;&lt;br /&gt;
    &amp;lt;Resource name=&amp;quot;UserDatabase&amp;quot; auth=&amp;quot;Container&amp;quot; type=&amp;quot;org.apache.catalina.UserDatabase&amp;quot;&lt;br /&gt;
            description=&amp;quot;User database that can be updated and saved&amp;quot;&lt;br /&gt;
            factory=&amp;quot;org.apache.catalina.users.MemoryUserDatabaseFactory&amp;quot;&lt;br /&gt;
            pathname=&amp;quot;conf/tomcat-users.xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/GlobalNamingResources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Service name=&amp;quot;Catalina&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Connector address=&amp;quot;localhost&amp;quot; port=&amp;quot;31531&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;443&amp;quot; secretRequired=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.LockOutRealm&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.UserDatabaseRealm&amp;quot; resourceName=&amp;quot;UserDatabase&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Realm&amp;gt;&lt;br /&gt;
      &amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot; unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;/Host&amp;gt;&lt;br /&gt;
    &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/Server&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insbesondere die beiden Angaben &#039;&#039;port=&amp;quot;31530&amp;quot;&#039;&#039; und &#039;&#039;port=&amp;quot;31531&amp;quot;&#039;&#039; müssen angepasst werden!&lt;br /&gt;
&lt;br /&gt;
In der Datei &#039;&#039;setenv.sh&#039;&#039; im Verzeichnis $HOME/tomcat9/bin ergänzenen wir den Pfad zur Java 11 Installation als Variable $JAVA_HOME (für 32-Bit bzw. für 64-Bit Systeme), dazu den Pfad für eine Datei mit der Prozess-ID Prozess-Id und eine System-Property in den Java-Opts mit dem Verzeichnis-Pfad, in dem wir später die CAS-Konfiguration ablegen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-i386&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64&lt;br /&gt;
export JAVA_OPTS=&amp;quot;-Djava.awt.headless=true -Dcas.standalone.configurationDirectory=/home/pacs/xyz00/users/login/cas/conf&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich kopiere zum Testen gern noch das Startskript &#039;&#039;catalina.sh&#039;&#039; in die Installation des Tomcat:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-login@h50:~$ cp /usr/share/tomcat9/bin/catalina.sh $HOME/tomcat9/bin/&lt;br /&gt;
xyz00-login@h50:~$ cd tomcat9/&lt;br /&gt;
xyz00-login@h50:~/tomcat9$ ./bin/catalina.sh run&lt;br /&gt;
Using CATALINA_BASE:   /home/pacs/xyz00/users/login/tomcat9&lt;br /&gt;
Using CATALINA_HOME:   /usr/share/tomcat9&lt;br /&gt;
Using CATALINA_TMPDIR: /home/pacs/xyz00/users/login/tomcat9/temp&lt;br /&gt;
Using JRE_HOME:        /usr/lib/jvm/default-java&lt;br /&gt;
Using CLASSPATH:       /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar&lt;br /&gt;
&amp;lt;6&amp;gt;Server version name:   Apache Tomcat/9.0.31 (Debian)&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;6&amp;gt;Server startup in [75] milliseconds&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tomcat läuft, abbrechen mit &amp;lt;Ctrl-C&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration des Apache als Proxy ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/doms/login.hs-example.de/&lt;br /&gt;
rm -rf subs/www subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der ~/doms/login.hs-example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot; line&amp;gt;&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule ^(.*) ajp://localhost:31531/$1 [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: der Port 31531 ist wieder durch den Port des AJP-Listeners in der eigenen Tomcat-Konfiguration zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
=== CAS Basisinstallation ===&lt;br /&gt;
&lt;br /&gt;
Auschecken des CAS Overlay Projektes (TODO: Warum nicht ```git checkout 6.6```? Typo?)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir git&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/apereo/cas-overlay-template.git&lt;br /&gt;
cd cas-overlay-template/&lt;br /&gt;
git fetch&lt;br /&gt;
git checkout 6.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anlegen von Verzeichnissen für die spätere Konfiguration des CAS Server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
mkdir -p cas/conf&lt;br /&gt;
mkdir -p cas/services&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ins Verzeichnis &#039;&#039;~/cas/conf&#039;&#039; legen wir eine Datei &#039;&#039;cas.properties&#039;&#039; mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
cas.server.name=https://login.hs-example.de&lt;br /&gt;
cas.server.prefix=${cas.server.name}/cas&lt;br /&gt;
cas.serviceRegistry.json.location=file:/home/pacs/xyz00/users/login/cas/services&lt;br /&gt;
logging.config=file:/home/pacs/xyz00/users/login/cas/conf/log4j2.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;log4j2.xml&#039;&#039; kopieren wir aus &#039;&#039;~/git/cas-overlay-template/etc/cas/config/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp ~/git/cas-overlay-template/etc/cas/config/ ~/cas/conf/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der log4j2.xml passen wir den Wert für die Variable &#039;&#039;baseDir&#039;&#039; (etwa Zeile 5) an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Property name=&amp;quot;baseDir&amp;quot;&amp;gt;/home/pacs/xyz00/users/login/tomcat9/logs&amp;lt;/Property&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build und Deployment der Web-Applikation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./build.sh package&lt;br /&gt;
cd&lt;br /&gt;
cp ~/git/cas-overlay-template/build/libs/cas.war ~/tomcat9/webapps/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach einer erneuten Start des Tomcat ist das CAS-Login unter&lt;br /&gt;
https://login.hs-example.de/cas/ erreichbar.&lt;br /&gt;
&lt;br /&gt;
Ein Login mit der Kennung &#039;&#039;casuser&#039;&#039; und dem Passwort &#039;&#039;Mellon&#039;&#039; sollte erfolgreich sein.&lt;br /&gt;
&lt;br /&gt;
== Erweiterte Konfiguration des CAS ==&lt;br /&gt;
&lt;br /&gt;
Die Funktionalität des CAS Server ist modular erweiterbar. Im ersten Schritt erweitern wir den CAS um eine Service Registry. Für unsere einfache Standalone-Installation nutzen wir die JSON-File-Registry&lt;br /&gt;
&lt;br /&gt;
=== JSON Service Registry ===&lt;br /&gt;
&lt;br /&gt;
Erweiterungen werden in der Datei &#039;&#039;build.gradle&#039;&#039; im Abschnitt &#039;&#039;dependencies&#039;&#039; eingetragen. Die Datei liegt im Wurzelverzeichnis des Git-Repositories für unser CAS Overlay (&#039;&#039;~/git/cas-overlay-template/&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Der betreffende Ausschnitt der Datei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
  // [...] Teile ausgespart&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
    * CAS dependencies and modules may be listed here.&lt;br /&gt;
    *&lt;br /&gt;
    * There is no need to specify the version number for each dependency&lt;br /&gt;
    * since versions are all resolved and controlled by the dependency management&lt;br /&gt;
    * plugin via the CAS bom.&lt;br /&gt;
    **/&lt;br /&gt;
&lt;br /&gt;
  // email notification, service registry&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-core-notifications&amp;quot;&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-support-json-service-registry&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // jdbc datasource&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-support-jdbc-drivers&amp;quot;&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-support-jdbc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // password reset&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-support-pm-webflow&amp;quot;&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-support-pm-jdbc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // openid-connect / oidc&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-support-oidc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
  * Do NOT modify the lines below or else you will risk breaking the build.&lt;br /&gt;
  */&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-core-api-configuration-model&amp;quot;&lt;br /&gt;
  implementation &amp;quot;org.apereo.cas:cas-server-webapp-init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // [...] Teile ausgespart&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir bauen das cas.war mit den folgenden Befehlen neu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/git/cas-overlay-template&lt;br /&gt;
./build.sh package&lt;br /&gt;
cp ~/git/cas-overlay-template/build/libs/cas.war ~/tomcat9/webapps/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Pfad zur Service-Registry war in der oben erstellten &#039;&#039;cas.properties&#039;&#039; bereits enthalten.&lt;br /&gt;
Nun legen wir einen ersten Service an, in meinem Fall eine Nextcloud-Installation. Die Datei heißt&lt;br /&gt;
&#039;&#039;hsexamplecloud-1000001.json&#039;&#039; und wird im Verzeichnis &#039;&#039;~/cas/services/&#039;&#039; abgelegt. Der Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;@class&amp;quot; : &amp;quot;org.apereo.cas.services.RegexRegisteredService&amp;quot;,&lt;br /&gt;
  &amp;quot;serviceId&amp;quot; : &amp;quot;^https://cloud.hs-example.de.*&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot; : &amp;quot;hsexamplecloud&amp;quot;,&lt;br /&gt;
  &amp;quot;id&amp;quot; : 1000001,&lt;br /&gt;
  &amp;quot;description&amp;quot; : &amp;quot;Nextcloud HS-Example&amp;quot;,&lt;br /&gt;
  &amp;quot;evaluationOrder&amp;quot; : 10000&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Name der Datei setzt sich aus Service-Name und Service-Id zusammen!&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration des CAS-Login in der Nextcloud erfolgt über die entsprechende &amp;quot;App&amp;quot; in Nextcloud.&lt;br /&gt;
Die Parameter sind wie folgt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Cas-nextcloud-app.png]]&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Dienst-URL&amp;quot; im Screenshot ist: &#039;&#039;https://cloud.hs-example.de/index.php/apps/user_cas/login&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Anmeldung mit der Kennung &#039;&#039;casuser&#039;&#039; und dem Passwort &#039;&#039;Mellon&#039;&#039; sollte nun von der Nextcloud-Loginseite  über den Link zum CAS-Login möglich sein.&lt;br /&gt;
&lt;br /&gt;
=== Authentifizierung gegen JDBC Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Wir erweitern wieder die Datei &#039;&#039;build.gradle&#039;&#039; im Abschnitt &#039;&#039;dependencies&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
  compile &amp;quot;org.apereo.cas:cas-server-webapp${project.appServer}:${casServerVersion}&amp;quot;&lt;br /&gt;
  // Other CAS dependencies/modules may be listed here...&lt;br /&gt;
  compile &amp;quot;org.apereo.cas:cas-server-support-json-service-registry:${project.&#039;cas.version&#039;}&amp;quot;&lt;br /&gt;
  compile &amp;quot;org.apereo.cas:cas-server-support-jdbc-drivers:${project.&#039;cas.version&#039;}&amp;quot;&lt;br /&gt;
  compile &amp;quot;org.apereo.cas:cas-server-support-jdbc:${project.&#039;cas.version&#039;}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;cas-server-support-jdbc-drivers&#039;&#039; liefert JDBC-Treiber für die gängigen Open-Source Datenbanksysteme. &#039;&#039;org.apereo.cas:cas-server-support-jdbc&#039;&#039; liefert das eigentliche CAS-Authentication Backend.&lt;br /&gt;
&lt;br /&gt;
Zur Konfiguration wird die Datei &#039;&#039;cas.properties&#039;&#039; im Verzeichnis &#039;&#039;~/cas/conf/&#039;&#039; erweitert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line&amp;gt;&lt;br /&gt;
cas.server.name=https://login.hs-example.de&lt;br /&gt;
cas.server.prefix=${cas.server.name}/cas&lt;br /&gt;
cas.serviceRegistry.json.location=file:/home/pacs/xyz00/users/login/cas/services&lt;br /&gt;
logging.config=file:/home/pacs/xyz00/users/login/cas/conf/log4j2.xml&lt;br /&gt;
logging.level.org.apereo=DEBUG&lt;br /&gt;
cas.authn.jdbc.query[0].sql=SELECT * FROM USERS WHERE UID=?&lt;br /&gt;
cas.authn.jdbc.query[0].url=jdbc:postgresql://localhost/xyz00_cas&lt;br /&gt;
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.PostgreSQL92Dialect&lt;br /&gt;
cas.authn.jdbc.query[0].user=xyz00_cas&lt;br /&gt;
cas.authn.jdbc.query[0].password=Ein_schlechtes_Passwort&lt;br /&gt;
cas.authn.jdbc.query[0].driverClass=org.postgresql.Driver&lt;br /&gt;
cas.authn.jdbc.query[0].fieldPassword=PSW&lt;br /&gt;
cas.authn.jdbc.query[0].passwordEncoder.type=BCRYPT&lt;br /&gt;
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8&lt;br /&gt;
cas.authn.accept.users=&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel für eine PostgreSQL-Datenbank mit einer Tabelle &#039;&#039;USERS&#039;&#039; mit den Spalten &#039;&#039;UID&#039;&#039; und &#039;&#039;PSW&#039;&#039;. Die Spalte &#039;&#039;UID&#039;&#039; enthält den Login-Namen des Users, die Spalte &#039;&#039;PSW&#039;&#039; das Passwort mit dem BCrypt-Algorithmus verschlüsselt.&lt;br /&gt;
&lt;br /&gt;
Die Zeile &#039;&#039;cas.authn.accept.users=&#039;&#039; deaktiviert das Default-Login als User &#039;&#039;casuser&#039;&#039; mit Passwort &#039;&#039;Mellon&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Achtung: Das Spring-Security Framework erwartet das BCrypt-Passwort mit der Kennung &#039;&#039;$2a$&#039;&#039; als erste Zeichen des Passwortfeldes. Die PHP-Funktion &#039;&#039;password_hash&#039;&#039; schreibt &#039;&#039;$2y$&#039;&#039; Wenn eine PHP-Passwort-Datenbank genutzt wird, muss hier ggf. eine VIEW in der Datenbank helfen.&lt;br /&gt;
&lt;br /&gt;
== Grafische Anpassung der CAS Login-Seiten ==&lt;br /&gt;
&lt;br /&gt;
Die Anpassungen der Login-Seite und anderer Teile der Browser-Anwendung ist vorgesehen. Eine Anleitung findet sich unter Link [7] und [4].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[1] https://de.wikipedia.org/wiki/Central_Authentication_Service&lt;br /&gt;
&lt;br /&gt;
[2] https://www.apereo.org/projects/cas&lt;br /&gt;
&lt;br /&gt;
[3] https://github.com/apereo/cas-overlay-template&lt;br /&gt;
&lt;br /&gt;
[4] https://dacurry-tns.github.io/deploying-apereo-cas/&lt;br /&gt;
&lt;br /&gt;
[5] https://apereo.github.io/2017/02/22/cas51-dbauthn-tutorial/&lt;br /&gt;
&lt;br /&gt;
[6] https://apereo.github.io/2017/02/02/cas51-authn-handlers/&lt;br /&gt;
&lt;br /&gt;
[7] https://apereo.github.io/2018/06/10/cas-userinterface-customizations/&lt;br /&gt;
&lt;br /&gt;
[8] https://apereo.github.io/tags/#CAS&lt;br /&gt;
&lt;br /&gt;
[9] https://iam.uconn.edu/java-cas-client-installation-and-configuration/&lt;br /&gt;
&lt;br /&gt;
[10] https://fawnoos.com/2022/08/06/cas66-gettingstarted-overlay/&lt;br /&gt;
&lt;br /&gt;
[11] https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/cas Ansible Playbook&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:SSO]]&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Eigene Daemons]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Aliases&amp;diff=7189</id>
		<title>Aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Aliases&amp;diff=7189"/>
		<updated>2024-12-20T15:58:08Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textkasten|rot|Hinweis:|Inhalt ist nun in der HS Dokumentation.&lt;br /&gt;
https://www.hostsharing.net/doc/managed-operations-platform/hsadmin/emailaliases/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:Pakete&amp;diff=7188</id>
		<title>Diskussion:Pakete</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:Pakete&amp;diff=7188"/>
		<updated>2024-12-20T15:54:30Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Baustelle entfernt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Als Baustelle da noch keine Links eingefügt.&lt;br /&gt;
: Gibt es eigentlich DOM/R noch? Auf der homepage läuft der Link dazu ins Leere --[[Benutzer:Deg00-m.website|ChristofT]] 22:44, 19. Feb. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Fluss der Ideen ==&lt;br /&gt;
&lt;br /&gt;
Hi. Hier sehe ich gerade, dass der &amp;quot;Fluss der Ideen&amp;quot; genau umgekehrt zum Text auf dieser Seite verläuft. Normalerweise geht man vom Allgemeinen zum Speziellen. Hier ist es umgekehrt, bzw. ein Mischmasch. Dann: was soll &amp;quot;Weiterführende Links&amp;quot; als Unterpunkt von &amp;quot;Kombination von SW und DW&amp;quot;? Das ist sinnfrei! Ich will jetzt nicht nachvollziehen, wer das verbrochen hat, aber wenn man editiert, sollte man keine Baustellen hinterlassen. Diese Seite werde ich demnächst hier ändern. --[[Benutzer:Deg00-m.website|ChristofT]] 12:56, 4. Jun. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Reihenfolge und Kombination erweitert ==&lt;br /&gt;
&lt;br /&gt;
Moin, hab die Reihenfolge (allgemein -&amp;gt; spziell) umgestellt und den Teil Kombination DW+SW etwas erwetiert, mit den Schritten die ich auch bei meinen Paketen zur Zeit anwende.&lt;br /&gt;
Hier fehlen noch ein paar Details, die steuere ich demnächst noch bei. --[[Benutzer:Al000-hs]] 11:28, 23. Feb. 2011 &lt;br /&gt;
:Bitte bei den Diskussionsbeiträgen immer an die Signatur denken. --[[Benutzer:Ubl00|Ubl00]] 10:36, 23. Apr. 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Freigabe so ? ==&lt;br /&gt;
&lt;br /&gt;
Hallo,&lt;br /&gt;
habe einige Links noch eingefügt und Kleinigkeiten ergänzt.&lt;br /&gt;
Sowie die Sonderbehandlungvon xyz00.hostsharing.net beseitigt.&lt;br /&gt;
&lt;br /&gt;
Christof, wollen wir die Seite so erst mal wieder frei geben?&lt;br /&gt;
Bis der Inhalt unter der Kern Doku auf der HP erscheint wird es wohl noch dauern :-)&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] ([[Benutzer Diskussion:Chg00-hsdoku|Diskussion]]) 10:11, 9. Jul. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Baustelle entfernt. Sobald die KernDoku da ist wird die Seite gelöscht.&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] ([[Benutzer Diskussion:Chg00-hsdoku|Diskussion]]) 14:19, 27. Aug. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Wieder Baustelle ==&lt;br /&gt;
&lt;br /&gt;
Christian hat in members@ darauf hingewiesen, dass die Paketnamen veraltet sind. Vollkommen richtig. Pakete müssen allgemein beschrieben werden, es können wahrscheinlich keine aktuell in der Preisliste vorhandenen Paketnamen verwendet werden. --[[Benutzer:Deg00-m.website|ChristofT]] ([[Benutzer Diskussion:Deg00-m.website|Diskussion]]) 17:14, 12. Dez. 2016 (CET)&lt;br /&gt;
: Gibt es überhaupt noch SW Pakete? --[[Benutzer:Deg00-m.website|ChristofT]] ([[Benutzer Diskussion:Deg00-m.website|Diskussion]]) 17:20, 12. Dez. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Baustelle entfernt ==&lt;br /&gt;
Aktuell ist die Bezeichnug WebPaket xyz00 voll gültig. Ich habe den Link zur Kerndoku aktualisiert daher wieder freigabe.&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:Pakete&amp;diff=7187</id>
		<title>Diskussion:Pakete</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:Pakete&amp;diff=7187"/>
		<updated>2024-12-20T15:53:39Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Als Baustelle da noch keine Links eingefügt.&lt;br /&gt;
: Gibt es eigentlich DOM/R noch? Auf der homepage läuft der Link dazu ins Leere --[[Benutzer:Deg00-m.website|ChristofT]] 22:44, 19. Feb. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Fluss der Ideen ==&lt;br /&gt;
&lt;br /&gt;
Hi. Hier sehe ich gerade, dass der &amp;quot;Fluss der Ideen&amp;quot; genau umgekehrt zum Text auf dieser Seite verläuft. Normalerweise geht man vom Allgemeinen zum Speziellen. Hier ist es umgekehrt, bzw. ein Mischmasch. Dann: was soll &amp;quot;Weiterführende Links&amp;quot; als Unterpunkt von &amp;quot;Kombination von SW und DW&amp;quot;? Das ist sinnfrei! Ich will jetzt nicht nachvollziehen, wer das verbrochen hat, aber wenn man editiert, sollte man keine Baustellen hinterlassen. Diese Seite werde ich demnächst hier ändern. --[[Benutzer:Deg00-m.website|ChristofT]] 12:56, 4. Jun. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Reihenfolge und Kombination erweitert ==&lt;br /&gt;
&lt;br /&gt;
Moin, hab die Reihenfolge (allgemein -&amp;gt; spziell) umgestellt und den Teil Kombination DW+SW etwas erwetiert, mit den Schritten die ich auch bei meinen Paketen zur Zeit anwende.&lt;br /&gt;
Hier fehlen noch ein paar Details, die steuere ich demnächst noch bei. --[[Benutzer:Al000-hs]] 11:28, 23. Feb. 2011 &lt;br /&gt;
:Bitte bei den Diskussionsbeiträgen immer an die Signatur denken. --[[Benutzer:Ubl00|Ubl00]] 10:36, 23. Apr. 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Freigabe so ? ==&lt;br /&gt;
&lt;br /&gt;
Hallo,&lt;br /&gt;
habe einige Links noch eingefügt und Kleinigkeiten ergänzt.&lt;br /&gt;
Sowie die Sonderbehandlungvon xyz00.hostsharing.net beseitigt.&lt;br /&gt;
&lt;br /&gt;
Christof, wollen wir die Seite so erst mal wieder frei geben?&lt;br /&gt;
Bis der Inhalt unter der Kern Doku auf der HP erscheint wird es wohl noch dauern :-)&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] ([[Benutzer Diskussion:Chg00-hsdoku|Diskussion]]) 10:11, 9. Jul. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Baustelle entfernt. Sobald die KernDoku da ist wird die Seite gelöscht.&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] ([[Benutzer Diskussion:Chg00-hsdoku|Diskussion]]) 14:19, 27. Aug. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Wieder Baustelle ==&lt;br /&gt;
&lt;br /&gt;
Christian hat in members@ darauf hingewiesen, dass die Paketnamen veraltet sind. Vollkommen richtig. Pakete müssen allgemein beschrieben werden, es können wahrscheinlich keine aktuell in der Preisliste vorhandenen Paketnamen verwendet werden. --[[Benutzer:Deg00-m.website|ChristofT]] ([[Benutzer Diskussion:Deg00-m.website|Diskussion]]) 17:14, 12. Dez. 2016 (CET)&lt;br /&gt;
: Gibt es überhaupt noch SW Pakete? --[[Benutzer:Deg00-m.website|ChristofT]] ([[Benutzer Diskussion:Deg00-m.website|Diskussion]]) 17:20, 12. Dez. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Baustelle entfernt ==&lt;br /&gt;
Aktuell ist die Bezeichnug WebPaket xyz00 voll gültig. Ich habe dne Link zur Kerndoku aktualisiert daher wieder freiegabe.&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Pakete&amp;diff=7186</id>
		<title>Pakete</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Pakete&amp;diff=7186"/>
		<updated>2024-12-20T15:50:33Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: link zur Kerndoku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-Links}}&lt;br /&gt;
&lt;br /&gt;
{{Kerndoku|https://www.hostsharing.net/doc/managed-operations-platform/webpaket/}}&lt;br /&gt;
&lt;br /&gt;
Ein Paket ist technisch eine Unix Gruppe auf einem Hostsharing [[Hive]]. Alle Leistungen von Hostsharing Servern werden in Paketen gebündelt, die eine definierte Leistung beinhalten. Alle Pakete können durch Optionen aufgewertet werden.&lt;br /&gt;
&lt;br /&gt;
Jedes Paket hat eine Bezeichnung in der Form xyz00. Sie besteht aus dem bei der ersten Paketeinrichtung frei wählbaren Präfix und einem zweistelligen Zähler.&lt;br /&gt;
&lt;br /&gt;
Entsprechend ist&lt;br /&gt;
&lt;br /&gt;
* der Name des Paketadmins xyz00&lt;br /&gt;
* das Paketverzeichnis /home/pacs/xyz00/&lt;br /&gt;
* die Paketdomain xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Die Paketdomain kann für alle Zugriffe auf das Paket benutzt werden, beispielsweise für den Upload von Daten mittels FTP oder SCP und für das Einloggen über ssh.&lt;br /&gt;
&lt;br /&gt;
Konkretere Informationen und die Zugangsdaten enthält die Willkommens-E-Mail, die Du Nach der Bestellung eines Paketes erhältst.&lt;br /&gt;
&lt;br /&gt;
Ein Paket kann u.a. für Webseiten,Content-Management-Systeme, Web-Shops genutzt werden, die (CPU und I/O intensiv, und dennoch performant) mit Hilfe von Programmen und Datenbanken im Paket dynamisch erzeugt werden. &lt;br /&gt;
&lt;br /&gt;
Ein Paket eignet sich ebenfalls für statische Daten und Webseiten, die aus statischen HTML Dateien bestehen. Insbesondere E-Mail Postfächer, (CVS) Quellcode, Up/Downloads, Bildergalerien und andere wichtige Daten, die ständig verfügbar und auf Backups und Stand-by Servern gesichert sein sollen.&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
[[WEB-Paket]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DomainManagement]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pakettraffic]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Eventhandler]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Pakete bei HS]]&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=7175</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=7175"/>
		<updated>2024-12-06T12:16:47Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Redis Cache */ RAM für eigene Serverdineste - statt DAEMON&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Nextcloud =&lt;br /&gt;
&lt;br /&gt;
[https://nextcloud.com/ Nextcloud] ist eine PHP-basierte Open Source Lösung für gängige Cloud-Anwendungen, u.a.:&lt;br /&gt;
&lt;br /&gt;
* Filesharing unter Nutzern derselben Nextcloud, und mit der Öffentlichkeit&lt;br /&gt;
* Single-Sign-On Authentifizierung (SSO)&lt;br /&gt;
* Videokonferenzen (WebRTC)&lt;br /&gt;
* Online-Office Anwendung [https://www.collaboraoffice.com/ Collabora Online]&lt;br /&gt;
&lt;br /&gt;
Beispiel-Funktionalität, die über Plugins, sogenannte [https://apps.nextcloud.com/ &amp;quot;Apps&amp;quot;], bereit gestellt werden kann:&lt;br /&gt;
&lt;br /&gt;
* Kalender, Aufgabenverwaltung, Adressbuch&lt;br /&gt;
* Datei-Kollaboration (Kommentare zu Dateien, Verschlagwortung)&lt;br /&gt;
* Feedreader&lt;br /&gt;
* E-Mail-Programm&lt;br /&gt;
* Fotogalerie&lt;br /&gt;
* Musik- und Videowiedergabe&lt;br /&gt;
&lt;br /&gt;
= Nextcloud installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;cloud.example.org&#039;&#039;&lt;br /&gt;
* PostgreSQL-User &lt;br /&gt;
* PostgreSQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-cloud&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Nextcloud&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;cloud.example.org&#039;,user:&#039;xyz00-cloud&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; postgresqluser.add({set:{name:&#039;xyz00_nextclusr&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; postgresqldb.add({set:{name:&#039;xyz00_nextcloud&#039;,owner:&#039;xyz00_nextclusr&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nextcloud installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-cloud&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
ssh -l xyz00-cloud xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
mkdir nextcloud&lt;br /&gt;
cd doms/cloud.example.org&lt;br /&gt;
rm -rf subs/www subs-ssl/www htdocs-ssl&lt;br /&gt;
ln -s $HOME/nextcloud htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nextcloud herunterladen und entpacken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd &lt;br /&gt;
wget https://download.nextcloud.com/server/releases/nextcloud-27.1.2.zip&lt;br /&gt;
unzip nextcloud-27.1.2.zip &lt;br /&gt;
rm nextcloud-27.1.2.zip&lt;br /&gt;
mkdir data tmp&lt;br /&gt;
chmod 700 data tmp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nextcloud konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;$HOME/doms/cloud.example.org/fastcgi-ssl/&amp;quot; eine Datei &amp;quot;php.ini&amp;quot; anlegen mit folgendem Inhalt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
memory_limit=512M&lt;br /&gt;
session.save_path=/home/pacs/xyz00/users/cloud/tmp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann mit einem Editor diese Datei bearbeiten: In der zweiten Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen.&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://cloud.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
Auf der ersten Seite sind anzugeben:&lt;br /&gt;
&lt;br /&gt;
* Login und Passwort für den Administrator definieren&lt;br /&gt;
* PostgreSQL als Datenbanksystem&lt;br /&gt;
* PostgreSQL-User und Passwort aus dem ersten Schritt oben&lt;br /&gt;
* Name der PostgreSQL-Datenbank aus dem ersten Schritt&lt;br /&gt;
* &amp;quot;localhost&amp;quot; als Datenbankserver (Nextcloud 23.0.2 empfiehlt hier die Angabe des Ports, diesen also lt. [[PostgreSQL]] angeben)&lt;br /&gt;
* Das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/data/&amp;quot; als Daten-Verzeichnis (bitte beachten: das im Eingabefeld voreingestellte verweist auf das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/&#039;&#039;&#039;nextcloud&#039;&#039;&#039;/data/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Die Felder für die Datenbank sind auf dem Startscreen hinter einem unscheinbaren Link versteckt. Um man das Formular für die Datenbank-Daten zu gelangen, muss man auf den Link klicken. Anschließend kann man die gewünschte Datenbank auswählen und die entsprechenden Daten eintragen. &#039;&#039;&#039;Das sollte geschehen, bevor man die Installation abschließt!&#039;&#039;&#039; Tut man dies nicht, wird Nextcloud mit SQLite installiert. Eine Änderung der Datenbank soll zwar laut Dokumentation auch später noch möglich sein, ging aber bei einem Test schief.&lt;br /&gt;
&lt;br /&gt;
In der Konfigurationsdatei der Nextcloud (in &#039;&#039;~/nextcloud/config/config.php&#039;&#039;) lassen sich weitere Voreinstellungen treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=php line&amp;gt;&lt;br /&gt;
&#039;maintenance_window_start&#039; =&amp;gt; 1,    // Wartungsfenster ab 1:00 Uhr&lt;br /&gt;
&#039;defaultapp&#039; =&amp;gt; &#039;calendar,files&#039;,   // bei Start wird der Kalender gezeigt&lt;br /&gt;
&#039;default_phone_region&#039; =&amp;gt; &#039;DE&#039;,     // Format Telefonnummern&lt;br /&gt;
&#039;default_language&#039; =&amp;gt; &#039;de&#039;,         // Sprache deutsch&lt;br /&gt;
&#039;force_language&#039; =&amp;gt; &#039;de&#039;,&lt;br /&gt;
&#039;default_locale&#039; =&amp;gt; &#039;de_DE&#039;,        // Locale (Formatierung Zeitangaben etc.) &lt;br /&gt;
&#039;force_locale&#039; =&amp;gt; &#039;de_DE&#039;,&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nextcloud beschleunigen ==&lt;br /&gt;
&lt;br /&gt;
Dieser Teil ist optional.&lt;br /&gt;
&lt;br /&gt;
Wenn regelmäßig &#039;&#039;&#039;im Browser&#039;&#039;&#039; mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser oft sehr langsam. Um dies zu verbessern, unterstützt Nextcloud die Anwendung von unterschiedlichen Cache-Verfahren (zum Beispiel Memcache, Redis).&lt;br /&gt;
&lt;br /&gt;
=== Redis Cache ===&lt;br /&gt;
&lt;br /&gt;
Redis ist auf den Hostsharing-Servern vorinstalliert und wird von den Nextcloud-Entwicklern empfohlen. &#039;&#039;&#039;In Verbindung mit einem Managed Webspace&#039;&#039;&#039; muss für Redis als eigener Serverdienst RAM gebucht werden und ist &#039;&#039;&#039;kostenpflichtig&#039;&#039;&#039;. Siehe zu Kosten im Webspace Konfigurator unter: https://www.hostsharing.net/angebote/managed-webspace/ – &#039;&#039;&#039;Arbeitsspeicher für eigene Serverdienste&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration des Redis-Dientes ist auf der Seite [[Redis]] beschrieben. Hier wird für Nextcloud die Variante mit einem Unixsocket benutzt.&lt;br /&gt;
&lt;br /&gt;
In der Konfiguration der Nextcloud (in &#039;&#039;~/nextcloud/config/config.php&#039;&#039;) wird der Redis-Cache wie folgt konfiguriert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=php line&amp;gt;&lt;br /&gt;
&#039;memcache.local&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
&#039;memcache.distributed&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
&#039;memcache.locking&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
&#039;redis&#039; =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    &#039;host&#039; =&amp;gt; &#039;/home/pacs/xyz00/users/cloud/redis/var/redis-server.sock&#039;,&lt;br /&gt;
    &#039;port&#039; =&amp;gt; 0,&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;mein-redis-passwort&#039;,&lt;br /&gt;
    &#039;timeout&#039; =&amp;gt; 1.5,&lt;br /&gt;
  ),&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es perfekt zu machen, nutze ich &#039;&#039;logrotate&#039;&#039; um die Logdateien zu organisieren. Dazu die Konfiguration in &#039;&#039;~/.logrotate&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
compress&lt;br /&gt;
/home/pacs/xyz00/users/cloud/redis/var/redis.log {&lt;br /&gt;
  rotate 5&lt;br /&gt;
  daily&lt;br /&gt;
  missingok&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit systemd-Timern werden die Logdateien täglich rotiert:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/logrotate.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=rotate log files&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=php8.2 /home/pacs/xyz00/users/cloud/nextcloud/cron.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/logrotate.timer&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=timer for nextcloud cleanup job&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=1:1&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
$ systemctl --user enable logrotate.timer&lt;br /&gt;
$ systemctl --user start logrotate.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit einem weiteren Timer für die regelmäßigen Hintergrundaufgaben von Nextcloud lässt sie sich noch etwas beschleunigen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/nextcloud_background.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=nextcloud cleanup job&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=php8.2 /home/pacs/xyz00/users/cloud/nextcloud/cron.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/nextcloud_background.timer&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=timer for nextcloud cleanup job&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:0/5&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
$ systemctl --user enable nextcloud_background.timer&lt;br /&gt;
$ systemctl --user start nextcloud_background.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nextcloud Push ===&lt;br /&gt;
&lt;br /&gt;
Um Vorgänge wie Sync und Benachrichtigungen bei sehr großen Nextcloud Installationen zu beschleunigen, kann der &amp;lt;code&amp;gt;notify_push&amp;lt;/code&amp;gt; Dienst hinzuinstalliert werden.&lt;br /&gt;
&lt;br /&gt;
==== Abhängigkeiten und Einschränkungen ====&lt;br /&gt;
* &amp;lt;code&amp;gt;notify_push&amp;lt;/code&amp;gt; muss Zugriff auf den gleichen Redis-Cache wie die Nextcloud haben &lt;br /&gt;
** aufgrund von eingeschränktem Passwort Support sollte ein Redis Socket mit sicheren Berechtigungseinstellungen als Alternative zum Redis Port mit Passwort konfiguriert werden.&lt;br /&gt;
* optimaler Weise holt sich &amp;lt;code&amp;gt;notify_push&amp;lt;/code&amp;gt; benötigte informationen aus der &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; der bestehenden Nextcloud-Installation&lt;br /&gt;
* eine zusätzliche (Sub)domain im gleichen User ist nötig. Andernfalls muss die bestehende &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; muss aus o.g. Gründen modifiziert werden, dies könnte bei Nextcloud-Updates verloren gehen(!)&lt;br /&gt;
* Bestimmte Portbereiche sind bei Hostsharing eingeschränkt, es empfiehlt sich, direkt beispielsweise Port &amp;lt;code&amp;gt;37867&amp;lt;/code&amp;gt; zu nehmen. &amp;lt;strong&amp;gt;aus diesem Grund ist das automatische Setup durch das Plugin bei Hostsharing nicht möglich!&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
Siehe auch: https://github.com/nextcloud/notify_push#manual-setup &lt;br /&gt;
&lt;br /&gt;
1. Installieren der Nextcloud-App &amp;lt;code&amp;gt;notify_push&amp;lt;/code&amp;gt; – (nach Push suchen, &amp;quot;Client Push&amp;quot; wählen)&amp;lt;br&amp;gt;&lt;br /&gt;
2. falls noch nicht erstellt: &amp;lt;code&amp;gt;mkdir -p ~/.config/systemd/user&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3. mit Lieblingseditor die Datei &amp;lt;code&amp;gt;~/.config/systemd/user/notify_push.service&amp;lt;/code&amp;gt; anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description = Push daemon for Nextcloud clients&lt;br /&gt;
Documentation = https://github.com/nextcloud/notify_push&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
# Change if you already have something running on this port&lt;br /&gt;
Environment = PORT=37867&lt;br /&gt;
# We don&#039;t want to bind to 0.0.0.0, hence the --bind&lt;br /&gt;
ExecStart = /home/pacs/xyz00/users/cloud/bin/notify_push --bind 127.0.0.1 /home/pacs/xyz00/users/cloud/nextcloud/config/config.php&lt;br /&gt;
Type=notify&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy = default.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
4. das Verzeichnis &amp;lt;code&amp;gt;~/bin&amp;lt;/code&amp;gt; anlegen und die aktuellste binary herunterladen und ausführbar machen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;release=`curl -L https://api.github.com/repos/nextcloud/notify_push/releases/latest -s | jq -r &#039;.tag_name&#039;` &amp;amp;&amp;amp; wget --show-progress -qO ~/bin/notify_push https://github.com/nextcloud/notify_push/releases/download/$release/notify_push-x86_64-unknown-linux-musl &amp;amp;&amp;amp; chmod +x ~/bin/notify_push&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
5. es könnte die folgende Umgebungsvariable zum Bedienen von systemd notwendig werden:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;export XDG_RUNTIME_DIR=/run/user/$UID&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6. den neuen systemd-Dienst automatisch bei Systemstart, sowie jetzt sofort starten:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;systemctl enable --now --user notify_push&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
7. nun gehen wir in &amp;lt;code&amp;gt;doms/push.cloud.example.com/htdocs-ssl/.htaccess&amp;lt;/code&amp;gt; und ersetzen den Inhalt (bevorzugt), oder wir ergänzen die .htaccess der Nextcloud im unteren Teil um die folgenden Zeilen (letzteres kann bei Updates überschrieben werden!):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot; line&amp;gt;&lt;br /&gt;
# bei eigener (sub)domain ist /push/ nicht erforderlich, aber wer weiß, eventuell ist das mit robuster&lt;br /&gt;
RewriteCond %{REQUEST_URI}  ^/push/ws    [NC,OR]&lt;br /&gt;
RewriteCond %{HTTP:UPGRADE} ^WebSocket$           [NC,OR]&lt;br /&gt;
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]&lt;br /&gt;
RewriteRule .* ws://127.0.0.1:37867/ws  [proxy]&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{REQUEST_URI}  ^/push    [NC]&lt;br /&gt;
RewriteRule .* http://127.0.0.1:37867%{REQUEST_URI}  [proxy]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
8. abschließend im Nextcloud Ordner die Konfiguration des Plugins anstoßen: &amp;lt;code&amp;gt;php occ notify_push:setup https://cloud.example.com/push&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;php occ notify_push:setup https://push.cloud.example.com/push&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
9. es ist möglich, das die erkannte IP-Adresse des Hives noch nicht vertraut ist. In diesem Fall wird der obige Befehl scheitern und es muss jene aus der Fehlermeldung des Setups unter &amp;lt;code&amp;gt;trusted_proxies&amp;lt;/code&amp;gt; in der &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; ergänzt werden. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird im Repo außerdem ein Testclient bereitgestellt, der sich testweise mit dem Push-Dienst verbindet&lt;br /&gt;
&lt;br /&gt;
== Nextcloud mit Online Office ==&lt;br /&gt;
&lt;br /&gt;
In Nextcloud können Office-Dokumente (Textverarbeitung, Tabellen und Präsentationen) im Browser bearbeitet werden. Dazu steht bei Hostsharing die Collabora Developer Version zur Verfügung. Bestellung und Konfiguration sind hier im Wiki auf der Seite [[Collabora_Online]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud mit Nextcloud Talk ==&lt;br /&gt;
&lt;br /&gt;
Über die Nextcloud-App &amp;quot;Talk&amp;quot; können Videokonfererenzen mit Screensharing durchgeführt werden. Für die regelmäßige Nutzung kann es sinnvoll sein einen eigenen TURN Server zu betreiben. Siehe dazu [[Coturn_Installieren]]&lt;br /&gt;
&lt;br /&gt;
== Virenscanner ==&lt;br /&gt;
&lt;br /&gt;
Einige Nutzer wollen die Dateien in Ihrer Nextcloud regelmäßig auf Viren überprüfen. Auf unseren Servern steht dafür der OpenSource-Virenscanner &amp;quot;ClamAV&amp;quot; zur Verfügung. Wenn dieser Scanner benutzt wird, dann sollten die Einstellungen so gewählt sein, dass der ClamAV-Daemon über eine Socket Verbindung angesprochen wird. Die Einstellungen sind im Screenshot dokumentiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nextcloud-ClamAV-Einstellungen.png||nextcloud einstellungen für die virenscanner-app]]&lt;br /&gt;
&lt;br /&gt;
== Volltextsuche ==&lt;br /&gt;
&lt;br /&gt;
Über die Dokumente einer Nextcloud kann ein Volltextindex erstellt werden. Die Volltextsuche ermöglicht über den Index eine Suche über beliebige Begriffe, die in Dokumenten vorkommen.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist der Betrieb eines Elasticsearch Servers. Der Betrieb im Managed Webspace erfodert die Buchung von zwei &amp;quot;Serverdiensten&amp;quot;. Nutzer eines Managed Server müssen mit einem spürbaren Mehrbedarf an Hauptspeicher rechnen.&lt;br /&gt;
&lt;br /&gt;
Zur Installation von Elasticsearch existiert eine eigene Wikiseite: [[Elasticsearch]].&lt;br /&gt;
&lt;br /&gt;
In der Nextcloud sind folgende &#039;&#039;Apps&#039;&#039; zu installieren:&lt;br /&gt;
* Full Text Search&lt;br /&gt;
* Full Text Search - Elasticsearch Platform&lt;br /&gt;
* Full Text Search - Files&lt;br /&gt;
&lt;br /&gt;
nach der Installation der drei Apps steht in den Einstellungen ein neuer Menüpunkt &amp;quot;Volltextsuche&amp;quot; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Hier ist einzustellen:&lt;br /&gt;
* Suchplattform: Elasticsearch&lt;br /&gt;
* Adresse des Servlets: http://elastic:das-erzeugt-passwort@127.0.0.1:39200&lt;br /&gt;
* Index: frei-gewaehlter-name-idx&lt;br /&gt;
* Analyzer tokenizer: standard&lt;br /&gt;
&lt;br /&gt;
Die anderen Einstellung nach den eigenen Vorstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der initiale Aufbau des Suchindex erfolgt über ein &amp;quot;occ&amp;quot;-Kommando auf der Shell:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
cd nextcloud/&lt;br /&gt;
php occ fulltextsearch:index --output&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn dieser Fehler kommt:&lt;br /&gt;
  TypeError: Return value of OCA\Files_FullTextSearch\Model\MountPoint::isGlobal()&lt;br /&gt;
  must be of the type bool, null returned in [...]/apps/files_fulltextsearch/lib/Model/MountPoint.php:103&lt;br /&gt;
sollte dieser Patch angewendet werden: https://github.com/nextcloud/files_fulltextsearch/issues/125#issuecomment-877789742&lt;br /&gt;
&lt;br /&gt;
Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
cd nextcloud/&lt;br /&gt;
php occ fulltextsearch:live -q&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Monit Konfiguration dafür sieht so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
#~/bin/start-fulltextsearchlive&lt;br /&gt;
#&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir -p $HOME/var&lt;br /&gt;
cd $HOME/nextcloud&lt;br /&gt;
exec php occ fulltextsearch:live -q &amp;amp;&lt;br /&gt;
echo $! &amp;gt;$HOME/var/fulltextsearchlive.pid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
#~/bin/stop-fulltextsearchlive&lt;br /&gt;
#&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
kill $( cat $HOME/var/fulltextsearchlive.pid )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.monitrc (siehe oben von der Redis Installation) entsprechend ergänzen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
check process fulltextsearchlive with pidfile /home/pacs/xyz00/users/cloud/var/fulltextsearchlive.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/cloud/bin/start-fulltextsearchlive&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/cloud/bin/stop-fulltextsearchlive&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Integration mit LDAP ==&lt;br /&gt;
&lt;br /&gt;
Um einheitliche Benutzerzugänge für verschiedene Anwendungen zu ermöglichen, wird oft auf ein zentrales LDAP Verzeichnis gesetzt. &lt;br /&gt;
&lt;br /&gt;
Dieses kann für Nextcloud eingesetzt werden, damit Benutzer nicht lokal in Nextcloud, sondern in LDAP verwaltet werden können.&lt;br /&gt;
&lt;br /&gt;
Siehe auch https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html&lt;br /&gt;
&lt;br /&gt;
Dazu muss die App &amp;quot;LDAP user and group backend&amp;quot; in den Nextcloud Apps aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Dann muss die LDAP Anbindung in den Administrationseinstellungen unter &amp;quot;LDAP/AD-Integration&amp;quot; eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Der Server mit Port, die BenutzerDN mit Passwort und die BaseDN müssen eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Es muss auch bestimmt werden, welche Klasse (z.B. inetOrgPerson) die Benutzer brauchen, um Zugriff auf die Nextcloud zu erhalten.&lt;br /&gt;
&lt;br /&gt;
Falls schon Benutzer in der Nextcloud existieren, und diese zu LDAP mitgenommen werden sollen, kann der Anleitung aus diesem Forum Eintrag gefolgt werden: https://help.nextcloud.com/t/migration-to-ldap-keeping-users-and-data/13205&lt;br /&gt;
&lt;br /&gt;
* Voraussetzung ist, dass der Benutzernamen der zu übernehmenden Benutzer in Nextcloud der uid in LDAP entspricht.&lt;br /&gt;
* Es wird ein Administrator Benutzer benötigt, der lokal angelegt wurde, und auch lokal bleibt.&lt;br /&gt;
* Mit diesem Administrator Benutzer wird die LDAP Anbindung eingerichtet.&lt;br /&gt;
* In der Experten Ansicht von LDAP/AD muss bei &amp;quot;Attribut für interne Benutzernamen&amp;quot; eingetragen werden: uid&lt;br /&gt;
* Klicke den Schalter &amp;quot;LDAP Benutzernamenzuordnung löschen&amp;quot;&lt;br /&gt;
* Klicke den Schalter &amp;quot;LDAP Gruppennamenzuordnung löschen&amp;quot;&lt;br /&gt;
* dann in der MySQL Datenbank anmelden, und aus uc_users alle Benutzer bis auf den Administrator Benutzer löschen&lt;br /&gt;
* Dann in der Nextcloud Weboberfläche sich alle Benutzer anzeigen lassen&lt;br /&gt;
* Nun gelingt die Anmeldung mit den anderen Benutzern mit dem LDAP Passwort, und die Dateien wurden übernommen.&lt;br /&gt;
&lt;br /&gt;
== Optimierung der Geschwindigkeit ==&lt;br /&gt;
Manchmal fühlt sich die Nextcloud träge an.&lt;br /&gt;
&lt;br /&gt;
Folgende Änderungen können helfen:&lt;br /&gt;
&lt;br /&gt;
* HTTP/2.0 aktivieren: dem Service von Hostsharing Bescheid geben&lt;br /&gt;
* Die App Dashboard deaktivieren, und dafür werden direkt die Dateien angezeigt&lt;br /&gt;
* Einblenden der README in den Ordnern abschalten: das kann pro Ordner in der UI geschehen (links unten), oder global: &amp;lt;code&amp;gt;occ config:app:set text workspace_available --value=0&amp;lt;/code&amp;gt;. Siehe auch [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/text_configuration.html#disable-rich-workspaces-globally]&lt;br /&gt;
&lt;br /&gt;
== Default App einstellen ==&lt;br /&gt;
&lt;br /&gt;
In der Datei config.php können wir einstellen, welche App direkt nach der Anmeldung gezeigt wird.&lt;br /&gt;
&lt;br /&gt;
Das ist entweder die Dashboard App, wenn sie aktiviert ist, oder die Dateien App (files).&lt;br /&gt;
&lt;br /&gt;
Falls der Kalender direkt angezeigt werden soll, muss folgende Zeile in der config.php hinzugefügt werden (siehe auch [https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#defaultapp]):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
&#039;defaultapp&#039; =&amp;gt; &#039;calendar&#039;,&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Nextcloud Updates =&lt;br /&gt;
&lt;br /&gt;
== Updater über die Shell starten ==&lt;br /&gt;
&lt;br /&gt;
Wenn die NextCloud sich nicht über das Webfrontend updaten lässt, kann der Updater auch per Shell im directory /updater durch ausführen des updater.phar gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
xyz00-cloud@h00:~$ cd ~/nextcloud/updater&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud/updater$ chmod u+x updater.phar&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud/updater$ ./updater.phar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es sollten außerdem ein paar Routine-Aufräumarbeiten durchgeführt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
xyz00-cloud@h00:~$ cd ~/nextcloud&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys --no-interaction&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-columns --no-interaction&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices --no-interaction&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So können die Apps noch alle aktualisiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
xyz00-cloud@h00:~$ cd ~/nextcloud&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ app:update --all -n --no-ansi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für weitere Informationen kann auf die offizielle Doku ab Ziffer 2. zurückgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
* [https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html#using-the-command-line-based-updater https://docs.nextcloud.com]&lt;br /&gt;
&lt;br /&gt;
Hier gibt es ein kurzes Video, das die Anmeldung über die Kommandozeile mit Putty erklärt und die Aktualisierung von Nextcloud auf der Kommandozeile:&lt;br /&gt;
&lt;br /&gt;
* [https://tube.solidcharity.net/w/0cf5ee97-ba7c-41df-a56f-8d1fea842ab0 Nextcloud auf der Kommandozeile aktualisieren]&lt;br /&gt;
&lt;br /&gt;
== Wartungsmodus per Shell ein- oder ausschalten ==&lt;br /&gt;
&lt;br /&gt;
So kann der Wartungsmodus angeschaltet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
xyz00-cloud@h00:~$ cd ~/nextcloud&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So kann der Wartungsmodus wieder ausgeschaltet werden, d.h. die Nextcloud ist dann wieder in Betrieb:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
xyz00-cloud@h00:~$ cd ~/nextcloud&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Webfrontend-Updater Probleme / Lösungen ==&lt;br /&gt;
&lt;br /&gt;
=== Datenbank: Indizes | Primärschlüssel | Konvertierungen ===&lt;br /&gt;
&lt;br /&gt;
Aufgetreten nach erfolgtem Versionsupdate Nextcloud 19 auf Nextcloud 20&lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgten Update lädt automatisch die Seite: &#039;&#039;&#039;Sicherheits- und Einrichtungswarnungen&#039;&#039;&#039; auf dieser wird angemerkt, dass manuelle Schritte für die Datenbank durchzuführen sind. Dies betrifft Indizes, Primärschlüssel und Konvertierungen. &lt;br /&gt;
&lt;br /&gt;
Per Shell in der directory /nextcloud folgende Kommandos ausführen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
xyz00-cloud@h00:~$ cd ~/nextcloud&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys --no-interaction&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-columns --no-interaction&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices --no-interaction&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hier dem durch Nextcloud angegebenen Kommando ein &#039;&#039;&#039;php&#039;&#039;&#039; voranzustellen.&lt;br /&gt;
&lt;br /&gt;
== Update per Skript ==&lt;br /&gt;
&lt;br /&gt;
Es ist möglich die regelmäßigen Updates weitgehend zu automatisieren. Ein Skript wäre etwa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
if [ -f $HOME/nextcloud/occ ]; then &lt;br /&gt;
  echo &amp;quot;Nextcloud Update&amp;quot;; &lt;br /&gt;
  cd $HOME/nextcloud;&lt;br /&gt;
  php updater/updater.phar -vv --no-backup --no-interaction&lt;br /&gt;
  php occ maintenance:mode --on&lt;br /&gt;
  php occ db:add-missing-primary-keys --no-interaction&lt;br /&gt;
  php occ db:add-missing-columns --no-interaction&lt;br /&gt;
  php occ db:add-missing-indices --no-interaction&lt;br /&gt;
  php occ db:convert-filecache-bigint --no-interaction&lt;br /&gt;
  php occ app:update --all&lt;br /&gt;
  php occ maintenance:mode --off&lt;br /&gt;
else &lt;br /&gt;
  echo &amp;quot;Keine Nextcloud Installation gefunden&amp;quot;; &lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update: bei old-stable Version bleiben ==&lt;br /&gt;
&lt;br /&gt;
Normalerweise fragt jede Nextcloud Instanz zentral ab, welches Update zur Verfügung steht, abhängig vom Release Channel. Dabei wird aber relativ schnell auf die nächste Version gewechselt, also z.B. von Nextcloud 28 auf Nextcloud 29, obwohl Nextcloud 28 noch mehrere Monate gepflegt wird, und manche Apps noch nicht bereit sind für Nextcloud 29.&lt;br /&gt;
&lt;br /&gt;
Es kann aber auch eine Alternative eingerichtet werden, in der Datei nextcloud/config/config.php, unter dem Eintrag updater.server.url&lt;br /&gt;
&lt;br /&gt;
Hier wird z.B. auf einen Updater von unserem Mitglied Timotheus Pokorra verwiesen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=php line&amp;gt;&lt;br /&gt;
updater_server_url: &amp;quot;https://ncupdater.solidcharity.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dahinter läuft ein Skript, mit dem wir noch länger eine bestimmte Version anbieten können: https://codeberg.org/tpokorra/ncupdater&lt;br /&gt;
&lt;br /&gt;
= Daten auf HDD Storage =&lt;br /&gt;
== Einrichtung des HDD Storage ==&lt;br /&gt;
&lt;br /&gt;
Um den langsameren aber günstigeren HDD Storage von Hostsharing zu nutzen, kann das data Verzeichnis von SSD auf HDD Storage verschoben werden. Ein symbolischer Link reicht nicht aus, man muss den Pfad in der Nextcloud Konfigurationsdatei anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
# Nextcloud in Wartungsmodus versetzen&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on&lt;br /&gt;
# Daten auf HDD Storage verschieben&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ mv data /home/storage/xyz00/users/cloud/&lt;br /&gt;
# symbolischen Link anlegen&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ ln -s /home/storage/xyz00/users/cloud/data data&lt;br /&gt;
# Pfad in config.php ändern&lt;br /&gt;
nano config/config.php&lt;br /&gt;
# Die Zeile mit &#039;datadirectory&#039; finden und entsprechend ändern:&lt;br /&gt;
# &#039;datadirectory&#039; =&amp;gt; &#039;/home/storage/xyz00/users/cloud/data&#039;,&lt;br /&gt;
# Wartungsmodus beenden&lt;br /&gt;
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Einschränkende Bemerkungen =&lt;br /&gt;
== Nextcloud Sync Client ==&lt;br /&gt;
&lt;br /&gt;
Der Nextcloud Sync Client erfüllt eine Funktion ähnlich wie Dropbox, und synchronisiert ganze Ordnerstrukturen. &lt;br /&gt;
&lt;br /&gt;
Gerade wenn man mit mehreren Menschen in einer Nextcloud arbeitet, ist diese Funktion mit Vorsicht zu benutzen.&lt;br /&gt;
&lt;br /&gt;
* Änderungen an der Ordnerstruktur sollten nicht lokal, sondern im Webbrowser vorgenommen werden.&lt;br /&gt;
* Wenn die Gefahr besteht, dass mehrere Menschen gleichzeitig eine Datei bearbeiten, sollte die Datei nicht lokal, sondern im Webbrowser bearbeitet werden.&lt;br /&gt;
* Aus Sicht des Datenschutzes und der Daten-Minimierung sollte überlegt werden, ob die Daten wirklich auf jeden Laptop und Rechner synchronisiert werden sollen, oder ob es reicht, ausschließlich über den Webbrowser auf die Daten zuzugreifen.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://docs.nextcloud.com/ Nextcloud Dokumentation]&lt;br /&gt;
* [https://apps.nextcloud.com/ Nextcloud Erweiterungen (&amp;quot;Apps&amp;quot;)]&lt;br /&gt;
* [https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/ Optimierung des Caches für Previews]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/nextcloud Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
= Nextcloud Reseller bei HS =&lt;br /&gt;
&lt;br /&gt;
[https://nextcloud.ossaas.de OS SaaS]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;br /&gt;
[[Kategorie:Nextcloud]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=FAQ&amp;diff=7045</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=FAQ&amp;diff=7045"/>
		<updated>2024-11-19T13:11:04Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Wie ändere Ich Adress-Daten vom Domain Inhaber / Admin? (whois) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-Links}}&lt;br /&gt;
&lt;br /&gt;
FAQ heißt Frequently Asked Questions - Fragen, die immer wieder gestellt werden. Hier ist der Platz, sie zu beantworten.&lt;br /&gt;
&lt;br /&gt;
== Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Domain bei anderem Provider, Subdomain bei HS und umgekehrt ===&lt;br /&gt;
:Fall A -&amp;gt; Domain example.com bei Anbieter XY&lt;br /&gt;
:Subdomain test.example.com bei Hostsharing&lt;br /&gt;
:Was ist zu tun?&lt;br /&gt;
:* Bei Anbieter XY sollten DNS-Einträge geschaltet werden, damit Hostsharing die Subdomain verwalten kann:&lt;br /&gt;
&lt;br /&gt;
:test.example.com.	IN	NS	dns1.hostsharing.net.&lt;br /&gt;
:test.example.com.	IN	NS	dns2.hostsharing.net.&lt;br /&gt;
:test.example.com.	IN	NS	dns3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
:* Bei Hostsharing kann die Domain test.example.com nun via HSAdmin hinzugefügt werden. Im Domainbestellsystem ist keine Aktion erforderlich, da es sich nicht um eine Domain-Registrierung handelt.&lt;br /&gt;
&lt;br /&gt;
:Welche Voraussetzungen sind zu erfüllen?&lt;br /&gt;
:Anbieter XY muss die entsprechend DNS-Schaltung ermöglichen.&lt;br /&gt;
&lt;br /&gt;
:Welche Kosten fallen an?&lt;br /&gt;
:Bei Hostsharing fallen keine Kosten an, abgesehen vom Webspace- und Traffic-Bedarf des Angebots unter test.example.com.&lt;br /&gt;
&lt;br /&gt;
:Fall B -&amp;gt; Domain example.com bei Hostsharing&lt;br /&gt;
:Subdomain test.example.com bei Anbieter XY&lt;br /&gt;
&lt;br /&gt;
:Was ist zu tun?&lt;br /&gt;
:* Bei Hostsharing sollten über die Zonefile-Verwaltung DNS-Einträge geschaltet werden, so dass der Anbieter XY die Subdomain verwalten kann.&lt;br /&gt;
&lt;br /&gt;
:test.example.com.	IN	NS	&amp;lt;DNS-Server 1 des Anbieters&amp;gt;&lt;br /&gt;
:test.example.com.	IN	NS	&amp;lt;DNS-Server 2 des Anbieters&amp;gt;&lt;br /&gt;
:...&lt;br /&gt;
&lt;br /&gt;
:Die Angaben sind bei dem entsprechenden Anbieter zu erfragen.&lt;br /&gt;
:* Die Subdomain kann anschließend bei bei Anbieter XY geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
:Welche Voraussetzungen sind zu erfüllen?&lt;br /&gt;
:Anbieter XY muss Aufschaltung von Subdomains unterstützen.&lt;br /&gt;
&lt;br /&gt;
:Welche Kosten fallen an?&lt;br /&gt;
:Bei Hostsharing fallen keine Kosten an, abgesehen vom ohnehin zu leistenden Entgelt für die Domain example.com.&lt;br /&gt;
&lt;br /&gt;
=== Wie komme ich an einen Auth Code für eine hier gehostete .com/.de Domain? ===&lt;br /&gt;
&lt;br /&gt;
: Kann im Account des [https://domain-bestellsystem.de  Domain-Bestellsystem ] selbst abgefragt, bzw. erzeugt werden:&lt;br /&gt;
&amp;quot;Auftragsübersicht&amp;quot; wählen, dort die Domain anklicken, unter &amp;quot;Ausführbare Aktionen&amp;quot;. (nicht im KK-Center.)&lt;br /&gt;
&lt;br /&gt;
=== Was sind CNO-Domains? === &lt;br /&gt;
:CNO steht für &amp;quot;COM&amp;quot;, &amp;quot;NET&amp;quot; und &amp;quot;ORG&amp;quot;. Im Gegensatz zu DE-Domains,welche auf &amp;quot;.de&amp;quot; enden (z.B. hostsharing.de), enden CNO - Domains auf &amp;quot;.com&amp;quot;, &amp;quot;.net&amp;quot; oder &amp;quot;.org&amp;quot; (z.B. hostsharing.net).&lt;br /&gt;
:Im Allgemeinen steht .com für ein kommerzielles Angebot und .org für eine nicht kommerzielle Organisation. Die Endung .net wird heute oft genutzt, wenn die entsprechende .com - Domain bereits vergeben ist und ist weit verbreitet.&lt;br /&gt;
&lt;br /&gt;
=== Wie mache ich zwei Domain-Verzeichnisse identisch, die zwei unterschiedlichen usern gehören? ===&lt;br /&gt;
&lt;br /&gt;
:Das ist nicht möglich.&lt;br /&gt;
&lt;br /&gt;
=== Wie ändere ich den Domain Admin ? ===&lt;br /&gt;
&lt;br /&gt;
:Als Domainadmin informiere Deinen Paketadmin. &lt;br /&gt;
:Als Paketadmin siehe https://doc.hostsharing.net/users/administration/domain/index.html.&lt;br /&gt;
&lt;br /&gt;
=== Wie ändere Ich Adress-Daten vom Domain Inhaber / Admin? (whois)===&lt;br /&gt;
Im Feb 2010 wurden an alle HS Mitglieder die Zugangsdaten für unser&lt;br /&gt;
[https://domain-bestellsystem.de  Domain-Bestellsystem ] versendet.&lt;br /&gt;
Dort kann auch die gesamte Adresse oder nur Telefon und E-Mail Daten geändert werden.&lt;br /&gt;
Wer diese Zugangsdaten nicht mehr hat kurze E-Mail an service@hostsharing.net&lt;br /&gt;
:Nach der Anmeldung auf Menüpunkt &amp;quot;Handleverwaltung&amp;quot;&lt;br /&gt;
:Dann bei &amp;quot;Suchen&amp;quot; die HandleID und bei im Feld &amp;quot;Handle-ID&amp;quot; auswählen -&amp;gt; Button &amp;quot;suchen&amp;quot;&lt;br /&gt;
:Die aktuelle HandleID über Menü &amp;quot;Auftragsübersicht&amp;quot; und dann auf die &amp;quot;Domain&amp;quot; klicken.&lt;br /&gt;
: ggf auch die Stammdaten bei eigenen Änderungen anpassen.&lt;br /&gt;
&lt;br /&gt;
== E-Mail ==&lt;br /&gt;
&lt;br /&gt;
=== Meine E-Mail wurde abgelehnt, obwohl sie kleiner als 128 MB ist ===&lt;br /&gt;
:Du hast nicht bedacht, dass der Anhang durch die Kodierung an Größe zunimmt. Siehe [[Größenbeschränkung von E-Mails]]&lt;br /&gt;
&lt;br /&gt;
=== Was bedeutet die Fehlermeldung &amp;lt;strong&amp;gt;554 hop-count exceeded&amp;lt;/strong&amp;gt; in einer E-Mail ? ===&lt;br /&gt;
: Eine E-Mail ist zwischen zwei Adressen weitergeleitet und es entstand eine Weiterleitungsschleife. Im Mailserver gibt es die Einstellung: hopcount_limit = 50. Wenn eine Mail über 50 Emailserver ging, dann wird die gebounced. Damit verhindert man solche Schleifen.&lt;br /&gt;
&lt;br /&gt;
=== Eigener Mailserver: status=bounced host mailin[x].hostsharing.net ... said: Relay access denied===&lt;br /&gt;
:Wer einen eigenen Mailserver zum Einliefern von E-Mail benutzt und über die Mailserver von Hostsharing als Relayhost (weiterleitenden Mailserver) senden möchte, liefert die Mail an das Paket xyz00.hostsharing.net. Dabei ist unbedingt zu vermeiden, dass der einliefernde Mailserver MX-Lookups macht. Bei Postfix geht das, indem der Relayhost in der Konfiguration eckigen Klammern angegeben wird: relayhost = [xyz01.hostsharing.net]&lt;br /&gt;
:Siehe https://lists.hostsharing.net/archiv/global-announce/2012-October/000566.html&lt;br /&gt;
&lt;br /&gt;
== WWW ==&lt;br /&gt;
&lt;br /&gt;
=== Meine Webseite ist nicht erreichbar ===&lt;br /&gt;
&lt;br /&gt;
: Schau auf http://status.hostsharing.net - da kannst Du sehen, ob es ein Problem auf dem Server von HS gibt. Siehe [[Überwachung der HS-Dienste]]&lt;br /&gt;
&lt;br /&gt;
=== Wieviel Speicherplatz haben meine User in meinem Paket belegt? ===&lt;br /&gt;
&lt;br /&gt;
:siehe [[Speicherbelegung]].&lt;br /&gt;
&lt;br /&gt;
=== Wieviel Speicherplatz im Hauptspeicher ist pro Anwendung in meinem Paket belegt? ===&lt;br /&gt;
&lt;br /&gt;
:siehe [[RAM Belegung]].&lt;br /&gt;
&lt;br /&gt;
=== kein Verzeichnislisting anzeigen ===&lt;br /&gt;
&lt;br /&gt;
: Am elegantesten erledigt man das mit einer [[.htaccess]] Datei.&lt;br /&gt;
: Eine andere Möglichkeit besteht darin, einfach eine Datei index.html in das Verzeichnis zu legen. Sie kann leer sein oder einen Hinweis der Art: Diese Seite wurde absichtlich leer gelassen enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Wie unterscheide ich, ob ein Script per https angesprochen wurde? ===&lt;br /&gt;
&lt;br /&gt;
:Weil https über einen eigenen Port läuft, ist das recht einfach. Diese php-Abfrage prüft das ab:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=php&amp;gt;&lt;br /&gt;
$cfgPmaAbsoluteUri = &#039;http&#039;.(($_SERVER[&#039;SERVER_PORT&#039;]==443)?&#039;s&#039;:&#039;&#039;).&#039;://hostsharing.net/&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:und baut entweder ein s in den String ein oder eben nichts (&#039;&#039;). &lt;br /&gt;
:Das Ergebnis ist dann entweder &#039;http://hostsharing.net&#039; oder &#039;https://hostsharing.net&#039;. &lt;br /&gt;
:&lt;br /&gt;
:Mehr auch unter [[.htaccess]] oder ggf auch [[TLS_/_SSL|SSL]] .&lt;br /&gt;
&lt;br /&gt;
=== winscp installiert, bekomme aber anstatt eines Zugriffs nur die Warnung: &amp;quot;Public key packet not received&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
: Dein Programm kann nur/ist auf Protokoll Version 1.5 eingestellt. Du brauchst aber Protokoll Version 2.0.&lt;br /&gt;
&lt;br /&gt;
== Datenbank ==&lt;br /&gt;
&lt;br /&gt;
=== Wie bekomme ich meinen dump in die mysql-Datenbank? ===&lt;br /&gt;
&lt;br /&gt;
:Du kopierst den dump auf den hs Rechner. Egal wohin!&lt;br /&gt;
:Dann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
mysql -u xyz00_dbuser -p xyz00_dbname &amp;lt; name_des_dumps&lt;br /&gt;
# Jetzt dein Passwort der Datenbank angeben.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Host / Server ==&lt;br /&gt;
&lt;br /&gt;
=== Wie heißt auf dem Host das Kommando, welches ...? ===&lt;br /&gt;
=== Haben wir auf unserm Server ein Programm für ... ? ===&lt;br /&gt;
&lt;br /&gt;
:Wie man sowas findet:&lt;br /&gt;
&lt;br /&gt;
:Finde ein möglichst spezielles Stichwort zum Thema (vorzugsweise in englisch):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=output&amp;gt;&lt;br /&gt;
1. auf unserem Server einloggen,&lt;br /&gt;
&lt;br /&gt;
2. apropos stichwort eingeben,&lt;br /&gt;
&lt;br /&gt;
3. für jedes interessant klingende Programm man Programmname eingeben, lesen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pakete allg. ==&lt;br /&gt;
&lt;br /&gt;
=== Sind für Pakete auch besondere Konfigurationen zu erhalten? ===&lt;br /&gt;
&lt;br /&gt;
Da die Betreuung von Sonderkonfigurationen einen erheblichen Aufwand bedeutet, versuchen wir diese Wünsche entweder in die Standardkonfiguration einzubauen oder zumindest konfigurierbar zu machen. Die Entscheidung treffen in letzter Instanz die Hostmaster.&lt;br /&gt;
&lt;br /&gt;
=== Welche Parameter müssen angegeben werden, wenn über FTP auf ein Paket zugegriffen werden soll? ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff ist entweder über die IP-Nummer oder dem Domainnamen (z.B. ftp.example.com) möglich. Username und Passwort wurden bei bei der Einrichtung des Paketes mitgeteilt oder selbst vergeben.&lt;br /&gt;
&lt;br /&gt;
Für Windows-Nutzer: &lt;br /&gt;
&lt;br /&gt;
Für die Datenübertragung immer auf Unix einstellen wenn die Option vorhanden ist (z.b. bei WS-FTP). Scripte und Konfigurationsdateien IMMER im ASCII-Modus übertragen! Sonst können sie evtl. nicht richtig verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Generell raten wir von FTP aus Sicherheitsgründen ab.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Simple_Zonefile_Howto&amp;diff=6944</id>
		<title>Simple Zonefile Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Simple_Zonefile_Howto&amp;diff=6944"/>
		<updated>2024-09-13T09:31:48Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* alle Web-Inhalte soll auf externe IP-Adresse verweisen */  DKIM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Howto werden einfachere Standardanwendungen für eigene Zonefiles behandelt. Tiefer gehende Erläuterungen finden sich in [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird von Hostsharing die Konfiguration der Nameserver automatisch erledigt. Das ist einer angepassten Lösung grundsätzlich vorzuziehen. Es entlastet den Anwender von der Pflicht, sein Zonefile bei technischen Änderungen zu überprüfen. Sollte dennoch ein benutzerspezifisches Zonefile erforderlich sein, so verringert der Einsatz möglichst mächtiger Platzhalter den späteren Anpassungsbedarf. In vielen Fällen genügt es, den Platzhalter für das Standardzonefile um eigene Einträge zu ergänzen.&lt;br /&gt;
&lt;br /&gt;
Ist die Verwendung eines angepassten Zonefiles erforderlich, z.B. zur Realisation von DNS-Verweisen auf extern gelagerte Subdomains, der Anbindung externer Server oder der Verwendung eigener Mailserver, kann &#039;&#039;&#039;pro Domain&#039;&#039;&#039; ein eigenes Zonefile erstellt werden. Dieses befindet sich im Verzeichnis &#039;&#039;&#039;[[~/]]doms/example.com/etc&#039;&#039;&#039; und trägt den Namen &#039;&#039;&#039;pri.example.com&#039;&#039;&#039; (example.com steht hier als Beispiel für den wahren Domainnamen). Das Neuanlegen oder eine Änderung dieser Datei führt zu einer baldigen Änderung der Nameservereinträge für die Domain.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Warnung!|Das nicht sachgemäße Erstellen eines eigenen Zonefiles kann zur Nichterreichbarkeit der eigenen Domain und zum Verlust von Mails führen! &#039;&#039;&#039;Insbesondere sei auf die Fehlerquelle gesetzter bzw. nicht gesetzter abschließender Punkte hingewiesen&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
== alle Web-Inhalte soll auf externe IP-Adresse verweisen ==&lt;br /&gt;
&lt;br /&gt;
Das komplette Zonefile sieht so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
{HEADER}&lt;br /&gt;
{SOA_RR}&lt;br /&gt;
{NS_RR}&lt;br /&gt;
{MX_RR}&lt;br /&gt;
{SPF_RR}&lt;br /&gt;
{DKIM_RR}&lt;br /&gt;
{WILDCARD_MX_RR}&lt;br /&gt;
{WILDCARD_SPF_RR}&lt;br /&gt;
{DOM_HOSTNAME}.    IN  A  1.2.3.4&lt;br /&gt;
{DOM_HOSTNAME}.    IN  AAAA  1.2.3.4.....&lt;br /&gt;
*.{DOM_HOSTNAME}.  IN  A  1.2.3.4&lt;br /&gt;
*.{DOM_HOSTNAME}.    IN  AAAA  1.2.3.4.....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 ist durch die externe IPV4-Adresse zu ersetzten, 1.2.3.4... durch die externe IPv6-Adresse.&lt;br /&gt;
&lt;br /&gt;
== Subdomain zuhause.example.com über Anbieter wie dyndns ==&lt;br /&gt;
&lt;br /&gt;
Die Subdomain zuhause.example.com soll über einen Anbieter à la dyndns laufen. Das komplette Zonefile sieht so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
{DEFAULT_ZONEFILE}&lt;br /&gt;
zuhause.{DOM_HOSTNAME}.	IN	CNAME	example.dyndns.org.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Externer Mailserver ==&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Mailserver extern betreiben, z.B. bei einem Cloud-Anbieter (Mails, Kontakte und Termine schon gecloudt?) oder im Büro. Wir übernehmen also erstmal alles, was {DEFAULT_ZONFILE} liefern würde, außer den MX Resource Records:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
{HEADER}&lt;br /&gt;
{SOA_RR}&lt;br /&gt;
{NS_RR}&lt;br /&gt;
{A_RR}&lt;br /&gt;
{AAAA_RR}&lt;br /&gt;
{SPF_RR} &lt;br /&gt;
{WILDCARD_A_RR}&lt;br /&gt;
{WILDCARD_AAAA_RR}&lt;br /&gt;
{WILDCARD_SPF_RR}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun definieren wir den Mailserver, d.h., wir fügen diese Zeile hinzu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
mail.{DOM_HOSTNAME}.	IN	MX 30 my.cloud.provider.example.com.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder per fester IP, d.h., wir fügen alternativ diese Zeile hinzu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
mail.{DOM_HOSTNAME}.	IN	A	1.2.3.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann legen wir die MX-Konfiguration fest, die besagt, welcher Mailserver für diese Domain zuständig ist (weitere Zeile wird hinzugefügt):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 mail.{DOM_HOSTNAME}.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn wir Mails auch für Subdomains wollen, brauchen wir zusätzlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 mail.{DOM_HOSTNAME}.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Achtung&lt;br /&gt;
Damit das interne {{lang|en|mailrouting}} innerhalb des Pakets für die Domain so funktioniert, daß keine lokal eingelieferten {{lang|en|e-mails}} an Mailboxen im Paket zugestellt werden, muß darauf geachtet werden, daß im Paket selber keine {{lang|en|e-mail}}-Adressen für die Domain defniert sind. Standardmäßig werden beim Einrichten einer Domain die Adressen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=output line&amp;gt;&lt;br /&gt;
abuse@...&lt;br /&gt;
postmaster@...&lt;br /&gt;
webmaster@...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[https://doc.hostsharing.net/users/administration/domain/index.html Domain]. Bei der oben angeführten MX-Konfiguration müssen diese mit [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin] wieder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Zonefile]]&lt;br /&gt;
[[Kategorie:DNS]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=6869</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=6869"/>
		<updated>2024-07-16T09:17:56Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Installation */  aktuelle Version 1.9.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
[[Datei:Goacess.png|rahmenlos|Screenshot Goaccess]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
(Dieser Teil kann ausgelassen werden: Auf Managed Servern mit Debian Buster ist Goaccess Version 1.2 vorinstalliert, bei Debian Bookworm ist es Goaccess Version 1.7).&lt;br /&gt;
&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:&lt;br /&gt;
z.B. /home/pacs/xyz00/usr &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mkdir usr&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)&lt;br /&gt;
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;export PATH=&amp;quot;$HOME/usr/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt;.bashrc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;[[ -f ~/.bashrc ]] &amp;amp;&amp;amp; . ~/.bashrc&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
nun sind wir bereit für die Installation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
wget https://tar.goaccess.io/goaccess-1.9.3.tar.gz&lt;br /&gt;
tar -xzvf goaccess-1.9.3.tar.gz&lt;br /&gt;
cd goaccess-1.9.3/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
~/goaccess-1.9.3$ ./configure --enable-utf8 --enable-geoip=legacy --prefix=$HOME/usr&lt;br /&gt;
~/goaccess-1.9.3$ make&lt;br /&gt;
~/goaccess-1.9.3# make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle&lt;br /&gt;
ein Aufruf von&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
goaccess --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
sollte das zeigen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;output&amp;quot; line&amp;gt;&lt;br /&gt;
GoAccess - 1.9.3.&lt;br /&gt;
For more details visit: https://goaccess.io/&lt;br /&gt;
Copyright (C) 2009-2022 by Gerardo Orellana&lt;br /&gt;
Build configure arguments:&lt;br /&gt;
--enable-utf8&lt;br /&gt;
--enable-geoip=legacy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.&lt;br /&gt;
=== Pipe mit zcat ===&lt;br /&gt;
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:&lt;br /&gt;
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.&lt;br /&gt;
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor&lt;br /&gt;
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Wildcards ===&lt;br /&gt;
zcat kann sehr gut mit Wildcards umgehen, der Aufruf &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
zcat ~/var/web*.log.gz  | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
zum Beispiel fasst alle logfiles aller Domains und aller Tage  zusammen.&lt;br /&gt;
Es geht auch nur eine Domain: &#039;&#039;&#039;&#039;&#039;&amp;quot;var/web-example.com*.log.gz&amp;quot;&#039;&#039;&#039;&#039;&#039; oder nur den Januar 2023: &#039;&#039;&#039;&#039;&#039;&amp;quot;var/web*202301*log.gz&amp;quot;&#039;&#039;&#039;&#039;&#039; (es sollte beachtet werden, dass natürlich immer die Datei, die dann am Tag früh morgens (bei mir ist das zwischen 01:38h und 01:40h) erstellt wird natürlich für den vorherigen Tag ist. Das heißt in der 20230101 ist vor allem der 31.12. geloggt&lt;br /&gt;
&lt;br /&gt;
=== Auswertung mit goaccess ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
zcat ... | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden. &#039;&#039;&#039;Empfehlung:&#039;&#039;&#039; Datei per scp heruntergeladen, auf dem eigenen, geschützten Rechner angeschaut, und schnell vernichtet.&lt;br /&gt;
== Finetuning ==&lt;br /&gt;
=== Anonymisierte IPs ===&lt;br /&gt;
Um nur anonymisierte IPs anzeigen zu lassen kann das zusätzliche Flag --anonymize-ip verwendet werden&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
zcat ... | goaccess ... --anonymize-ip  -&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Doku ist beschrieben wie die IP Adresse noch gröber anonymisiert werden kann. &lt;br /&gt;
=== Aktuellere Geo Location ===&lt;br /&gt;
Um die aktuellere Version der Geolocations zu verwenden muss bei &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
./configure ... --enable-geoip=mmdb ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
statt legacy verwendet werden. Dafür gibt es eine kostenlose Länder[https://db-ip.com/db/download/ip-to-country-lite] oder Städte[https://db-ip.com/db/download/ip-to-city-lite] lite-Version unter CC BY 4.0. Falls diese nicht genau genug sind, gibt es auch kommerzielle Alternativen vom selben Anbieter. &lt;br /&gt;
&lt;br /&gt;
Die Datenbank sollte im mmdb format heruntergeladen werden. Der direkte Downloadlink kann von oben direkt kopiert werden. Der Download Befehl auf der Konsole könnte bspw so aussehen (Datum und Version beachten! ggf. Link selbst einfügen). Zum heutigen Stand hatte die lite-cities Datenbank eine Größe von rund 100 MB.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
wget https://download.db-ip.com/free/dbip-city-lite-2023-02.mmdb.gz&lt;br /&gt;
gzip -d dbip-city-lite-2023-02.mmdb.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Ausführen von goaccess muss dann auch immer angegeben werden welche IP Datenbank verwendet werden soll. Dies geht mit folgendem zusätzlichen Flag (ggf. Pfad der db anpassen)  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
zcat ... | goaccess ... --geoip-database=dbip-city-lite-2023-02.mmdb -&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automatisierung pro Domain des Paketes ===&lt;br /&gt;
&lt;br /&gt;
Mit dem  folgenden kleinen shell script kann in einer logs.example.com (muss ersetzt werden!) Domain die statischen html files zum ansehen hinterlegt werden. Diese sollten dort nicht ohne Login ausgeliefert werden und nicht ohne https.  Grundsätzlich könnte goaccess die logs auch live aufbereiten, die Komprimierung  könnte  dort jedoch ggf in der neusten Version ein Hindernis darstellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
#inhalt generate-logs.sh&lt;br /&gt;
logdom=logs.example.com&lt;br /&gt;
for dom in $(ls $HOME/var/ | cut -c5- | rev | cut -c22- | rev | sort | uniq)     # list domain names&lt;br /&gt;
do&lt;br /&gt;
    echo ${dom}&lt;br /&gt;
    zcat $HOME/var/web-$dom-*.log.gz | goaccess -o $HOME/doms/$logdom/htdocs-ssl/$dom.html --log-format=COMBINED --anonymize-ip --geoip-database=dbip-city-lite-2023-02.mmdb --ignore-crawler --unknowns-as-crawlers -&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung des scripts: Zuerst wird die logdomain auf der die Dateien abgelegt werden sollen festgelegt. Dann wird via find im Ordner /home/doms nach Dateien vom Typ Link gesucht, dessen Linkziel genauso beginnt wie das home des aktuellen users (der Paketuser). Es listet also alle domains, welche im aktuellen Paket Verwendung finden und iteriert über diese indem es die  aktuelle  Iteration in der Variablen dom speichert. Die nächste Zeile entfernt den Pfad vor dem Domainnamen, sodass die Variable nur noch den reinen Domainnamen beinhaltet. Der echo Befehl ist nur zur Übersicht beim manuellen ausführen und kann nach Wunsch mit # auskommentiert werden. Anschließend wird wie gewohnt (für jede Domain nacheinander) goaccess aufgerufen und für jede Domain eine eigene html Datei erzeugt. Eventuell muss der goaccess Befehl noch an die eigenen Wünsche angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Mit einem [[cron]] Eintrag könnte dieses Script regelmäßig aufgerufen werden. z.B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
10 02 * * * sh ~/generate-logs.sh &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Warnung: Datenschutz ==&lt;br /&gt;
Man beachte, dass die Auswertungen Datenschutzrelevante Inhalte wie die IP Adresse und die aufgerufenen Pfade enthalten daher kann es nicht ausreichen nur die IPs zu anonymisieren. Bei einer Nextcloud Instanz beinhalten die Pfade z.B. häufig auch den Username und somit ggf. den Klarnamen. Entsprechend sollte diese Auswertung nicht öffentlich (ohne Passwortschutz) zugänglich gemacht werden. Siehe dazu [[.htaccess#Passwortschutz_f.C3.BCr_Dateien|Passwortschutz mit htaccess]].&lt;br /&gt;
&lt;br /&gt;
== Weitere WebStatistik Tools bei HS ==&lt;br /&gt;
&lt;br /&gt;
* [[AWStats_installieren|AWStat]]&lt;br /&gt;
* [[Goaccess]]&lt;br /&gt;
* [[Matomo Installieren|Matomo]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;br /&gt;
[[Kategorie:WebStatistik]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=6749</id>
		<title>Spamfilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spamfilter&amp;diff=6749"/>
		<updated>2024-06-18T14:02:13Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Mitteilungen über aussortierte Emails erzeugen lassen */ zcat wegen gezipen Mails&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einrichtung, Konfiguration und Optimierung eines Spamfilters auf den Hostsharing Servern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Spamassassin Konfigurieren =&lt;br /&gt;
&lt;br /&gt;
Der Spamfilter &amp;quot;Spamassassin&amp;quot; ist bei HS vorinstalliert und kann wie auf der Seite [[Procmail]] beschrieben für eine Mailbox eingebunden werden.&lt;br /&gt;
Alternativ kann &amp;quot;spamc&amp;quot;, das Kommando zur Nutzung des Spamassassin-Daemon, auch einfach in der Datei &amp;quot;.forward&amp;quot; eines Mail-Users aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;|/usr/bin/spamc -U /var/run/spamd --headers -e /usr/lib/dovecot/deliver&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Effekt: Spammassassin schreibt seine Testergebnisse in die Headerzeilen jeder E-Mail und leitet die E-Mails weiter an das Programm &amp;quot;deliver&amp;quot; aus dem Dovecot-Paket. Das Sortieren von Spam-EMail in einen Spam-Ordner lässt ich mit Sieve-Filtern umsetzten.&lt;br /&gt;
&lt;br /&gt;
ToDo: Anpassung Konfiguration, Filtertraining&lt;br /&gt;
&lt;br /&gt;
= Mitteilungen über aussortierte Emails erzeugen lassen =&lt;br /&gt;
&lt;br /&gt;
Spamcheck Verzeichnis im Homeverzeichnis anlegen,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
mkdir spamcheck&lt;br /&gt;
cd spamcheck&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dort drei Skriptdateien anlegen und deren Voreinstellungen anpassen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
cat &amp;gt; check &amp;lt;&amp;lt;EOF&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#----------------------------------------------------------------------------------------&lt;br /&gt;
# send spam mailfolder infomail&lt;br /&gt;
# (c) 04/2004 by ff, webmaster@ff-newmedia.net&lt;br /&gt;
#----------------------------------------------------------------------------------------&lt;br /&gt;
#set -x&lt;br /&gt;
version=&amp;quot;0.4 0405201035 (modified)&amp;quot;&lt;br /&gt;
mailuser=$1&lt;br /&gt;
mailpath=&amp;quot;Maildir/.Spam/&amp;quot;&lt;br /&gt;
checkmaildir=&amp;quot;spamcheck/checkmaildir&amp;quot;&lt;br /&gt;
listmaildir=&amp;quot;spamcheck/listmaildir&amp;quot;&lt;br /&gt;
mailhost=&amp;quot;h02&amp;quot;&lt;br /&gt;
maildomain=&amp;quot;hostsharing.net&amp;quot;&lt;br /&gt;
purgetime=&amp;quot;7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if ($checkmaildir $mailpath)&lt;br /&gt;
    then&lt;br /&gt;
        mailbox_status=`$listmaildir $mailpath`&lt;br /&gt;
	# send infomail&lt;br /&gt;
	(&lt;br /&gt;
	echo &amp;quot;From: spamcheck &amp;lt;admin@xyz00.$maildomain&amp;gt;&amp;quot;&lt;br /&gt;
        echo &amp;quot;To: $mailuser &amp;lt;$mailuser@$mailhost.$maildomain&amp;gt;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Subject: Status des Spam-Ordners&amp;quot;&lt;br /&gt;
	echo&lt;br /&gt;
        echo&lt;br /&gt;
        echo &amp;quot;$mailbox_status&amp;quot;&lt;br /&gt;
	echo&lt;br /&gt;
        echo&lt;br /&gt;
    	echo &amp;quot;Bitte pruefen ob evtl. erwuenschte Nachrichten aussortiert wurden.&amp;quot;&lt;br /&gt;
	echo &amp;quot;Zugriff auf das Postfach ist IMAP oder Webmail moeglich.&amp;quot;&lt;br /&gt;
        echo &amp;quot;(https://webmail.hostsharing.net)&amp;quot;&lt;br /&gt;
        echo&lt;br /&gt;
        echo&lt;br /&gt;
	echo &amp;quot;-- &amp;quot;&lt;br /&gt;
	echo &amp;quot;created by spamcheck $version&amp;quot;&lt;br /&gt;
    )|/usr/lib/sendmail $mailuser@$mailhost.$maildomain&lt;br /&gt;
else&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
cat &amp;gt; checkmaildir &amp;lt;&amp;lt;EOF&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
#----------------------------------------------------------------------------------------&lt;br /&gt;
# send spam mailfolder infomail - check if maildir exists&lt;br /&gt;
# (c) 05/2004 by ff, webmaster@ff-newmedia.net&lt;br /&gt;
# based on mdfrm (c) 1996, Matthew C. Mead&lt;br /&gt;
#----------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$maildir = shift;&lt;br /&gt;
&lt;br /&gt;
if (!$maildir) {&lt;br /&gt;
    $maildir = $ENV{&#039;MAILDIR&#039;};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (!$maildir) {&lt;br /&gt;
    $maildir = &amp;quot;$ENV{&#039;HOME&#039;}/.Maildir&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$maildir =~ s/^=/$ENV{&#039;HOME&#039;}\/Mail\//;&lt;br /&gt;
&lt;br /&gt;
# Kein Spamordner vorhanden - Errorcode 1&lt;br /&gt;
if (!(-d $maildir &amp;amp;&amp;amp; -r $maildir &amp;amp;&amp;amp; -x $maildir &amp;amp;&amp;amp; -d &amp;quot;$maildir/cur&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
      -r &amp;quot;$maildir/cur&amp;quot; &amp;amp;&amp;amp; -x &amp;quot;$maildir/cur&amp;quot; &amp;amp;&amp;amp; -d &amp;quot;$maildir/new&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
      -r &amp;quot;$maildir/new&amp;quot; &amp;amp;&amp;amp; -x &amp;quot;$maildir/new&amp;quot;)) {&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Anderenfalls nachsehen ob Mails vorhanden sind&lt;br /&gt;
opendir(DIR, &amp;quot;$maildir/cur&amp;quot;);&lt;br /&gt;
@tmpfiles = map{$_ = &amp;quot;$maildir/cur/$_&amp;quot;} grep{!/(^\.$)|(^\.\.$)/} readdir(DIR);&lt;br /&gt;
@msgfiles = @tmpfiles;&lt;br /&gt;
closedir(DIR);&lt;br /&gt;
opendir(DIR, &amp;quot;$maildir/new&amp;quot;);&lt;br /&gt;
@tmpfiles = map{$_ = &amp;quot;$maildir/new/$_&amp;quot;} grep{!/(^\.$)|(^\.\.$)/} readdir(DIR);&lt;br /&gt;
push(@msgfiles, @tmpfiles);&lt;br /&gt;
closedir(DIR);&lt;br /&gt;
&lt;br /&gt;
# Wenn keine Mails vorhanden - Errorcode 1&lt;br /&gt;
if (!@msgfiles) {&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn Mails vorhanden - Errorcode 0&lt;br /&gt;
exit 0;&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
cat &amp;gt; listmaildir &amp;lt;&amp;lt;EOF&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
#----------------------------------------------------------------------------------------&lt;br /&gt;
# send spam mailfolder infomail - list maildir contents&lt;br /&gt;
# (c) 05/2004 by ff, webmaster@ff-newmedia.net&lt;br /&gt;
# based on mdfrm (c) 1996, Matthew C. Mead.&lt;br /&gt;
#----------------------------------------------------------------------------------------&lt;br /&gt;
$hours = 24; #Anzeigen von Mails, deren mtime hoechstens $hours Stunden in der Vergangenheit liegt&lt;br /&gt;
&lt;br /&gt;
use Date::Parse;&lt;br /&gt;
use Date::Format;&lt;br /&gt;
&lt;br /&gt;
$maildir = shift;&lt;br /&gt;
&lt;br /&gt;
if ($maildir eq &amp;quot;-h&amp;quot;) {&lt;br /&gt;
    print &amp;quot;usage: mdfrm /path/to/Maildir\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;       mdfrm =Maildir == mdfrm ~/Mail/Maildir\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;       otherwise, mdfrm defaults to \$MAILDIR\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;       otherwise, mdfrm defaults to ~/.Maildir\n&amp;quot;;&lt;br /&gt;
    exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (!$maildir) {&lt;br /&gt;
    $maildir = $ENV{&#039;MAILDIR&#039;};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (!$maildir) {&lt;br /&gt;
    $maildir = &amp;quot;$ENV{&#039;HOME&#039;}/.Maildir&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$maildir =~ s/^=/$ENV{&#039;HOME&#039;}\/Mail\//;&lt;br /&gt;
&lt;br /&gt;
if (!(-d $maildir &amp;amp;&amp;amp; -r $maildir &amp;amp;&amp;amp; -x $maildir &amp;amp;&amp;amp; -d &amp;quot;$maildir/cur&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
      -r &amp;quot;$maildir/cur&amp;quot; &amp;amp;&amp;amp; -x &amp;quot;$maildir/cur&amp;quot; &amp;amp;&amp;amp; -d &amp;quot;$maildir/new&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
      -r &amp;quot;$maildir/new&amp;quot; &amp;amp;&amp;amp; -x &amp;quot;$maildir/new&amp;quot;)) {&lt;br /&gt;
    # faellt weg, da checkmaildir bereits ueberprueft&lt;br /&gt;
    # print &amp;quot;Kein Spamordner in \&amp;quot;$maildir\&amp;quot; vorhanden. Sie haben offensichtlich noch keine Spammails erhalten.\n&amp;quot;;&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
opendir(DIR, &amp;quot;$maildir/cur&amp;quot;);&lt;br /&gt;
@tmpfiles = map{$_ = &amp;quot;$maildir/cur/$_&amp;quot;} grep{!/(^\.$)|(^\.\.$)/} readdir(DIR);&lt;br /&gt;
@msgfiles = @tmpfiles;&lt;br /&gt;
closedir(DIR);&lt;br /&gt;
opendir(DIR, &amp;quot;$maildir/new&amp;quot;);&lt;br /&gt;
@tmpfiles = map{$_ = &amp;quot;$maildir/new/$_&amp;quot;} grep{!/(^\.$)|(^\.\.$)/} readdir(DIR);&lt;br /&gt;
push(@msgfiles, @tmpfiles);&lt;br /&gt;
closedir(DIR);&lt;br /&gt;
&lt;br /&gt;
@msgs = ( );&lt;br /&gt;
&lt;br /&gt;
foreach $file (@msgfiles) {&lt;br /&gt;
    # wirkliches Alter der Mail&lt;br /&gt;
    $mtime = (stat($file))[9];&lt;br /&gt;
&lt;br /&gt;
    $from = &amp;quot;&amp;quot;;&lt;br /&gt;
    $subject = &amp;quot;&amp;quot;;&lt;br /&gt;
    $date = 0;&lt;br /&gt;
    $hits = 0;&lt;br /&gt;
    &lt;br /&gt;
    open(INPUT, sprintf(&amp;quot;zcat %s |&amp;quot;,$file));&lt;br /&gt;
&lt;br /&gt;
FILEINPUT:&lt;br /&gt;
    while(&amp;lt;INPUT&amp;gt;) {&lt;br /&gt;
	&lt;br /&gt;
	if (/^From:\s+(.*)$/i) {&lt;br /&gt;
	    $from = $1;&lt;br /&gt;
	    next FILEINPUT;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (/^Subject:\s+(.*)$/i) {&lt;br /&gt;
	    $subject = $1;&lt;br /&gt;
	    next FILEINPUT;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (/^Date:\s+(.*)$/i) {&lt;br /&gt;
	    $date = $1;&lt;br /&gt;
	    next FILEINPUT;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (/^X-Spam-Status: Yes, hits=+(.*)$/i) {&lt;br /&gt;
	    $hits = $1;&lt;br /&gt;
	    next FILEINPUT;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (/^\s*$/) {&lt;br /&gt;
	    last FILEINPUT;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if ($from &amp;amp;&amp;amp; $subject &amp;amp;&amp;amp; $date &amp;amp;&amp;amp; $hits) {&lt;br /&gt;
	    last FILEINPUT;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    close(INPUT);&lt;br /&gt;
&lt;br /&gt;
    @tmp = ( str2time($date), $from, $subject, $mtime, $hits );&lt;br /&gt;
    push(@msgs, [ @tmp ]);&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
$oldest = time - $hours * 3600; # Berechnen des Timestamps now - $hours&lt;br /&gt;
&lt;br /&gt;
$o = 0;&lt;br /&gt;
&lt;br /&gt;
foreach $msg (@msgs){&lt;br /&gt;
    if ($msg-&amp;gt;[3] &amp;gt;= $oldest) { # Innerhalb der letzten $hours aussortierte Mails&lt;br /&gt;
    $o++;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $i++; # alle Mails&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($i==0) { # Wenn keine Mail da sind, Errorcode 1&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Insgesamt befinden sich &amp;quot;, $i, &amp;quot; E-Mails in Ihrem Trash-Ordner.\n&amp;quot;);&lt;br /&gt;
print(&amp;quot;In den letzen &amp;quot;, $hours, &amp;quot; Stunden wurden &amp;quot;, $o, &amp;quot; Spam-E-Mails&lt;br /&gt;
aussortiert.\n\n&amp;quot;);&lt;br /&gt;
if ($o==0) { exit 0; }&lt;br /&gt;
print(&amp;quot;Datum (mtime)   Absender              Betreff                      Hits\n&amp;quot;);&lt;br /&gt;
print(&amp;quot;-----------------------------------------------------------------------&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    foreach $msg (sort {$b-&amp;gt;[3] &amp;lt;=&amp;gt; $a-&amp;gt;[3]} @msgs) { # Sortierung vorher auf 0/0&lt;br /&gt;
	if ($msg-&amp;gt;[3] &amp;gt;= $oldest) {&lt;br /&gt;
    	    if ($msg-&amp;gt;[1] =~ /\s*&amp;quot;*([^&amp;quot;]*)&amp;quot;*\s*\&amp;lt;[a-zA-Z0-9._%-=]+@[a-zA-Z0-9._%-=]+\&amp;gt;/) {&lt;br /&gt;
		$from = $1;&lt;br /&gt;
    	    } elsif ($msg-&amp;gt;[1] =~ /[a-zA-z0-9._%-=]+@[a-zA-Z0-9._%-=]+.*\(&amp;quot;*([^&amp;quot;]*)&amp;quot;*\)/) {&lt;br /&gt;
		$from = $1;&lt;br /&gt;
	    } else {&lt;br /&gt;
		$from = $msg-&amp;gt;[1];&lt;br /&gt;
	    }&lt;br /&gt;
&lt;br /&gt;
	    # Datum ausgeben&lt;br /&gt;
	    if (time2str(&amp;quot;%d&amp;quot;,$msg-&amp;gt;[3]) &amp;lt;=&amp;gt; $olddate) {&lt;br /&gt;
    		print(&amp;quot;\n&amp;quot;);&lt;br /&gt;
	    }   &lt;br /&gt;
	    &lt;br /&gt;
	    # Urspruengliches aus der Mail extrahiertes Datum, sinnlos weil oft gefaelscht&lt;br /&gt;
	    # printf(&amp;quot;%-12s  &amp;quot;, time2str(&amp;quot;%d.%m.%y %H:%M&amp;quot;,$msg-&amp;gt;[0]));&lt;br /&gt;
	    printf(&amp;quot;%-12s  &amp;quot;, time2str(&amp;quot;%d.%m.%y %H:%M&amp;quot;,$msg-&amp;gt;[3]));&lt;br /&gt;
    &lt;br /&gt;
    	    $olddate = time2str(&amp;quot;%d&amp;quot;,$msg-&amp;gt;[3]);    &lt;br /&gt;
&lt;br /&gt;
	    # From ausgeben&lt;br /&gt;
    	    if (length($from) &amp;lt;= 20) {&lt;br /&gt;
		printf(&amp;quot;%-20s  &amp;quot;, $from);&lt;br /&gt;
	    } else {&lt;br /&gt;
		printf(&amp;quot;%-.20s  &amp;quot;, $from);&lt;br /&gt;
	    }&lt;br /&gt;
    &lt;br /&gt;
	    # um *****SPAM***** bereinigtes Subject ausgeben&lt;br /&gt;
	    @sub = $msg-&amp;gt;[2];&lt;br /&gt;
	    if (length(@sub) &amp;lt;= 27) {&lt;br /&gt;
		printf(&amp;quot;%-27s  &amp;quot;, @sub);&lt;br /&gt;
	    } else {&lt;br /&gt;
		printf(&amp;quot;%-.27s  &amp;quot;, @sub);&lt;br /&gt;
	    }&lt;br /&gt;
	    &lt;br /&gt;
	    # Punkte&lt;br /&gt;
	    if (length($msg-&amp;gt;[4]) &amp;lt;= 4) {&lt;br /&gt;
		printf(&amp;quot;%-4s\n&amp;quot;, $msg-&amp;gt;[4]);&lt;br /&gt;
	    } else {&lt;br /&gt;
		printf(&amp;quot;%-.4s\n&amp;quot;, $msg-&amp;gt;[4]);&lt;br /&gt;
	    }&lt;br /&gt;
	    &lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
exit 0;&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese ausführbar machen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
chmod a+x check checkmaildir listmaildir&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend einen [[Cron]]job anlegen, der check für den Mailboxuser aufruft:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#Spam Verzeichnis checken&lt;br /&gt;
51 5 * * * sleep $[ ($RANDOM % 120) ]; spamcheck/check xyz00-otto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Automatisches löschen aussortierter Emails =&lt;br /&gt;
&lt;br /&gt;
ToDo: Emails nach einer bestimmten Zeit löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Procmail&amp;diff=6685</id>
		<title>Procmail</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Procmail&amp;diff=6685"/>
		<updated>2024-06-13T12:07:30Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Links zu weiteren Procmail Beispielen und Tipps */ link leifer 404&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Procmail ist ein mächtiger Filter, der für viele komplexe Aufgaben verwendet werden kann. So sind z.B. variable Weiterleitungen und das Einbinden eines Spamfilters machbar. Mehr dazu unter www.procmail.org und auf dem Server in den Manpages zu procmail, procmailrc und procmailex.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Mail-Zustellungsprogramm (Local Delivery Agent - LDA) bei Hostsharing ist &amp;lt;tt&amp;gt;deliver&amp;lt;/tt&amp;gt; aus dem &amp;lt;tt&amp;gt;dovecot&amp;lt;/tt&amp;gt;-Paket. Hier können Filter über [[Managesieve]] angelegt und z.B. über [[Roundcube - Filter|Webmail konfiguriert]] werden. Procmail sollte nur noch von fortgeschrittenen Nutzern für komplexe Filteraufgaben benutzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Eingehende Emails an Procmail weiterleiten ===&lt;br /&gt;
&lt;br /&gt;
Zur Nutzung von procmail wird im Homedirectory des Users eine Datei .forward angelegt, die nur aus einer Zeile besteht:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;|/usr/bin/procmail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Damit werden alle Mails an das Programm procmail übergeben und die Auslieferung kann nun über die Datei [[Managesieve#Zusammenarbeit_mit_Procmail|~/.procmailrc]] konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Procmail konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Das nachfolgende Beispiel zeigt wie ein [[Spamfilter]] eingebunden werden kann, und Emails automatisch in IMAP-Folder (Verzeichnisse) einsortiert werden können.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnisse anlegen ====&lt;br /&gt;
&lt;br /&gt;
Die angesprochenen Emailverzeichnisse sollten vorher angelegt worden sein, falls sie noch nicht existieren ist dies z.B. mit dem Befehle maildirmake möglich:&lt;br /&gt;
&lt;br /&gt;
 maildirmake Maildir&lt;br /&gt;
 maildirmake -f Trash Maildir&lt;br /&gt;
 maildirmake -f Spam Maildir&lt;br /&gt;
 maildirmake -f Hostsharing Maildir&lt;br /&gt;
&lt;br /&gt;
Alternativ können die Verzeichnisse auch über die Webmail-Oberfläche anlgelegt werden. Es ist übrigens korrekt, dass die Folder beim Anlegen ohne einen führenden Punkt im Namen erstellt werden, in der .procmailrc aber mit Punkt angegeben werden.&lt;br /&gt;
&lt;br /&gt;
==== .procmailrc ====&lt;br /&gt;
&lt;br /&gt;
Eine beispielhafte .procmailrc:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Logging abstellen&lt;br /&gt;
COMSAT=no&lt;br /&gt;
LOGABSTRACT=no&lt;br /&gt;
VERBOSE=no&lt;br /&gt;
LOGFILE=procmail.log&lt;br /&gt;
## falls passwd die default Shell des Benutzers ist, ist die folgende Zeile wichtig:&lt;br /&gt;
SHELL=/bin/bash&lt;br /&gt;
&lt;br /&gt;
## Spamassassin für alle Mails aufrufen...&lt;br /&gt;
# Hier wird der systemweite Spamassassin-Daemon benutzt.&lt;br /&gt;
:0fw&lt;br /&gt;
| /usr/bin/spamc -U /var/run/spamd&lt;br /&gt;
## ...und Spam in den Spam Folder aussortieren&lt;br /&gt;
:0&lt;br /&gt;
* ^X-Spam-Flag: YES&lt;br /&gt;
Maildir/.Spam/&lt;br /&gt;
&lt;br /&gt;
## Bsp. Mailinglisten von Hostsharing in eine extra Box&lt;br /&gt;
#:0&lt;br /&gt;
#* ^TO_(support|technik|website)@hostsharing\.net&lt;br /&gt;
#Maildir/.Hostsharing/&lt;br /&gt;
&lt;br /&gt;
# Alle nicht ausgefilterten Mails landen in der normalen Mailbox&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Möchte man die Mails mit Sieve filtern lassen, will man am Ende von .procmailrc evtl. das Programm &amp;quot;[[Managesieve#Zusammenarbeit_mit_Procmail|deliver]]&amp;quot; aufrufen lassen.&lt;br /&gt;
&lt;br /&gt;
==== Abwesenheitsbenachrichtigung (vacation) ====&lt;br /&gt;
&lt;br /&gt;
Zunächst im Home-Ordner eine Datei vacation.msg erstellen, deren Text als Nachricht verschickt werden soll.&lt;br /&gt;
&lt;br /&gt;
Dann in die .procmailrc folgende Zeilen einfügen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SHELL=/bin/sh&lt;br /&gt;
FORMAIL=/usr/bin/formail&lt;br /&gt;
SENDMAIL=/usr/sbin/sendmail&lt;br /&gt;
:0 Whc: vacation.lock&lt;br /&gt;
* ^TO_myself@example.com&lt;br /&gt;
# Nur E-Mails, die an meine Adresse adressiert sind&lt;br /&gt;
* !^FROM_DAEMON&lt;br /&gt;
# Daemons (Mailinglisten) ausschließen&lt;br /&gt;
* !^X-Loop: myself@example.com&lt;br /&gt;
# Loop vermeiden: eigene E-Mail ausschließen&lt;br /&gt;
| formail -rD 8192 vacation.cache&lt;br /&gt;
# Adresse des Senders im Cache speichern&lt;br /&gt;
:0 ehc&lt;br /&gt;
# e: letztes recipe trifft nicht zu (Adresse noch nicht im Cache vorhanden)&lt;br /&gt;
| ($FORMAIL -rA &amp;quot;Precedence: junk&amp;quot; -A &amp;quot;X-Loop: myself@example.com&amp;quot; ; /bin/cat vacation.msg ) | $SENDMAIL -oi -t -f myself@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun wird eine E-Mail mit dem Inhalt der Datei vacation.msg und dem Absender myself@example.com an die Absender empfangener Emails geschickt. Allerdings nur, wenn die Adresse noch nicht in der vacation.cache-Datei vorhanden war. Damit wird vermieden, dass ein Absender immer wieder die Abwesenheitsnachricht erhält.&lt;br /&gt;
&lt;br /&gt;
=== Links zu weiteren Procmail Beispielen und Tipps ===&lt;br /&gt;
&lt;br /&gt;
http://pm-doc.sourceforge.net/doc/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=SSH-Hostkeys&amp;diff=6498</id>
		<title>SSH-Hostkeys</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=SSH-Hostkeys&amp;diff=6498"/>
		<updated>2024-04-03T14:34:02Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: neuer Link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Hashes (Fingerprints) der Hostsharing-Server befinden sich hier:&lt;br /&gt;
&lt;br /&gt;
https://www.hostsharing.net/doc/managed-operations-platform/hostkeys/&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainregistrierung&amp;diff=6477</id>
		<title>Domainregistrierung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainregistrierung&amp;diff=6477"/>
		<updated>2024-03-18T09:14:53Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Einrichten der Domain auf den HS Servern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Erst eine neue Domain über HSAdmin einrichten, dann über das Domain-Bestellsystem registrieren oder von einem anderen Provider transferieren ===&lt;br /&gt;
&lt;br /&gt;
Wird eine neue Domain registriert oder von einem anderen Provider zu Hostsharing transferiert, sollte im Normalfall die Domain bei Hostsharing über HSAdmin eingerichtet werden, bevor die Registrierung letztlich eingeleitet bzw. aktualisiert wird. Sonst kann es zu Problemen beim Konnektieren der Domain kommen.&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Domain auf den HS Servern =&lt;br /&gt;
&lt;br /&gt;
{{Kerndoku|https://www.hostsharing.net/doc/managed-operations-platform/domain/#domainverwaltung}}&lt;br /&gt;
&lt;br /&gt;
Der Domainname muss im Punicode Format angelegt werden aus münster.de wird xn--mnster-3ya.de .&lt;br /&gt;
&lt;br /&gt;
Bei diesem Vorgang werden die Verzeichnisse für die Domain im eigenen Paket angelegt und die Domain wird auf die Mail, Web- und Nameserver von HS [[Aufschaltung|aufgeschaltet]]. Letzteres (das Nameserver-Update) ist Voraussetzung für den nächsten Schritt.&lt;br /&gt;
&lt;br /&gt;
= Domainregistrierung oder eingehender Transfer ([[KK]]) =&lt;br /&gt;
&lt;br /&gt;
== Bei fremdem Provider registrierte Domain zum Transfer freischalten ==&lt;br /&gt;
&lt;br /&gt;
Falls die Domain bisher bei einem anderen Provider gehostet ist, muss diesem die Transfer-Absicht mitgeteilt werden. Dafür gibt es bei den jeweiligen Providern etablierte Verfahren, die dort zu erfragen sind. Üblicherweise bekommt man dort einen AuthCode für die Domain mitgeteilt. Gibt es kein etabliertes Verfahren, so kann man wie folgt verfahren:&lt;br /&gt;
&lt;br /&gt;
* Formlos per Brief/Fax den Transfer ankündigen und um Zustimmung bitten, z.B.:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hiermit kündige ich als Owner/Admin-C den Transfer (KK) der &lt;br /&gt;
Domain example.com zur Hostsharing eG, vertreten durch den Registrar &lt;br /&gt;
RegistryGate GmbH, an. Ich bitte, dem folgenden Transferantrag zuzustimmen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Nach Absendung der Transfer-Ankündigung 3-4 Tage warten, um dem alten Provider  Zeit zu geben auf den Transferantrag zu reagieren. &lt;br /&gt;
* Wenn dem Transfer nicht stattgegeben wird, den Registrar der Domain herausfinden (z.B. über die Nameserver oder zuständige Registry) und bitten den Transfer zuzulassen.&lt;br /&gt;
&lt;br /&gt;
== Neuregistrierung oder Transfer zu Hostsharing ([[KK]]) ==&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise ist unter https://doc.hostsharing.net/einstieg/domain.html beschrieben. &lt;br /&gt;
&lt;br /&gt;
* Bei der allerersten Domainregistrierung im Domainbestellsystem müssen die Hostsharing Nameserver noch manuell eingegeben werden. Es sind dies:&lt;br /&gt;
&lt;br /&gt;
     dns1.hostsharing.net&lt;br /&gt;
     dns2.hostsharing.net&lt;br /&gt;
     dns3.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
= E-Mail-Adressen der neu eingerichteten Domain =&lt;br /&gt;
&lt;br /&gt;
Ist die Domain bei Hostsharing aufgeschaltet, sind standardmäßig nur die E-Mail-Adressen webmaster@..., postmaster@... und abuse@... eingerichtet. Die Einrichtung weiterer E-Mail-Adressen ist unter https://doc.hostsharing.net/einstieg/email.html beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DKIM&amp;diff=6476</id>
		<title>DKIM</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DKIM&amp;diff=6476"/>
		<updated>2024-03-18T09:13:04Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:HSDoku]][[Kategorie:E-Mail]]&lt;br /&gt;
= DomainKeys Identified Mail (DKIM) =&lt;br /&gt;
&lt;br /&gt;
DKIM ist ein Verfahren, dass die Authentizität einer E-Mail sicherstellen kann. Dazu wird die E-Mail auf dem sendenden System mit einer elektronischen Signatur in den unsichtbaren Headerzeilen der E-Mail versehen. Es kommt ein asymmetrisches Schlüsselverfahren zum Einsatz. Der sendende Server verwendet seinen privaten Schlüssel, um die Signatur zu erstellen.&lt;br /&gt;
&lt;br /&gt;
Der öffentliche Schlüssel wird im DNS der E-Mail-Domain veröffentlicht, so dass Empfänger die Authentizität der Signatur prüfen können.&lt;br /&gt;
&lt;br /&gt;
== DKIM bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Die Nutzer der Hostsharing-Plattform können E-Mails, die sie über die Hostsharing-Server versenden, mit einer DKIM Signatur versehen lassen. Dazu sind zwei Voraussetzungen notwendig:&lt;br /&gt;
&lt;br /&gt;
# Die Veröffentlichung des öffentlichen Domainkey im DNS der eigenen E-Mail-Domain.&lt;br /&gt;
# Das Setzen der Domain-Option &amp;quot;Domain Key – DKIM&amp;quot; mit Hilfe von HSAdmin.&lt;br /&gt;
&lt;br /&gt;
== Domainkey im DNS ==&lt;br /&gt;
&lt;br /&gt;
Zur Veröffentlichung des Domainkey muss ein individuell angepastes Zonefile der E-Mail-Domain erweitert werden. Es müssen entweder der Platzhalter&lt;br /&gt;
&lt;br /&gt;
  {DEFAULT_ZONEFILE}&lt;br /&gt;
&lt;br /&gt;
oder der Platzhalter&lt;br /&gt;
&lt;br /&gt;
  {DKIM_RR}&lt;br /&gt;
&lt;br /&gt;
enthalten sein. &lt;br /&gt;
&lt;br /&gt;
Ein nicht vorhandenes Zonefile im etc-Verzeichnis der Domain ist gleichbedeutend mit einem Zonefile,&lt;br /&gt;
das die Zeile &amp;quot;{DEFAULT_ZONEFILE}&amp;quot; als einzige Zeile enthält.&lt;br /&gt;
&lt;br /&gt;
Änderungen am Zonefile aktiviert der Domain-Administrator (hier User &amp;quot;xyz00-doms&amp;quot;) durch ein &amp;quot;touch&amp;quot; auf diese Datei (auch wenn die Datei nicht vorhanden ist):&lt;br /&gt;
&lt;br /&gt;
xyz00-doms@h97:~$ touch doms/hs-example.de/etc/pri.hs-example.de &lt;br /&gt;
xyz00-doms@h97:~$ &lt;br /&gt;
&lt;br /&gt;
Nach einer erfolgreichen Veröffentlichung des Domainkey (ca. 3 Minuten nach dem &amp;quot;touch&amp;quot;) liefert der Befehl&lt;br /&gt;
&lt;br /&gt;
  $ dig -t TXT +short default._domainkey.hs-example.de @dns1.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
(&amp;quot;hs-example.de&amp;quot; durch die eigene Domain ersetzen) einen Schlüssel in der Form:&lt;br /&gt;
&lt;br /&gt;
  v=DKIM1; h=sha256; k=rsa; s=email; &amp;quot; &amp;quot;p=MIIBIjAN [...]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Domainoption DKIM ==&lt;br /&gt;
&lt;br /&gt;
Über die Domainoption &amp;quot;Domain Key – DKIM&amp;quot; wird gesteuert, dass der SMTP-Server, auf dem der Webspace mit der Domain liegt, die ausgehenden E-Mail mit einer DKIM-Signatur ausstattet.&lt;br /&gt;
&lt;br /&gt;
Zum Anpassen der Domainoptionen wählt man in HSAdmin links den Punkt &amp;quot;Web-Paket&amp;quot; und im rechten Bereich im Menü die Auswahl &amp;quot;Domain&amp;quot;. Bei Domains, die ab 3. September 2021 eingerichtet wurden, ist die Domainoption per Voreinstellung gesetzt,&lt;br /&gt;
&lt;br /&gt;
[[Datei:dkim-domain.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:dkim-option.png]]&lt;br /&gt;
&lt;br /&gt;
== DKIM deaktivieren ==&lt;br /&gt;
&lt;br /&gt;
Das Abstellen der DKIM-Option in folgender Reihenfolge wird funktionieren:&lt;br /&gt;
&lt;br /&gt;
# Die Domainoption deaktivieren&lt;br /&gt;
# Abwarten bis alle mit der Option (und damit mit einer Signatur) versendeten E-Mail zugestellt sind&lt;br /&gt;
# Den Domainkey im DNS entfernen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://de.wikipedia.org/wiki/DomainKeys DKIM Artikel der Wikipedia]&lt;br /&gt;
* [https://www.hostsharing.net/doc/managed-operations-platform/zonefile/ Hostsharing-Dokumentation zur Anpassung des Zonefile]&lt;br /&gt;
* [https://www.hostsharing.net/doc/managed-operations-platform/domain/#kap-domain-optionen Hostsharing-Dokumentation Domain-Optionen]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DKIM&amp;diff=6475</id>
		<title>DKIM</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DKIM&amp;diff=6475"/>
		<updated>2024-03-18T09:12:13Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:HSDoku]][[Kategorie:E-Mail]]&lt;br /&gt;
= DomainKeys Identified Mail (DKIM) =&lt;br /&gt;
&lt;br /&gt;
DKIM ist ein Verfahren, dass die Authentizität einer E-Mail sicherstellen kann. Dazu wird die E-Mail auf dem sendenden System mit einer elektronischen Signatur in den unsichtbaren Headerzeilen der E-Mail versehen. Es kommt ein asymmetrisches Schlüsselverfahren zum Einsatz. Der sendende Server verwendet seinen privaten Schlüssel, um die Signatur zu erstellen.&lt;br /&gt;
&lt;br /&gt;
Der öffentliche Schlüssel wird im DNS der E-Mail-Domain veröffentlicht, so dass Empfänger die Authentizität der Signatur prüfen können.&lt;br /&gt;
&lt;br /&gt;
== DKIM bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Die Nutzer der Hostsharing-Plattform können E-Mails, die sie über die Hostsharing-Server versenden, mit einer DKIM Signatur versehen lassen. Dazu sind zwei Voraussetzungen notwendig:&lt;br /&gt;
&lt;br /&gt;
# Die Veröffentlichung des öffentlichen Domainkey im DNS der eigenen E-Mail-Domain.&lt;br /&gt;
# Das Setzen der Domain-Option &amp;quot;Domain Key – DKIM&amp;quot; mit Hilfe von HSAdmin.&lt;br /&gt;
&lt;br /&gt;
== Domainkey im DNS ==&lt;br /&gt;
&lt;br /&gt;
Zur Veröffentlichung des Domainkey muss ein individuell angepastes Zonefile der E-Mail-Domain erweitert werden. Es müssen entweder der Platzhalter&lt;br /&gt;
&lt;br /&gt;
  {DEFAULT_ZONEFILE}&lt;br /&gt;
&lt;br /&gt;
oder der Platzhalter&lt;br /&gt;
&lt;br /&gt;
  {DKIM_RR}&lt;br /&gt;
&lt;br /&gt;
enthalten sein. &lt;br /&gt;
&lt;br /&gt;
Ein nicht vorhandenes Zonefile im etc-Verzeichnis der Domain ist gleichbedeutend mit einem Zonefile,&lt;br /&gt;
das die Zeile &amp;quot;{DEFAULT_ZONEFILE}&amp;quot; als einzige Zeile enthält.&lt;br /&gt;
&lt;br /&gt;
Änderungen am Zonefile aktiviert der Domain-Administrator (hier User &amp;quot;xyz00-doms&amp;quot;) durch ein &amp;quot;touch&amp;quot; auf diese Datei (auch wenn die Datei nicht vorhanden ist):&lt;br /&gt;
&lt;br /&gt;
xyz00-doms@h97:~$ touch doms/hs-example.de/etc/pri.hs-example.de &lt;br /&gt;
xyz00-doms@h97:~$ &lt;br /&gt;
&lt;br /&gt;
Nach einer erfolgreichen Veröffentlichung des Domainkey (ca. 3 Minuten nach dem &amp;quot;touch&amp;quot;) liefert der Befehl&lt;br /&gt;
&lt;br /&gt;
  $ dig -t TXT +short default._domainkey.hs-example.de @dns1.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
(&amp;quot;hs-example.de&amp;quot; durch die eigene Domain ersetzen) einen Schlüssel in der Form:&lt;br /&gt;
&lt;br /&gt;
  v=DKIM1; h=sha256; k=rsa; s=email; &amp;quot; &amp;quot;p=MIIBIjAN [...]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Domainoption DKIM ==&lt;br /&gt;
&lt;br /&gt;
Über die Domainoption &amp;quot;Domain Key – DKIM&amp;quot; wird gesteuert, dass der SMTP-Server, auf dem der Webspace mit der Domain liegt, die ausgehenden E-Mail mit einer DKIM-Signatur ausstattet.&lt;br /&gt;
&lt;br /&gt;
Zum Anpassen der Domainoptionen wählt man in HSAdmin links den Punkt &amp;quot;Web-Paket&amp;quot; und im rechten Bereich im Menü die Auswahl &amp;quot;Domain&amp;quot;. Bei Domains, die ab 3. September 2021 eingerichtet wurden, ist die Domainoption per Voreinstellung gesetzt,&lt;br /&gt;
&lt;br /&gt;
[[Datei:dkim-domain.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:dkim-option.png]]&lt;br /&gt;
&lt;br /&gt;
== DKIM deaktivieren ==&lt;br /&gt;
&lt;br /&gt;
Das Abstellen der DKIM-Option in folgender Reihenfolge wird funktionieren:&lt;br /&gt;
&lt;br /&gt;
# Die Domainoption deaktivieren&lt;br /&gt;
# Abwarten bis alle mit der Option (und damit mit einer Signatur) versendeten E-Mail zugestellt sind&lt;br /&gt;
# Den Domainkey im DNS entfernen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://de.wikipedia.org/wiki/DomainKeys DKIM Artikel der Wikipedia]&lt;br /&gt;
* [https://www.hostsharing.net/doc/managed-operations-platform/zonefile/ Hostsharing-Dokumentation zur Anpassung des Zonefile]&lt;br /&gt;
* [https://www.hostsharing.net/doc/managed-operations-platform/domain/ Hostsharing-Dokumentation Domain-Optionen]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DKIM&amp;diff=6474</id>
		<title>DKIM</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DKIM&amp;diff=6474"/>
		<updated>2024-03-18T09:11:05Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:HSDoku]][[Kategorie:E-Mail]]&lt;br /&gt;
= DomainKeys Identified Mail (DKIM) =&lt;br /&gt;
&lt;br /&gt;
DKIM ist ein Verfahren, dass die Authentizität einer E-Mail sicherstellen kann. Dazu wird die E-Mail auf dem sendenden System mit einer elektronischen Signatur in den unsichtbaren Headerzeilen der E-Mail versehen. Es kommt ein asymmetrisches Schlüsselverfahren zum Einsatz. Der sendende Server verwendet seinen privaten Schlüssel, um die Signatur zu erstellen.&lt;br /&gt;
&lt;br /&gt;
Der öffentliche Schlüssel wird im DNS der E-Mail-Domain veröffentlicht, so dass Empfänger die Authentizität der Signatur prüfen können.&lt;br /&gt;
&lt;br /&gt;
== DKIM bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Die Nutzer der Hostsharing-Plattform können E-Mails, die sie über die Hostsharing-Server versenden, mit einer DKIM Signatur versehen lassen. Dazu sind zwei Voraussetzungen notwendig:&lt;br /&gt;
&lt;br /&gt;
# Die Veröffentlichung des öffentlichen Domainkey im DNS der eigenen E-Mail-Domain.&lt;br /&gt;
# Das Setzen der Domain-Option &amp;quot;Domain Key – DKIM&amp;quot; mit Hilfe von HSAdmin.&lt;br /&gt;
&lt;br /&gt;
== Domainkey im DNS ==&lt;br /&gt;
&lt;br /&gt;
Zur Veröffentlichung des Domainkey muss ein individuell angepastes Zonefile der E-Mail-Domain erweitert werden. Es müssen entweder der Platzhalter&lt;br /&gt;
&lt;br /&gt;
  {DEFAULT_ZONEFILE}&lt;br /&gt;
&lt;br /&gt;
oder der Platzhalter&lt;br /&gt;
&lt;br /&gt;
  {DKIM_RR}&lt;br /&gt;
&lt;br /&gt;
enthalten sein. &lt;br /&gt;
&lt;br /&gt;
Ein nicht vorhandenes Zonefile im etc-Verzeichnis der Domain ist gleichbedeutend mit einem Zonefile,&lt;br /&gt;
das die Zeile &amp;quot;{DEFAULT_ZONEFILE}&amp;quot; als einzige Zeile enthält.&lt;br /&gt;
&lt;br /&gt;
Änderungen am Zonefile aktiviert der Domain-Administrator (hier User &amp;quot;xyz00-doms&amp;quot;) durch ein &amp;quot;touch&amp;quot; auf diese Datei (auch wenn die Datei nicht vorhanden ist):&lt;br /&gt;
&lt;br /&gt;
xyz00-doms@h97:~$ touch doms/hs-example.de/etc/pri.hs-example.de &lt;br /&gt;
xyz00-doms@h97:~$ &lt;br /&gt;
&lt;br /&gt;
Nach einer erfolgreichen Veröffentlichung des Domainkey (ca. 3 Minuten nach dem &amp;quot;touch&amp;quot;) liefert der Befehl&lt;br /&gt;
&lt;br /&gt;
  $ dig -t TXT +short default._domainkey.hs-example.de @dns1.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
(&amp;quot;hs-example.de&amp;quot; durch die eigene Domain ersetzen) einen Schlüssel in der Form:&lt;br /&gt;
&lt;br /&gt;
  v=DKIM1; h=sha256; k=rsa; s=email; &amp;quot; &amp;quot;p=MIIBIjAN [...]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Domainoption DKIM ==&lt;br /&gt;
&lt;br /&gt;
Über die Domainoption &amp;quot;Domain Key – DKIM&amp;quot; wird gesteuert, dass der SMTP-Server, auf dem der Webspace mit der Domain liegt, die ausgehenden E-Mail mit einer DKIM-Signatur ausstattet.&lt;br /&gt;
&lt;br /&gt;
Zum Anpassen der Domainoptionen wählt man in HSAdmin links den Punkt &amp;quot;Web-Paket&amp;quot; und im rechten Bereich im Menü die Auswahl &amp;quot;Domain&amp;quot;. Bei Domains, die ab 3. September 2021 eingerichtet wurden, ist die Domainoption per Voreinstellung gesetzt,&lt;br /&gt;
&lt;br /&gt;
[[Datei:dkim-domain.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:dkim-option.png]]&lt;br /&gt;
&lt;br /&gt;
== DKIM deaktivieren ==&lt;br /&gt;
&lt;br /&gt;
Das Abstellen der DKIM-Option in folgender Reihenfolge wird funktionieren:&lt;br /&gt;
&lt;br /&gt;
# Die Domainoption deaktivieren&lt;br /&gt;
# Abwarten bis alle mit der Option (und damit mit einer Signatur) versendeten E-Mail zugestellt sind&lt;br /&gt;
# Den Domainkey im DNS entfernen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://de.wikipedia.org/wiki/DomainKeys DKIM Artikel der Wikipedia]&lt;br /&gt;
* [https://www.hostsharing.net/doc/managed-operations-platform/zonefile/ Hostsharing-Dokumentation zur Anpassung des Zonefile]&lt;br /&gt;
* [https://doc.hostsharing.net/referenz/domain/domain-optionen.html Hostsharing-Dokumentation Domain-Optionen]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Verwalten_der_Zonendaten&amp;diff=6473</id>
		<title>Verwalten der Zonendaten</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Verwalten_der_Zonendaten&amp;diff=6473"/>
		<updated>2024-03-18T09:09:29Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: Link Kerndoku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Kerndoku|https://www.hostsharing.net/doc/managed-operations-platform/zonefile/}}&lt;br /&gt;
&lt;br /&gt;
Das Zonenfile für eine Domain enthält die Konfiguration des Domain Name Service ([[DNS]]), d.h. der [[Nameserver]] der Domain. Es wird hinterlegt, welche Hostnamen innerhalb der Domain existieren und auf welche IP-Adressen diese zeigen. Außerdem wird hierüber auch gesteuert, an welches System Mails für die Domain geliefert werden sollen. Für einfache und unkomplizierte Änderungen bitte in [[Simple Zonefile Howto]] schauen.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Achtung|Aufgrund der zentralen Bedeutung sollten Änderungen nur mit Vorsicht vorgenommen werden, da eine fehlerhafte Einstellung dazu führen kann, dass die Webseite nicht mehr im Internet abgerufen werden kann oder Mails verloren gehen!}}&lt;br /&gt;
&lt;br /&gt;
== Aktives Zonefile ==&lt;br /&gt;
&lt;br /&gt;
Die gerade aktive Konfiguration einer Domain example.com ist in /etc/bind/pri.example.com zu finden ([[Zonefile]]).&lt;br /&gt;
&lt;br /&gt;
Im Standardfall sieht es vollständig expandiert wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;example.com. IN SOA h00.hostsharing.net. hostmaster.hostsharing.net. (&lt;br /&gt;
                1303649373      ; serial secs since Jan 1 1970&lt;br /&gt;
                6H              ; refresh (&amp;gt;=10000)&lt;br /&gt;
                1H              ; retry (&amp;gt;=1800)&lt;br /&gt;
                1W              ; expire&lt;br /&gt;
                1H              ; minimum&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      NS      dns1.hostsharing.net.&lt;br /&gt;
example.com.    IN      NS      dns2.hostsharing.net.&lt;br /&gt;
example.com.    IN      NS      dns3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      MX      30 mailin1.hostsharing.net.&lt;br /&gt;
example.com.    IN      MX      30 mailin2.hostsharing.net.&lt;br /&gt;
example.com.    IN      MX      30 mailin3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      A       83.223.95.160&lt;br /&gt;
example.com.    IN      AAAA    2a01:37:1000::53df:5fa0:0&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      TXT     &amp;quot;v=spf1 include:spf.hostsharing.net ?all&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*.example.com.  IN      MX      30 mailin1.hostsharing.net.&lt;br /&gt;
*.example.com.  IN      MX      30 mailin2.hostsharing.net.&lt;br /&gt;
*.example.com.  IN      MX      30 mailin3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
*.example.com.  IN      A       83.223.95.160&lt;br /&gt;
*.example.com.  IN      AAAA    2a01:37:1000::53df:5fa0:0&lt;br /&gt;
&lt;br /&gt;
*.example.com.  IN      TXT     &amp;quot;v=spf1 include:spf.hostsharing.net ?all&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logfile und Kontrolle==&lt;br /&gt;
&lt;br /&gt;
Die Logfiles des Nameservers sind im Verzeichnis /var/log/named einsehbar. Das aktuelle Log wird unter dem Namen named.log angelegt. Dieses wird beim Neustart des DNS-Servers immer neu angelegt und zeigt bei einer erfolgreichen Änderung etwa folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
  Oct 11 18:32:21.400 info: zone example.org/IN: loaded serial 1065889567&lt;br /&gt;
  Oct 11 18:32:21.435 info: zone example.org/IN: sending notifies (serial 1065889567)&lt;br /&gt;
  Oct 11 18:32:21.755 info: client 213.133.116.2#57100: transfer of &#039;example.org/IN&#039;: &lt;br /&gt;
  AXFR-style IXFR started&lt;br /&gt;
  Oct 11 18:32:22.264 info: client 62.75.149.27#45282: transfer of &#039;example.org/IN&#039;: &lt;br /&gt;
  AXFR-style IXFR started&lt;br /&gt;
&lt;br /&gt;
Die Zeilen bedeuten jeweils:&lt;br /&gt;
&lt;br /&gt;
* Das geänderte Zonefile wurde vom DNS-Server erfolgreich geladen&lt;br /&gt;
* Der lokale Server sendet eine Benachrichtigung an die Secondaries, damit diese die Änderung ebenfalls übernehmen können.&lt;br /&gt;
&lt;br /&gt;
Tippfehler oder falsche Angaben im Zonefile werden hier ebenfalls gemeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  -------- Original-Nachricht --------&lt;br /&gt;
  Betreff: [Global] DNS Zonenfile Änderungen&lt;br /&gt;
  Datum: Thu, 4 Mar 2010 08:30:34 +0100&lt;br /&gt;
  &lt;br /&gt;
  Moin Moin,&lt;br /&gt;
  &lt;br /&gt;
  aus gegebenem Anlass: Immer wieder kommt es vor, dass jemand sein&lt;br /&gt;
  Zonenfile ändert, und es (scheinbar) funktioniert. Tage oder Wochen&lt;br /&gt;
  später dann sind die Domains nicht mehr erreichbar und es heißt &amp;quot;in den&lt;br /&gt;
  letzten ... Tagen/Wochen habe ich aber gar nichts mehr geändert&amp;quot;. Das mag&lt;br /&gt;
  auch gut sein - ist mir auch selbst schon passiert, gerade wenn es um&lt;br /&gt;
  &amp;quot;mal eben schnell noch ... &amp;quot; ging.&lt;br /&gt;
  &lt;br /&gt;
  Nur ist der Fehler dann aber schon vor Tagen/Wochen passiert, und solange&lt;br /&gt;
  die Datensätze nicht abgelaufen (expired) sind, sind sie - die alten -&lt;br /&gt;
  noch im DNS System vorhanden. Die neuen aber, die aus der o.g. Änderung,&lt;br /&gt;
  sind bei einem Fehler im Zonenfile nie ins DNS System hinein gekommen!&lt;br /&gt;
  &lt;br /&gt;
  Was also tun? Zunächst kann man nach einer Änderung in einer&lt;br /&gt;
  Shell beobachten, ob es zu Fehlermeldungen kommt:&lt;br /&gt;
  &lt;br /&gt;
  tail -f /var/log/named/named.log &lt;br /&gt;
  &lt;br /&gt;
  oder ggf nur Zeilen, in denen die eigene Domain (z.B. example.com)&lt;br /&gt;
  vorkommt:&lt;br /&gt;
  &lt;br /&gt;
  tail -f /var/log/named/named.log | grep example.com&lt;br /&gt;
  &lt;br /&gt;
  Diese Log-Datei ist daher genau aus diese Grunde auch auf dem&lt;br /&gt;
  Server lesbar.&lt;br /&gt;
  &lt;br /&gt;
  Auch sollte die in den DNS-Servern befindliche Seriennummer mit der&lt;br /&gt;
  aktuellen in der Zonendatei verglichen werden:&lt;br /&gt;
  &lt;br /&gt;
  dig -t SOA @dns1 example.com | grep &#039;^example.com.*SOA&#039; | awk &#039;{ print $7 }&#039;&lt;br /&gt;
  &lt;br /&gt;
  grep serial /etc/bind/pri.example.com | awk &#039;{ print $1 }&#039;  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigenes Zonenfile ==&lt;br /&gt;
&lt;br /&gt;
Wer ein eigenes Zonefile installieren möchte, um diverse Anwendungsfälle zu realisieren (Verweise auf extern gelagerte Subdomains, Anbindung externer Server, Verwendung eigener Mailserver), kann &#039;&#039;&#039;pro Domain&#039;&#039;&#039; ein eigenes Zonefile erstellen. Dieses befindet sich im Verzeichnis &#039;&#039;&#039;~/doms/example.com/etc&#039;&#039;&#039; mit den Namen &#039;&#039;&#039;pri.example.com&#039;&#039;&#039; (example.com steht hier als Beispiel für den wahren Domainnamen). Ein Neuanlegen oder eine Änderung dieser Datei führt zu einer baldigen Änderung der Nameservereinträge für die Domain.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Warnung!|Das nicht sachgemäße Erstellen eines eigenen Zonefiles kann zur Nichterreichbarkeit der eigenen Domain und zum Verlust von Mails führen!}}&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung für die eher einfachen und oft gewünschten Änderungen findet sich in [[Simple Zonefile Howto]].&lt;br /&gt;
&lt;br /&gt;
Folgende Platzhalter können und sollten in eigenen Zonenfiles verwendet werden. Sie ermöglichen uns das Ändern der DNS-Konfiguration, ohne dass der Domain-Admin sein Zonefile anpassen muss.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Platzhalter ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{DEFAULT_ZONEFILE} :=&lt;br /&gt;
	{HEADER}&lt;br /&gt;
	{SOA_RR}&lt;br /&gt;
	{NS_RR}&lt;br /&gt;
	{MX_RR}	&lt;br /&gt;
	{A_RR}&lt;br /&gt;
	{WILDCARD_MX_RR}&lt;br /&gt;
	{WILDCARD_A_RR}&lt;br /&gt;
&lt;br /&gt;
{HEADER} :=&lt;br /&gt;
	$TTL {TTL}&lt;br /&gt;
&lt;br /&gt;
{SOA_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (&lt;br /&gt;
		{SIO}		; serial secs since Jan 1 1970&lt;br /&gt;
		{REFRESH}	; refresh (&amp;gt;=10000)&lt;br /&gt;
		{RETRY}		; retry (&amp;gt;=1800)&lt;br /&gt;
		{EXPIRE}	; expire&lt;br /&gt;
		{MINIMUM}	; minimum&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
{NS_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	NS	{DNS1_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	NS	{DNS2_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	NS	{DNS3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{MX_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{A_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&lt;br /&gt;
{WILDCARD_MX_RR} :=&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{WILDCARD_A_RR} :=&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atomare Platzhalter ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{TTL} :=		6H&lt;br /&gt;
{SOA_HOSTNAME} :=	&amp;lt;HIVE&amp;gt;.hostsharing.net&lt;br /&gt;
{SOA_EMAIL}:=		hostmaster.hostsharing.net&lt;br /&gt;
{SIO} :=		&amp;lt;SEKUNDEN&amp;gt;&lt;br /&gt;
{REFRESH} :=		6H&lt;br /&gt;
{RETRY} :=		1H&lt;br /&gt;
{EXPIRE} :=		1W&lt;br /&gt;
{MINIMUM} :=		1H&lt;br /&gt;
&lt;br /&gt;
{DNS1_HOSTNAME} :=	dns1.hostsharing.net&lt;br /&gt;
{DNS2_HOSTNAME} :=	dns2.hostsharing.net&lt;br /&gt;
{DNS3_HOSTNAME} :=	dns3.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
{MX1_HOSTNAME} :=	mailin1.hostsharing.net&lt;br /&gt;
{MX2_HOSTNAME} :=	mailin2.hostsharing.net&lt;br /&gt;
{MX3_HOSTNAME} :=	mailin3.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME} :=	&amp;lt;FQDN&amp;gt;&lt;br /&gt;
{DOM_IPNUMBER} := 	&amp;lt;IP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{DKIM_RR}      :=       &amp;lt;siehe https://wiki.hostsharing.net/index.php?title=DKIM&amp;gt;&lt;br /&gt;
{SPF_RR}       :=       &amp;quot;v=spf1 include:spf.hostsharing.net ?all&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei stehen&lt;br /&gt;
* &amp;lt;Sekunden&amp;gt; für die Anzahl der Sekunden, welche seit dem 01.01.1970 vergangen sind&lt;br /&gt;
* &amp;lt;FQDN&amp;gt; für den vollständigen, qualifizierten Domainnamen der Domain&lt;br /&gt;
* &amp;lt;IP&amp;gt; für die der Domain zugewiesene IP-Adresse&lt;br /&gt;
&lt;br /&gt;
Diese Werte werden von Hostsharing verwaltet.&lt;br /&gt;
&lt;br /&gt;
=== Expansion der Platzhalter ===&lt;br /&gt;
&lt;br /&gt;
Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird folgermaßen expandiert.&lt;br /&gt;
&lt;br /&gt;
Zunächst werden die komplexen Platzhalter ersetzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL {TTL}&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (&lt;br /&gt;
	{SIO}		; serial secs since Jan 1 1970&lt;br /&gt;
	{REFRESH}	; refresh (&amp;gt;=10000)&lt;br /&gt;
	{RETRY}		; retry (&amp;gt;=1800)&lt;br /&gt;
	{EXPIRE}	; expire&lt;br /&gt;
	{MINIMUM}	; minimum&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}.		IN	NS	{DNS1_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	NS	{DNS2_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	NS	{DNS3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}.		IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend werden die atomaren Platzhalter ersetzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL 6H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;. IN SOA &amp;lt;HIVE&amp;gt;.hostsharing.net. hostmaster.hostsharing.net. (&lt;br /&gt;
	&amp;lt;SEKUNDEN&amp;gt;	; serial secs since Jan 1 1970&lt;br /&gt;
	6H		; refresh (&amp;gt;=10000)&lt;br /&gt;
	1H		; retry (&amp;gt;=1800)&lt;br /&gt;
	1W		; expire&lt;br /&gt;
	1H		; minimum&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	NS	dns1.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	NS	dns2.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	NS	dns3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	MX	30 mail1.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	MX	30 mail2.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	MX	30 mail3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	A	&amp;lt;IP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	MX	30 mail1.hostsharing.net.&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	MX	30 mail2.hostsharing.net.&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	MX	30 mail3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	A	&amp;lt;IP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Das Zonefile deaktivieren/zurücksetzen ==&lt;br /&gt;
&lt;br /&gt;
In ~/doms/example.com/etc das vorhandene Zonefile (pri.example.com) komplett leeren (ist dann 0 Bytes groß). Dann kommt der Robot vorbei, löscht pri.example.com und setzt alles auf Standardwerte zurück.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Zonefile]]&lt;br /&gt;
[[Kategorie:DNS]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=6244</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=6244"/>
		<updated>2023-10-23T10:21:48Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Nextcloud installieren */ V27.1.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Nextcloud =&lt;br /&gt;
&lt;br /&gt;
[https://nextcloud.com/ Nextcloud] ist eine PHP-basierte Open Source Lösung für gängige Cloud-Anwendungen, u.a.:&lt;br /&gt;
&lt;br /&gt;
* Filesharing unter Nutzern derselben Nextcloud, und mit der Öffentlichkeit&lt;br /&gt;
* Single-Sign-On Authentifizierung (SSO)&lt;br /&gt;
* Videokonferenzen (WebRTC)&lt;br /&gt;
* Online-Office Anwendung [https://www.collaboraoffice.com/ Collabora Online]&lt;br /&gt;
&lt;br /&gt;
Beispiel-Funktionalität, die über Plugins, sogenannte [https://apps.nextcloud.com/ &amp;quot;Apps&amp;quot;], bereit gestellt werden kann:&lt;br /&gt;
&lt;br /&gt;
* Kalender, Aufgabenverwaltung, Adressbuch&lt;br /&gt;
* Datei-Kollaboration (Kommentare zu Dateien, Verschlagwortung)&lt;br /&gt;
* Feedreader&lt;br /&gt;
* E-Mail-Programm&lt;br /&gt;
* Fotogalerie&lt;br /&gt;
* Musik- und Videowiedergabe&lt;br /&gt;
&lt;br /&gt;
= Nextcloud installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;cloud.example.org&#039;&#039;&lt;br /&gt;
* PostgreSQL-User &lt;br /&gt;
* PostgreSQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-cloud&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Nextcloud&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;cloud.example.org&#039;,user:&#039;xyz00-cloud&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; postgresqluser.add({set:{name:&#039;xyz00_nextclusr&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; postgresqldb.add({set:{name:&#039;xyz00_nextcloud&#039;,owner:&#039;xyz00_nextclusr&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Nextcloud installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-cloud&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-cloud xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir nextcloud&lt;br /&gt;
  cd doms/cloud.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www htdocs-ssl&lt;br /&gt;
  ln -s $HOME/nextcloud htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
Nextcloud herunterladen und entpacken.&lt;br /&gt;
&lt;br /&gt;
  cd &lt;br /&gt;
  wget https://download.nextcloud.com/server/releases/nextcloud-27.1.2.zip&lt;br /&gt;
  unzip nextcloud-27.1.2.zip &lt;br /&gt;
  rm nextcloud-27.1.2.zip&lt;br /&gt;
  mkdir data tmp&lt;br /&gt;
  chmod 700 data tmp&lt;br /&gt;
&lt;br /&gt;
== Nextcloud konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;$HOME/doms/cloud.example.org/fastcgi-ssl/&amp;quot; eine Datei &amp;quot;php.ini&amp;quot; anlegen mit folgendem Inhalt: &lt;br /&gt;
&lt;br /&gt;
  memory_limit=512M&lt;br /&gt;
  session.save_path=/home/pacs/xyz00/users/cloud/tmp&lt;br /&gt;
	&lt;br /&gt;
Dann mit einem Editor diese Datei bearbeiten: In der zweiten Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen.&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://cloud.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
Auf der ersten Seite sind anzugeben:&lt;br /&gt;
&lt;br /&gt;
* Login und Passwort für den Administrator definieren&lt;br /&gt;
* PostgreSQL als Datenbanksystem&lt;br /&gt;
* PostgreSQL-User und Passwort aus dem ersten Schritt oben&lt;br /&gt;
* Name der PostgreSQL-Datenbank aus dem ersten Schritt&lt;br /&gt;
* &amp;quot;localhost&amp;quot; als Datenbankserver (Nextcloud 23.0.2 empfiehlt hier die Angabe des Ports, diesen also lt. [[PostgreSQL]] angeben)&lt;br /&gt;
* Das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/data/&amp;quot; als Daten-Verzeichnis (bitte beachten: das im Eingabefeld voreingestellte verweist auf das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/&#039;&#039;&#039;nextcloud&#039;&#039;&#039;/data/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Die Felder für die Datenbank sind auf dem Startscreen hinter einem unscheinbaren Link versteckt. Um man das Formular für die Datenbank-Daten zu gelangen, muss man auf den Link klicken. Anschließend kann man die gewünschte Datenbank auswählen und die entsprechenden Daten eintragen. &#039;&#039;&#039;Das sollte geschehen, bevor man die Installation abschließt!&#039;&#039;&#039; Tut man dies nicht, wird Nextcloud mit SQLite installiert. Eine Änderung der Datenbank soll zwar laut Dokumentation auch später noch möglich sein, ging aber bei einem Test schief.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud beschleunigen ==&lt;br /&gt;
&lt;br /&gt;
Dieser Teil ist optional.&lt;br /&gt;
&lt;br /&gt;
Wenn regelmäßig &#039;&#039;&#039;im Browser&#039;&#039;&#039; mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser oft sehr langsam. Um dies zu verbessern, unterstützt Nextcloud die Anwendung von unterschiedlichen Cache-Verfahren (zum Beispiel Memcache, Redis).&lt;br /&gt;
&lt;br /&gt;
Redis ist auf den Hostsharing-Servern vorinstalliert und wird von den Nextcloud-Entwicklern empfohlen. &#039;&#039;&#039;In Verbindung mit einem Managed Webspace&#039;&#039;&#039; muss Redis als eigener Server &#039;&#039;&#039;Daemon&#039;&#039;&#039; angemeldet werden und ist &#039;&#039;&#039;kostenpflichtig&#039;&#039;&#039;. Siehe zu Kosten im Webspace Konfigurator unter: https://www.hostsharing.net/angebote/managed-webspace/ – &#039;&#039;&#039;1 individueller Serverdienst&#039;&#039;&#039; (Daemons).&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration des Redis-Dientes ist auf der Seite [[Redis]] beschrieben. Hier wird für Nextcloud die Variante mit einem Unixsocket benutzt.&lt;br /&gt;
&lt;br /&gt;
In der Konfiguration der Nextcloud (in &#039;&#039;~/nextcloud/config/config.php&#039;&#039;) wird der Redis-Cache wie folgt konfiguriert:&lt;br /&gt;
&lt;br /&gt;
  &#039;memcache.local&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
  &#039;memcache.distributed&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
  &#039;memcache.locking&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
  &#039;redis&#039; =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      &#039;host&#039; =&amp;gt; &#039;/home/pacs/xyz00/users/cloud/redis/var/redis-server.sock&#039;,&lt;br /&gt;
      &#039;port&#039; =&amp;gt; 0,&lt;br /&gt;
      &#039;password&#039; =&amp;gt; &#039;mein-redis-passwort&#039;,&lt;br /&gt;
      &#039;timeout&#039; =&amp;gt; 1.5,&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
Um es perfekt zu machen, nutze ich &#039;&#039;logrotate&#039;&#039; um die Logdateien zu organisieren. Dazu die Konfiguration in &#039;&#039;~/.logrotate&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  compress&lt;br /&gt;
  /home/pacs/xyz00/users/cloud/redis/var/redis.log {&lt;br /&gt;
    rotate 5&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Eine Crontab sorgt für den Start von Monit und das tägliche Rotieren der Logdateien:&lt;br /&gt;
&lt;br /&gt;
  # m h  dom mon dow   command&lt;br /&gt;
  HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
  PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&lt;br /&gt;
  MAILTO=webmaster@example.com&lt;br /&gt;
  @reboot /usr/bin/monit -c $HOME/.monitrc&lt;br /&gt;
  1 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate&lt;br /&gt;
  */5 * * * * /usr/bin/php $HOME/nextcloud/cron.php&lt;br /&gt;
&lt;br /&gt;
Die letzte Zeile der &#039;&#039;crontab&#039;&#039; enthält den Cronjob für die regelmäßigen Hintergrundprozesse der Nextcloud. Durch die Erledigung dieser Aufgaben mit Cron lässt sich die Nextcloud ebenfalls etwas beschleunigen.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud mit Online Office ==&lt;br /&gt;
&lt;br /&gt;
In Nextcloud können Office-Dokumente (Textverarbeitung, Tabellen und Präsentationen) im Browser bearbeitet werden. Dazu steht bei Hostsharing die Collabora Developer Version zur Verfügung. Bestellung und Konfiguration sind hier im Wiki auf der Seite [[Collabora_Online]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud mit Nextcloud Talk ==&lt;br /&gt;
&lt;br /&gt;
Über die Nextcloud-App &amp;quot;Talk&amp;quot; können Videokonfererenzen mit Screensharing durchgeführt werden. Für die regelmäßige Nutzung kann es sinnvoll sein einen eigenen TURN Server zu betreiben. Siehe dazu [[Coturn_Installieren]]&lt;br /&gt;
&lt;br /&gt;
== Virenscanner ==&lt;br /&gt;
&lt;br /&gt;
Einige Nutzer wollen die Dateien in Ihrer Nextcloud regelmäßig auf Viren überprüfen. Auf unseren Servern steht dafür der OpenSource-Virenscanner &amp;quot;ClamAV&amp;quot; zur Verfügung. Wenn dieser Scanner benutzt wird, dann sollten die Einstellungen so gewählt sein, dass der ClamAV-Daemon über eine Socket Verbindung angesprochen wird. Die Einstellungen sind im Screenshot dokumentiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nextcloud-ClamAV-Einstellungen.png||nextcloud einstellungen für die virenscanner-app]]&lt;br /&gt;
&lt;br /&gt;
== Volltextsuche ==&lt;br /&gt;
&lt;br /&gt;
Über die Dokumente einer Nextcloud kann ein Volltextindex erstellt werden. Die Volltextsuche ermöglicht über den Index eine Suche über beliebige Begriffe, die in Dokumenten vorkommen.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist der Betrieb eines Elasticsearch Servers. Der Betrieb im Managed Webspace erfodert die Buchung von zwei &amp;quot;Serverdiensten&amp;quot;. Nutzer eines Managed Server müssen mit einem spürbaren Mehrbedarf an Hauptspeicher rechnen.&lt;br /&gt;
&lt;br /&gt;
Zur Installation von Elasticsearch existiert eine eigene Wikiseite: [[Elasticsearch]].&lt;br /&gt;
&lt;br /&gt;
In der Nextcloud sind folgende &#039;&#039;Apps&#039;&#039; zu installieren:&lt;br /&gt;
* Full Text Search&lt;br /&gt;
* Full Text Search - Elasticsearch Platform&lt;br /&gt;
* Full Text Search - Files&lt;br /&gt;
&lt;br /&gt;
nach der Installation der drei Apps steht in den Einstellungen ein neuer Menüpunkt &amp;quot;Volltextsuche&amp;quot; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Hier ist einzustellen:&lt;br /&gt;
* Suchplattform: Elasticsearch&lt;br /&gt;
* Adresse des Servlets: http://elastic:das-erzeugt-passwort@127.0.0.1:39200&lt;br /&gt;
* Index: frei-gewaehlter-name-idx&lt;br /&gt;
* Analyzer tokenizer: standard&lt;br /&gt;
&lt;br /&gt;
Die anderen Einstellung nach den eigenen Vorstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der initiale Aufbau des Suchindex erfolgt über ein &amp;quot;occ&amp;quot;-Kommando auf der Shell:&lt;br /&gt;
&lt;br /&gt;
  cd nextcloud/&lt;br /&gt;
  php occ fulltextsearch:index --output&lt;br /&gt;
&lt;br /&gt;
Wenn dieser Fehler kommt:&lt;br /&gt;
  TypeError: Return value of OCA\Files_FullTextSearch\Model\MountPoint::isGlobal()&lt;br /&gt;
  must be of the type bool, null returned in [...]/apps/files_fulltextsearch/lib/Model/MountPoint.php:103&lt;br /&gt;
sollte dieser Patch angewendet werden: https://github.com/nextcloud/files_fulltextsearch/issues/125#issuecomment-877789742&lt;br /&gt;
&lt;br /&gt;
Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet:&lt;br /&gt;
&lt;br /&gt;
  cd nextcloud/&lt;br /&gt;
  php occ fulltextsearch:live -q&lt;br /&gt;
&lt;br /&gt;
Die Monit Konfiguration dafür sieht so aus:&lt;br /&gt;
&lt;br /&gt;
~/bin/start-fulltextsearchlive&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  export HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
  cd $HOME&lt;br /&gt;
  mkdir -p $HOME/var&lt;br /&gt;
  cd $HOME/nextcloud&lt;br /&gt;
  exec php occ fulltextsearch:live -q &amp;amp;&lt;br /&gt;
  echo $! &amp;gt;$HOME/var/fulltextsearchlive.pid&lt;br /&gt;
&lt;br /&gt;
~/bin/stop-fulltextsearchlive&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  export HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
  kill $( cat $HOME/var/fulltextsearchlive.pid )&lt;br /&gt;
&lt;br /&gt;
~/.monitrc (siehe oben von der Redis Installation) entsprechend ergänzen:&lt;br /&gt;
  check process fulltextsearchlive with pidfile /home/pacs/xyz00/users/cloud/var/fulltextsearchlive.pid&lt;br /&gt;
      start program &amp;quot;/home/pacs/xyz00/users/cloud/bin/start-fulltextsearchlive&amp;quot;&lt;br /&gt;
      stop program &amp;quot;/home/pacs/xyz00/users/cloud/bin/stop-fulltextsearchlive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Integration mit LDAP ==&lt;br /&gt;
&lt;br /&gt;
Um einheitliche Benutzerzugänge für verschiedene Anwendungen zu ermöglichen, wird oft auf ein zentrales LDAP Verzeichnis gesetzt. &lt;br /&gt;
&lt;br /&gt;
Dieses kann für Nextcloud eingesetzt werden, damit Benutzer nicht lokal in Nextcloud, sondern in LDAP verwaltet werden können.&lt;br /&gt;
&lt;br /&gt;
Siehe auch https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html&lt;br /&gt;
&lt;br /&gt;
Dazu muss die App &amp;quot;LDAP user and group backend&amp;quot; in den Nextcloud Apps aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Dann muss die LDAP Anbindung in den Administrationseinstellungen unter &amp;quot;LDAP/AD-Integration&amp;quot; eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Der Server mit Port, die BenutzerDN mit Passwort und die BaseDN müssen eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Es muss auch bestimmt werden, welche Klasse (z.B. inetOrgPerson) die Benutzer brauchen, um Zugriff auf die Nextcloud zu erhalten.&lt;br /&gt;
&lt;br /&gt;
Falls schon Benutzer in der Nextcloud existieren, und diese zu LDAP mitgenommen werden sollen, kann der Anleitung aus diesem Forum Eintrag gefolgt werden: https://help.nextcloud.com/t/migration-to-ldap-keeping-users-and-data/13205&lt;br /&gt;
&lt;br /&gt;
* Voraussetzung ist, dass der Benutzernamen der zu übernehmenden Benutzer in Nextcloud der uid in LDAP entspricht.&lt;br /&gt;
* Es wird ein Administrator Benutzer benötigt, der lokal angelegt wurde, und auch lokal bleibt.&lt;br /&gt;
* Mit diesem Administrator Benutzer wird die LDAP Anbindung eingerichtet.&lt;br /&gt;
* In der Experten Ansicht von LDAP/AD muss bei &amp;quot;Attribut für interne Benutzernamen&amp;quot; eingetragen werden: uid&lt;br /&gt;
* Klicke den Schalter &amp;quot;LDAP Benutzernamenzuordnung löschen&amp;quot;&lt;br /&gt;
* Klicke den Schalter &amp;quot;LDAP Gruppennamenzuordnung löschen&amp;quot;&lt;br /&gt;
* dann in der MySQL Datenbank anmelden, und aus uc_users alle Benutzer bis auf den Administrator Benutzer löschen&lt;br /&gt;
* Dann in der Nextcloud Weboberfläche sich alle Benutzer anzeigen lassen&lt;br /&gt;
* Nun gelingt die Anmeldung mit den anderen Benutzern mit dem LDAP Passwort, und die Dateien wurden übernommen.&lt;br /&gt;
&lt;br /&gt;
= Nextcloud Updates =&lt;br /&gt;
&lt;br /&gt;
== Updater über die Shell starten ==&lt;br /&gt;
&lt;br /&gt;
Wenn die NextCloud sich nicht über das Webfrontend updaten lässt, kann der Updater auch per Shell im directory /updater durch ausführen des updater.phar gestartet werden:&lt;br /&gt;
&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud/updater$ chmod u+x updater.phar&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud/updater$ ./updater.phar&lt;br /&gt;
&lt;br /&gt;
Für weitere Informationen kann auf die offizielle Doku ab Ziffer 2. zurückgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
* [https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html#using-the-command-line-based-updater https://docs.nextcloud.com]&lt;br /&gt;
&lt;br /&gt;
Wartungsmodus per Shell ein- oder ausschalten:&lt;br /&gt;
&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off&lt;br /&gt;
&lt;br /&gt;
== Webfrontend-Updater Probleme / Lösungen ==&lt;br /&gt;
&lt;br /&gt;
=== Datenbank: Indizes | Primärschlüssel | Konvertierungen ===&lt;br /&gt;
&lt;br /&gt;
Aufgetreten nach erfolgtem Versionsupdate Nextcloud 19 auf Nextcloud 20&lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgten Update lädt automatisch die Seite: &#039;&#039;&#039;Sicherheits- und Einrichtungswarnungen&#039;&#039;&#039; auf dieser wird angemerkt, dass manuelle Schritte für die Datenbank durchzuführen sind. Dies betrifft Indizes, Primärschlüssel und Konvertierungen. &lt;br /&gt;
&lt;br /&gt;
Per Shell in der directory /nextcloud folgende Kommandos ausführen:&lt;br /&gt;
&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hier dem durch Nextcloud angegebenen Kommando ein &#039;&#039;&#039;php&#039;&#039;&#039; voranzustellen.&lt;br /&gt;
&lt;br /&gt;
== Update per Skript ==&lt;br /&gt;
&lt;br /&gt;
Es ist möglich die regelmäßigen Updates weitgehend zu automatisieren. Ein Skript wäre etwa:&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  if [ -f $HOME/nextcloud/occ ]; then &lt;br /&gt;
    echo &amp;quot;Nextcloud Update&amp;quot;; &lt;br /&gt;
    cd $HOME/nextcloud;&lt;br /&gt;
    php updater/updater.phar -vv --no-backup --no-interaction&lt;br /&gt;
    php occ maintenance:mode --on&lt;br /&gt;
    php occ db:add-missing-primary-keys --no-interaction&lt;br /&gt;
    php occ db:add-missing-columns --no-interaction&lt;br /&gt;
    php occ db:add-missing-indices --no-interaction&lt;br /&gt;
    php occ db:convert-filecache-bigint --no-interaction&lt;br /&gt;
    php occ app:update --all&lt;br /&gt;
    php occ maintenance:mode --off&lt;br /&gt;
  else &lt;br /&gt;
    echo &amp;quot;Keine Nextcloud Installation gefunden&amp;quot;; &lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
= Daten auf HDD Storage =&lt;br /&gt;
== Einrichtung des HDD Storage ==&lt;br /&gt;
&lt;br /&gt;
Um den langsameren aber günstigeren HDD Storage von Hostsharing zu nutzen, kann das data Verzeichnis von SSD auf HDD Storage verschoben werden. Ein symbolischer Link reicht nicht aus, man muss den Pfad in der Nextcloud Konfigurationsdatei anpassen.&lt;br /&gt;
&lt;br /&gt;
 # Nextcloud in Wartungsmodus versetzen&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on&lt;br /&gt;
 # Daten auf HDD Storage verschieben&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ mv data /home/storage/xyz00/users/cloud/&lt;br /&gt;
 # symbolischen Link anlegen&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ ln -s /home/storage/xyz00/users/cloud/data data&lt;br /&gt;
 # Pfad in config.php ändern&lt;br /&gt;
 nano config/config.php&lt;br /&gt;
 # Die Zeile mit &#039;datadirectory&#039; finden und entsprechend ändern:&lt;br /&gt;
 # &#039;datadirectory&#039; =&amp;gt; &#039;/home/storage/xyz00/users/cloud/data&#039;,&lt;br /&gt;
 # Wartungsmodus beenden&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://docs.nextcloud.com/ Nextcloud Dokumentation]&lt;br /&gt;
* [https://apps.nextcloud.com/ Nextcloud Erweiterungen (&amp;quot;Apps&amp;quot;)]&lt;br /&gt;
* [https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/ Optimierung des Caches für Previews]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/nextcloud Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
= Nextcloud Reseller bei HS =&lt;br /&gt;
&lt;br /&gt;
[https://nextcloud.ossaas.de OS SaaS]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Joomla_installieren&amp;diff=6162</id>
		<title>Joomla installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Joomla_installieren&amp;diff=6162"/>
		<updated>2023-06-14T13:56:09Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Joomla konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Joomla bei HS =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;joomla.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-joomla&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Joomla CMS&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;joomla.hs-example.de&#039;,user:&#039;xyz00-joomla&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_joomlauser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_joomladb&#039;,owner:&#039;xyz00_joomlauser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Joomla installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-joomla&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-joomla xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Und dann Joomla herunterladen und in den Webspace entpacken:&lt;br /&gt;
&lt;br /&gt;
  cd doms/joomla.hs-example.de/htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
  wget https://downloads.joomla.org/de/cms/joomla4/4-3-2/Joomla_4-3-2-Stable-Full_Package.tar.gz?format=gz&lt;br /&gt;
  tar xvzf Joomla_4-3-2-Stable-Full_Package.tar.gz?format=gz&lt;br /&gt;
&lt;br /&gt;
== Joomla für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/joomla.hs-example.de/fastcgi&lt;br /&gt;
&lt;br /&gt;
  vi php.ini&lt;br /&gt;
&lt;br /&gt;
 [PHP]&lt;br /&gt;
 upload_max_filesize=20M&lt;br /&gt;
 max_execution_time=300&lt;br /&gt;
 post_max_size=20M&lt;br /&gt;
 memory_limit=128M&lt;br /&gt;
&lt;br /&gt;
== Joomla konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
https://joomla.hs-example.de/index.php gehen und den Anweisungen folgen.&lt;br /&gt;
(Bilder leider noch von der 3.x Version)&lt;br /&gt;
&lt;br /&gt;
[[Datei:Joomla1.jpg]]&lt;br /&gt;
[[Datei:Joomla2.jpg]]&lt;br /&gt;
[[Datei:Joomla3a.jpg]]&lt;br /&gt;
[[Datei:Joomla3b.jpg]]&lt;br /&gt;
[[Datei:Joomla4.jpg]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Joomla_installieren&amp;diff=6161</id>
		<title>Joomla installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Joomla_installieren&amp;diff=6161"/>
		<updated>2023-06-14T13:52:07Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Joomla installieren */ 4.3.2 Bilder nicht aktualisert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Joomla bei HS =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;joomla.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-joomla&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Joomla CMS&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;joomla.hs-example.de&#039;,user:&#039;xyz00-joomla&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_joomlauser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_joomladb&#039;,owner:&#039;xyz00_joomlauser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Joomla installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-joomla&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-joomla xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Und dann Joomla herunterladen und in den Webspace entpacken:&lt;br /&gt;
&lt;br /&gt;
  cd doms/joomla.hs-example.de/htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
  wget https://downloads.joomla.org/de/cms/joomla4/4-3-2/Joomla_4-3-2-Stable-Full_Package.tar.gz?format=gz&lt;br /&gt;
  tar xvzf Joomla_4-3-2-Stable-Full_Package.tar.gz?format=gz&lt;br /&gt;
&lt;br /&gt;
== Joomla für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/joomla.hs-example.de/fastcgi&lt;br /&gt;
&lt;br /&gt;
  vi php.ini&lt;br /&gt;
&lt;br /&gt;
 [PHP]&lt;br /&gt;
 upload_max_filesize=20M&lt;br /&gt;
 max_execution_time=300&lt;br /&gt;
 post_max_size=20M&lt;br /&gt;
 memory_limit=128M&lt;br /&gt;
&lt;br /&gt;
== Joomla konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
https://joomla.hs-example.de/index.php gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Joomla1.jpg]]&lt;br /&gt;
[[Datei:Joomla2.jpg]]&lt;br /&gt;
[[Datei:Joomla3a.jpg]]&lt;br /&gt;
[[Datei:Joomla3b.jpg]]&lt;br /&gt;
[[Datei:Joomla4.jpg]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6134</id>
		<title>Collabora Online</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6134"/>
		<updated>2023-05-11T12:25:17Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Collabora konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Collabora installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen sind folgende Punkte:&lt;br /&gt;
&lt;br /&gt;
1. Per Mail an service@hostsharing.net die Aktivierung der Paket Option Collabora Online beauftragen mit der Angabe des Paketkürzel xyz00 und des Benutzers xyz00-cloud unter der die Installation läuft.&lt;br /&gt;
&lt;br /&gt;
2. Grundlage bei Hostsharing ist die Installation der Nextcloud laut Wiki Anleitung [[Nextcloud]].&lt;br /&gt;
&lt;br /&gt;
3. Die APP &#039;&#039;Nextcloud Office&#039;&#039; erst installieren wenn der Service die Bestätigung gesendet hat, dass die Aktivierung erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
== Collabora installieren ==&lt;br /&gt;
&lt;br /&gt;
Collabora ist auf allen 64 Bit hive installiert. Es muss hier nun noch die APP Collabora Online in der Nextcloud installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039; Die Freigabe vom Service muss erst per Mail vorliegen!!&lt;br /&gt;
&lt;br /&gt;
1. Anmeldung als &#039;&#039;&#039;Admin&#039;&#039;&#039; in der Nextcloud Installation&lt;br /&gt;
&lt;br /&gt;
2. Rechts oben auf &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;+APP&#039;&#039;&#039; auswählen&lt;br /&gt;
[[Datei:Hs-collabora-app-install.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Im &#039;&#039;&#039;Suchfeld&#039;&#039;&#039; oben &amp;quot;collabora&amp;quot; eingeben&lt;br /&gt;
[[Datei:Nextcloud-Office-Suche.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Auf den Button &#039;&#039;Herunterladen und aktivieren&#039;&#039; klicken&lt;br /&gt;
&lt;br /&gt;
Damit ist die APP Nextcloud Office installiert und muss nun noch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
== Collabora konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Rechts oben unter &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;Einstellungen&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Anschließend im linken Fensterbereich unter dem Menüpunkt &#039;&#039;&#039;Verwaltung&#039;&#039;&#039;&lt;br /&gt;
den Eintrag &#039;&#039;&#039;Collabora Online&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Nextcloud-Office-Menue.png]]&lt;br /&gt;
&lt;br /&gt;
Hier muss nun die PaketDomain entsprechend Eingetragen werden.&lt;br /&gt;
Wobei &#039;&#039;&#039;xyz00&#039;&#039;&#039;.hostsharing.net durch Ihr Paket Kürzel zu ersetzten ist. &lt;br /&gt;
Es wird kein Port eingetragen!&lt;br /&gt;
Anschließend einmal auf den Button &#039;&#039;Anwenden&#039;&#039; klicken.&lt;br /&gt;
[[Bild:Nextcloud-Office-URL.png]]&lt;br /&gt;
&lt;br /&gt;
Es wird empfohlen bei &#039;Allow list for WOPI requests&#039; die aufgelöste IP Adresse des Webpaketes xyz00.hostsharing.net einzutragen. Sodass nur diese Collabora Instanz Dokumente aus der Nextcloud erhalten kann. Die IP erhält man z.B. über den Konsolenbefehl &lt;br /&gt;
&lt;br /&gt;
    $ dig xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Die Relevante Zeile im Output sieht ungefähr so aus:  &lt;br /&gt;
&lt;br /&gt;
    ;; ANSWER SECTION:&lt;br /&gt;
    xyz00.hostsharing.net.	3807	IN	A	83.223.79.177&lt;br /&gt;
&lt;br /&gt;
Die IP Adresse ist die, die dann auch in der Nextcloud auf der Admin Config Seite von Collabora hinterlegt werden muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Einstellungen können individuell noch vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6133</id>
		<title>Collabora Online</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6133"/>
		<updated>2023-05-11T12:24:13Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Collabora installieren */ Neues Bild Suche&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Collabora installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen sind folgende Punkte:&lt;br /&gt;
&lt;br /&gt;
1. Per Mail an service@hostsharing.net die Aktivierung der Paket Option Collabora Online beauftragen mit der Angabe des Paketkürzel xyz00 und des Benutzers xyz00-cloud unter der die Installation läuft.&lt;br /&gt;
&lt;br /&gt;
2. Grundlage bei Hostsharing ist die Installation der Nextcloud laut Wiki Anleitung [[Nextcloud]].&lt;br /&gt;
&lt;br /&gt;
3. Die APP &#039;&#039;Nextcloud Office&#039;&#039; erst installieren wenn der Service die Bestätigung gesendet hat, dass die Aktivierung erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
== Collabora installieren ==&lt;br /&gt;
&lt;br /&gt;
Collabora ist auf allen 64 Bit hive installiert. Es muss hier nun noch die APP Collabora Online in der Nextcloud installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039; Die Freigabe vom Service muss erst per Mail vorliegen!!&lt;br /&gt;
&lt;br /&gt;
1. Anmeldung als &#039;&#039;&#039;Admin&#039;&#039;&#039; in der Nextcloud Installation&lt;br /&gt;
&lt;br /&gt;
2. Rechts oben auf &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;+APP&#039;&#039;&#039; auswählen&lt;br /&gt;
[[Datei:Hs-collabora-app-install.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Im &#039;&#039;&#039;Suchfeld&#039;&#039;&#039; oben &amp;quot;collabora&amp;quot; eingeben&lt;br /&gt;
[[Datei:Nextcloud-Office-Suche.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Auf den Button &#039;&#039;Herunterladen und aktivieren&#039;&#039; klicken&lt;br /&gt;
&lt;br /&gt;
Damit ist die APP Nextcloud Office installiert und muss nun noch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
== Collabora konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Rechts oben unter &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;Einstellungen&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Anschließend im linken Fensterbereich unter dem Menüpunkt &#039;&#039;&#039;Verwaltung&#039;&#039;&#039;&lt;br /&gt;
den Eintrag &#039;&#039;&#039;Collabora Online&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Hs-collabora-config.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier muss nun die PaketDomain entsprechend Eingetragen werden.&lt;br /&gt;
Wobei &#039;&#039;&#039;xyz00&#039;&#039;&#039;.hostsharing.net durch Ihr Paket Kürzel zu ersetzten ist. &lt;br /&gt;
Es wird kein Port eingetragen!&lt;br /&gt;
Anschließend einmal auf den Button &#039;&#039;Anwenden&#039;&#039; klicken.&lt;br /&gt;
[[Bild:Hs-collabora-pacdomain.jpg]]&lt;br /&gt;
&lt;br /&gt;
Es wird empfohlen bei &#039;Allow list for WOPI requests&#039; die aufgelöste IP Adresse des Webpaketes xyz00.hostsharing.net einzutragen. Sodass nur diese Collabora Instanz Dokumente aus der Nextcloud erhalten kann. Die IP erhält man z.B. über den Konsolenbefehl &lt;br /&gt;
&lt;br /&gt;
    $ dig xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Die Relevante Zeile im Output sieht ungefähr so aus:  &lt;br /&gt;
&lt;br /&gt;
    ;; ANSWER SECTION:&lt;br /&gt;
    xyz00.hostsharing.net.	3807	IN	A	83.223.79.177&lt;br /&gt;
&lt;br /&gt;
Die IP Adresse ist die, die dann auch in der Nextcloud auf der Admin Config Seite von Collabora hinterlegt werden muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Einstellungen können individuell noch vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Datei:Nextcloud-Office-URL.png&amp;diff=6132</id>
		<title>Datei:Nextcloud-Office-URL.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Datei:Nextcloud-Office-URL.png&amp;diff=6132"/>
		<updated>2023-05-11T12:22:26Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Datei:Nextcloud-Office-Menue.png&amp;diff=6131</id>
		<title>Datei:Nextcloud-Office-Menue.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Datei:Nextcloud-Office-Menue.png&amp;diff=6131"/>
		<updated>2023-05-11T12:22:12Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Datei:Nextcloud-Office-Suche.png&amp;diff=6130</id>
		<title>Datei:Nextcloud-Office-Suche.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Datei:Nextcloud-Office-Suche.png&amp;diff=6130"/>
		<updated>2023-05-11T12:21:39Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6129</id>
		<title>Collabora Online</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6129"/>
		<updated>2023-05-11T12:03:44Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Collabora installieren */ Nextcloud Office&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Collabora installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen sind folgende Punkte:&lt;br /&gt;
&lt;br /&gt;
1. Per Mail an service@hostsharing.net die Aktivierung der Paket Option Collabora Online beauftragen mit der Angabe des Paketkürzel xyz00 und des Benutzers xyz00-cloud unter der die Installation läuft.&lt;br /&gt;
&lt;br /&gt;
2. Grundlage bei Hostsharing ist die Installation der Nextcloud laut Wiki Anleitung [[Nextcloud]].&lt;br /&gt;
&lt;br /&gt;
3. Die APP &#039;&#039;Nextcloud Office&#039;&#039; erst installieren wenn der Service die Bestätigung gesendet hat, dass die Aktivierung erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
== Collabora installieren ==&lt;br /&gt;
&lt;br /&gt;
Collabora ist auf allen 64 Bit hive installiert. Es muss hier nun noch die APP Collabora Online in der Nextcloud installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039; Die Freigabe vom Service muss erst per Mail vorliegen!!&lt;br /&gt;
&lt;br /&gt;
1. Anmeldung als &#039;&#039;&#039;Admin&#039;&#039;&#039; in der Nextcloud Installation&lt;br /&gt;
&lt;br /&gt;
2. Rechts oben auf &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;+APP&#039;&#039;&#039; auswählen&lt;br /&gt;
[[Datei:Hs-collabora-app-install.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Im &#039;&#039;&#039;Suchfeld&#039;&#039;&#039; oben &amp;quot;collabora&amp;quot; eingeben&lt;br /&gt;
[[Datei:Hs-collabora-suche.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Auf den Button &#039;&#039;Herunterladen und aktivieren&#039;&#039; klicken&lt;br /&gt;
&lt;br /&gt;
Damit ist die APP Nextcloud Office installiert und muss nun noch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
== Collabora konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Rechts oben unter &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;Einstellungen&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Anschließend im linken Fensterbereich unter dem Menüpunkt &#039;&#039;&#039;Verwaltung&#039;&#039;&#039;&lt;br /&gt;
den Eintrag &#039;&#039;&#039;Collabora Online&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Hs-collabora-config.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier muss nun die PaketDomain entsprechend Eingetragen werden.&lt;br /&gt;
Wobei &#039;&#039;&#039;xyz00&#039;&#039;&#039;.hostsharing.net durch Ihr Paket Kürzel zu ersetzten ist. &lt;br /&gt;
Es wird kein Port eingetragen!&lt;br /&gt;
Anschließend einmal auf den Button &#039;&#039;Anwenden&#039;&#039; klicken.&lt;br /&gt;
[[Bild:Hs-collabora-pacdomain.jpg]]&lt;br /&gt;
&lt;br /&gt;
Es wird empfohlen bei &#039;Allow list for WOPI requests&#039; die aufgelöste IP Adresse des Webpaketes xyz00.hostsharing.net einzutragen. Sodass nur diese Collabora Instanz Dokumente aus der Nextcloud erhalten kann. Die IP erhält man z.B. über den Konsolenbefehl &lt;br /&gt;
&lt;br /&gt;
    $ dig xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Die Relevante Zeile im Output sieht ungefähr so aus:  &lt;br /&gt;
&lt;br /&gt;
    ;; ANSWER SECTION:&lt;br /&gt;
    xyz00.hostsharing.net.	3807	IN	A	83.223.79.177&lt;br /&gt;
&lt;br /&gt;
Die IP Adresse ist die, die dann auch in der Nextcloud auf der Admin Config Seite von Collabora hinterlegt werden muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Einstellungen können individuell noch vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6128</id>
		<title>Collabora Online</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Collabora_Online&amp;diff=6128"/>
		<updated>2023-05-11T12:03:05Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Vorbereitungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Collabora installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen sind folgende Punkte:&lt;br /&gt;
&lt;br /&gt;
1. Per Mail an service@hostsharing.net die Aktivierung der Paket Option Collabora Online beauftragen mit der Angabe des Paketkürzel xyz00 und des Benutzers xyz00-cloud unter der die Installation läuft.&lt;br /&gt;
&lt;br /&gt;
2. Grundlage bei Hostsharing ist die Installation der Nextcloud laut Wiki Anleitung [[Nextcloud]].&lt;br /&gt;
&lt;br /&gt;
3. Die APP &#039;&#039;Nextcloud Office&#039;&#039; erst installieren wenn der Service die Bestätigung gesendet hat, dass die Aktivierung erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
== Collabora installieren ==&lt;br /&gt;
&lt;br /&gt;
Collabora ist auf allen 64 Bit hive installiert. Es muss hier nun noch die APP Collabora Online in der Nextcloud installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039; Die Freigabe vom Service muss erst per Mail vorliegen!!&lt;br /&gt;
&lt;br /&gt;
1. Anmeldung als &#039;&#039;&#039;Admin&#039;&#039;&#039; in der Nextcloud Installation&lt;br /&gt;
&lt;br /&gt;
2. Rechts oben auf &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;+APP&#039;&#039;&#039; auswählen&lt;br /&gt;
[[Datei:Hs-collabora-app-install.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Im &#039;&#039;&#039;Suchfeld&#039;&#039;&#039; oben &amp;quot;collabora&amp;quot; eingeben&lt;br /&gt;
[[Datei:Hs-collabora-suche.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Auf den Button &#039;&#039;Herunterladen und aktivieren&#039;&#039; klicken&lt;br /&gt;
&lt;br /&gt;
Damit ist die APP Collabora Online installiert und muss nun noch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
== Collabora konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Rechts oben unter &#039;&#039;&#039;Profilmenü&#039;&#039;&#039; den Eintrag &#039;&#039;&#039;Einstellungen&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Anschließend im linken Fensterbereich unter dem Menüpunkt &#039;&#039;&#039;Verwaltung&#039;&#039;&#039;&lt;br /&gt;
den Eintrag &#039;&#039;&#039;Collabora Online&#039;&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Hs-collabora-config.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier muss nun die PaketDomain entsprechend Eingetragen werden.&lt;br /&gt;
Wobei &#039;&#039;&#039;xyz00&#039;&#039;&#039;.hostsharing.net durch Ihr Paket Kürzel zu ersetzten ist. &lt;br /&gt;
Es wird kein Port eingetragen!&lt;br /&gt;
Anschließend einmal auf den Button &#039;&#039;Anwenden&#039;&#039; klicken.&lt;br /&gt;
[[Bild:Hs-collabora-pacdomain.jpg]]&lt;br /&gt;
&lt;br /&gt;
Es wird empfohlen bei &#039;Allow list for WOPI requests&#039; die aufgelöste IP Adresse des Webpaketes xyz00.hostsharing.net einzutragen. Sodass nur diese Collabora Instanz Dokumente aus der Nextcloud erhalten kann. Die IP erhält man z.B. über den Konsolenbefehl &lt;br /&gt;
&lt;br /&gt;
    $ dig xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Die Relevante Zeile im Output sieht ungefähr so aus:  &lt;br /&gt;
&lt;br /&gt;
    ;; ANSWER SECTION:&lt;br /&gt;
    xyz00.hostsharing.net.	3807	IN	A	83.223.79.177&lt;br /&gt;
&lt;br /&gt;
Die IP Adresse ist die, die dann auch in der Nextcloud auf der Admin Config Seite von Collabora hinterlegt werden muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Einstellungen können individuell noch vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Redis&amp;diff=6009</id>
		<title>Redis</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Redis&amp;diff=6009"/>
		<updated>2023-02-16T15:58:04Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Konfiguration */ daemonize yes/no, absolute Pfade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Redis installieren ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Redis&#039;&#039;&#039; ist ein einfacher Datenspeicher für Schlüssel-Wert-Paare. Datensätze werden jeweils unter einem Schlüssel abgelegt. Die Daten werden jeweils im Hauptspeicher gehalten und nur zu konfigurierbaren Zeitpunkten auf die Festplatte gesichert. &lt;br /&gt;
&lt;br /&gt;
Redis-Datenbanken werden häufig zur Speicherung von Warteschlangen benutzt. In Redis werden Aufträge gespeichert, die asynchron von Hintergrundprogrammen abgearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Redis ist auf den Hostsharing-Servern vorinstalliert. Für die Nutzung muss lediglich eine Konfigurationsdatei angelegt werden und ein Hitergrundprogramm gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird für den User &#039;&#039;xyz00-service&#039;&#039; ein Redis-Dienst eingerichtet.&lt;br /&gt;
Der User &#039;&#039;xyz00-service&#039;&#039; ist in HSAdmin mit &#039;&#039;/bin/bash&#039;&#039; als Shell eingerichtet.&lt;br /&gt;
&lt;br /&gt;
Nach dem Login als &#039;&#039;xyz00-service&#039;&#039; lege ich Verzeichnisse &#039;&#039;~/redis/etc&#039;&#039; und &#039;&#039;~/redis/var&#039;&#039; an:&lt;br /&gt;
&lt;br /&gt;
 xyz00-service@h00:~$ mkdir redis&lt;br /&gt;
 xyz00-service@h00:~$ mkdir redis/etc&lt;br /&gt;
 xyz00-service@h00:~$ mkdir redis/var&lt;br /&gt;
&lt;br /&gt;
Im etc-Verzeichnis wird die Konfigurationsdatei &#039;&#039;redis.conf&#039;&#039; für den Redis-Dienst abgelegt.&lt;br /&gt;
&lt;br /&gt;
Eine Beispiel-Konfiguration ist:&lt;br /&gt;
&lt;br /&gt;
 daemonize yes&lt;br /&gt;
 pidfile /home/pacs/XYZ00/users/NAME/redis/var/redis-server.pid&lt;br /&gt;
 requirepass &#039;generiertes-passwort&#039;&lt;br /&gt;
 bind 127.0.0.1&lt;br /&gt;
 port 33033&lt;br /&gt;
 tcp-backlog 128&lt;br /&gt;
 timeout 300&lt;br /&gt;
 loglevel notice&lt;br /&gt;
 logfile /home/pacs/XYZ00/users/NAME/redis/var/redis.log&lt;br /&gt;
 databases 16&lt;br /&gt;
 save 900 1&lt;br /&gt;
 save 300 10&lt;br /&gt;
 save 60 10000&lt;br /&gt;
 slave-serve-stale-data yes&lt;br /&gt;
 appendonly no&lt;br /&gt;
 dbfilename dump.rdb&lt;br /&gt;
 dir /home/pacs/XYZ00/users/NAME/redis/var&lt;br /&gt;
&lt;br /&gt;
Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port &#039;&#039;33033&#039;&#039; für die Netzwerk-Schnittstelle muss ggf. angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Der Dienst wird gestartet mit:&lt;br /&gt;
&lt;br /&gt;
 xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf&lt;br /&gt;
&lt;br /&gt;
Mit Ctrl-C kann der Dienst wieder gestoppt werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile &#039;bind 127.0.0.1&#039; in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert:&lt;br /&gt;
&lt;br /&gt;
 unixsocket var/redis-server.sock&lt;br /&gt;
 unixsocketperm 700&lt;br /&gt;
 port 0&lt;br /&gt;
 daemonize no&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung als Server-Dienst ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Redis&#039;&#039;&#039; soll über den Systemdienst &#039;&#039;&#039;SystemD&#039;&#039;&#039; automatisch im Hintergrund gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Dazu wird im Verzeichnis &#039;&#039;~/.config/systemd/user&#039;&#039; eine Datei &#039;&#039;redis.service&#039;&#039; mit dem folgenden Inhalt angelegt:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Redis Service&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 WorkingDirectory=%h/redis&lt;br /&gt;
 Environment=&amp;quot;PATH=/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
 ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf&lt;br /&gt;
 Restart=always&lt;br /&gt;
 PrivateTmp=true&lt;br /&gt;
 NoNewPrivileges=true&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
&lt;br /&gt;
Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user daemon-reload&lt;br /&gt;
 systemctl --user enable redis.service&lt;br /&gt;
 systemctl --user start redis.service&lt;br /&gt;
&lt;br /&gt;
Mit den Kommandos&lt;br /&gt;
&lt;br /&gt;
 systemctl --user status &lt;br /&gt;
 systemctl --user status redis.service&lt;br /&gt;
&lt;br /&gt;
kann der Status des Dienstes ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
 * [https://redis.io/ Internetseite des Redis Projekts]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:SystemD]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mastodon_bei_Hostsharing&amp;diff=5955</id>
		<title>Mastodon bei Hostsharing</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mastodon_bei_Hostsharing&amp;diff=5955"/>
		<updated>2022-11-21T11:50:50Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Starten der Dienste */ mastodon -&amp;gt; live&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mastodon ist ein verteilter Microblogging Dienst, der das ActivityPub-Protokoll verwendet. &lt;br /&gt;
&lt;br /&gt;
Wenn man nur wenige Nutzer oder gar nur für sich selbst einen Einstiegspunkt ins &amp;quot;Fediverse&amp;quot; schaffen will, kann sich auch die Ressourcen-schonende Alternative [[Pleroma]] anbieten.&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt, wie man Mastodon auf der Managed Hosting Plattform von Hostsharing installieren kann. &lt;br /&gt;
&lt;br /&gt;
Hostsharing selbst nutzt die Hosting Plattform und betreibt zwei Mastodon Instanzen:&lt;br /&gt;
* https://geno.social&lt;br /&gt;
* https://hostsharing.coop&lt;br /&gt;
&lt;br /&gt;
Der Autor dieser Seite betreibt:&lt;br /&gt;
* https://krefeld.life&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gelb|Für Managed Server|Ein funktionierender Mastodon-Server erfordert mehrere laufende Server-Dienste. Für den Betrieb ist ein Managed Server sinnvoll.}}&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von HSAdmin wird angelegt:&lt;br /&gt;
# Ein User als Service-User mit &#039;&#039;/bin/bash&#039;&#039; als Shell, zum Beispiel Beispiel: &#039;&#039;xyz00-mastodon&#039;&#039;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-mastodon&#039;&#039; als Domain-Administrator, zum Beispiel &#039;&#039;beispiel.social&#039;&#039;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_mastuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_mastdb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_mastuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verwendete IP-Ports der Server-Dienste:&lt;br /&gt;
# Monit: localhost:32001&lt;br /&gt;
# Redis: localhost:32002&lt;br /&gt;
# Mastodon-Web: localhost:32003&lt;br /&gt;
# Mastodon-Streaming: localhost:32004&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Redis Server ==&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Datei &#039;&#039;/home/pacs/xyz00/users/mastodon/redis/etc/redis.conf&#039;&#039; mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
    daemonize yes&lt;br /&gt;
    pidfile /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid&lt;br /&gt;
    requirepass &amp;lt;hierhin-gehoert-ein-redis-passwort&amp;gt;&lt;br /&gt;
    port 32002&lt;br /&gt;
    tcp-backlog 128&lt;br /&gt;
    bind 127.0.0.1&lt;br /&gt;
    timeout 300&lt;br /&gt;
    loglevel notice&lt;br /&gt;
    logfile /home/pacs/xyz00/users/mastodon/redis/var/redis.log&lt;br /&gt;
    databases 16&lt;br /&gt;
    save 900 1&lt;br /&gt;
    save 300 10&lt;br /&gt;
    save 60 10000&lt;br /&gt;
    slave-serve-stale-data yes&lt;br /&gt;
    appendonly no&lt;br /&gt;
    dbfilename dump.rdb&lt;br /&gt;
    dir /home/pacs/xyz00/users/mastodon/redis/var&lt;br /&gt;
&lt;br /&gt;
== Installation von NodeJS ==&lt;br /&gt;
&lt;br /&gt;
Als User &#039;xyz00-mastodon&#039;&#039;: Installation von &#039;&#039;nvm&#039;&#039; und &#039;&#039;nodejs&#039;&#039; (Version 12) nach der Anleitung [[NodeJS]]&lt;br /&gt;
&lt;br /&gt;
Installation von &#039;&#039;yarn&#039;&#039; mit:&lt;br /&gt;
&lt;br /&gt;
    npm install -g yarn&lt;br /&gt;
&lt;br /&gt;
== Installation von Ruby ==&lt;br /&gt;
&lt;br /&gt;
Als User &#039;&#039;xyz00-mastodon&#039;&#039;:  Installation von Ruby mit &#039;&#039;rbenv&#039;&#039; mit folgenden Befehlen:&lt;br /&gt;
&lt;br /&gt;
Zunächst &#039;&#039;rbenv&#039;&#039; and &#039;&#039;ruby-build&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv&lt;br /&gt;
    cd ~/.rbenv &amp;amp;&amp;amp; src/configure &amp;amp;&amp;amp; make -C src&lt;br /&gt;
    echo &#039;export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
    echo &#039;eval &amp;quot;$(rbenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
&lt;br /&gt;
starte neue Shell:&lt;br /&gt;
&lt;br /&gt;
    exec bash&lt;br /&gt;
&lt;br /&gt;
Überprüfe rbenv-Installation&lt;br /&gt;
&lt;br /&gt;
    type rbenv&lt;br /&gt;
&lt;br /&gt;
Installiere ruby-build als rbenv-Plugin&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build&lt;br /&gt;
&lt;br /&gt;
Nun kann die benötigte Ruby-Version installiert werden:&lt;br /&gt;
&lt;br /&gt;
    rbenv install 2.7.2&lt;br /&gt;
&lt;br /&gt;
== Installation der Mastodon Software ==&lt;br /&gt;
&lt;br /&gt;
Weiterhin Als User &#039;&#039;xyz00-mastodon&#039;&#039;:  &lt;br /&gt;
&lt;br /&gt;
    cd ~&lt;br /&gt;
    git clone https://github.com/tootsuite/mastodon.git live&lt;br /&gt;
    cd ~/live&lt;br /&gt;
&lt;br /&gt;
Die stabile Version auschecken:&lt;br /&gt;
&lt;br /&gt;
    git checkout $(git tag -l | grep -v &#039;rc[0-9]*$&#039; | sort -V | tail -n 1)&lt;br /&gt;
&lt;br /&gt;
Ruby Pakete installieren:&lt;br /&gt;
&lt;br /&gt;
    gem install bundler&lt;br /&gt;
    bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test&lt;br /&gt;
&lt;br /&gt;
Node.js Pakete installieren:&lt;br /&gt;
&lt;br /&gt;
    yarn install --pure-lockfile&lt;br /&gt;
&lt;br /&gt;
== Konfiguration der Mastodon Software ==&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Datei &#039;&#039;/home/pacs/xyz00/users/mastodon/live/.env.production&#039;&#039; mit dem folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
    REDIS_HOST=localhost&lt;br /&gt;
    REDIS_PORT=32002&lt;br /&gt;
    REDIS_PASSWORD=&amp;lt;hierhin-gehoert-ein-redis-passwort&amp;gt;&lt;br /&gt;
    DB_HOST=localhost&lt;br /&gt;
    DB_USER=xyz00_mastuser&lt;br /&gt;
    DB_NAME=xyz00_mastdb&lt;br /&gt;
    DB_PASS=meinPasswort&lt;br /&gt;
    DB_PORT=5432&lt;br /&gt;
    LOCAL_DOMAIN=beispiel.social&lt;br /&gt;
    SECRET_KEY_BASE=12ab..&lt;br /&gt;
    OTP_SECRET=34ef..&lt;br /&gt;
    VAPID_PRIVATE_KEY=ABCD..&lt;br /&gt;
    VAPID_PUBLIC_KEY=EFGH..&lt;br /&gt;
    DEFAULT_LOCALE=de&lt;br /&gt;
    SMTP_SERVER=localhost&lt;br /&gt;
    SMTP_PORT=25&lt;br /&gt;
    SMTP_FROM_ADDRESS=notifications@beispiel.social&lt;br /&gt;
    SMTP_AUTH_METHOD=none&lt;br /&gt;
    SMTP_OPENSSL_VERIFY_MODE=none&lt;br /&gt;
    STREAMING_CLUSTER_NUM=1&lt;br /&gt;
&lt;br /&gt;
Die Zufallswerte für die Variablen SECRET_KEY_BASE und OTP_SECRET erzeugt man durch zwei Aufrufe des Kommandos&lt;br /&gt;
&lt;br /&gt;
    RAILS_ENV=production bundle exec rake secret&lt;br /&gt;
&lt;br /&gt;
Die Werte für VAPID_PRIVATE_KEY und VAPID_PUBLIC_KEY erzeugt das Kommando&lt;br /&gt;
&lt;br /&gt;
    RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initialisieren der Datenbank:&lt;br /&gt;
&lt;br /&gt;
    export SAFETY_ASSURED=1&lt;br /&gt;
    RAILS_ENV=production bundle exec rails db:schema:load&lt;br /&gt;
    RAILS_ENV=production bundle exec rails db:seed&lt;br /&gt;
&lt;br /&gt;
Erzeugen der Web-Resourcen&lt;br /&gt;
&lt;br /&gt;
    RAILS_ENV=production bundle exec rails assets:precompile&lt;br /&gt;
&lt;br /&gt;
== Starten der Dienste  ==&lt;br /&gt;
&lt;br /&gt;
Zum Start aller notwendigen Dienste wird in dieser Anleitung &#039;&#039;monit&#039;&#039; benutzt. Hier ein Beispiel für eine Datei &#039;&#039;.monitrc&#039;&#039; (überlange Zeilen werden hier im Wiki umgebrochen)&lt;br /&gt;
&lt;br /&gt;
    set daemon 60&lt;br /&gt;
        with start delay 120&lt;br /&gt;
    set logfile /home/pacs/xyz00/users/mastodon/monit/var/monit.log&lt;br /&gt;
    set idfile /home/pacs/xyz00/users/mastodon/monit/var/monit.id&lt;br /&gt;
    set statefile /home/pacs/xyz00/users/mastodon/monit/var/monit.state&lt;br /&gt;
    set mailserver localhost&lt;br /&gt;
    set mail-format { from: monit@beispiel.social }&lt;br /&gt;
    set alert mastodon@beispiel.social&lt;br /&gt;
    set httpd port 32001 address xyz00.hostsharing.net &lt;br /&gt;
        allow mostodon:monitpassword&lt;br /&gt;
    check process redis with pidfile /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid&lt;br /&gt;
        start program &amp;quot;/usr/bin/redis-server /home/pacs/xyz00/users/mastodon/redis/etc/redis.conf&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid )&#039;&amp;quot;&lt;br /&gt;
    check process mstdn_web with pidfile /home/pacs/xyz00/users/mastodon/live/var/puma.pid&lt;br /&gt;
        depends redis&lt;br /&gt;
        start program &amp;quot;/bin/bash -c &#039;export RAILS_ENV=production &amp;amp;&amp;amp; export HOME=/home/pacs/xyz00/users/mastodon &amp;amp;&amp;amp; cd $HOME/live &amp;amp;&amp;amp; ( $HOME/.rbenv/shims/bundle exec puma -C config/puma.rb -e production -b tcp://127.0.0.1:32003 &amp;gt;$HOME/live/var/puma.log 2&amp;gt;&amp;amp;1 &amp;amp;  echo $! &amp;gt; $HOME/live/var/puma.pid  )&#039;&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/live/var/puma.pid )&#039;&amp;quot;&lt;br /&gt;
    check process mstdn_sidekiq with pidfile /home/pacs/xyz00/users/mastodon/live/var/sidekiq.pid&lt;br /&gt;
        depends redis&lt;br /&gt;
        start program &amp;quot;/bin/bash -c &#039;export RAILS_ENV=production &amp;amp;&amp;amp; export DB_POOL=5 &amp;amp;&amp;amp; export HOME=/home/pacs/xyz00/users/mastodon &amp;amp;&amp;amp; cd $HOME/live &amp;amp;&amp;amp; ( $HOME/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push -q scheduler &amp;gt;$HOME/live/var/sidekiq.log 2&amp;gt;&amp;amp;1 &amp;amp;  echo $! &amp;gt; $HOME/live/var/sidekiq.pid  )&#039;&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/live/var/sidekiq.pid )&#039;&amp;quot;&lt;br /&gt;
    check process mstdn_streaming with pidfile /home/pacs/xyz00/users/mastodon/live/var/streaming.pid&lt;br /&gt;
        depends redis&lt;br /&gt;
        start program &amp;quot;/bin/bash -c &#039;export HOME=/home/pacs/xyz00/users/mastodon &amp;amp;&amp;amp; export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot; &amp;amp;&amp;amp; export NVM_BIN=/home/pacs/xyz00/users/mastodon/.nvm/versions/node/v12.22.1/bin &amp;amp;&amp;amp; export NODE_ENV=production &amp;amp;&amp;amp; export PORT=32004 &amp;amp;&amp;amp; export BIND=127.0.0.1 &amp;amp;&amp;amp; cd $HOME/live &amp;amp;&amp;amp; ( $HOME/.nvm/versions/node/v12.22.1/bin/node streaming/index.js &amp;gt;$HOME/live/var/streaming.log 2&amp;gt;&amp;amp;1 &amp;amp;  echo $! &amp;gt; $HOME/live/var/streaming.pid  )&#039;&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/live/var/streaming.pid )&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Einrichten des Apache VHost ==&lt;br /&gt;
&lt;br /&gt;
    cd ~/doms/beispiel.social&lt;br /&gt;
    rm -rf htdocs-ssl subs/www subs-ssl/www&lt;br /&gt;
    ln -s ~/live/public htdocs-ssl&lt;br /&gt;
    touch htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Dann die &#039;&#039;htdocs-ssl/.htaccess&#039;&#039; mit dem Editor der Wahl öffnen und &lt;br /&gt;
folgende Konfiguration einfügen:&lt;br /&gt;
&lt;br /&gt;
    DirectoryIndex disabled&lt;br /&gt;
    RewriteEngine On&lt;br /&gt;
    RewriteBase /&lt;br /&gt;
    RewriteCond %{REQUEST_URI}  ^/api/v1/streaming    [NC]&lt;br /&gt;
    RewriteRule .* ws://localhost:32004%{REQUEST_URI}  [proxy]&lt;br /&gt;
    RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
    RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
    RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
    RewriteRule .* http://localhost:32003%{REQUEST_URI} [proxy]&lt;br /&gt;
    RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Cronjobs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cron&#039;&#039; wird für zwei Aufgaben genutzt:&lt;br /&gt;
* Start von monit nach einem Server Reboot&lt;br /&gt;
* Aufräumen von alten Resourcen&lt;br /&gt;
&lt;br /&gt;
Einrichten der crontab mit &#039;&#039;cronttab -e&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    HOME=/home/pacs/xyz00/users/mastodon&lt;br /&gt;
    MAILTO=mastodon@beispiel.social&lt;br /&gt;
    RAILS_ENV=production&lt;br /&gt;
    NUM_DAYS=31&lt;br /&gt;
    &lt;br /&gt;
    @reboot /usr/bin/monit -c $HOME/.monitrc&lt;br /&gt;
    18 4 * * * cd $HOME/live &amp;amp;&amp;amp; $HOME/live/bin/tootctl media remove&lt;br /&gt;
&lt;br /&gt;
== Volltextsuche ==&lt;br /&gt;
&lt;br /&gt;
In der installierten Version gibt es noch keine Volltextsuche. Es kann lediglich nach Nutzerkennungen und Hastags gesucht werden. Für die Volltextsuche kann optional Elasticsearch installiert werden.&lt;br /&gt;
&lt;br /&gt;
* [[Elasticsearch]] bei Hostsharing&lt;br /&gt;
* https://docs.joinmastodon.org/admin/optional/elasticsearch/&lt;br /&gt;
&lt;br /&gt;
== Instanz einrichten ==&lt;br /&gt;
Nach der Installation kann man sich auf https://beispiel.social einen Benutzer einrichten.&lt;br /&gt;
&lt;br /&gt;
Auf der Kommandozeile:&lt;br /&gt;
&lt;br /&gt;
 RAILS_ENV=production bin/tootctl accounts create \&lt;br /&gt;
   alice \&lt;br /&gt;
   --email alice@example.com \&lt;br /&gt;
   --confirmed \&lt;br /&gt;
   --role admin&lt;br /&gt;
&lt;br /&gt;
Weitere Einrichtung sollte vorgenommen werden, z.B. eine Beschreibung der Instanz hinterlegen, siehe https://docs.joinmastodon.org/admin/setup/&lt;br /&gt;
&lt;br /&gt;
== Mastodon Updates ==&lt;br /&gt;
&lt;br /&gt;
siehe:&lt;br /&gt;
* https://github.com/tootsuite/mastodon/releases&lt;br /&gt;
&lt;br /&gt;
(hier für das Update auf die Mastodon Version v2.8.0 mit Ruby 2.6.1)&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
    cd ~/.rbenv&lt;br /&gt;
    git pull&lt;br /&gt;
    cd ~/.rbenv/plugins/ruby-build&lt;br /&gt;
    git pull&lt;br /&gt;
    cd&lt;br /&gt;
    rbenv install -l&lt;br /&gt;
    rbenv install 2.6.1&lt;br /&gt;
    rbenv global 2.6.1&lt;br /&gt;
&lt;br /&gt;
=== Mastodon ===&lt;br /&gt;
&lt;br /&gt;
    cd ~/mastodon/live&lt;br /&gt;
    git fetch&lt;br /&gt;
    git checkout v2.8.0&lt;br /&gt;
    gem update --system&lt;br /&gt;
    bundle install&lt;br /&gt;
    yarn install&lt;br /&gt;
    RAILS_ENV=production bundle exec rails db:migrate&lt;br /&gt;
    RAILS_ENV=production bundle exec rails assets:precompile&lt;br /&gt;
&lt;br /&gt;
Restart Mastodon!&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://joinmastodon.org/ Offizielle Webseite von Mastodon]&lt;br /&gt;
* im Archiv: https://github.com/mastodon/documentation/blob/archive/Running-Mastodon/Production-guide.md&lt;br /&gt;
* aktuell: https://docs.joinmastodon.org/admin/install/&lt;br /&gt;
* https://krinetzki.de/2017/04/installation-von-mastodon-auf-debian-8-jessie/&lt;br /&gt;
* [https://github.com/tpokorra/Hostsharing-Ansible-Mastodon Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Fediverse]]&lt;br /&gt;
[[Kategorie:Activitypub]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=5924</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=5924"/>
		<updated>2022-11-08T16:32:47Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* phpstub für PHP 8.1 aktivieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.0 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.0 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php80 .php&lt;br /&gt;
Action application/x-httpd-php80 /fastcgi-bin/phpstub80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird für den aktuellen Ordner und alle Unterordner PHP 8.0 verwendet.&lt;br /&gt;
&lt;br /&gt;
Auf die gleiche Weise können auch PHP 7.1, PHP 7.2 ,PHP 7.3 oder PHP 8.1 aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=5923</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=5923"/>
		<updated>2022-11-08T16:31:46Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Vorinstallierte PHP Version wechseln */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.0 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.0 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php80 .php&lt;br /&gt;
Action application/x-httpd-php80 /fastcgi-bin/phpstub80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird für den aktuellen Ordner und alle Unterordner PHP 8.0 verwendet.&lt;br /&gt;
&lt;br /&gt;
Auf die gleiche Weise können auch PHP 7.1, PHP 7.2 oder PHP 7.3 aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=.htaccess&amp;diff=5894</id>
		<title>.htaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=.htaccess&amp;diff=5894"/>
		<updated>2022-10-24T09:32:19Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Passwortschutz für Dateien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; Dateien innerhalb der Dokument-Verzeichnisse einer Domain (möglichst in ~/doms/example.com/.htaccess oder gezielt in Unterverzeichnissen subs/www ect. ), können Einstellungen des Apache Webservers konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel kann angegeben werden, welches Apache-Modul für bestimmte Dateien (oder bestimmte Datei-Endungen) benutzt werden soll, wohin Dokumente verschoben worden sind, oder auch, wer Zugriff auf die Dateien hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einstellen von MIME-Typen ==&lt;br /&gt;
&lt;br /&gt;
 # Download von Zertifikaten ermöglichen:&lt;br /&gt;
 AddType application/x-x509-ca-cert .crt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einstellen des im HTTP Header angegebenen Zeichensatzes ==&lt;br /&gt;
&lt;br /&gt;
für .html Dateien:&lt;br /&gt;
 AddCharset UTF-8 .html&lt;br /&gt;
 &lt;br /&gt;
 # oder&lt;br /&gt;
 AddDefaultCharset UTF-8&lt;br /&gt;
&lt;br /&gt;
(für PHP Skripte siehe [[PHP]] )&lt;br /&gt;
&lt;br /&gt;
== Einstellen von Datei Handlern ==&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpcgi .php &lt;br /&gt;
 Action application/x-httpd-phpcgi /fastcgi-bin/phpstub&lt;br /&gt;
&lt;br /&gt;
==Passwortschutz für Dateien==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Sofern der Zugriff http Zugriff auf die Dateien nicht automatisch auf https:// bzw. [[TLS_/_SSL|SSL]] umgeleitet wird, können die Passwörter unverschlüsselt übertragen werden!&lt;br /&gt;
&lt;br /&gt;
Zunächst wollen wir den Zugriff auf ein Unterverzeichnis unserer Beispiel-Domain per .htaccess einschränken. Dazu legen wir zunächst eine Passwort-Datei an. Am einfachsten lässt sich diese spezielle Passwort-Datei in einer Shell anlegen. Wir legen sie in das etc-Verzeichnis der Domain:&lt;br /&gt;
&lt;br /&gt;
  xyz00-doms@hopi$ cd ~/doms/example.com/etc&lt;br /&gt;
  xyz00-doms@hopi$ htpasswd -c .htpasswd peter&lt;br /&gt;
  New password: *****&lt;br /&gt;
  Re-type new password: *****&lt;br /&gt;
  xyz00-doms@hopi$&lt;br /&gt;
&lt;br /&gt;
Beim ersten User, hier peter wird das Programm htpasswd mit der Option -c (create) aufgerufen, aber auch wirklich nur beim ersten mal, da sonst die Datei .htpasswd neu erzeugt werden würde und vorherige Einträge damit gelöscht wären.&lt;br /&gt;
&lt;br /&gt;
Sollte es beim Versuch, die Datei anzulegen, zu der Fehlermeldung kommando htpasswd nicht bekannt kommen, dann müssen wir zunächst den Befehl lokalisieren und mit dem richtigen Pfad neu aufrufen:&lt;br /&gt;
&lt;br /&gt;
  xyz00-doms@hopi$ locate htpasswd&lt;br /&gt;
  /usr/sbin/htpasswd&lt;br /&gt;
  xyz00-doms@hopi$ /usr/sbin/htpasswd -c .htpasswd peter&lt;br /&gt;
&lt;br /&gt;
Beim zweiten User erfolgt der Aufruf dann ohne die Option -c:&lt;br /&gt;
&lt;br /&gt;
  xyz00-doms@hopi$ htpasswd .htpasswd petra&lt;br /&gt;
  New password: *****&lt;br /&gt;
  Re-type new password: *****&lt;br /&gt;
  xyz00-doms@hopi$&lt;br /&gt;
&lt;br /&gt;
Die Sternchen * stehen selbstverständlich für das jeweilige Passwort, welches dem User zugeordnet werden soll.&lt;br /&gt;
&lt;br /&gt;
Diese Datei könnten wir auch einfach mit scp/pscp oder FTP hochladen, dabei stellt sich dann jedoch die Frage, wie wir sie erzeugen. Auf den meisten Windows-Systemen dürfte kein htpasswd-Kommando verfügbar sein. Für diese Fälle gibt es eine online-Version z.b.: https://de.functions-online.com/crypt.html&lt;br /&gt;
die Ausgabe einfach mit Copy&amp;amp;Paste in eine Datei kopieren und diese hochladen.&lt;br /&gt;
&lt;br /&gt;
Die so angelegte Passwort-Datei kann nun von einer oder mehreren .htaccess-Dateien verwendet werden. Dazu begeben wir uns in das zu schützende Verzeichnis und legen dort eine Datei .htaccess an. Dies kann wieder per Upload oder in einer Shell geschehen. Die Datei kann beispielsweise so aussehen:&lt;br /&gt;
&lt;br /&gt;
  order allow,deny&lt;br /&gt;
  allow from all&lt;br /&gt;
  require valid-user&lt;br /&gt;
  Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
  Authtype Basic&lt;br /&gt;
  AuthUserFile /home/doms/example.com/etc/.htpasswd&lt;br /&gt;
&lt;br /&gt;
Dabei verweist die letzte Zeile auf die von uns angelegte .htpasswd Datei. Zu beachten ist:&lt;br /&gt;
* Das die Pfadangabe absolut erfolgt, um einen &amp;quot;Internal Server Error&amp;quot; zu vermeiden.&lt;br /&gt;
* Falls die Datei innerhalb des Dokumenten Verzeichnisses liegen muss, sie auf jeden Fall .htpasswd heißt, damit sie vom Webserver nicht herausgegeben wird.&lt;br /&gt;
* Die .htaccess Datei in den Paketdomains innerhalb des web/ bzw. web-ssl/ Verzeichnisses liegen muss, damit kein &amp;quot;Internal Server Error&amp;quot; auftritt.&lt;br /&gt;
&lt;br /&gt;
===Passwortschutz von CGI- und PHP-Anwendungen===&lt;br /&gt;
&lt;br /&gt;
Mit dem beschriebenen Mechanismus können selbstverständlich auch PHP-Skripte und CGI-Anwendungen vor unberechtigten Zugriffen geschützt werden. In dem geschützten Skript kann über die Umgebungsvariable &amp;lt;code&amp;gt;REDIRECT_REMOTE_USER&amp;lt;/code&amp;gt; der Benutzername des Benutzers abgefragt werden, der sich angemeldet hat.&lt;br /&gt;
&lt;br /&gt;
In PHP-Skripten kann mit Hilfe der automatisch global sichtbaren Variablen &amp;lt;code&amp;gt;$_ENV&amp;lt;/code&amp;gt; auf die Umgebungsvariablen zugegriffen werden. Um die Variable &amp;lt;code&amp;gt;REDIRECT_REMOTE_USER&amp;lt;/code&amp;gt; zu lesen, schreibt man also &amp;lt;code&amp;gt;$_ENV[&#039;REDIRECT_REMOTE_USER&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Redirects ==&lt;br /&gt;
&lt;br /&gt;
 Redirect permanent / http://www.example.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rewrite Rules ==&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^mailman/(.*)$      /cgi-bin/mailman/$1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nur SSL erlauben und automatisch umschalten ==&lt;br /&gt;
&lt;br /&gt;
Bei per Symlink zusammengeschalteten Verzeichnissen, kann dies für die Verzeichnisse auf die nur per SSL zugegriffen werden soll, wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
 # SSL so fordern, dass ggf. Basic Auth nur einmal innerhalb von SSL abgefragt wird.&lt;br /&gt;
 #&lt;br /&gt;
 #SSLOptions +StrictRequire  #Bei HS festgelegt.&lt;br /&gt;
 SSLRequireSSL&lt;br /&gt;
 ErrorDocument 403 https://xyz00.hostsharing.net/https/URL/mit/entspechendem/Ziel/Verzeichnis&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird auf eine xyz00 Domain umgeleitet für die das HS Zertifikat gilt. Liegen die Seiten nicht dort ist die entprechende URL des Speicherortes mit https:// anzugegeben.&lt;br /&gt;
&lt;br /&gt;
Bei separaten Verzeichnissen für ssl und nicht-ssl kann auch ein permanenter Redirekt gelegt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 Redirect permanent / https://www.example.org/&lt;br /&gt;
&lt;br /&gt;
Um alle http Requests nach https weiter zu leiten:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond %{SERVER_PORT} !=443&lt;br /&gt;
 RewriteRule .* https://%{HTTP_HOST}:443%{REQUEST_URI} [QSA,R=permanent,L]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Verzeichnislisting ausschalten==&lt;br /&gt;
&lt;br /&gt;
Ruft ein Nutzer ein Verzeichnis auf, z.B. www.example.com/verzeichnis, so wird normalerweise die sich darin befindliche index.html als Standard aufgerufen. Gibt es diese Datei nicht, wird der Inhalt des Verzeichnisses gelistet. Das kann ein Sicherheitsproblem sein.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung&lt;br /&gt;
 IndexIgnore * &lt;br /&gt;
sorgt dafür, dass alle Datein Unterhalb des Speicherortes der .htaccess Datei für das Verzeichnislisting ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Listen der Verzeichnisse kann auch schon auf Dateisystemebene durch ändern der Verzeichnisrechte (o-r) unterbunden werden, wodurch auch lokale User berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
== Gesperrte Optionen ==&lt;br /&gt;
&lt;br /&gt;
Einstellungen, die es ermöglichen würden, über den Webserver Rechte anderer&lt;br /&gt;
User zu erhalten, sind nicht erlaubt.&lt;br /&gt;
--&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=5870</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=5870"/>
		<updated>2022-08-25T12:01:37Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Nextcloud installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Nextcloud =&lt;br /&gt;
&lt;br /&gt;
[https://nextcloud.com/ Nextcloud] ist eine PHP-basierte Open Source Lösung für gängige Cloud-Anwendungen, u.a.:&lt;br /&gt;
&lt;br /&gt;
* Filesharing unter Nutzern derselben Nextcloud, und mit der Öffentlichkeit&lt;br /&gt;
* Single-Sign-On Authentifizierung (SSO)&lt;br /&gt;
* Videokonferenzen (WebRTC)&lt;br /&gt;
* Online-Office Anwendung [https://www.collaboraoffice.com/ Collabora Online]&lt;br /&gt;
&lt;br /&gt;
Beispiel-Funktionalität, die über Plugins, sogenannte [https://apps.nextcloud.com/ &amp;quot;Apps&amp;quot;], bereit gestellt werden kann:&lt;br /&gt;
&lt;br /&gt;
* Kalender, Aufgabenverwaltung, Adressbuch&lt;br /&gt;
* Datei-Kollaboration (Kommentare zu Dateien, Verschlagwortung)&lt;br /&gt;
* Feedreader&lt;br /&gt;
* E-Mail-Programm&lt;br /&gt;
* Fotogalerie&lt;br /&gt;
* Musik- und Videowiedergabe&lt;br /&gt;
&lt;br /&gt;
= Nextcloud installieren =&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;cloud.example.org&#039;&#039;&lt;br /&gt;
* PostgreSQL-User &lt;br /&gt;
* PostgreSQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-cloud&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Nextcloud&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;cloud.example.org&#039;,user:&#039;xyz00-cloud&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; postgresqluser.add({set:{name:&#039;xyz00_nextclusr&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; postgresqldb.add({set:{name:&#039;xyz00_nextcloud&#039;,owner:&#039;xyz00_nextclusr&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Nextcloud installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-cloud&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-cloud xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir nextcloud&lt;br /&gt;
  cd doms/cloud.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www htdocs-ssl&lt;br /&gt;
  ln -s $HOME/nextcloud htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
Nextcloud herunterladen und entpacken.&lt;br /&gt;
&lt;br /&gt;
  cd &lt;br /&gt;
  wget https://download.nextcloud.com/server/releases/nextcloud-24.0.4.zip&lt;br /&gt;
  unzip nextcloud-24.0.4.zip &lt;br /&gt;
  rm nextcloud-24.0.4.zip&lt;br /&gt;
  mkdir data tmp&lt;br /&gt;
  chmod 700 data tmp&lt;br /&gt;
&lt;br /&gt;
== Nextcloud konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &amp;quot;$HOME/doms/cloud.example.org/fastcgi-ssl/&amp;quot; eine Datei &amp;quot;php.ini&amp;quot; anlegen mit folgendem Inhalt: &lt;br /&gt;
&lt;br /&gt;
  memory_limit=512M&lt;br /&gt;
  session.save_path=/home/pacs/xyz00/users/cloud/tmp&lt;br /&gt;
	&lt;br /&gt;
Dann mit einem Editor diese Datei bearbeiten: In der zweiten Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen.&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://cloud.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
Auf der ersten Seite sind anzugeben:&lt;br /&gt;
&lt;br /&gt;
* Login und Passwort für den Administrator definieren&lt;br /&gt;
* PostgreSQL als Datenbanksystem&lt;br /&gt;
* PostgreSQL-User und Passwort aus dem ersten Schritt oben&lt;br /&gt;
* Name der PostgreSQL-Datenbank aus dem ersten Schritt&lt;br /&gt;
* &amp;quot;localhost&amp;quot; als Datenbankserver (Nextcloud 23.0.2 empfiehlt hier die Angabe des Ports, diesen also lt. [[PostgreSQL]] angeben)&lt;br /&gt;
* Das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/data/&amp;quot; als Daten-Verzeichnis (bitte beachten: das im Eingabefeld voreingestellte verweist auf das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/&#039;&#039;&#039;nextcloud&#039;&#039;&#039;/data/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Die Felder für die Datenbank sind auf dem Startscreen hinter einem unscheinbaren Link versteckt. Um man das Formular für die Datenbank-Daten zu gelangen, muss man auf den Link klicken. Anschließend kann man die gewünschte Datenbank auswählen und die entsprechenden Daten eintragen. &#039;&#039;&#039;Das sollte geschehen, bevor man die Installation abschließt!&#039;&#039;&#039; Tut man dies nicht, wird Nextcloud mit SQLite installiert. Eine Änderung der Datenbank soll zwar laut Dokumentation auch später noch möglich sein, ging aber bei einem Test schief.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud beschleunigen ==&lt;br /&gt;
&lt;br /&gt;
Dieser Teil ist optional.&lt;br /&gt;
&lt;br /&gt;
Wenn regelmäßig &#039;&#039;&#039;im Browser&#039;&#039;&#039; mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser oft sehr langsam. Um dies zu verbessern, unterstützt Nextcloud die Anwendung von unterschiedlichen Cache-Verfahren (zum Beispiel Memcache, Redis).&lt;br /&gt;
&lt;br /&gt;
Redis ist auf den Hostsharing-Servern vorinstalliert und wird von den Nextcloud-Entwicklern empfohlen. &#039;&#039;&#039;In Verbindung mit einem Managed Webspace&#039;&#039;&#039; muss Redis als eigener Server &#039;&#039;&#039;Daemon&#039;&#039;&#039; angemeldet werden und ist &#039;&#039;&#039;kostenpflichtig&#039;&#039;&#039;. Siehe zu Kosten im Webspace Konfigurator unter: https://www.hostsharing.net/angebote/managed-webspace/ – &#039;&#039;&#039;1 individueller Serverdienst&#039;&#039;&#039; (Daemons).&lt;br /&gt;
&lt;br /&gt;
Mit dem Hostsharing-Service wird ein IP-Port für die Nutzung von Redis vereinbart.&lt;br /&gt;
&lt;br /&gt;
Für den Redis-Dienst lege ich folgende Struktur an:&lt;br /&gt;
&lt;br /&gt;
  cd ~&lt;br /&gt;
  mkdir -p ~/redis/etc&lt;br /&gt;
  mkdir -p ~/redis/var&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;~/redis/etc&#039;&#039; lege ich eine Konfigurationsdatei &#039;&#039;redis.conf&#039;&#039; für den Redis-Dienst ab:&lt;br /&gt;
&lt;br /&gt;
  daemonize yes&lt;br /&gt;
  pidfile /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid&lt;br /&gt;
  requirepass mein-redis-passwort                    &lt;br /&gt;
  unixsocket /home/pacs/xyz00/users/cloud/redis/var/redis-server.sock&lt;br /&gt;
  unixsocketperm 700&lt;br /&gt;
  port 0&lt;br /&gt;
  tcp-backlog 128&lt;br /&gt;
  timeout 300    &lt;br /&gt;
  loglevel notice&lt;br /&gt;
  logfile /home/pacs/xyz00/users/cloud/redis/var/redis.log&lt;br /&gt;
  databases 16&lt;br /&gt;
  save 900 1 &lt;br /&gt;
  save 300 10  &lt;br /&gt;
  save 60 10000&lt;br /&gt;
  slave-serve-stale-data yes&lt;br /&gt;
  appendonly no&lt;br /&gt;
  dbfilename dump.rdb&lt;br /&gt;
  dir /home/pacs/xyz00/users/cloud/redis/var&lt;br /&gt;
&lt;br /&gt;
Den Start und das Monitoring des Redis-Dienstes übernimmt &#039;&#039;monit&#039;&#039;. Hier eine geeignete Datei &#039;&#039;~/.monitrc&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  set daemon 60&lt;br /&gt;
      with start delay 20&lt;br /&gt;
  set logfile /home/pacs/xyz00/users/cloud/monit/var/monit.log&lt;br /&gt;
  set idfile /home/pacs/xyz00/users/cloud/monit/var/monit.id&lt;br /&gt;
  set statefile /home/pacs/xyz00/users/cloud/monit/var/monit.state&lt;br /&gt;
  set httpd unixsocket /home/pacs/xyz00/users/cloud/monit/var/monit.sock&lt;br /&gt;
      permission 600&lt;br /&gt;
      allow monit:mein-monit-passwort&lt;br /&gt;
  check process redis with pidfile /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid&lt;br /&gt;
      start program &amp;quot;/usr/bin/redis-server /home/pacs/xyz00/users/cloud/redis/etc/redis.conf&amp;quot;&lt;br /&gt;
      stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid )&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zugriffsrechte für die Datei &#039;&#039;~/.monitrc&#039;&#039; setzen:&lt;br /&gt;
&lt;br /&gt;
  cd ~&lt;br /&gt;
  chmod 600 .monitrc&lt;br /&gt;
&lt;br /&gt;
Verzeichnis für &#039;&#039;monit&#039;&#039; anlegen:&lt;br /&gt;
&lt;br /&gt;
  cd ~&lt;br /&gt;
  mkdir -p monit/var&lt;br /&gt;
&lt;br /&gt;
In der Konfiguration der Nextcloud (in &#039;&#039;~/nextcloud/config/config.php&#039;&#039;) wird der Redis-Cache wie folgt konfiguriert:&lt;br /&gt;
&lt;br /&gt;
  &#039;memcache.local&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
  &#039;memcache.distributed&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
  &#039;memcache.locking&#039; =&amp;gt; &#039;\\OC\\Memcache\\Redis&#039;,&lt;br /&gt;
  &#039;redis&#039; =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      &#039;host&#039; =&amp;gt; &#039;/home/pacs/xyz00/users/cloud/redis/var/redis-server.sock&#039;,&lt;br /&gt;
      &#039;port&#039; =&amp;gt; 0,&lt;br /&gt;
      &#039;password&#039; =&amp;gt; &#039;mein-redis-passwort&#039;,&lt;br /&gt;
      &#039;timeout&#039; =&amp;gt; 1.5,&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
Um es perfekt zu machen, nutze ich &#039;&#039;logrotate&#039;&#039; um die Logdateien zu organisieren. Dazu die Konfiguration in &#039;&#039;~/.logrotate&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  compress&lt;br /&gt;
  /home/pacs/xyz00/users/cloud/redis/var/redis.log {&lt;br /&gt;
    rotate 5&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
  }&lt;br /&gt;
  /home/pacs/xyz00/users/cloud/monit/var/monit.log {&lt;br /&gt;
    rotate 2&lt;br /&gt;
    weekly&lt;br /&gt;
    missingok&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Eine Crontab sorgt für den Start von Monit und das tägliche Rotieren der Logdateien:&lt;br /&gt;
&lt;br /&gt;
  # m h  dom mon dow   command&lt;br /&gt;
  HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
  PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&lt;br /&gt;
  MAILTO=webmaster@example.com&lt;br /&gt;
  @reboot /usr/bin/monit -c $HOME/.monitrc&lt;br /&gt;
  1 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate&lt;br /&gt;
  */5 * * * * /usr/bin/php $HOME/nextcloud/cron.php&lt;br /&gt;
&lt;br /&gt;
Die letzte Zeile der &#039;&#039;crontab&#039;&#039; enthält den Cronjob für die regelmäßigen Hintergrundprozesse der Nextcloud. Durch die Erledigung dieser Aufgaben mit Cron lässt sich die Nextcloud ebenfalls etwas beschleunigen.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud mit Online Office ==&lt;br /&gt;
&lt;br /&gt;
In Nextcloud können Office-Dokumente (Textverarbeitung, Tabellen und Präsentationen) im Browser bearbeitet werden. Dazu steht bei Hostsharing die Collabora Developer Version zur Verfügung. Bestellung und Konfiguration sind hier im Wiki auf der Seite [[Collabora_Online]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Nextcloud mit Nextcloud Talk ==&lt;br /&gt;
&lt;br /&gt;
Über die Nextcloud-App &amp;quot;Talk&amp;quot; können Videokonfererenzen mit Screensharing durchgeführt werden. Für die regelmäßige Nutzung kann es sinnvoll sein einen eigenen TURN Server zu betreiben. Siehe dazu [[Coturn_Installieren]]&lt;br /&gt;
&lt;br /&gt;
== Volltextsuche ==&lt;br /&gt;
&lt;br /&gt;
Über die Dokumente einer Nextcloud kann ein Volltextindex erstellt werden. Die Volltextsuche ermöglicht über den Index eine Suche über beliebige Begriffe, die in Dokumenten vorkommen.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist der Betrieb eines Elasticsearch Servers. Der Betrieb im Managed Webspace erfodert die Buchung von zwei &amp;quot;Serverdiensten&amp;quot;. Nutzer eines Managed Server müssen mit einem spürbaren Mehrbedarf an Hauptspeicher rechnen.&lt;br /&gt;
&lt;br /&gt;
Zur Installation von Elasticsearch existiert eine eigene Wikiseite: [[Elasticsearch]].&lt;br /&gt;
&lt;br /&gt;
In der Nextcloud sind folgende &#039;&#039;Apps&#039;&#039; zu installieren:&lt;br /&gt;
* Full Text Search&lt;br /&gt;
* Full Text Search - Elasticsearch Platform&lt;br /&gt;
* Full Text Search - Files&lt;br /&gt;
&lt;br /&gt;
nach der Installation der drei Apps steht in den Einstellungen ein neuer Menüpunkt &amp;quot;Volltextsuche&amp;quot; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Hier ist einzustellen:&lt;br /&gt;
* Suchplattform: Elasticsearch&lt;br /&gt;
* Adresse des Servlets: http://elastic:das-erzeugt-passwort@127.0.0.1:39200&lt;br /&gt;
* Index: frei-gewaehlter-name-idx&lt;br /&gt;
* Analyzer tokenizer: standard&lt;br /&gt;
&lt;br /&gt;
Die anderen Einstellung nach den eigenen Vorstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der initiale Aufbau des Suchindex erfolgt über ein &amp;quot;occ&amp;quot;-Kommando auf der Shell:&lt;br /&gt;
&lt;br /&gt;
  cd nextcloud/&lt;br /&gt;
  php occ fulltextsearch:index --output&lt;br /&gt;
&lt;br /&gt;
Wenn dieser Fehler kommt:&lt;br /&gt;
  TypeError: Return value of OCA\Files_FullTextSearch\Model\MountPoint::isGlobal()&lt;br /&gt;
  must be of the type bool, null returned in [...]/apps/files_fulltextsearch/lib/Model/MountPoint.php:103&lt;br /&gt;
sollte dieser Patch angewendet werden: https://github.com/nextcloud/files_fulltextsearch/issues/125#issuecomment-877789742&lt;br /&gt;
&lt;br /&gt;
Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet:&lt;br /&gt;
&lt;br /&gt;
  cd nextcloud/&lt;br /&gt;
  php occ fulltextsearch:live -q&lt;br /&gt;
&lt;br /&gt;
Die Monit Konfiguration dafür sieht so aus:&lt;br /&gt;
&lt;br /&gt;
~/bin/start-fulltextsearchlive&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  export HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
  cd $HOME&lt;br /&gt;
  mkdir -p $HOME/var&lt;br /&gt;
  cd $HOME/nextcloud&lt;br /&gt;
  exec php occ fulltextsearch:live -q &amp;amp;&lt;br /&gt;
  echo $! &amp;gt;$HOME/var/fulltextsearchlive.pid&lt;br /&gt;
&lt;br /&gt;
~/bin/stop-fulltextsearchlive&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  export HOME=/home/pacs/xyz00/users/cloud&lt;br /&gt;
  kill $( cat $HOME/var/fulltextsearchlive.pid )&lt;br /&gt;
&lt;br /&gt;
~/.monitrc (siehe oben von der Redis Installation) entsprechend ergänzen:&lt;br /&gt;
  check process fulltextsearchlive with pidfile /home/pacs/xyz00/users/cloud/var/fulltextsearchlive.pid&lt;br /&gt;
      start program &amp;quot;/home/pacs/xyz00/users/cloud/bin/start-fulltextsearchlive&amp;quot;&lt;br /&gt;
      stop program &amp;quot;/home/pacs/xyz00/users/cloud/bin/stop-fulltextsearchlive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Nextcloud Updates =&lt;br /&gt;
&lt;br /&gt;
== Updater über die Shell starten ==&lt;br /&gt;
&lt;br /&gt;
Wenn die NextCloud sich nicht über das Webfrontend updaten lässt, kann der Updater auch per Shell im directory /updater durch ausführen des updater.phar gestartet werden:&lt;br /&gt;
&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud/updater$ chmod u+x updater.phar&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud/updater$ ./updater.phar&lt;br /&gt;
&lt;br /&gt;
Für weitere Informationen kann auf die offizielle Doku ab Ziffer 2. zurückgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
* [https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html#using-the-command-line-based-updater https://docs.nextcloud.com]&lt;br /&gt;
&lt;br /&gt;
Wartungsmodus per Shell ein- oder ausschalten:&lt;br /&gt;
&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off&lt;br /&gt;
&lt;br /&gt;
== Webfrontend-Updater Probleme / Lösungen ==&lt;br /&gt;
&lt;br /&gt;
=== Datenbank: Indizes | Primärschlüssel | Konvertierungen ===&lt;br /&gt;
&lt;br /&gt;
Aufgetreten nach erfolgtem Versionsupdate Nextcloud 19 auf Nextcloud 20&lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgten Update lädt automatisch die Seite: &#039;&#039;&#039;Sicherheits- und Einrichtungswarnungen&#039;&#039;&#039; auf dieser wird angemerkt, dass manuelle Schritte für die Datenbank durchzuführen sind. Dies betrifft Indizes, Primärschlüssel und Konvertierungen. &lt;br /&gt;
&lt;br /&gt;
Per Shell in der directory /nextcloud folgende Kommandos ausführen:&lt;br /&gt;
&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys&lt;br /&gt;
  xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hier dem durch Nextcloud angegebenen Kommando ein &#039;&#039;&#039;php&#039;&#039;&#039; voranzustellen.&lt;br /&gt;
&lt;br /&gt;
== Update per Skript ==&lt;br /&gt;
&lt;br /&gt;
Es ist möglich die regelmäßigen Updates weitgehend zu automatisieren. Ein Skript wäre etwa:&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  if [ -f $HOME/nextcloud/occ ]; then &lt;br /&gt;
    echo &amp;quot;Nextcloud Update&amp;quot;; &lt;br /&gt;
    cd $HOME/nextcloud;&lt;br /&gt;
    php updater/updater.phar -vv --no-backup --no-interaction&lt;br /&gt;
    php occ maintenance:mode --on&lt;br /&gt;
    php occ db:add-missing-primary-keys --no-interaction&lt;br /&gt;
    php occ db:add-missing-columns --no-interaction&lt;br /&gt;
    php occ db:add-missing-indices --no-interaction&lt;br /&gt;
    php occ db:convert-filecache-bigint --no-interaction&lt;br /&gt;
    php occ app:update --all&lt;br /&gt;
    php occ maintenance:mode --off&lt;br /&gt;
  else &lt;br /&gt;
    echo &amp;quot;Keine Nextcloud Installation gefunden&amp;quot;; &lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
= Daten auf HDD Storage =&lt;br /&gt;
== Einrichtung des HDD Storage ==&lt;br /&gt;
&lt;br /&gt;
Um den langsameren aber günstigeren HDD Storage von Hostsharing zu nutzen, kann das data Verzeichnis von SSD auf HDD Storage verschoben werden. Ein symbolischer Link reicht nicht aus, man muss den Pfad in der Nextcloud Konfigurationsdatei anpassen.&lt;br /&gt;
&lt;br /&gt;
 # Nextcloud in Wartungsmodus versetzen&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on&lt;br /&gt;
 # Daten auf HDD Storage verschieben&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ mv data /home/storage/xyz00/users/cloud/&lt;br /&gt;
 # symbolischen Link anlegen&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ ln -s /home/storage/xyz00/users/cloud/data data&lt;br /&gt;
 # Pfad in config.php ändern&lt;br /&gt;
 nano config/config.php&lt;br /&gt;
 # Die Zeile mit &#039;datadirectory&#039; finden und entsprechend ändern:&lt;br /&gt;
 # &#039;datadirectory&#039; =&amp;gt; &#039;/home/storage/xyz00/users/cloud/data&#039;,&lt;br /&gt;
 # Wartungsmodus beenden&lt;br /&gt;
 xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://docs.nextcloud.com/ Nextcloud Dokumentation]&lt;br /&gt;
* [https://apps.nextcloud.com/ Nextcloud Erweiterungen (&amp;quot;Apps&amp;quot;)]&lt;br /&gt;
* [https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/ Optimierung des Caches für Previews]&lt;br /&gt;
* [https://github.com/tpokorra/Hostsharing-Ansible-Nextcloud Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
= Nextcloud Reseller bei HS =&lt;br /&gt;
&lt;br /&gt;
[https://nextcloud.ossaas.de OS SaaS]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Speicherbelegung&amp;diff=5849</id>
		<title>Speicherbelegung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Speicherbelegung&amp;diff=5849"/>
		<updated>2022-07-22T09:37:04Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Paketspeicher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Paketspeicher ==&lt;br /&gt;
&lt;br /&gt;
Der im gesamten Paket zur Verfügung stehende bzw genutzte Speicher kann wie folgt abgefragt werden: &lt;br /&gt;
&lt;br /&gt;
Einloggen als Paketadmin &lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||xyz00@h01:~$ pac-du-quota}}&lt;br /&gt;
Es wird der Speicherplatz (NVMe SSD) und der Zusatz-Speicherplatz (HDD) angezeigt.&lt;br /&gt;
&lt;br /&gt;
oder &lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||xyz00@h01:~$ quota -gs}}&lt;br /&gt;
(g &amp;gt; wir nutzen Gruppenquota, s &amp;gt; für Ausgabe in MB). Die Felder bedeuten:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0em 0em 0em 2em; font-size:1em;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:orange;&amp;quot;&lt;br /&gt;
!Feld !! Bedeutung&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|blocks	|| KB belegt&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|quota || normales (gebuchtes) Limit in KB; &amp;quot;soft quota&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|limit || maximales (temporär toleriertes) Limit in KB; &amp;quot;hard quota&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|grace || Anzahl der Tage, die man noch über &amp;quot;quota&amp;quot; bleiben darf (ist nur gesetzt, wenn blocks&amp;gt;quota)&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|files ||Anzahl der INodes (entspricht nicht immer, aber fast einem File. Lediglich Hardlinks verbrauchen nur einen INode pro &amp;quot;realer&amp;quot; Datei)&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|quota ||normales Limit der INode-Anzahl&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|limit ||maximales Limit der INode-Anzahl&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|grace || Anzahl der Tage, die man noch über &amp;quot;INode-quota&amp;quot; bleiben darf (ist nur gesetzt, wenn quota überschritten ist)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Um zu prüfen, ob ein Paket die Quota bald erreicht oder schon überschritten hat, muss man &#039;&#039;&#039;blocks&#039;&#039;&#039; mit  &#039;&#039;&#039;quota&#039;&#039;&#039; in Verhältnis setzen. Wenn &#039;&#039;&#039;blocks &amp;gt; quota&#039;&#039;&#039;, beginnt die &#039;&#039;grace period&#039;&#039;, während der ein weiterer Anstieg des Speicherverbrauchs noch toleriert wird. In jedem Fall gilt &#039;&#039;&#039;blocks &amp;lt; limit&#039;&#039;&#039;: die &amp;quot;hard quota&amp;quot; kann nicht überschritten werden und liegt z.B. bei 150% der &amp;quot;soft quota&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der genutzte Speicher nur für den Paketadmin selbst kann mit &#039;&#039;&#039;du&#039;&#039;&#039; abgefragt werden: Einloggen als Paket-Admin und &#039;&#039;&#039;du -h&#039;&#039;&#039; eingeben. Der Befehl listet die aktuellen Größen der einzelnen Verzeichnisse auf und am Ende den gesamt belegten Plattenplatz in MB.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die Auflistung (mit &#039;&#039;&#039;du&#039;&#039;&#039;) erfolgt ohne den Speicherplatz der User, für deren Verzeichnisse der Paketadmin kein Zugriffsrecht hat, ohne Dateien in /tmp/ und ohne Datenbanken!}}&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle unser Danke an die Mitglieder Andreas Loesch und Timotheus Pokorra die das hervorragende Skript &#039;pac-du-quota&#039; bereit gestellt haben.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Pakete bei HS]]&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Speicherbelegung&amp;diff=5848</id>
		<title>Speicherbelegung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Speicherbelegung&amp;diff=5848"/>
		<updated>2022-07-22T09:14:49Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Paketspeicher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Paketspeicher ==&lt;br /&gt;
&lt;br /&gt;
Der im gesamten Paket zur Verfügung stehende Speicher kann wie folgt abgefragt werden: &lt;br /&gt;
&lt;br /&gt;
Einloggen als Paketadmin und &#039;&#039;&#039;quota -gs&#039;&#039;&#039; eingeben (wir nutzen Gruppenquota, s für Ausgabe in MB). Die Felder bedeuten:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0em 0em 0em 2em; font-size:1em;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:orange;&amp;quot;&lt;br /&gt;
!Feld !! Bedeutung&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|blocks	|| KB belegt&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|quota || normales (gebuchtes) Limit in KB; &amp;quot;soft quota&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|limit || maximales (temporär toleriertes) Limit in KB; &amp;quot;hard quota&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|grace || Anzahl der Tage, die man noch über &amp;quot;quota&amp;quot; bleiben darf (ist nur gesetzt, wenn blocks&amp;gt;quota)&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|files ||Anzahl der INodes (entspricht nicht immer, aber fast einem File. Lediglich Hardlinks verbrauchen nur einen INode pro &amp;quot;realer&amp;quot; Datei)&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|quota ||normales Limit der INode-Anzahl&lt;br /&gt;
|- style=&amp;quot;background-color:#CAE1FF;&amp;quot;&lt;br /&gt;
|limit ||maximales Limit der INode-Anzahl&lt;br /&gt;
|- style=&amp;quot;background-color:#B9D3EE;&amp;quot;&lt;br /&gt;
|grace || Anzahl der Tage, die man noch über &amp;quot;INode-quota&amp;quot; bleiben darf (ist nur gesetzt, wenn quota überschritten ist)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Um zu prüfen, ob ein Paket die Quota bald erreicht oder schon überschritten hat, muss man &#039;&#039;&#039;blocks&#039;&#039;&#039; mit  &#039;&#039;&#039;quota&#039;&#039;&#039; in Verhältnis setzen. Wenn &#039;&#039;&#039;blocks &amp;gt; quota&#039;&#039;&#039;, beginnt die &#039;&#039;grace period&#039;&#039;, während der ein weiterer Anstieg des Speicherverbrauchs noch toleriert wird. In jedem Fall gilt &#039;&#039;&#039;blocks &amp;lt; limit&#039;&#039;&#039;: die &amp;quot;hard quota&amp;quot; kann nicht überschritten werden und liegt z.B. bei 150% der &amp;quot;soft quota&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der genutzte Speicher für den Paketadmin selbst kann mit &#039;&#039;&#039;du&#039;&#039;&#039; abgefragt werden: Einloggen als Paket-Admin und &#039;&#039;&#039;du -h&#039;&#039;&#039; eingeben. Der Befehl listet die aktuellen Größen der einzelnen Verzeichnisse auf und am Ende den gesamt belegten Plattenplatz in MB.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die Auflistung (mit &#039;&#039;&#039;du&#039;&#039;&#039;) erfolgt ohne den Speicherplatz der User, für deren Verzeichnisse der Paketadmin kein Zugriffsrecht hat, ohne Dateien in /tmp/ und ohne Datenbanken!}}&lt;br /&gt;
&lt;br /&gt;
Will man eine Übersicht über die Speicherbelegung aller User im Paket, verwendet man den Hostsharing-eigenen Befehl &#039;&#039;&#039;du-pac&#039;&#039;&#039;. Achtung dort wird aktuell nur der SSD Speicher angezeigt.&lt;br /&gt;
&lt;br /&gt;
Von unserem Mitglied Andreas Loesch, mit Anpassungen von Timotheus Pokorra, gibt es dazu außerdem das hervorragende Skript &#039;&#039;&#039;pac-du-quota&#039;&#039;&#039;, welches die Speicherplatzübersicht von NVMe SSD und unseren STORAGE HDD aller User eines Hostsharing-Paketes auflistet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Pakete bei HS]]&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=CiviCRM_installieren&amp;diff=5811</id>
		<title>CiviCRM installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=CiviCRM_installieren&amp;diff=5811"/>
		<updated>2022-05-20T13:41:36Z</updated>

		<summary type="html">&lt;p&gt;Chg93-hsdoku: /* Installation mit Ansible */  playbook-install.yml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
&lt;br /&gt;
[https://civicrm.org/de CiviCRM] ist eine Verwaltungssoftware für Non-Profit-Organisationen, Verbände, Stiftungen, Vereine usw.&lt;br /&gt;
&lt;br /&gt;
CRM steht für Customer-Relationship-Management bzw. Constituent-Relationship-Management, also das Verwalten der Beziehung zu Spendern, Freiwilligen, Unterstützern, Newsletterabonnenten usw.&lt;br /&gt;
&lt;br /&gt;
CiviCRM ist in PHP geschrieben. Es ist keine eigenständige Anwendung, und muss daher entweder auf Wordpress, Drupal oder Joomla installiert werden. Von den Entwicklern wird Drupal empfohlen.&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal und CiviCRM automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-CiviCRM/&lt;br /&gt;
&lt;br /&gt;
Es wird zuerst Drupal 9 eingerichtet, und dann die deutsche Version von CiviCRM 5.41 installiert.&lt;br /&gt;
&lt;br /&gt;
== Installation mit Ansible ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind im Benutzer xyz00 auszuführen:&lt;br /&gt;
&lt;br /&gt;
 $ touch .hsadmin.properties&lt;br /&gt;
 $ chmod 600 .hsadmin.properties&lt;br /&gt;
 $ vi .hsadmin.properties&lt;br /&gt;
&lt;br /&gt;
Es muss in diese Datei das Passwort des Paketadministrators, also von xyz00, eingetragen werden. Das ist das gleiche Passwort, das auf https://admin.hostsharing.net funktioniert.&lt;br /&gt;
&lt;br /&gt;
 xyz00.passWord=insertpkgadminpasswordhere&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um CiviCRM mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/tpokorra/Hostsharing-Ansible-CiviCRM.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
 $ cd Hostsharing-Ansible-CiviCRM&lt;br /&gt;
 $ cp inventory.yml my.inventory.yml&lt;br /&gt;
 $ vi my.inventory.yml&lt;br /&gt;
&lt;br /&gt;
In der my.inventory.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 $ ansible-playbook -i my.inventory.yml playbook-install.yml -k -K&lt;br /&gt;
&lt;br /&gt;
Es kann auch die Option -k weggelassen werden, wenn man sich über einen SSH Key mit xyz00@xyz00.hostsharing.net verbindet.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://civicrm.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
Dann zu CiviCRM gehen, und unter Administration / Verwaltungskonsole auf Systemstatus klicken. Dort wird man auf weitere Dinge hingewiesen, die noch eingerichtet werden müssen, z.B. das Standard-Postfach und die Daten der eigenen Organisation.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Civicrm einrichtung.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&lt;br /&gt;
Updates werden hier beschrieben:&lt;br /&gt;
* für Drupal: https://www.drupal.org/docs/updating-drupal/updating-drupal-core-via-composer&lt;br /&gt;
* für CiviCRM: https://docs.civicrm.org/sysadmin/en/latest/upgrade/drupal8/&lt;br /&gt;
&lt;br /&gt;
Es gibt auch ein Playbook im Ansible Verzeichnis. Dieses sollte aber nur als Anleitung genommen werden.&lt;br /&gt;
https://github.com/tpokorra/Hostsharing-Ansible-CiviCRM/blob/main/playbook-update.yml&lt;br /&gt;
&lt;br /&gt;
Updates sollten immer erst auf einem Testsystem durchgeführt werden. Vor der Durchführung eines Updates auf dem Produktivsystem sollte ein Backup erstellt werden, das im Fall eines Problems wiederhergestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
*[https://civicrm.org/ Englische Webseite des CiviCRM Projekts]&lt;br /&gt;
*[https://sfe-ev.org/ Software für Engagierte e.V.: CiviCRM Support in Deutschland]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-CiviCRM-Drupal Ansible Playbook für Hostsharing (Drupal)]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-CiviCRM-WordPress Ansible Playbook für Hostsharing (WordPress)]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:CRM]]&lt;/div&gt;</summary>
		<author><name>Chg93-hsdoku</name></author>
	</entry>
</feed>