<?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=Hsh-marcsandlus</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=Hsh-marcsandlus"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Hsh-marcsandlus"/>
	<updated>2026-04-29T21:00:52Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Container&amp;diff=7422</id>
		<title>Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Container&amp;diff=7422"/>
		<updated>2025-09-10T17:58:32Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Übersicht ==&lt;br /&gt;
&lt;br /&gt;
Es gibt die Möglichkeit, einen Container Server mit Docker oder mit Podman zu buchen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Managed Umgebung, also ohne Root-Rechte, wo Docker bzw. Podman rootless ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Falls vom Installationsskript einer Anwendung Root-Rechte erforderlich sind, kann entweder versucht werden, dies anzupassen, oder es kann ein Cloud Server gebucht werden, wo der Benutzer Root-Rechte hat.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte ==&lt;br /&gt;
&lt;br /&gt;
Bei der Bestellung des Container Servers sollte direkt der Public SSH Key mitgegeben werden, am besten bereits nach dem Ed25519-Standard, siehe auch [https://www.heise.de/tipps-tricks/SSH-Key-erstellen-so-geht-s-4400280.html].&lt;br /&gt;
&lt;br /&gt;
Der Zugriff erfolgt über den Benutzer tallyman über SSH auf den Container Server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
ssh tallyman@vm4xxx.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um einen &amp;quot;Hello World&amp;quot; Docker Container zu starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
tallyman@vm4xxx:~$ docker run hello-world&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entsprechend sieht der Befehl für Podman aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
tallyman@vm4xxx:~$ podman run hello-world&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hilfreiche Befehle für Docker ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
# in einem Ordner ausführen, wo eine Datei mit dem Namen docker-compose.yml liegt, um die Umgebung zu bauen und zu starten:&lt;br /&gt;
docker compose up --detach&lt;br /&gt;
&lt;br /&gt;
# zeige alle laufenden Container&lt;br /&gt;
docker ps -a&lt;br /&gt;
&lt;br /&gt;
# zeige die Logs eines Containers&lt;br /&gt;
docker logs mein-container&lt;br /&gt;
&lt;br /&gt;
# wechsle in eine Shell im Container&lt;br /&gt;
docker exec -t -i mein-container /bin/sh&lt;br /&gt;
&lt;br /&gt;
# Images aktualisieren&lt;br /&gt;
docker compose pull&lt;br /&gt;
&lt;br /&gt;
# Containerumgebung stoppen und löschen&lt;br /&gt;
docker compose down&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hilfreiche Befehle für Podman ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Beispiel Anwendungen ==&lt;br /&gt;
=== Container Umgebung mit Nginx und Certbot ===&lt;br /&gt;
TODO siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/nginx-certbot&lt;br /&gt;
=== Container Umgebung mit Caddy und Python Anwendung ===&lt;br /&gt;
TODO siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/caddy-test&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Prozessmanagement_mit_systemd_im_Userspace&amp;diff=7098</id>
		<title>Prozessmanagement mit systemd im Userspace</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Prozessmanagement_mit_systemd_im_Userspace&amp;diff=7098"/>
		<updated>2024-11-27T08:12:51Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Eigene Serverdienste mit systemd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über systemd ==&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; ist seit einigen Jahren das Init-System aller gängigen Linux-Distributionen. Der &#039;&#039;init&#039;&#039;-Prozess hat im laufenden System die Prozessnummer &amp;quot;1&amp;quot;. Er verwaltet alle anderen Prozesse als Kind-Prozesse.&lt;br /&gt;
&lt;br /&gt;
Auch ein normaler Account ohne besondere Privilegien kann systemd nutzen, um Prozesse im Userspace zu starten und zu kontrollieren. Auf der Hostsharing Managed Operations Platform kann jeder Account mit einer gültigen Login-Shell Dienste unter der Kontrolle von systemd starten. &lt;br /&gt;
&lt;br /&gt;
Im Hostsharing Managed Webspace ist es zwingend, systemd als Prozessmonitor für eigene Serverdienste zu nutzen; auf einem Hostsharing Managed Server ist es die empfohlene Vorgehensweise (&amp;quot;Best practice&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Eigene Serverdienste mit systemd ==&lt;br /&gt;
&lt;br /&gt;
Die systemd-Konfiguration wird in dem Verzeichnis des Benutzers eingerichtet, unter dem die Anwendung laufen soll.&lt;br /&gt;
In diesem Beispiel soll die Anwendung GotoSocial unter der Benutzerkennung von &#039;&#039;xyz00-service&#039;&#039; laufen.&lt;br /&gt;
Nachdem die Anwendung im Benutzer &#039;&#039;xyz00-service&#039;&#039; installiert wurde, erfolgt nun die Konfiguration von systemd in demselben Benutzer.&lt;br /&gt;
&lt;br /&gt;
Benutzer, die systemd steuern sollen, müssen über eine gültige Shell verfügen, so dass man sich per &#039;&#039;ssh&#039;&#039; oder vom Paketadmin mit dem Befehl &#039;&#039;sudo -i -u xyz00-service&#039;&#039; anmelden kann. &lt;br /&gt;
Die Umgebungsvariable &#039;&#039;XDG_RUNTIME_DIR&#039;&#039; sollte im Environment des Users gesetzt sein, wenn man erfolgreich angemeldet ist. Das testet man mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $XDG_RUNTIME_DIR&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe sollte sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-service@h01:~$ echo $XDG_RUNTIME_DIR &lt;br /&gt;
/run/user/112345&lt;br /&gt;
xyz00-service@h01:~$ &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei wird statt &#039;&#039;112345&#039;&#039; eine andere Zahl erscheinen. Diese Zahl ist die numerische User-Id des Users &#039;&#039;xyz00-service&#039;&#039; im System.&lt;br /&gt;
&lt;br /&gt;
=== systemd Units ===&lt;br /&gt;
&lt;br /&gt;
Die systemd-Units für einen User werden im Verzeichnis &#039;&#039;$HOME/.config/systemd/user/&#039;&#039; verwaltet. Dieser Pfad ist fest vorgegeben. Der Pfad muss bei einem neuen Benutzer angelegt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p $HOME/.config/systemd/user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Verzeichnis wird für jeden Service eine Datei mit der Endung &#039;&#039;.service&#039;&#039; angelegt. In diesem Beispiel ist dies eine GotoSocial-Instanz. GotoSocial ist ein einfaches Binärprogramm, das in der Programmiersprache &#039;&#039;Go&#039;&#039; programmiert ist.&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=GotoSocial Service&lt;br /&gt;
#After=my-redis.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
WorkingDirectory=%h/gotosocial&lt;br /&gt;
Environment=&amp;quot;PATH=/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
ExecStart=%h/gotosocial/gotosocial --config-path %h/gotosocial/config.yaml server start&lt;br /&gt;
StandardOutput=append:%h/var/gotosocial.log&lt;br /&gt;
StandardError=inherit&lt;br /&gt;
Restart=always&lt;br /&gt;
PrivateTmp=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;
Folgende Eigenschaften sind einstellbar:&lt;br /&gt;
&lt;br /&gt;
; After: Hier kann eingestellt werden, welcher Dienst bereits laufen muss, bevor dieser Dienst gestartet wird. Wenn GotoSocial eine Redis-Instanz benötigt, könnte das entsprechend eingestellt werden.&lt;br /&gt;
; Type=simple : &#039;&#039;simple&#039;&#039; ist die Voreinstellung und kann weggelassen werden. Evtl. braucht man auch &#039;&#039;forking&#039;&#039;, wenn ein Dienst als Daemon im Hintergrund startet. Wenn man die Wahl hat, sollte man den Dienst immer im Vordergrund starten und nicht forken.&lt;br /&gt;
; WorkingDirectory : ist das Verzeichnis, in dem der Dienst gestartet wird. %h ist in dieser Datei eine Abkürzung für das Home-Verzeichnis des Users.&lt;br /&gt;
; Environment : Hier wird die Variable &#039;&#039;PATH&#039;&#039; definiert. Man kann mehrere Einträge des Namens &#039;&#039;Environment&#039;&#039; eintragen und bei Bedarf eine beliebige Anzahl von Environment-Variablen definieren.&lt;br /&gt;
; ExecStart : Das Programm, das als Dienst ausgeführt wird. Man kann eine komplette Kommandozeile angeben.&lt;br /&gt;
; StandardOutput : Eine Log-Datei, in die die Standardausgabe des laufenden Dienstes geschrieben wird.&lt;br /&gt;
; StandardError : Entsprechend zu &#039;&#039;StandardOutput&#039;&#039;. Mit &#039;&#039;inherit&#039;&#039; wird die Datei von &#039;&#039;StandardOutput&#039;&#039; geerbt.&lt;br /&gt;
; Restart=always : Der Dienst soll grundsätzlich neu gestartet werden, wenn der Prozess unerwartet beendet wird.&lt;br /&gt;
; PrivateTmp=true : &#039;&#039;/tmp&#039;&#039; und &#039;&#039;/var/tmp&#039;&#039; werden temporär im Namespace gemountet, so dass sie nicht mit anderen Prozessen geteilt werden.&lt;br /&gt;
; WantedBy : sollte im Usermodus von systemd meistens &#039;&#039;default.target&#039;&#039; sein. Andere Targets sind z.B. &#039;&#039;base.target&#039;&#039; oder &#039;&#039;timers.target&#039;&#039;. Für eine komplette Liste: &amp;lt;code&amp;gt;systemctl list-units --user --type=target&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RAM- und CPU-Limits ====&lt;br /&gt;
&lt;br /&gt;
Auf Wunsch kann man die RAM- und CPU-Ressourcen für den Dienst begrenzen. Dazu trägt man weitere Eigenschaften im Abschnitt &#039;&#039;Service&#039;&#039; ein:&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;
; MemoryHigh : Weiches RAM-Limit, das ggf. überschritten werden kann, wenn es unvermeidlich ist.&lt;br /&gt;
; MemoryMax : Hartes, absolutes RAM-Limit.&lt;br /&gt;
; CPUQuota : Maximale Belegung eines CPU-Threads in Prozent. Werte über 100% sind sinnvoll, wenn mehr als ein CPU-Thread verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
==== Ausführliche Dokumentation der Direktiven ====&lt;br /&gt;
Eine ausführliche Dokumentation der Direktiven findet sich hier: &lt;br /&gt;
&lt;br /&gt;
https://www.freedesktop.org/software/systemd/man/latest/systemd.directives.html&lt;br /&gt;
&lt;br /&gt;
=== systemd Unit starten und stoppen ===&lt;br /&gt;
&lt;br /&gt;
Nachdem die systemd-Unit definiert ist, soll der Dienst gestartet werden. &lt;br /&gt;
Für die Verwaltung des Dienstes stehen die folgenden Kommandos zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
==== Reload ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdateien im Verzeichnis &#039;&#039;$HOME/.config/systemd/user/&#039;&#039; werden neu eingelesen. Dieses Kommando ist nach jeder Änderung einer  &#039;&#039;.service&#039;&#039;-Datei nötig.&lt;br /&gt;
&lt;br /&gt;
==== Start und Stopp ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user start gotosocial.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user stop gotosocial.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sind die Kommandos zum Starten und Beenden des Dienstes.&lt;br /&gt;
&lt;br /&gt;
==== Enable und Disable ====&lt;br /&gt;
&lt;br /&gt;
Wenn ein Dienst nach einem Reboot des Servers automatisch gestartet werden soll, muss er aktiviert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user enable gotosocial.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn er nicht automatisch nach einem Reboot starten soll, muss der Dienst entsprechend deaktiviert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user disable gotosocial.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sind die Kommandos, die den Dienst für einen Reboot des Servers aktivieren bzw. deaktivieren.&lt;br /&gt;
&lt;br /&gt;
==== Status ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user status gotosocial.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
zeigen den Status aller Dienste des Users bzw. eines bestimmten Dienstes an.&lt;br /&gt;
&lt;br /&gt;
== Zeitgesteuerte Ausführung mit systemd ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von systemd können auch wiederkehrende Aufgaben zeitgesteuert automatisiert werden.&lt;br /&gt;
Cronjobs, die früher für solche Zwecke benutzt wurden, lassen sich also durch systemd Units ersetzen.&lt;br /&gt;
Neben dem »service-file« wird dazu eine weitere Unit, nämlich ein »timer-file«, mit der Endung ».timer« angelegt und aktiviert. &lt;br /&gt;
&lt;br /&gt;
=== Einrichten des »service-files« ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
$ cat $HOME/.config/systemd/user/my-cleanup.service &lt;br /&gt;
&lt;br /&gt;
    [Unit] &lt;br /&gt;
    Description=My Cleanup Service &lt;br /&gt;
&lt;br /&gt;
    [Service] &lt;br /&gt;
    Type=oneshot &lt;br /&gt;
    ExecStart=%h/bin/cleanup-script &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
$ systemctl --user start my-cleanup.service &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einrichten des »timer-files« ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
$ cat $HOME/.config/systemd/user/my-cleanup.timer &lt;br /&gt;
&lt;br /&gt;
    [Unit] &lt;br /&gt;
    Description=Daily My Cleanup Timer &lt;br /&gt;
&lt;br /&gt;
    [Timer] &lt;br /&gt;
    OnCalendar=daily&lt;br /&gt;
    RandomizedDelaySec=3600&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;
Der RandomizedDelay bewirkt, dass der Prozess zufällig im Zeitraum einer Stunde gestartet wird.&lt;br /&gt;
Wenn mehrere Timer-Aufgaben täglich (daily) auf einem System gestartet werden, verhindert diese Einstellung, dass alle Prozesse exakt zur gleichen Zeit starten und das System eventuell überlasten.&lt;br /&gt;
&lt;br /&gt;
Die zufällige Verzögerung sollte in einem sinnvollen Verhältnis zur Frequenz der Zeitsteuerung erfolgen.&lt;br /&gt;
Bei täglich ausgeführten Aufgaben mag eine Stunde (3600 Sekunden) sinnvoll sein.&lt;br /&gt;
Bei Aufgaben, die stündlich ausgeführt werden, wählt man eine kürzere Verzögerung, zum Beispiel fünf Minuten. &lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Dokumentation der Direktiven findet sich hier: &lt;br /&gt;
&lt;br /&gt;
https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html&lt;br /&gt;
&lt;br /&gt;
=== Aktivieren der zeitgesteuerten Ausführung ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
$ systemctl --user enable my-cleanup.timer &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RAM Kontingent eines Webspace ==&lt;br /&gt;
&lt;br /&gt;
Den aktuell belegten RAM eines Webspace &#039;&#039;xyz00&#039;&#039; kann man sich mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status pacs-xyz00.slice&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ansehen.&lt;br /&gt;
&lt;br /&gt;
Etwa in der fünften Zeile der Ausgabe findet man eine Angabe der Form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Memory: 58.4M (max: 14.8G available: 14.8G)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sind aktuell 58,4 Megabyte RAM genutzt, es sind 14,8 Gigabyte RAM für den Webspace verfügbar. Der verfügbare RAM ist das gebuchte Kontingent. Das gebuchte Kontigent wird im Shared Hosting deutlich kleiner sein.&lt;br /&gt;
&lt;br /&gt;
Das RAM Kontingent wird in Schritten von jeweils 128 Ḿegabyte gebucht. Änderungen des RAM Kontingents für einen Webspace nimmt der Service unter [mailto:service@hostsharing.net service@hostsharing.net] entgegen, wie es bei anderen Paketoptionen die Vorgehensweise ist.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* https://www.freedesktop.org/software/systemd/man/latest/systemd.directives.html&lt;br /&gt;
* https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:systemd]]&lt;br /&gt;
[[Kategorie:Eigene Daemons]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Umstellung_von_Daemon-Diensten_auf_systemd&amp;diff=7097</id>
		<title>Umstellung von Daemon-Diensten auf systemd</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Umstellung_von_Daemon-Diensten_auf_systemd&amp;diff=7097"/>
		<updated>2024-11-27T08:05:51Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anlass dieser Anleitung ==&lt;br /&gt;
&lt;br /&gt;
Ab November 2024 unterstützt die Managed Plattform ein RAM Kontingent pro Managed Webspace. Mitglieder buchen für ihre Webspaces jeweils ein RAM Kontingent in Schritten von jeweils 128 Megabyte. Das unterstützt uns besser bei der verursachergerechten Verteilung der Hardwarekosten, als es vorher mit einer Pauschale pro Serverdienst der Fall war. Änderungen des RAM Kontingents für einen Webspace nimmt der Service unter [mailto:service@hostsharing.net service@hostsharing.net] entgegen, wie es bei anderen Paketoptionen die Vorgehensweise ist.&lt;br /&gt;
&lt;br /&gt;
Damit die RAM Kontingente funktionieren, müssen im Managed Webspace alle Anwendungen, die im Userspace laufen, auf systemd umgestellt werden. Das betrifft Anwendungen, die bisher über z.B. cronjob, supervisor oder monit gestartet wurden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch unsere [[Systemd im Userspace]] Dokumentation.&lt;br /&gt;
&lt;br /&gt;
== Praktische Umstellung ==&lt;br /&gt;
&lt;br /&gt;
Für eine Übergangsphase steht jedem Managed Webspace genügend RAM zur Verfügung, um eigene Serverdienste zu starten.&lt;br /&gt;
Nach der Umstellung aller Dienste auf systemd wird dann das tatsächlich benötigte RAM-Kontingent ermittelt und gebucht.&lt;br /&gt;
&lt;br /&gt;
=== cronjob ===&lt;br /&gt;
&lt;br /&gt;
TODO: auf Timer&lt;br /&gt;
&lt;br /&gt;
=== monit ===&lt;br /&gt;
&lt;br /&gt;
TODO: Beispiel&lt;br /&gt;
&lt;br /&gt;
=== supervisor ===&lt;br /&gt;
&lt;br /&gt;
TODO: Beispiel&lt;br /&gt;
&lt;br /&gt;
== Ermittlung und Buchung des benötigten RAM Kontingent ==&lt;br /&gt;
&lt;br /&gt;
TODO: siehe [[Systemd_im_Userspace#RAM_Kontingent_eines_Webspace]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Systemd]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5634</id>
		<title>BBB Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5634"/>
		<updated>2021-09-17T07:37:24Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BBB Meeting =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diese Seite befindet sich gerade im Aufbau und ist noch nicht fertiggestellt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist eine kleine Hilfeseite für das Angebot [https://www.hostsharing.net/bigbluebutton/bbb-meeting/ BBB Meeting] der [https://www.hostsharing.net/ Hostsharing eG].&lt;br /&gt;
&lt;br /&gt;
== Einstiegsseite für Mitglieder ==&lt;br /&gt;
&lt;br /&gt;
Auf der Seite [https://meeting.hs.coop/ meeting.hs.coop] kann sich jedes Mitglied der Hostsharing eG mit seinem Mitgliedsaccount (besteht aus drei Zeichen, i.A. Buchstaben, z.B. &amp;quot;mos&amp;quot;) einloggen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen können beliebig viele Konferenzräume erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Jeder Raum besitzt einen zufälligen, schwer zu erratenden Link, z.B. [https://meeting.hs.coop/b/mos-cpy-mfv-xyz https://meeting.hs.coop/b/mos-cpy-mfv-xyz].&lt;br /&gt;
&lt;br /&gt;
Dieser Link muss dann den weiteren Teilnehmern der Konferenz bekannt gemacht werden, z.B. per E-Mail oder durch Veröffentlichung auf einer Webseite.&lt;br /&gt;
&lt;br /&gt;
== Zugriffseinstellungen für Räume ==&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Einstellungen, die den Zugang zu einem Raum regeln:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionaler Raumzugangscode&#039;&#039;&#039;&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. jeder Teilnehmer, der den Link des Raumes aufruft, kann der Konferenz beitreten (sofern diese begonnen hat oder die Einstellung &amp;quot;Jeder Teilnehmer kann die Konferenz starten&amp;quot; aktiv ist)&lt;br /&gt;
** Teilnehmer können nur durch Eingabe dieses sechsstelligen Codes den Raum betreten&lt;br /&gt;
* &#039;&#039;&#039;Optionaler Code für Moderatoren&#039;&#039;&#039;&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. die Teilnehmer haben i.A. keine Moderatorrechte&lt;br /&gt;
** Teilnehmer können durch Eingabe dieses Codes den Raum als Moderator betreten&lt;br /&gt;
** Dieser Teilnehmer/Moderator startet damit auch ggfs. die Konferenz&lt;br /&gt;
** Mit dieser Option kann das Mitglied auswählten Dritten ermöglichen, eine Konferenz (als Moderator) zu starten. Es muss nur das Moderatorpasswort weitergegeben werden, nicht die Zugangsdaten zum Mitgliedsaccount&lt;br /&gt;
* &#039;&#039;&#039;Freigabe durch Moderator, bevor der Raum betreten werden kann&#039;&#039;&#039;&lt;br /&gt;
** standardmäßig betritt jeder Teilnehmer, der den Link des Raumes aufruft, die Konferenz&lt;br /&gt;
** durch Einschalten dieser Option betreten Teilnehmer nicht mehr sofort die Konferenz, sondern müssen auf die Freigabe durch einen Moderator warten&lt;br /&gt;
** Vorteil: zusätzliche Kontrolle, wer teilnimmt&lt;br /&gt;
* &#039;&#039;&#039;Jeder Teilnehmer kann die Konferenz starten&#039;&#039;&#039;&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. nur Moderatoren können eine Konferenz starten&lt;br /&gt;
** durch Einschalten dieser Option kann jeder Teilnehmer, der den Link aufruft, die Konferenz starten. ** Warnung: Jeder, der den Link zu diesem Raum kennt, kann eine Konferenz starten, die dem Mitglied in Rechnung gestellt wird!&lt;br /&gt;
** Möchte das Mitglied ausgewählten Teilnehmern ermöglichen, eine Konferenz zu starten, empfiehlt sich eher das Setzen eines &amp;quot;Codes für Moderatoren&amp;quot; (siehe oben)&lt;br /&gt;
* &#039;&#039;&#039;Alle Teilnehmer nehmen als Moderator teil&#039;&#039;&#039;&lt;br /&gt;
** standardmäßig nicht gesetzt&lt;br /&gt;
** die Option ist selbsterklärend&lt;br /&gt;
&lt;br /&gt;
== Weitere Dokumentation zu BigBlueButton ==&lt;br /&gt;
&lt;br /&gt;
Unser Mitglied Ferdinand Soethe hat ein sehr nützliches [https://bbb-handbuch.hostsharing.net/Praxishandbuch%20BBB.htm Praxishandbuch zu BigBlueButton] geschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Category:BigBlueButton]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5633</id>
		<title>BBB Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5633"/>
		<updated>2021-09-16T22:24:06Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BBB Meeting =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diese Seite befindet sich gerade im Aufbau und ist noch nicht fertiggestellt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist eine kleine Hilfeseite für das Angebot [https://www.hostsharing.net/bigbluebutton/bbb-meeting/ BBB Meeting] der [https://www.hostsharing.net/ Hostsharing eG].&lt;br /&gt;
&lt;br /&gt;
== Einstiegsseite für Mitglieder ==&lt;br /&gt;
&lt;br /&gt;
Auf der Seite [https://meeting.hs.coop/ meeting.hs.coop] kann sich jedes Mitglied der Hostsharing eG mit seinem Mitgliedsaccount (besteht aus drei Zeichen, i.A. Buchstaben, z.B. &amp;quot;mos&amp;quot;) einloggen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen können beliebig viele Konferenzräume erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Jeder Raum besitzt einen zufälligen, schwer zu erratenden Link, z.B. [https://meeting.hs.coop/b/mos-cpy-mfv-xyz https://meeting.hs.coop/b/mos-cpy-mfv-xyz].&lt;br /&gt;
&lt;br /&gt;
Dieser Link muss dann den weiteren Teilnehmern der Konferenz bekannt gemacht werden, z.B. per E-Mail oder durch Veröffentlichung auf einer Webseite.&lt;br /&gt;
&lt;br /&gt;
== Zugriffseinstellungen für Räume ==&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Einstellungen, die den Zugang zu einem Raum regeln:&lt;br /&gt;
&lt;br /&gt;
* Optionaler Raumzugangscode&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. jeder Teilnehmer, der den Link des Raumes aufruft, die Konferenz&lt;br /&gt;
** Teilnehmer können nur durch Eingabe dieses sechsstelligen Codes den Raum betreten&lt;br /&gt;
* Optionaler Code für Moderatoren&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. die Teilnehmer haben i.A. keine Moderatorrechte&lt;br /&gt;
** Teilnehmer können durch Eingabe dieses Codes den Raum als Moderator betreten&lt;br /&gt;
** Mit dieser Option kann das Mitglied auswählten Dritten ermöglichen, eine Konferenz (als Moderator) zu starten&lt;br /&gt;
* Freigabe durch Moderator, bevor der Raum betreten werden kann&lt;br /&gt;
** standardmäßig betritt jeder Teilnehmer, der den Link des Raumes aufruft, die Konferenz&lt;br /&gt;
** durch Einschalten dieser Option betreten Teilnehmer nicht mehr sofort die Konferenz, sondern müssen auf die Freigabe durch einen Moderator warten&lt;br /&gt;
** Vorteil: zusätzliche Kontrolle, wer teilnehmen soll&lt;br /&gt;
* Jeder Teilnehmer kann die Konferenz starten&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. nur Moderatoren können eine Konferenz starten&lt;br /&gt;
** durch Einschalten dieser Option kann jeder Teilnehmer, der den Link aufruft, die Konferenz starten. ** Warnung: Jeder, der den Link zu diesem Raum kennt, kann eine Konferenz starten, die dem Mitglied in Rechnung gestellt wird!&lt;br /&gt;
** Möchte das Mitglied ausgewählten Teilnehmern ermöglichen, eine Konferenz zu starten, empfiehlt sich eher das Setzen eines &amp;quot;Codes für Moderatoren&amp;quot; (siehe oben)&lt;br /&gt;
* Alle Teilnehmer nehmen als Moderator teil&lt;br /&gt;
** standardmäßig nicht gesetzt&lt;br /&gt;
** die Option ist selbsterklärend&lt;br /&gt;
&lt;br /&gt;
== Weitere Dokumentation zu BigBlueButton ==&lt;br /&gt;
&lt;br /&gt;
Unser Mitglied Ferdinand Soethe hat ein sehr nützliches [https://bbb-handbuch.hostsharing.net/Praxishandbuch%20BBB.htm Praxishandbuch zu BigBlueButton] geschrieben.&lt;br /&gt;
&lt;br /&gt;
[[Category:BigBlueButton]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5632</id>
		<title>BBB Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5632"/>
		<updated>2021-09-16T09:50:52Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BBB Meeting ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diese Seite befindet sich gerade im Aufbau und ist noch nicht fertiggestellt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine kleine Hilfeseite für das Angebot [https://www.hostsharing.net/bigbluebutton/bbb-meeting/ BBB Meeting] der [https://www.hostsharing.net/ Hostsharing eG].&lt;br /&gt;
&lt;br /&gt;
=== Einstiegsseite für Mitglieder ===&lt;br /&gt;
&lt;br /&gt;
Auf der Seite [https://meeting.hs.coop/ meeting.hs.coop] kann sich jedes Mitglied der Hostsharing eG mit seinem Mitgliedsaccount (besteht nur aus drei Zeichen, i.A. Buchstaben, z.B. &amp;quot;mos&amp;quot;) einloggen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen können beliebig viele Konferenzräume erstellt werde.&lt;br /&gt;
&lt;br /&gt;
Jeder Raum besitzt einen zufälligen, schwer zu erratenden Link, z.B. [https://meeting.hs.coop/b/mos-cpy-mfv-xyz https://meeting.hs.coop/b/mos-cpy-mfv-xyz]&lt;br /&gt;
&lt;br /&gt;
Dieser Link muss dann den weiteren Teilnehmern der Konferenz weiter gegeben werden, z.B. per E-Mail.&lt;br /&gt;
&lt;br /&gt;
=== Zugriffseinstellungen für Räume ===&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Einstellungen, die den Zugang zu einem Raum regeln:&lt;br /&gt;
&lt;br /&gt;
* Optionaler Raumzugangscode&lt;br /&gt;
** ist standardmäßig nicht gesetzt&lt;br /&gt;
** Teilnehmer können nur durch Eingabe dieses sechsstelligen Codes den Raum betreten&lt;br /&gt;
* Optionaler Code für Moderatoren&lt;br /&gt;
** ist standardmäßig nicht gesetzt&lt;br /&gt;
** Teilnehmer können durch Eingabe dieses Codes den Raum als Moderator betreten&lt;br /&gt;
** Mit dieser Option kann das Mitglied auswählten Dritten ermöglichen, eine Konferenz (als Moderator) zu starten&lt;br /&gt;
* Freigabe durch Moderator, bevor der Raum betreten werden kann&lt;br /&gt;
** standardmäßig betritt jeder Teilnehmer, der den Link des Raumes aufruft, die Konferenz&lt;br /&gt;
** durch Einschalten dieser Option betreten Teilnehmer nicht mehr sofort die Konferenz, sondern müssen auf die Freigabe durch einen Moderator warten&lt;br /&gt;
** Vorteil: zusätzliche Kontrolle, wer teilnehmen soll&lt;br /&gt;
* Jeder Teilnehmer kann die Konferenz starten&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. nur Moderatoren können eine Konferenz starten&lt;br /&gt;
** durch Einschalten dieser Option kann jeder Teilnehmer, der den Link aufruft, die Konferenz starten. ** Warnung: Jeder, der den Link zu diesem Raum kennt, kann eine Konferenz starten, die dem Mitglied in Rechnung gestellt wird!&lt;br /&gt;
** Möchte das Mitglied ausgewählten Teilnehmern ermöglichen, eine Konferenz zu starten, empfiehlt sich eher das Setzen eines &amp;quot;Codes für Moderatoren&amp;quot; (siehe oben)&lt;br /&gt;
* Alle Teilnehmer nehmen als Moderator teil&lt;br /&gt;
** standardmäßig nicht gesetzt&lt;br /&gt;
** die Option ist selbsterklärend&lt;br /&gt;
&lt;br /&gt;
[[Category:BigBlueButton]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5631</id>
		<title>BBB Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5631"/>
		<updated>2021-09-16T09:49:28Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BBB Meeting ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diese Seite befindet sich gerade im Aufbau und ist noch nicht fertiggestellt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine kleine Hilfeseite für das Angebot [https://www.hostsharing.net/bigbluebutton/bbb-meeting/ BBB Meeting] der [https://www.hostsharing.net/ Hostsharing eG].&lt;br /&gt;
&lt;br /&gt;
=== Einstiegsseite für Mitglieder ===&lt;br /&gt;
&lt;br /&gt;
Auf der Seite [https://meeting.hs.coop/ meeting.hs.coop] kann sich jedes Mitglied der Hostsharing eG mit seinem Mitgliedsaccount (besteht nur aus drei Zeichen, i.A. Buchstaben, z.B. &amp;quot;mos&amp;quot;) einloggen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen können beliebig viele Konferenzräume erstellt werde.&lt;br /&gt;
&lt;br /&gt;
Jeder Raum besitzt einen zufälligen, schwer zu erratenden Link, z.B. [https://meeting.hs.coop/b/mos-cpy-mfv-xyz https://meeting.hs.coop/b/mos-cpy-mfv-xyz]&lt;br /&gt;
&lt;br /&gt;
Dieser Link muss dann den weiteren Teilnehmern der Konferenz weiter gegeben werden, z.B. per E-Mail.&lt;br /&gt;
&lt;br /&gt;
=== Zugriffseinstellungen für Räume ===&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Einstellungen, die den Zugang zu einem Raum regeln:&lt;br /&gt;
&lt;br /&gt;
* Optionaler Raumzugangscode&lt;br /&gt;
** ist standardmäßig nicht gesetzt&lt;br /&gt;
** Teilnehmer können nur durch Eingabe dieses sechsstelligen Codes den Raum betreten&lt;br /&gt;
* Optionaler Code für Moderatoren&lt;br /&gt;
** ist standardmäßig nicht gesetzt&lt;br /&gt;
** Teilnehmer können durch Eingabe dieses Codes den Raum als Moderator betreten&lt;br /&gt;
* Freigabe durch Moderator, bevor der Raum betreten werden kann&lt;br /&gt;
** standardmäßig betritt jeder Teilnehmer, der den Link des Raumes aufruft, die Konferenz&lt;br /&gt;
** durch Einschalten dieser Option betreten Teilnehmer nicht mehr sofort die Konferenz, sondern müssen auf die Freigabe durch einen Moderator warten&lt;br /&gt;
** Vorteil: zusätzliche Kontrolle, wer teilnehmen soll&lt;br /&gt;
* Jeder Teilnehmer kann die Konferenz starten&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. nur Moderatoren können eine Konferenz starten&lt;br /&gt;
** durch Einschalten dieser Option kann jeder Teilnehmer, der den Link aufruft, die Konferenz starten. ** Warnung: Jeder, der den Link zu diesem Raum kennt, kann eine Konferenz starten, die dem Mitglied in Rechnung gestellt wird!&lt;br /&gt;
** Möchte das Mitglied ausgewählten Teilnehmern ermöglichen, eine Konferenz zu starten, empfiehlt sich eher das Setzen eines &amp;quot;Codes für Moderatoren&amp;quot; (siehe oben)&lt;br /&gt;
* Alle Teilnehmer nehmen als Moderator teil&lt;br /&gt;
** standardmäßig nicht gesetzt&lt;br /&gt;
** die Option ist selbsterklärend&lt;br /&gt;
&lt;br /&gt;
[[Category:BigBlueButton]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5630</id>
		<title>BBB Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=BBB_Meeting&amp;diff=5630"/>
		<updated>2021-09-16T09:40:55Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „== BBB Meeting ==  &amp;#039;&amp;#039;&amp;#039;Diese Seite befindet sich gerade im Aufbau und ist noch nicht fertiggestellt&amp;#039;&amp;#039;&amp;#039;  Eine kleine Hilfeseite für das Angebot [https://www.hos…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BBB Meeting ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diese Seite befindet sich gerade im Aufbau und ist noch nicht fertiggestellt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine kleine Hilfeseite für das Angebot [https://www.hostsharing.net/bigbluebutton/bbb-meeting/ BBB Meeting] der [https://www.hostsharing.net/ Hostsharing eG].&lt;br /&gt;
&lt;br /&gt;
=== Einstiegsseite für Mitglieder ===&lt;br /&gt;
&lt;br /&gt;
Auf der Seite [https://meeting.hs.coop/ meeting.hs.coop] kann sich jedes Mitglied der Hostsharing eG mit seinem Mitgliedsaccount (besteht nur aus drei Zeichen, i.A. Buchstaben, z.B. &amp;quot;mos&amp;quot;) einloggen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen können beliebig viele Konferenzräume erstellt werde.&lt;br /&gt;
&lt;br /&gt;
Jeder Raum besitzt einen zufälligen, schwer zu erratenden Link, z.B. [https://meeting.hs.coop/b/mos-cpy-mfv-xyz https://meeting.hs.coop/b/mos-cpy-mfv-xyz]&lt;br /&gt;
&lt;br /&gt;
Dieser Link muss dann den weiteren Teilnehmern der Konferenz weiter gegeben werden, z.B. per E-Mail.&lt;br /&gt;
&lt;br /&gt;
=== Zugriffseinstellungen für Räume ===&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Einstellungen, die den Zugang zu einem Raum regeln:&lt;br /&gt;
&lt;br /&gt;
* Optionaler Raumzugangscode&lt;br /&gt;
** ist standardmäßig nicht gesetzt&lt;br /&gt;
** Teilnehmer können nur durch Eingabe dieses sechsstelligen Codes den Raum betreten&lt;br /&gt;
* Optionaler Code für Moderatoren&lt;br /&gt;
** ist standardmäßig nicht gesetzt&lt;br /&gt;
** Teilnehmer können durch Eingabe dieses Codes den Raum als Moderator betreten&lt;br /&gt;
* Freigabe durch Moderator, bevor der Raum betreten werden kann&lt;br /&gt;
** standardmäßig betritt jeder Teilnehmer, der den Link des Raumes aufruft, die Konferenz&lt;br /&gt;
** durch Einschalten dieser Option betreten Teilnehmer nicht mehr sofort die Konferenz, sondern müssen auf die Freigabe durch einen Moderator warten&lt;br /&gt;
** Vorteil: zusätzliche Kontrolle, wer teilnehmen soll&lt;br /&gt;
* Jeder Teilnehmer kann die Konferenz starten&lt;br /&gt;
** ist standardmäßig nicht gesetzt, d.h. nur das Mitglied kann eine Konferenz starten&lt;br /&gt;
** &lt;br /&gt;
* Alle Teilnehmer nehmen als Moderator teil&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category:BigBlueButton]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Kategorie:BigBlueButton&amp;diff=5629</id>
		<title>Kategorie:BigBlueButton</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Kategorie:BigBlueButton&amp;diff=5629"/>
		<updated>2021-09-16T09:12:05Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „Diese Kategorie enthält alle Seiten zum Thema BigBlueButton bei der Hostsharing eG“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Kategorie enthält alle Seiten zum Thema BigBlueButton bei der Hostsharing eG&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=TLS_Zertifikat_mit_LEGO&amp;diff=5568</id>
		<title>TLS Zertifikat mit LEGO</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=TLS_Zertifikat_mit_LEGO&amp;diff=5568"/>
		<updated>2021-07-28T22:47:46Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TLS Zertifikat mit LEGO =&lt;br /&gt;
&lt;br /&gt;
Für den zentralen Apache Webserver werden bei Hostsharing automatisch TLS Zertifikate über den Dienst &amp;quot;Lets Encrypt&amp;quot; erzeugt und verlängert. Das wird über die Domain-Option &amp;quot;letsencrypt&amp;quot; gesteuert.&lt;br /&gt;
&lt;br /&gt;
Teilweise will man aber eigene Serverdienste betreiben, die nicht über HTTP hinter dem Apache-Proxy erreichbar sind. Beispiele dafür sind ein eigener XMPP Server oder ein Mumble Server. Für diese Server können die Nutzer:innen der Hostsharing Plattform sehr leicht TLS Zertifikate erzeugen, indem sie den zentral installierten LEGO-Bot nutzen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst muss eine Domain vorhanden sein, auf die das Zertifikat ausgestellt werden soll und die im Webspace über HTTP erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Ich nutze hier den Service-User &amp;quot;xyz00-mumble&amp;quot; als Beispiel. Bei diesem User sei die Domain &amp;quot;mumble.hs-example.de&amp;quot; aufgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dann lösche ich bei der Domain die HTTP-Weiterleitungen und die www-Subdomain:&lt;br /&gt;
&lt;br /&gt;
  rm -rf ~/doms/mumble.hs-example.de/subs/www \&lt;br /&gt;
           ~/doms/mumble.hs-example.de/subs-ssl/www \&lt;br /&gt;
           ~/doms/mumble.hs-example.de/htdocs/.htaccess \&lt;br /&gt;
           ~/doms/mumble.hs-example.de/htdocs-ssl/.htaccess &lt;br /&gt;
&lt;br /&gt;
Das erste Zertifikat wird mit dem folgenden Befehl erzeugt:&lt;br /&gt;
&lt;br /&gt;
  /usr/bin/lego -d mumble.hs-example.de -a \&lt;br /&gt;
          --email webmaster@mumble.hs-example.de -k ec256 \&lt;br /&gt;
          --http.webroot $HOME/doms/mumble.hs-example.de/htdocs \&lt;br /&gt;
          --http run&lt;br /&gt;
&lt;br /&gt;
Bei der erfolgreichen Ausführung diese Befehls wurde ein verstecktes Verzeichnis &amp;quot;.lego&amp;quot; angelegt. In diesem Verzeichnis befinden sich die Daten zum neu angelegten Letsencrypt-Account und das Zertifikat mit dem zugehörigen private key.&lt;br /&gt;
&lt;br /&gt;
Die Daten des Zertifikates kann man wie folgt auslesen:&lt;br /&gt;
&lt;br /&gt;
  openssl x509 -in .lego/certificates/mumble.hs-example.de.crt -noout -text&lt;br /&gt;
&lt;br /&gt;
== regelmäßige Verlängerung ==&lt;br /&gt;
&lt;br /&gt;
Für die automatische Verlängerung des Zertifikats können wir einen Cronjob aufsetzen, der zum Beispiel täglich oder wöchentlich läuft:&lt;br /&gt;
&lt;br /&gt;
  $ cat bin/lego-renew &lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  HOME=/home/pacs/xyz00/users/mumble&lt;br /&gt;
  /usr/bin/lego -d mumble.hs-example.de  -a \&lt;br /&gt;
    --email webmaster@mumble.hs-example.de -k ec256 \&lt;br /&gt;
    --http.webroot $HOME/doms/mumble.hs-example.de/htdocs \&lt;br /&gt;
    --http renew&lt;br /&gt;
&lt;br /&gt;
Die Ausführung des Skriptes wird über einen Cronjob gesteuert:&lt;br /&gt;
&lt;br /&gt;
  $ crontab -l&lt;br /&gt;
  # m h  dom mon dow   command&lt;br /&gt;
  HOME=/home/pacs/xyz00/users/mumble&lt;br /&gt;
  MAILTO=webmaster@mumble.hs-example.de&lt;br /&gt;
  &lt;br /&gt;
  # Renew mumble cert&lt;br /&gt;
  34 4 * * 2 $HOME/bin/lego-renew&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=TLS_Zertifikat_mit_LEGO&amp;diff=5567</id>
		<title>TLS Zertifikat mit LEGO</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=TLS_Zertifikat_mit_LEGO&amp;diff=5567"/>
		<updated>2021-07-28T22:45:05Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TLS Zertifikat mit LEGO =&lt;br /&gt;
&lt;br /&gt;
Für den zentralen Apache Webserver werden bei Hostsharing automatisch TLS Zertifikate über den Dienst &amp;quot;Lets Encrypt&amp;quot; erzeugt und verlängert. Das wird über die Domain-Option &amp;quot;letsencrypt&amp;quot; gesteuert.&lt;br /&gt;
&lt;br /&gt;
Teilweise will man aber eigene Serverdienste betreiben, die nicht über HTTP hinter dem Apache-Proxy erreichbar sind. Beispiele dafür sind ein eigener XMPP Server oder ein Mumble Server. Für diese Server können die Nutzer:innen der Hostsharing Plattform sehr leicht TLS Zertifikate erzeugen, indem sie den zentral installierten LEGO-Bot nutzen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst muss eine Domain vorhanden sein, auf die das Zertifikat ausgestellt werden soll und die im Webspace über HTTP erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Ich nutze hier den Service-User &amp;quot;xyz00-mumble&amp;quot; als Beispiel. Bei diesem User sei die Domain &amp;quot;mumble.hs-example.de&amp;quot; aufgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dann lösche ich bei der Domain die HTTP-Weiterleitungen und die www-Subdomain:&lt;br /&gt;
&lt;br /&gt;
  rm -rf ~/doms/mumble.hs-example.de/subs/www \&lt;br /&gt;
           ~/doms/mumble.hs-example.de/subs-ssl/www \&lt;br /&gt;
           ~/doms/mumble.hs-example.de/htdocs/.htaccess \&lt;br /&gt;
           ~/doms/mumble.hs-example.de/htdocs-ssl/.htaccess &lt;br /&gt;
&lt;br /&gt;
Das erste Zertifikat wird mit dem folgenden Befehl erzeugt:&lt;br /&gt;
&lt;br /&gt;
  /usr/bin/lego -d mumble.hs-example.de -a \&lt;br /&gt;
          --email webmaster@mumble.hs-example.de -k ec256 \&lt;br /&gt;
          --http.webroot $HOME/doms/mumble.hs-example.de/htdocs \&lt;br /&gt;
          --http run&lt;br /&gt;
&lt;br /&gt;
Bei der erfolgreichen Ausführung diese Befehls wurde ein verstecktes Verzeichnis &amp;quot;.lego&amp;quot; angelegt. in diesem Verzeichnis befinden sich die Daten zum neu angelegten Letsencrypt-Account und das Zertifikat mit dem zugehörigen private key.&lt;br /&gt;
&lt;br /&gt;
Die Daten des Zertifikates kann man wie folgt auslesen:&lt;br /&gt;
&lt;br /&gt;
  openssl x509 -in .lego/certificates/mumble.hs-example.de.crt -noout -text&lt;br /&gt;
&lt;br /&gt;
== regelmäßige Verlängerung ==&lt;br /&gt;
&lt;br /&gt;
Für die automatische Verlängerung des Zertifikats können wir einen Cronjob aufsetzen, der zum Beispiel täglich oder wöchentlich läuft:&lt;br /&gt;
&lt;br /&gt;
  $ cat bin/lego-renew &lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  HOME=/home/pacs/xyz00/users/mumble&lt;br /&gt;
  /usr/bin/lego -d mumble.hs-example.de  -a \&lt;br /&gt;
    --email webmaster@mumble.hs-example.de -k ec256 \&lt;br /&gt;
    --http.webroot $HOME/doms/mumble.hs-example.de/htdocs \&lt;br /&gt;
    --http renew&lt;br /&gt;
&lt;br /&gt;
Die Ausführung des Skriptes wird über einen Cronjob gesteuert:&lt;br /&gt;
&lt;br /&gt;
  $ crontab -l&lt;br /&gt;
  # m h  dom mon dow   command&lt;br /&gt;
  HOME=/home/pacs/xyz00/users/mumble&lt;br /&gt;
  MAILTO=webmaster@mumble.hs-example.de&lt;br /&gt;
  &lt;br /&gt;
  # Renew mumble cert&lt;br /&gt;
  34 4 * * 2 $HOME/bin/lego-renew&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/BigBlueButton&amp;diff=5302</id>
		<title>Benutzer:Hsh-marcsandlus/BigBlueButton</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/BigBlueButton&amp;diff=5302"/>
		<updated>2020-10-29T11:48:08Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier soll eine Sammlung von Tipps &amp;amp; Tricks zu BigBlueButton bei Hostsharing entstehen, ab einem gewissen Reifegrad der Seite wird sie ins Haupt-Wiki verschoben.&lt;br /&gt;
&lt;br /&gt;
== Problemlösungen ==&lt;br /&gt;
&lt;br /&gt;
Problem: Schlechtes Nutzererlebnis durch abgehacktes Audio&lt;br /&gt;
&lt;br /&gt;
Die Bandbreite des Internetanschlusses auf Teilnehmer*innenseite ist häufig der &amp;quot;Flaschenhals&amp;quot;, der zu einem schlechten Nutzererlebnis bei BigBlueButton führt. Aus verschiedenen Gründen kann der Audiostrom dann nicht mehr flüssig gesendet werden, oder die Audioströme der anderen Nutzer*innen nicht mehr flüssig empfangen werden.&lt;br /&gt;
* Teilnehmer*innen-Maßnahmen&lt;br /&gt;
*# Dringende Empfehlung: Computer durch &#039;&#039;&#039;LAN-Kabel&#039;&#039;&#039; mit Internet verbinden (statt per WLAN)&lt;br /&gt;
*# Falls LAN-Kabel keine Alternative ist, sollte die Teilnehmer*in sich &#039;&#039;&#039;nah am WLAN-Router&#039;&#039;&#039; mit direktem Sichtkontakt (keine Schränke, Mauern) aufhalten, um eine bessere Verbindung zu erhalten&lt;br /&gt;
*# &#039;&#039;&#039;Mobilfunk&#039;&#039;&#039;-Internetverbindung ist nicht zu empfehlen&lt;br /&gt;
*# Der Internetanschluss kann durch &#039;&#039;&#039;andere Aktivitäten&#039;&#039;&#039; (parallele Up-/Downloads) und Nutzer ausgelastet sein (z.B. durch IP-Fernsehen). Diese nach Möglichkeit unterlassen oder verringern&lt;br /&gt;
*# &#039;&#039;&#039;Telefoneinwahl&#039;&#039;&#039;: Falls beim BBB die Telefoneinwahl konfiguriert ist, kann der Internetanschluss damit umgangen werden&lt;br /&gt;
*# &#039;&#039;&#039;Headset statt Lautsprecher&#039;&#039;&#039;: Verwendet eine Teilnehmer*in statt eines Kopfhörers einen Lautsprecher, kann es passieren, dass ein eingeschaltetes Mikrofon die Lautsprecherausgabe wieder aufnimmt und zurück in den Konferenzraum sendet. Solche Rückkoppelungen lassen sich nicht immer technisch erfolgreich unterdrücken. Daher besser Kopfhörer oder direkt ein Headset verwenden.&lt;br /&gt;
*#* Auch bei Kopfhörern/Headsets gilt ebenfalls, dass eine Verbindung per Kabel besser als eine per Funk (z.B. Bluetooth) ist, da Funkverbindungen immer Verzögerungen besitzen&lt;br /&gt;
*# Die &#039;&#039;&#039;eigene Anzeige von Kameras&#039;&#039;&#039; anderer Teilnehmer*innen abschalten, um Internetbandbreite zu sparen (Datensparsamkeitseinstellungen im Menü oben rechts in einem BBB-Raum)&lt;br /&gt;
* Moderations-Maßnahmen&lt;br /&gt;
*# Den Präsentator*innen eine gute Internetverbindung nahelegen, sie sollten die Teilnehmer*innen-Maßnahmen von oben beherzigen &lt;br /&gt;
*# Je &#039;&#039;&#039;weniger Webcams eingeschaltet&#039;&#039;&#039; sind, desto besser. Bei größeren Konferenzen (schon ab 10 Teilnehmern) ist immer davon auszugehen, dass dort jemand mit einer schlechten Internetverbindung teilnimmt. Es sollte daher vorher sichergestellt sein, dass dies nicht ausgerechnet die Präsentator*in ist. Schlechte Internetverbindungen der Teilnehmer*innen haben bereits Probleme mit wenigen aktiven Kameras. Daher sollte die Gesamtanzahl der Kameras immer niedrig bleiben.&lt;br /&gt;
* Server-Maßnahmen&amp;lt;br /&amp;gt;Die Performance des BBB-Servers war bisher bei Hostsharing kein Problem, alle Server waren gut auf die geplanten Konferenzen eingestellt. Bei großen Konferenzen machen einem BBB-Server nur die Momente zu schaffen, in denen mehrere Kameras gleichzeitig eingeschaltet werden. Das ist leicht nachvollziehbar, bei z.B. 100 Teilnehmer*innen müssen von einem Moment auf den nächsten 100 Kamerabilder verteilt werden. Für ein paar Sekunden kann es da zu einer Überlastung des Servers und einer Verzögerung kommen.&amp;lt;br /&amp;gt;Trotzdem gibt es Möglichkeiten, den Server anzupassen, dass es auf Teilnehmer*innenseite nicht so schnell zur Überauslastung der Internetverbindung kommt:&lt;br /&gt;
*# Eine datensparsameres Kameraprofil zur Vorauswahl den Teilnehmer*innen präsentieren (siehe unten)&lt;br /&gt;
*# Die Bitraten der Kameraprofile reduzieren (s.u.)&lt;br /&gt;
*# Die Bitrate von Bildschirmpräsentationen reduzieren (s.u.)&lt;br /&gt;
&lt;br /&gt;
== Anpassungsmöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
Die beste englischsprachige Anlaufstelle ist https://docs.bigbluebutton.org/2.2/customize.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bandbreite auf Teilnehmerseite reduzieren ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teilnehmer*innen-Lösungen&#039;&#039;&#039; &lt;br /&gt;
# Ein datensparsameres Kameraprofil auswählen (z.B. &amp;quot;Niedrige Qualität&amp;quot;)&lt;br /&gt;
# Die eigene Anzeige der Kameras der anderen Teilnehmer*innen abschalten, im Menü oben rechts im BBB-Raum&lt;br /&gt;
# Die Teilnehmer*innen-Maßnahmen beim Problem &amp;quot;Schlechtes Nutzererlebnis durch abgehacktes Audio&amp;quot; beachten&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server-Lösung 1&#039;&#039;&#039;: In der Auswahlbox für Kameraprofile, die jeder Teilnehmer vor dem Einschalten seiner Webcam sieht, ein Profil mit kleinerer Kameraauflösung vorauswählen. Dies bewirkt, dass sich Teilnehmer bewusst für eine bessere Kameraqualität entscheiden müssen, dadurch die durchschnittlichen Kameraqualitäten sinken und somit jeder Teilnehmer (auch die ohne eingeschaltete Webcam) mehr Bandbreite ihres Internetanschlusses zur Verfügung haben.&lt;br /&gt;
&lt;br /&gt;
Datei &amp;lt;code&amp;gt;/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml&amp;lt;/code&amp;gt; per Hand anpassen oder&lt;br /&gt;
&lt;br /&gt;
Updaterobuste Lösung: in der Datei &amp;lt;code&amp;gt;/etc/bigbluebutton/bbb-conf/apply-config.sh&amp;lt;/code&amp;gt; einfügen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;quot;  - Setting camera defaults&amp;quot;&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==low).default&#039; true&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==medium).default&#039; false&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==high).default&#039; false&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==hd).default&#039; false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dies wählt als voreingestelltes Kameraprofil &#039;&#039;low&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server-Lösung 2&#039;&#039;&#039;: Die Bitraten aller Kameraprofile reduzieren&lt;br /&gt;
&lt;br /&gt;
Datei &amp;lt;code&amp;gt;/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml&amp;lt;/code&amp;gt; per Hand anpassen oder&lt;br /&gt;
&lt;br /&gt;
Updaterobuste Lösung: in der Datei &amp;lt;code&amp;gt;/etc/bigbluebutton/bbb-conf/apply-config.sh&amp;lt;/code&amp;gt; einfügen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;quot;  - Setting camera defaults&amp;quot;&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==low).bitrate&#039; 50&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==medium).bitrate&#039; 100&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==high).bitrate&#039; 200&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==hd).bitrate&#039; 300&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dies setzt die Bitraten der vier Kameraprofile auf die gegebenen Werte.&lt;br /&gt;
Die Werkseinstellungen dieser Werte sind übrigens: 100, 200, 500, 800&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/BigBlueButton&amp;diff=5301</id>
		<title>Benutzer:Hsh-marcsandlus/BigBlueButton</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/BigBlueButton&amp;diff=5301"/>
		<updated>2020-10-29T11:40:05Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier soll eine Sammlung von Tipps &amp;amp; Tricks zu BigBlueButton bei Hostsharing entstehen, ab einem gewissen Reifegrad der Seite wird sie ins Haupt-Wiki verschoben.&lt;br /&gt;
&lt;br /&gt;
== Problemlösungen ==&lt;br /&gt;
&lt;br /&gt;
Problem: Schlechtes Nutzererlebnis durch abgehacktes Audio&lt;br /&gt;
&lt;br /&gt;
# Die Bandbreite des Internetanschlusses auf Teilnehmer*innenseite ist häufig der &amp;quot;Flaschenhals&amp;quot;, der zu einem schlechten Nutzererlebnis bei BigBlueButton führt. Aus verschiedenen Gründen kann der Audiostrom dann nicht mehr flüssig gesendet werden, oder die Audioströme der anderen Nutzer*innen nicht mehr flüssig empfangen werden.&lt;br /&gt;
#* Teilnehmer*innen-Maßnahmen&lt;br /&gt;
#*# Dringende Empfehlung: Computer durch &#039;&#039;&#039;LAN-Kabel&#039;&#039;&#039; mit Internet verbinden (statt per WLAN)&lt;br /&gt;
#*# Falls LAN-Kabel keine Alternative ist, sollte die Teilnehmer*in sich &#039;&#039;&#039;nah am WLAN-Router&#039;&#039;&#039; mit direktem Sichtkontakt (keine Schränke, Mauern) aufhalten, um eine bessere Verbindung zu erhalten&lt;br /&gt;
#*# &#039;&#039;&#039;Mobilfunk&#039;&#039;&#039;-Internetverbindung ist nicht zu empfehlen&lt;br /&gt;
#*# Der Internetanschluss kann durch &#039;&#039;&#039;andere Aktivitäten&#039;&#039;&#039; (parallele Up-/Downloads) und Nutzer ausgelastet sein (z.B. durch IP-Fernsehen). Diese nach Möglichkeit unterlassen oder verringern&lt;br /&gt;
#*# &#039;&#039;&#039;Telefoneinwahl&#039;&#039;&#039;: Falls beim BBB die Telefoneinwahl konfiguriert ist, kann der Internetanschluss damit umgangen werden&lt;br /&gt;
#*# &#039;&#039;&#039;Headset statt Lautsprecher&#039;&#039;&#039;: Verwendet eine Teilnehmer*in statt eines Kopfhörers einen Lautsprecher, kann es passieren, dass ein eingeschaltetes Mikrofon die Lautsprecherausgabe wieder aufnimmt und zurück in den Konferenzraum sendet. Solche Rückkoppelungen lassen sich nicht immer technisch erfolgreich unterdrücken. Daher besser Kopfhörer oder direkt ein Headset verwenden.&lt;br /&gt;
#*#* Auch bei Kopfhörern/Headsets gilt ebenfalls, dass eine Verbindung per Kabel besser als eine per Funk (z.B. Bluetooth) ist, da Funkverbindungen immer Verzögerungen besitzen&lt;br /&gt;
#*#* Die eigene Anzeige von Kameras anderer Teilnehmer*innen abschalten, um Internetbandbreite zu sparen (Datensparsamkeitseinstellungen im Menü oben rechts in einem BBB-Raum)&lt;br /&gt;
#* Moderations-Maßnahmen&lt;br /&gt;
#*# Den Präsentator*innen eine gute Internetverbindung nahelegen, sie sollten die Teilnehmer*innen-Maßnahmen von oben beherzigen &lt;br /&gt;
#*# Je &#039;&#039;&#039;weniger Webcams eingeschaltet&#039;&#039;&#039; sind, desto besser. Bei größeren Konferenzen (schon ab 10 Teilnehmern) ist immer davon auszugehen, dass dort jemand mit einer schlechten Internetverbindung teilnimmt. Es sollte daher vorher sichergestellt sein, dass dies nicht ausgerechnet die Präsentator*in ist. Schlechte Internetverbindungen der Teilnehmer*innen haben bereits Probleme mit wenigen aktiven Kameras. Daher sollte die Gesamtanzahl der Kameras immer niedrig bleiben.&lt;br /&gt;
#* Server-Maßnahmen&amp;lt;br /&amp;gt;Die Performance des BBB-Servers war bisher bei Hostsharing kein Problem, alle Server waren gut auf die geplanten Konferenzen eingestellt. Bei großen Konferenzen machen einem BBB-Server nur die Momente zu schaffen, in denen mehrere Kameras gleichzeitig eingeschaltet werden. Das ist leicht nachvollziehbar, bei z.B. 100 Teilnehmer*innen müssen von einem Moment auf den nächsten 100 Kamerabilder verteilt werden. Für ein paar Sekunden kann es da zu einer Überlastung des Servers und einer Verzögerung kommen.&amp;lt;br /&amp;gt;Trotzdem gibt es Möglichkeiten, den Server anzupassen, dass es auf Teilnehmer*innenseite nicht so schnell zur Überauslastung der Internetverbindung kommt:&lt;br /&gt;
#*# Eine datensparsameres Kameraprofil zur Vorauswahl den Teilnehmer*innen präsentieren (siehe unten)&lt;br /&gt;
#*# Die Bitraten der Kameraprofile reduzieren (s.u.)&lt;br /&gt;
#*# Die Bitrate von Bildschirmpräsentationen reduzieren (s.u.)&lt;br /&gt;
&lt;br /&gt;
== Anpassungsmöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
Die beste englischsprachige Anlaufstelle ist https://docs.bigbluebutton.org/2.2/customize.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bandbreite auf Teilnehmerseite reduzieren ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teilnehmer-Lösungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server-Lösung 1&#039;&#039;&#039;: In der Auswahlbox für Kameraprofile, die jeder Teilnehmer vor dem Einschalten seiner Webcam sieht, ein Profil mit kleinerer Kameraauflösung vorauswählen. Dies bewirkt, dass sich Teilnehmer bewusst für eine bessere Kameraqualität entscheiden müssen, dadurch die durchschnittlichen Kameraqualitäten sinken und somit jeder Teilnehmer (auch die ohne eingeschaltete Webcam) mehr Bandbreite ihres Internetanschlusses zur Verfügung haben.&lt;br /&gt;
&lt;br /&gt;
Datei &amp;lt;code&amp;gt;/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml&amp;lt;/code&amp;gt; per Hand anpassen oder&lt;br /&gt;
&lt;br /&gt;
Updaterobuste Lösung: in der Datei &amp;lt;code&amp;gt;/etc/bigbluebutton/bbb-conf/apply-config.sh&amp;lt;/code&amp;gt; einfügen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;quot;  - Setting camera defaults&amp;quot;&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==low).default&#039; true&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==medium).default&#039; false&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==high).default&#039; false&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==hd).default&#039; false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dies wählt als voreingestelltes Kameraprofil &#039;&#039;low&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server-Lösung 2&#039;&#039;&#039;: Die Bitraten aller Kameraprofile reduzieren&lt;br /&gt;
&lt;br /&gt;
Datei &amp;lt;code&amp;gt;/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml&amp;lt;/code&amp;gt; per Hand anpassen oder&lt;br /&gt;
&lt;br /&gt;
Updaterobuste Lösung: in der Datei &amp;lt;code&amp;gt;/etc/bigbluebutton/bbb-conf/apply-config.sh&amp;lt;/code&amp;gt; einfügen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;quot;  - Setting camera defaults&amp;quot;&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==low).bitrate&#039; 50&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==medium).bitrate&#039; 100&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==high).bitrate&#039; 200&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==hd).bitrate&#039; 300&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dies setzt die Bitraten der vier Kameraprofile auf die gegebenen Werte.&lt;br /&gt;
Die Werkseinstellungen dieser Werte sind übrigens: 100, 200, 500, 800&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/BigBlueButton&amp;diff=5300</id>
		<title>Benutzer:Hsh-marcsandlus/BigBlueButton</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/BigBlueButton&amp;diff=5300"/>
		<updated>2020-10-29T11:08:27Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „Hier soll eine Sammlung von Tipps &amp;amp; Tricks zu BigBlueButton bei Hostsharing entstehen, ab einem gewissen Reifegrad der Seite wird sie ins Haupt-Wiki verschoben…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier soll eine Sammlung von Tipps &amp;amp; Tricks zu BigBlueButton bei Hostsharing entstehen, ab einem gewissen Reifegrad der Seite wird sie ins Haupt-Wiki verschoben.&lt;br /&gt;
&lt;br /&gt;
== Problemlösungen ==&lt;br /&gt;
&lt;br /&gt;
Problem: Schlechtes Nutzererlebnis durch abgehacktes Audio&lt;br /&gt;
&lt;br /&gt;
# Die Bandbreite des Internetanschlusses auf Teilnehmer*innenseite ist häufig der &amp;quot;Flaschenhals&amp;quot;, der zu einem schlechten Nutzererlebnis bei BigBlueButton führt. Aus verschiedenen Gründen kann der Audiostrom dann nicht mehr flüssig gesendet werden, oder die Audioströme der anderen Nutzer*innen nicht mehr flüssig empfangen werden.&lt;br /&gt;
#* Teilnehmer*innen-Maßnahmen&lt;br /&gt;
#*# Dringende Empfehlung: Computer durch &#039;&#039;&#039;LAN-Kabel&#039;&#039;&#039; mit Internet verbinden (statt per WLAN)&lt;br /&gt;
#*# Falls LAN-Kabel keine Alternative ist, sollte die Teilnehmer*in sich &#039;&#039;&#039;nah am WLAN-Router&#039;&#039;&#039; mit direktem Sichtkontakt (keine Schränke, Mauern) aufhalten, um eine bessere Verbindung zu erhalten&lt;br /&gt;
#*# &#039;&#039;&#039;Mobilfunk&#039;&#039;&#039;-Internetverbindung ist nicht zu empfehlen&lt;br /&gt;
#*# Der Internetanschluss kann durch &#039;&#039;&#039;andere Aktivitäten&#039;&#039;&#039; (parallele Up-/Downloads) und Nutzer ausgelastet sein (z.B. durch IP-Fernsehen). Diese nach Möglichkeit unterlassen oder verringern&lt;br /&gt;
#*# &#039;&#039;&#039;Telefoneinwahl&#039;&#039;&#039;: Falls beim BBB die Telefoneinwahl konfiguriert ist, kann der Internetanschluss damit umgangen werden&lt;br /&gt;
#*# &#039;&#039;&#039;Headset statt Lautsprecher&#039;&#039;&#039;: Verwendet eine Teilnehmer*in statt eines Kopfhörers einen Lautsprecher, kann es passieren, dass ein eingeschaltetes Mikrofon die Lautsprecherausgabe wieder aufnimmt und zurück in den Konferenzraum sendet. Solche Rückkoppelungen lassen sich nicht immer technisch erfolgreich unterdrücken. Daher besser Kopfhörer oder direkt ein Headset verwenden.&lt;br /&gt;
#*#* Auch bei Kopfhörern/Headsets gilt ebenfalls, dass eine Verbindung per Kabel besser als eine per Funk (z.B. Bluetooth) ist, da Funkverbindungen immer Verzögerungen besitzen&lt;br /&gt;
#* Server-Maßnahmen&lt;br /&gt;
#*#&lt;br /&gt;
&lt;br /&gt;
== Anpassungsmöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
Die beste englischsprachige Anlaufstelle ist https://docs.bigbluebutton.org/2.2/customize.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bandbreite auf Teilnehmerseite reduzieren ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teilnehmer-Lösungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server-Lösung 1&#039;&#039;&#039;: In der Auswahlbox für Kameraprofile, die jeder Teilnehmer vor dem Einschalten seiner Webcam sieht, ein Profil mit kleinerer Kameraauflösung vorauswählen. Dies bewirkt, dass sich Teilnehmer bewusst für eine bessere Kameraqualität entscheiden müssen, dadurch die durchschnittlichen Kameraqualitäten sinken und somit jeder Teilnehmer (auch die ohne eingeschaltete Webcam) mehr Bandbreite ihres Internetanschlusses zur Verfügung haben.&lt;br /&gt;
&lt;br /&gt;
Datei &amp;lt;code&amp;gt;/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml&amp;lt;/code&amp;gt; per Hand anpassen oder&lt;br /&gt;
&lt;br /&gt;
Updaterobuste Lösung: in der Datei &amp;lt;code&amp;gt;/etc/bigbluebutton/bbb-conf/apply-config.sh&amp;lt;/code&amp;gt; einfügen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;quot;  - Setting camera defaults&amp;quot;&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==low).default&#039; true&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==medium).default&#039; false&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==high).default&#039; false&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==hd).default&#039; false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dies wählt als voreingestelltes Kameraprofil &#039;&#039;low&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server-Lösung 2&#039;&#039;&#039;: Die Bitraten aller Kameraprofile reduzieren&lt;br /&gt;
&lt;br /&gt;
Datei &amp;lt;code&amp;gt;/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml&amp;lt;/code&amp;gt; per Hand anpassen oder&lt;br /&gt;
&lt;br /&gt;
Updaterobuste Lösung: in der Datei &amp;lt;code&amp;gt;/etc/bigbluebutton/bbb-conf/apply-config.sh&amp;lt;/code&amp;gt; einfügen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;quot;  - Setting camera defaults&amp;quot;&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==low).bitrate&#039; 50&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==medium).bitrate&#039; 100&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==high).bitrate&#039; 200&lt;br /&gt;
yq w -i $HTML5_CONFIG &#039;public.kurento.cameraProfiles.(id==hd).bitrate&#039; 300&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dies setzt die Bitraten der vier Kameraprofile auf die gegebenen Werte.&lt;br /&gt;
Die Werkseinstellungen dieser Werte sind übrigens: 100, 200, 500, 800&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus&amp;diff=5299</id>
		<title>Benutzer:Hsh-marcsandlus</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus&amp;diff=5299"/>
		<updated>2020-10-29T09:53:53Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Einstiegsseite für Marc O. Sandlus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einstiegsseite für Marc O. Sandlus ==&lt;br /&gt;
&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte]]&lt;br /&gt;
&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/BigBlueButton]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Coturn_Installieren&amp;diff=5273</id>
		<title>Coturn Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Coturn_Installieren&amp;diff=5273"/>
		<updated>2020-08-10T10:03:52Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Coturn STUN- und TURN-Server installieren&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/coturn/coturn Coturn] ist ein STUN- und TURN-Server, der die Steuerung von VoIP-, Video- und Audio-Verbindungen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== Spezielle Installation bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
In jedem dynamischen Webhosting-Paket der Hostsharing eG kann ein Coturn-Server betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Dazu muss für jede Coturn-Instanz die Option &amp;quot;Betrieb eines eigenen Serverdienstes&amp;quot; gebucht werden. Im Bereich des Shared Hosting ist die Option kostenpflichtig. &lt;br /&gt;
&lt;br /&gt;
Diese Anleitung dokumentiert die Installation des Coturn-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 Coturn-Server) auf der paketeigenen IP-Adresse gebunden.&lt;br /&gt;
&lt;br /&gt;
Geben Sie bei der Bestellung der Option &amp;quot;Eigener Serverdienst&amp;quot; an:&lt;br /&gt;
&lt;br /&gt;
# den Service User, mit dessen Rechten der Coturn-Dienst laufen soll (also zum Beispiel &amp;quot;xyz00-coturn&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
&lt;br /&gt;
Coturn ist bereits vorinstalliert. Die STUN-Funktion wenigstens zwei IP-Adressen benötigt, darf als zweite IP-Adresse in diesem Szenario IP-Adresse des Hives bzw. der VM verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
listening-ip=&amp;lt;IP-Adresse-des-Pakets&amp;gt;&lt;br /&gt;
listening-ip=&amp;lt;IP-Adresse-des-Hives/der-VM&amp;gt;&lt;br /&gt;
relay-ip=&amp;lt;IP-Adresse-des-Pakets&amp;gt;&lt;br /&gt;
listening-port=&amp;lt;zugewiesener-Port&amp;gt;&lt;br /&gt;
fingerprint&lt;br /&gt;
lt-cred-mech&lt;br /&gt;
use-auth-secret&lt;br /&gt;
static-auth-secret=&amp;lt;shared-secret&amp;gt;&lt;br /&gt;
realm=&amp;lt;xyz00.hostsharing.net&amp;gt;&lt;br /&gt;
total-quota=100&lt;br /&gt;
bps-capacity=0&lt;br /&gt;
stale-nonce&lt;br /&gt;
no-loopback-peers&lt;br /&gt;
no-multicast-peers&lt;br /&gt;
log-file=&amp;lt;pfad&amp;gt;/turnserver.log&lt;br /&gt;
pidfile=&amp;lt;pfad&amp;gt;/turnserver.pid&lt;br /&gt;
userdb=&amp;lt;pfad&amp;gt;/turnserver.db&lt;br /&gt;
no-tls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start mit turnserver -c &amp;lt;pfad&amp;gt;/turnserver.conf&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:Eigene Daemons]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Procmail&amp;diff=5102</id>
		<title>Procmail</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Procmail&amp;diff=5102"/>
		<updated>2020-03-05T19:26:03Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: typo&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;
&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;
http://lipas.uwasa.fi/~ts/info/proctips.html (Timo&#039;s procmail tips and recipes)&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>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Monit_installieren&amp;diff=5098</id>
		<title>Monit installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Monit_installieren&amp;diff=5098"/>
		<updated>2020-03-03T23:44:13Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Korrekturen&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;
&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/xyz00-user&amp;quot;.&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;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und füllen sie mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&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;/home/pacs/xyz00/etc/apache2/apache2_start&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/etc/apache2/apache2_stop&amp;quot;&lt;br /&gt;
    if failed host example.tld port 8080 with timeout 60 seconds then restart&lt;br /&gt;
&amp;lt;/pre&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;
&#039;&#039;&#039;Start:&#039;&#039;&#039; monit&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Stop:&#039;&#039;&#039; monit quit&lt;br /&gt;
&lt;br /&gt;
=== Start eigener [[Daemon|Daemons]] beim Start des Servers ===&lt;br /&gt;
&lt;br /&gt;
In die eigene [[Cron#Crontab|crontab]] folgenden Eintrag:&lt;br /&gt;
&lt;br /&gt;
 @reboot rm -f $HOME/.monit.pid &amp;amp;&amp;amp; /usr/bin/monit -c &amp;quot;/home/pacs/xyz00/.monitrc&amp;quot;&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;pre&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 disk 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;/pre&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;
 touch .logrotate&lt;br /&gt;
&lt;br /&gt;
Darin schreiben wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&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;/pre&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;
 27 7 * * 5	logrotate -s /home/pacs/xyz00/.logrotate_state /home/pacs/xyz00/.logrotate&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>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Graphics_Magick_installieren&amp;diff=5097</id>
		<title>Graphics Magick installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Graphics_Magick_installieren&amp;diff=5097"/>
		<updated>2020-03-03T23:35:16Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== GraphicsMagick ===&lt;br /&gt;
&lt;br /&gt;
Seit 2002 ist GraphicsMagick die GPL Version von ImageMagick. GraphicsMagick ist aus der damaligen  ImageMagick Version 5.5.2. hervorgegangen.&lt;br /&gt;
&lt;br /&gt;
Die jetzige Version ist 1.3.5.&lt;br /&gt;
Die letzte Version kann man vom  [ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/ FTP server] herunterladen. &lt;br /&gt;
&lt;br /&gt;
Will man diese Version verwenden, muss man die Binaries in das home-Verzeichnis kopieren, auf das der Paket-Admin (z.B. xyz00), unter dem die Domain läuft, zugreifen kann, und diese mit dem tar-Befehl extrahieren:&lt;br /&gt;
&lt;br /&gt;
 xyz00@hopi:~$ tar xvfpz GraphicsMagick-LATEST.tar.gz &lt;br /&gt;
&lt;br /&gt;
Die  Installation vorbereiten  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cd bin/ GraphicsMagick-1.3.5&lt;br /&gt;
 ./configure --prefix=/home/pacs/xyz00 --enable-magick-compat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Programm installieren&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Überprüfen ob alles richtig installiert ist mit&lt;br /&gt;
&lt;br /&gt;
 cd ~/bin&lt;br /&gt;
 &lt;br /&gt;
 xyz00@hopi:~/bin$ls -l&lt;br /&gt;
 total 8925&lt;br /&gt;
 drwxr-xr-x   2 root root    1024 Feb 11 10:57 .&lt;br /&gt;
 drwxr-xr-x  12 root root    1024 Jan 14 11:46 ..&lt;br /&gt;
 -rwxr-xr-x   1 root root    1223 Feb 11 10:57 GraphicsMagick++-config&lt;br /&gt;
 -rwxr-xr-x   1 root root    1266 Feb 11 10:57 GraphicsMagick-config&lt;br /&gt;
 -rwxr-xr-x   1 root root    1250 Feb 11 10:57 GraphicsMagickWand-config&lt;br /&gt;
 -rwxr-xr-x   1 root root 5209711 Feb 11 10:57 PerlMagick&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 animate -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 composite -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 conjure -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 convert -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 display -&amp;gt; gm&lt;br /&gt;
 -rwxr-xr-x   1 root root 3891115 Feb 11 10:57 gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 identify -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 import -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 mogrify -&amp;gt; gm&lt;br /&gt;
 lrwxrwxrwx   1 root root       2 Feb 11 10:57 montage -&amp;gt; gm&lt;br /&gt;
&lt;br /&gt;
===   Für TYPO3 braucht man nur folgende Variablen zu setzen ===&lt;br /&gt;
&lt;br /&gt;
    * [im_combine_filename] = &#039;combine&#039; setzen&lt;br /&gt;
    * [TTFdpi] = &#039;96&#039; setzen&lt;br /&gt;
    * [gif_compress] =&#039;&#039; setzen&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;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Webmaster_on_Demand&amp;diff=5096</id>
		<title>Webmaster on Demand</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Webmaster_on_Demand&amp;diff=5096"/>
		<updated>2020-03-03T23:12:08Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „== Informationen zum Webmaster-on-Demand-Service von Hostsharing.net ==  Der [https://www.hostsharing.net/service/webmaster-on-demand/ Webmaster-on-Demand von…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Informationen zum Webmaster-on-Demand-Service von Hostsharing.net ==&lt;br /&gt;
&lt;br /&gt;
Der [https://www.hostsharing.net/service/webmaster-on-demand/ Webmaster-on-Demand von Hostsharing] kann Ihnen viele Arbeiten abnehmen, zum Beispiel die Grundinstallation von Software.&lt;br /&gt;
&lt;br /&gt;
== Grundinstallation von Software ==&lt;br /&gt;
&lt;br /&gt;
Beauftragen Sie den Webmaster-on-Demand einfach mittels einer E-Mail an [mailto:service@hostsharing.net service@hostsharing.net]. Die E-Mail sollte folgende Informationen enthalten:&lt;br /&gt;
&lt;br /&gt;
* Art: (z.B. WordPress Grundinstallation, weitere Beispiele s.u.)&lt;br /&gt;
* Frist: (z.B. bis 18.00 Uhr am 29.2.2020, relevant für die Dringlichkeitsermittlung)&lt;br /&gt;
* Mitgliederkürzel: (z.B. xyz)&lt;br /&gt;
* Web-Paket: (z.B. xyz00)&lt;br /&gt;
* Benutzer: (z.B. xyz00-wp) (wir empfehlen aus Sicherheitsgründen, einen neuen Benutzernamen zu verwenden/anzugeben)&lt;br /&gt;
* Sub-Domain: (z.B. wp.example.com, example.com sollte bereits in [[HSAdmin]] angelegt sein)&lt;br /&gt;
* Bemerkungen: (z.B. inklusive Matomo-Modul)&lt;br /&gt;
&lt;br /&gt;
Beispiele für installierbare Software (Aufwand in Klammern), weitere auf Anfrage:&lt;br /&gt;
&lt;br /&gt;
* Confluence (2x15 Min.)&lt;br /&gt;
* Jira (2x15 Min.)&lt;br /&gt;
* [[Nextcloud]] (2x15 Min.)&lt;br /&gt;
* Taiga (4x15 Min.)&lt;br /&gt;
* [[Wordpress]] (2x15 Min.)&lt;br /&gt;
* &#039;&#039;weitere auf Anfrage&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=5071</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=5071"/>
		<updated>2019-12-17T20:23:31Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* E-Mail Adressen bei Mailman einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorab: Die Wahl von Mailman 2 ==&lt;br /&gt;
&lt;br /&gt;
Mailman 2 hängt von Python 2.7 ab und wird damit voraussichtlich nur noch eine begrenzte Nutzungsdauer haben. Mailman 3 ist jetzt verfügbar (siehe [[Mailman_3_installieren]]), aber deutlich schwerer und komplexer im Betrieb. Es gibt auch weniger leistungsfähige Software, um E-Mail-Verteiler zu betreiben, wie beispielsweise mlmmj. Für eine Diskussion der Situation im Oktober 2019, siehe das HS-Support-Archiv ab [https://lists.hostsharing.net/archiv/support/2019-October/067243.html hier.]&lt;br /&gt;
&lt;br /&gt;
== Mailman 2 installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer, die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
=== Unter welchem Account installieren? ===&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn wenn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den 2er-Versionen von Mailman (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00): &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== E-Mail Adressen bei Mailman einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine E-Mail an den dabei eingetragenen Listenadministrator. Diese E-Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle E-Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. E-Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeilentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Passworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine E-Mail an die Adresse mailman-subscribe@listen.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@listen.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird listen.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für E-Mailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. listen.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin (xyz00-listen) statt Paketadmin (xyz00): https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin (xyz00-listen): &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de/, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;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:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=5070</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=5070"/>
		<updated>2019-12-17T20:11:59Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Unter welchem Account installieren? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorab: Die Wahl von Mailman 2 ==&lt;br /&gt;
&lt;br /&gt;
Mailman 2 hängt von Python 2.7 ab und wird damit voraussichtlich nur noch eine begrenzte Nutzungsdauer haben. Mailman 3 ist jetzt verfügbar (siehe [[Mailman_3_installieren]]), aber deutlich schwerer und komplexer im Betrieb. Es gibt auch weniger leistungsfähige Software, um E-Mail-Verteiler zu betreiben, wie beispielsweise mlmmj. Für eine Diskussion der Situation im Oktober 2019, siehe das HS-Support-Archiv ab [https://lists.hostsharing.net/archiv/support/2019-October/067243.html hier.]&lt;br /&gt;
&lt;br /&gt;
== Mailman 2 installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer, die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
=== Unter welchem Account installieren? ===&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn wenn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den 2er-Versionen von Mailman (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00): &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== E-Mail Adressen bei Mailman einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine E-Mail an den dabei eingetragenen Listenadministrator. Diese E-Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle E-Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. E-Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Passworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine E-Mail an die Adresse mailman-subscribe@listen.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@listen.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird listen.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für E-Mailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. listen.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin (xyz00-listen) statt Paketadmin (xyz00): https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin (xyz00-listen): &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de/, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;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:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Discourse_installieren&amp;diff=5053</id>
		<title>Discourse installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Discourse_installieren&amp;diff=5053"/>
		<updated>2019-12-05T08:14:44Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Cronjobs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textkasten|gelb|Für Managed Server|Ein funktionierender Discourse-Server erfordert mehrere laufende Server-Dienste. Für den Betrieb ist ein Managed Server sinnvoll.}}&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Support von der Discourse-Community|Die Discourse-Entwickler haben sich entschieden, nur eine mehr oder weniger genormte Installationsmethode (via docker) zu unterstützen. Dies ist so auf der hostsharing-Architektur aufgrund mehrerer Bedenken und Überlegungen nicht möglich. Die Community ist durchaus hilfreich, geht aber davon aus, dass quasi alle Nutzer* eine &amp;quot;supported&amp;quot;e Installation durchgeführt haben. Wenn man in entsprechenden Kanälen nach Hilfe fragt, sollte man unbedingt erwähnen, dass man discourse selber anhand dieser hier lesbaren Anleitung installiert hat, um bereits entsprechenden Kommentaren und Nachfragen vorzugreifen.}}&lt;br /&gt;
&lt;br /&gt;
== Über ==&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird die Installation von discourse, Version 2.1.0 (September 2018) beschrieben.&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-discourse&#039;&#039;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-discourse&#039; als Domain-Administrator, zum Beispiel &#039;&#039;beispiel.discussion&#039;&#039;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_discourseuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_discoursedb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_discourseuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verwendete IP-Ports der Server-Dienste:&lt;br /&gt;
# Redis: localhost:32002&lt;br /&gt;
# Discourse-Web: localhost:13000&lt;br /&gt;
&lt;br /&gt;
== Konfiguration der PostgreSQL Datenbank ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gelb|PostgreSQL Extensions|Die PostgreSQL-Datenbank braucht die extensions ``hstore`` und ``pg_trm``. Diese müssen vom hostsharing-support installiert werden.}}&lt;br /&gt;
&lt;br /&gt;
Ansonsten liefe die Erstellung der Datenbank so:&lt;br /&gt;
&lt;br /&gt;
  su - postgres -c psql&lt;br /&gt;
  CREATE DATABASE discourse;&lt;br /&gt;
  CREATE USER discourse;&lt;br /&gt;
  ALTER USER discourse WITH ENCRYPTED PASSWORD &#039;password&#039;;&lt;br /&gt;
  ALTER DATABASE discourse OWNER TO discourse;&lt;br /&gt;
  \connect discourse&lt;br /&gt;
  CREATE EXTENSION hstore;&lt;br /&gt;
  CREATE EXTENSION pg_trgm;&lt;br /&gt;
&lt;br /&gt;
Entsprechende Funktionalität (von den extensions abgesehen) ist auch über den HSAdmin verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Redis Server ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gelb|Firewall/Redis Port|Leider unterstützt discourse nicht die Kommunikation mit Redis über Unix-Sockets. Dementsprechend muss der für Redis konfigurierte Port von dem hostsharing-Support in der Firewall freigegeben werden.}}&lt;br /&gt;
&lt;br /&gt;
    cd&lt;br /&gt;
    mkdir redis/etc redis/lib redis/log redis/run&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Datei &#039;&#039;/home/pacs/xyz00/users/discourse/redis/etc/redis.conf&#039;&#039; mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
    daemonize no&lt;br /&gt;
    pidfile /home/pacs/xyz00/users/discourse/redis/run/redis-server.pid&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/discourse/redis/log/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/discourse/redis/lib&lt;br /&gt;
&lt;br /&gt;
== Installation von Ruby ==&lt;br /&gt;
&lt;br /&gt;
Als User &#039;&#039;xyz00-discourse&#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.4&lt;br /&gt;
&lt;br /&gt;
== Installation von Discourse selber ==&lt;br /&gt;
&lt;br /&gt;
Weiterhin Als User &#039;&#039;xyz00-discourse&#039;&#039;:  &lt;br /&gt;
&lt;br /&gt;
    cd ~&lt;br /&gt;
    git clone https://github.com/discourse/discourse.git discourse&lt;br /&gt;
    cd ~/discourse&lt;br /&gt;
&lt;br /&gt;
Die stabile Version auschecken:&lt;br /&gt;
&lt;br /&gt;
    git checkout stable&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;
== Konfiguration der Discourse Software ==&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Datei &#039;&#039;/home/pacs/xyz00/users/discourse/discourse/config/discourse.conf&#039;&#039; anhand der Beispiel-Datei:&lt;br /&gt;
&lt;br /&gt;
    cd ~/discourse&lt;br /&gt;
    cp config/discourse_defaults.conf config/discourse.conf&lt;br /&gt;
&lt;br /&gt;
Anpassen folgender Inhalte:&lt;br /&gt;
&lt;br /&gt;
    db_host = 127.0.0.1&lt;br /&gt;
    db_port = 5432&lt;br /&gt;
    #db_backup_port = 5432 #(auskommentieren)&lt;br /&gt;
    db_name = xyz00_discoursedb&lt;br /&gt;
    db_username = xyz00_discourseuser&lt;br /&gt;
    db_password = &amp;quot;&amp;quot; #db password&lt;br /&gt;
    hostname = &amp;quot;discourse.xyz00&amp;quot; # hostname&lt;br /&gt;
    smtp_address = localhost&lt;br /&gt;
    smtp_enable_start_tls = false&lt;br /&gt;
    smtp_openssl_verify_mode = &#039;none&#039;&lt;br /&gt;
    developer_emails = # your email-address&lt;br /&gt;
    redis_host = 127.0.0.1&lt;br /&gt;
    redis_port = 32002&lt;br /&gt;
&lt;br /&gt;
===TODO: Secrets setzen! ===&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;
=== Sidekiq für Hintergrund-Aufgaben konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;config/sidekiq.conf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Initialisieren der Datenbank ===&lt;br /&gt;
&lt;br /&gt;
    export SAFETY_ASSURED=1&lt;br /&gt;
    # In Version 2.0.4 funktioniert db:migrate noch, ansonsten schema:load und seed nutzen!&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;
    RAILS_ENV=production bundle exec rails db:migrate&lt;br /&gt;
&lt;br /&gt;
=== Kompilieren der Assets ===&lt;br /&gt;
&lt;br /&gt;
    RAILS_ENV=production bundle exec rails assets:precompile&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration des Web-Servers (am Beispiel Puma)  ===&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;config/puma.conf&#039;&#039; anpassen (hier nur Änderungen angezeigt):&lt;br /&gt;
&lt;br /&gt;
  APP_ROOT = &#039;/home/pacs/xyz00/users/discourse/discourse&#039;&lt;br /&gt;
  daemonize false&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;supervisor&#039;&#039; benutzt. Hier ein Beispiel für eine Datei &#039;&#039;~/supervisor/etc/supervisord.conf&#039;&#039; (überlange Zeilen werden hier im Wiki umgebrochen)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[supervisord]&lt;br /&gt;
logfile=/home/pacs/xyz00/users/discourse/supervisor/log/supervisord.log&lt;br /&gt;
logfile_maxbytes=50MB&lt;br /&gt;
logfile_backups=10&lt;br /&gt;
loglevel=error&lt;br /&gt;
pidfile=/home/pacs/xyz00/users/discourse/supervisor/run/supervisord.pid&lt;br /&gt;
minfds=1024&lt;br /&gt;
minprocs=200&lt;br /&gt;
childlogdir=/home/pacs/xyz00/users/discourse/supervisor/log/&lt;br /&gt;
&lt;br /&gt;
[unix_http_server]&lt;br /&gt;
file=/home/pacs/xyz00/users/discourse/supervisor/run/supervisord.sock&lt;br /&gt;
&lt;br /&gt;
[rpcinterface:supervisor]&lt;br /&gt;
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface&lt;br /&gt;
&lt;br /&gt;
[supervisorctl]&lt;br /&gt;
serverurl=unix:///home/pacs/xyz00/users/discourse/supervisor/run/supervisord.sock&lt;br /&gt;
&lt;br /&gt;
[program:redis]&lt;br /&gt;
command=/usr/bin/redis-server /home/pacs/xyz00/users/discourse/redis/etc/redis.conf&lt;br /&gt;
stderr_logfile = /home/pacs/xyz00/users/discourse/supervisor/log/redis-stderr.log&lt;br /&gt;
stdout_logfile = /home/pacs/xyz00/users/discourse/supervisor/log/redis-stdout.log&lt;br /&gt;
&lt;br /&gt;
[program:discourse-web]&lt;br /&gt;
directory=/home/pacs/xyz00/users/discourse/discourse&lt;br /&gt;
environment=RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
command=/home/pacs/xyz00/users/discourse/.rbenv/shims/bundle exec puma -C config/puma.rb -b tcp://127.0.0.1:13000&lt;br /&gt;
stderr_logfile = /home/pacs/xyz00/users/discourse/supervisor/log/discourse-web-stderr.log&lt;br /&gt;
stdout_logfile = /home/pacs/xyz00/users/discourse/supervisor/log/discourse-web-stdout.log&lt;br /&gt;
&lt;br /&gt;
[program:discourse-sidekiq]&lt;br /&gt;
directory=/home/pacs/xyz00/users/discourse/discourse&lt;br /&gt;
environment=RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
command=/home/pacs/xyz00/users/discourse/.rbenv/shims/bundle exec sidekiq -C /home/pacs/xyz00/users/discourse/discourse/config/sidekiq.yml&lt;br /&gt;
stderr_logfile = /home/pacs/xyz00/users/discourse/supervisor/log/discourse-sidekiq-stderr.log&lt;br /&gt;
stdout_logfile = /home/pacs/xyz00/users/discourse/supervisor/log/discourse-sidekiq-stdout.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichten des Apache VHost ==&lt;br /&gt;
&lt;br /&gt;
    cd ~/doms/beispiel.discuss&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; (durch das gelinkte Verzeichnis entspricht das dem Pfad /home/pacs/xyz00/users/discourse/discourse/public/.htaccess ) mit dem Editor der Wahl öffnen und folgende Konfiguration einfügen:&lt;br /&gt;
&lt;br /&gt;
  DirectoryIndex disabled&lt;br /&gt;
  &lt;br /&gt;
  RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
  &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://127.0.0.1:13000%{REQUEST_URI} [proxy,last]&lt;br /&gt;
&lt;br /&gt;
== Cronjobs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cron&#039;&#039; wird genutzt, um nach dem Server reboot &#039;&#039;supervisord&#039;&#039; zu starten.&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/discourse&lt;br /&gt;
    MAILTO=discourse@beispiel.discuss&lt;br /&gt;
    RAILS_ENV=production&lt;br /&gt;
    NUM_DAYS=31&lt;br /&gt;
    &lt;br /&gt;
  @reboot         /usr/bin/supervisord -c /home/pacs/xyz00/users/discourse/supervisor/etc/supervisord.conf&lt;br /&gt;
&lt;br /&gt;
== Wartung ==&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
Discourse macht selbstätig backups und legt diese unter &#039;public/backups&#039; ab. Enthalten ist ein Datenbank-Dump und die hochgeladenen Dateien.&lt;br /&gt;
&lt;br /&gt;
Im Admin-Bereich lassen sich backups auch manuell antreten.&lt;br /&gt;
&lt;br /&gt;
=== Updates ===&lt;br /&gt;
&lt;br /&gt;
Discourse wird über update via mail informieren (dies kann man m.W. abschalten).&lt;br /&gt;
&lt;br /&gt;
==== Am Beispiel von 2.0.4 auf 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
# Im Web-Backend unter Administration-&amp;gt;Backups-&amp;gt; Read-Only Mouds setzen (oder Web Server so konfigurieren, dass keine Zugriffe mehr stattfinden können)&lt;br /&gt;
# Backup&lt;br /&gt;
# Die lokalen Änderungen sichern (git diff &amp;gt; /tmp/discourse.diff)&lt;br /&gt;
# Schauen, ob discourse (endlich :) ) eine neue Ruby-Version nutzt (z.B. in discourse_docker: image/discourse_fast_switch/Dockerfile , discourse: .rubocop&lt;br /&gt;
# git pull&lt;br /&gt;
# (Zur Sicherheit: git checkout stable)&lt;br /&gt;
# bundle&lt;br /&gt;
# RAILS_ENV=production bundle exec rake db:migrate&lt;br /&gt;
# RAILS_ENV=production bundle exec rake assets:precompile&lt;br /&gt;
# Services neu starten (Holzhammer: sv restart all)&lt;br /&gt;
&lt;br /&gt;
==== Am Beispiel von 2.1.0 auf 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
# Im Web-Backend unter Administration-&amp;gt;Backups-&amp;gt; Read-Only Mouds setzen (oder Web Server so konfigurieren, dass keine Zugriffe mehr stattfinden können)&lt;br /&gt;
# Backup&lt;br /&gt;
# Die lokalen Änderungen sichern (cd discourse; git diff &amp;gt; /tmp/discourse.diff)&lt;br /&gt;
# git pull (ggfs konflikte beheben)&lt;br /&gt;
# (Zur Sicherheit: git checkout stable)&lt;br /&gt;
# Schauen, ob discourse (endlich :) ) eine neue Ruby-Version nutzt (z.B. in discourse_docker: image/discourse_fast_switch/Dockerfile , discourse: .rubocop&lt;br /&gt;
# Dies ist der Fall, also&lt;br /&gt;
# rbenv install 2.5&lt;br /&gt;
# rbenv rehash&lt;br /&gt;
# echo &amp;quot;2.5.2&amp;quot; &amp;gt; .ruby-version&lt;br /&gt;
# gem update --system&lt;br /&gt;
# bundle&lt;br /&gt;
# RAILS_ENV=production bundle exec rake db:migrate&lt;br /&gt;
# RAILS_ENV=production bundle exec rake assets:precompile&lt;br /&gt;
# Services neu starten (Holzhammer: sv restart all)&lt;br /&gt;
&lt;br /&gt;
== ToDos ==&lt;br /&gt;
&lt;br /&gt;
* Ein Patch, um Discourse auch via Unix-Socket mit Redis sprechen lassen zu können dürfte relativ einfach sein (es wird ein Wrapper um das redis-gem genutzt).&lt;br /&gt;
* Konfiguration von discourse, um mit postgresql via Unix-Socket zu kommunizieren (DISCOURSE_DB_SOCKET environment variable)&lt;br /&gt;
* Performance-tuning an diversen Stellen, anhand der discourse_docker-Vorgaben (https://github.com/discourse/discourse_docker), z.B.&lt;br /&gt;
** thpoff (huge page settings)&lt;br /&gt;
** unicorn (hat eine wesentlich ausgefeiltere Konfigurations-Vorlage, wahrscheinlich bereits ordentlich optimiert)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* https://help.skysilk.com/support/solutions/articles/9000120927-how-to-install-discourse-without-docker-using-skysilk-vps-&lt;br /&gt;
* https://github.com/discourse/discourse_docker&lt;br /&gt;
* https://github.com/discourse/discourse&lt;br /&gt;
&lt;br /&gt;
== Historie ==&lt;br /&gt;
&lt;br /&gt;
* 2018, 14 . September: Initiale Fassung&lt;br /&gt;
* 2019, Januar: Update-Informationen ergänzt&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Webforen]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Google_Cloud_SDK&amp;diff=5043</id>
		<title>Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Google Cloud SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Google_Cloud_SDK&amp;diff=5043"/>
		<updated>2019-11-26T17:04:46Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „Diese Anleitung beschreibt die Installation der Google Cloud SDK und folgt dabei im wesentlichen der  [https://cloud.google.com/sdk/docs/quickstart-linux?hl=de…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Anleitung beschreibt die Installation der Google Cloud SDK und folgt dabei im wesentlichen der  [https://cloud.google.com/sdk/docs/quickstart-linux?hl=de Google-Anleitung].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schritt 1: Eigenen User-Account anlegen ==&lt;br /&gt;
&lt;br /&gt;
Diese Schritt ist optional, erhöht aber durch die Trennung von den übrigen Anwendungen des Users die Sicherheit.&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen per ssh auf dem &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Einloggen von außerhalb in das Webpaket bei hostsharing:&lt;br /&gt;
ssh -p 222 xyz@xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
# Anlegen eines neuen Unter-Users mittels hsadmin:&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schritt 2: Download und Entpacken des Softwarepakets ==&lt;br /&gt;
&lt;br /&gt;
Ausführen als User, unter dem die Google Cloud SDK ausgeführt werden soll, z.B. durch&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo -u xyz00-gcloud bash -i  # (es sollte keine Passwortabfrage erscheinen)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Anlegen des Installationsverzeichnisses:&lt;br /&gt;
mkdir google-cloud-sdk&lt;br /&gt;
&lt;br /&gt;
# Wechsel in dieses Verzeichnis&lt;br /&gt;
cd google-cloud-sdk&lt;br /&gt;
&lt;br /&gt;
# Download des Installationspakets&lt;br /&gt;
# Hinweis 1: Der Link muss an die aktuelle Version angepasst werden, zum Zeitpunkt des Schreibens war es https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-245.0.0-linux-x86_64.tar.gz&lt;br /&gt;
# Der aktuelle Link findet sich unter https://cloud.google.com/sdk/docs/quickstart-linux?hl=de&lt;br /&gt;
# Hinweis 2: Der Link ist für Webpakete mit 32-Bit ebenfalls anzupassen.&lt;br /&gt;
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-VERSION-linux-x86_64.tar.gz&lt;br /&gt;
&lt;br /&gt;
# Entpacken des Installationspakets:&lt;br /&gt;
tar zxvf google-cloud-sdk*.tar.gz google-cloud-sdk&lt;br /&gt;
&lt;br /&gt;
# Ausführen des Google-Installationsskripts &lt;br /&gt;
# Das Skript fragt spezielle Konfigurationswünsche ab, die alle &lt;br /&gt;
# mit ihren Standardantworten akzeptiert werden können&lt;br /&gt;
./google-cloud-sdk/install.sh&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte man sich kurz ausloggen und erneut einloggen, weil sonst das Kommando &amp;lt;nowiki&amp;gt;gloud&amp;lt;/nowiki&amp;gt; nicht gefunden wird:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Ausloggen:&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
# Einloggen:&lt;br /&gt;
sudo -u xyz00-gcloud bash -i&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schritt 3: Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Die weitere Konfiguration kann nun interaktiv durchgeführt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;gcloud init&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfreich dabei ist auch Google-Anleitung [https://cloud.google.com/sdk/docs/quickstart-linux?hl=de]&lt;br /&gt;
&lt;br /&gt;
== Schritt 4: Testen ==&lt;br /&gt;
&lt;br /&gt;
== Schritt 5: Tipps für die Zeit nach der Installation ==&lt;br /&gt;
&lt;br /&gt;
Da die Software vom User installiert wird, muss er auch dafür sorgen, dass sie auf dem aktuellen Stand bleibt. Die Eingabe von&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;gcloud version&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
zeigt die aktuell installierte Version an und gibt ggfs. auch den Hinweis und den genauen Kommandozeilenbefehl, sie zu aktualisieren:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;gcloud components update&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO Deinstallation&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5042</id>
		<title>Benutzer:Hsh-marcsandlus/Erfolgsrezepte</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5042"/>
		<updated>2019-11-26T16:09:19Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Erfolgsrezepte / Best practices für die Installation von Softwarepaketen auf hostsharing.net ==&lt;br /&gt;
&lt;br /&gt;
Vorgestellt werden die Schritte, um eine bestimmte Software mit &#039;&#039;&#039;geringem technischen Aufwand bzw. Vorwissen&#039;&#039;&#039;, aber &#039;&#039;&#039;sicher&#039;&#039;&#039; auf den Servern von [https://hostsharing.net/ hostsharing.net] zu installieren. &lt;br /&gt;
&lt;br /&gt;
Die meisten Erfolgsrezepte bestehen aus den fünf Schritten&lt;br /&gt;
&lt;br /&gt;
# Anlegen von nötigen (Unter-) Usern, Domains und Datenbanken mittels HSAdmin&lt;br /&gt;
# Download des entsprechenden aktuellen Softwarepakets&lt;br /&gt;
# Konfigurationsanpassungen&lt;br /&gt;
# Testen&lt;br /&gt;
# Tipps für die Zeit nach der Installation&lt;br /&gt;
&lt;br /&gt;
Mit der Installation kann auch unser [https://www.hostsharing.net/service/webmaster-on-demand/ Webmaster-on-demand] beauftragt werden.&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Allgemeines|Allgemeines]]&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Dokuwiki|Dokuwiki]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Contao|Contao]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Matomo|Matomo]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Wordpress|Wordpress]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Drupal|Drupal]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Joomla|Joomla]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Typo3|Typo3]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Google Cloud SDK|Google Cloud SDK]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5033</id>
		<title>Benutzer:Hsh-marcsandlus/Erfolgsrezepte</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5033"/>
		<updated>2019-11-26T11:56:22Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Erfolgsrezepte / Best practices für die Installation von Softwarepaketen auf hostsharing.net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Erfolgsrezepte / Best practices für die Installation von Softwarepaketen auf hostsharing.net ==&lt;br /&gt;
&lt;br /&gt;
Vorgestellt werden die Schritte, um eine bestimmte Software mit &#039;&#039;&#039;geringem technischen Aufwand bzw. Vorwissen&#039;&#039;&#039;, aber &#039;&#039;&#039;sicher&#039;&#039;&#039; auf den Servern von [https://hostsharing.net/ hostsharing.net] zu installieren. &lt;br /&gt;
&lt;br /&gt;
Die meisten Erfolgsrezepte bestehen aus den fünf Schritten&lt;br /&gt;
&lt;br /&gt;
# Anlegen von nötigen (Unter-) Usern, Domains und Datenbanken mittels HSAdmin&lt;br /&gt;
# Download des entsprechenden aktuellen Softwarepakets&lt;br /&gt;
# Konfigurationsanpassungen&lt;br /&gt;
# Testen&lt;br /&gt;
# Tipps für die Zeit nach der Installation&lt;br /&gt;
&lt;br /&gt;
Mit der Installation kann auch unser [https://www.hostsharing.net/service/webmaster-on-demand/ Webmaster-on-demand] beauftragt werden.&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Allgemeines|Allgemeines]]&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Dokuwiki|Dokuwiki]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Contao|Contao]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Matomo|Matomo]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Wordpress|Wordpress]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Drupal|Drupal]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Joomla|Joomla]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Typo3|Typo3]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5032</id>
		<title>Benutzer:Hsh-marcsandlus/Erfolgsrezepte</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5032"/>
		<updated>2019-11-26T11:27:30Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Erfolgsrezepte / Best practices für die Installation von Softwarepaketen auf hostsharing.net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Erfolgsrezepte / Best practices für die Installation von Softwarepaketen auf hostsharing.net ==&lt;br /&gt;
&lt;br /&gt;
Vorgestellt werden die Schritte, um eine bestimmte Software mit &#039;&#039;&#039;geringem technischen Aufwand bzw. Vorwissen&#039;&#039;&#039;, aber &#039;&#039;&#039;sicher&#039;&#039;&#039; auf den Servern von [https://hostsharing.net/ hostsharing.net] zu installieren. &lt;br /&gt;
&lt;br /&gt;
Die meisten Erfolgsrezepte bestehen aus den fünf Schritten&lt;br /&gt;
&lt;br /&gt;
# Anlegen von nötigen (Unter-) Usern, Domains und Datenbanken mittels HSAdmin&lt;br /&gt;
# Download des entsprechenden aktuellen Softwarepakets&lt;br /&gt;
# Konfigurationsanpassungen&lt;br /&gt;
# Testen&lt;br /&gt;
# Tipps für die Zeit nach der Installation&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Allgemeines|Allgemeines]]&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Dokuwiki|Dokuwiki]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Contao|Contao]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Matomo|Matomo]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Wordpress|Wordpress]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Drupal|Drupal]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Joomla|Joomla]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Typo3|Typo3]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5029</id>
		<title>Benutzer:Hsh-marcsandlus/Erfolgsrezepte</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5029"/>
		<updated>2019-11-26T09:04:05Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Erfolgsrezepte / Best practices für Installation von Softwarepaketen auf hostsharing.net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Erfolgsrezepte / Best practices für die Installation von Softwarepaketen auf hostsharing.net ==&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Allgemeines|Allgemeines]]&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Dokuwiki|Dokuwiki]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Contao|Contao]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Matomo|Matomo]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Wordpress|Wordpress]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Drupal|Drupal]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Joomla|Joomla]]&lt;br /&gt;
* [[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Typo3|Typo3]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5028</id>
		<title>Benutzer:Hsh-marcsandlus/Erfolgsrezepte</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus/Erfolgsrezepte&amp;diff=5028"/>
		<updated>2019-11-26T09:00:56Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „ == Erfolgsrezepte / Best practices für Installation von Softwarepaketen auf hostsharing.net ==  Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Allgemeines Ben…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Erfolgsrezepte / Best practices für Installation von Softwarepaketen auf hostsharing.net ==&lt;br /&gt;
&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Allgemeines]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Dokuwiki]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Contao]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Matomo]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Wordpress]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Drupal]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Joomla]]&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte/Typo3]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus&amp;diff=5027</id>
		<title>Benutzer:Hsh-marcsandlus</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus&amp;diff=5027"/>
		<updated>2019-11-26T08:57:32Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Einstiegsseite für Marc O. Sandlus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einstiegsseite für Marc O. Sandlus ==&lt;br /&gt;
&lt;br /&gt;
[[Benutzer:Hsh-marcsandlus/Erfolgsrezepte]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus&amp;diff=5026</id>
		<title>Benutzer:Hsh-marcsandlus</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Hsh-marcsandlus&amp;diff=5026"/>
		<updated>2019-11-26T08:56:23Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: Die Seite wurde neu angelegt: „== Einstiegsseite für Marc O. Sandlus ==“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einstiegsseite für Marc O. Sandlus ==&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Matomo_Installieren&amp;diff=5019</id>
		<title>Matomo Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Matomo_Installieren&amp;diff=5019"/>
		<updated>2019-11-25T17:31:17Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Abschnitt 3.2 &amp;quot;Widerspruchsmöglichkeit bereitstellen&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://piwik.org/ Piwik] ist eine Open Source-Alternative zu Google Analytics und anderen Analysetools. Es kann datenschutzkonform eingerichtet werden und ist mandantenfähig. In Piwik eingerichtete User sehen nur die Daten der für sie freigeschalteten Domains. &lt;br /&gt;
&lt;br /&gt;
Dabei ist eine Installation von Piwik für alle zu analysierenden Webseiten ausreichend. Zum Einrichten von weiteren Webseiten, die Piwik überwachen soll, siehe [[Piwik]].&lt;br /&gt;
&lt;br /&gt;
Piwik benötigt serverseitig [[PHP]] und [[MySQL]] (oder [[PostgreSQL]]) und setzt im Default clientseitig JavaScript voraus. Statische Zählpixel sind alternativ möglich.&lt;br /&gt;
&lt;br /&gt;
== Download und Installation ==&lt;br /&gt;
&lt;br /&gt;
 $ cd&lt;br /&gt;
 $ wget http://piwik.org/latest.zip&lt;br /&gt;
 $ unzip latest.zip&lt;br /&gt;
 $ mv piwik /home/pacs/xyz00/users/otto/doms/mydomain.de/subs/www/.&lt;br /&gt;
&lt;br /&gt;
=== Apache Rewrite ===&lt;br /&gt;
&lt;br /&gt;
Bei einer Installation von komplexen Anwendungen wie z.B. [[Plone]] kann es notwendig sein, die Zugriffe auf den Unterordner piwik vor anderen RewriteRule-Anweisungen einzufügen, damit die Installation erreicht werden kann:  &lt;br /&gt;
&lt;br /&gt;
 $ vim /home/pacs/xyz00/users/otto/doms/mydomain.de/subs/www/.htaccess&lt;br /&gt;
 &lt;br /&gt;
 RewriteBase /&lt;br /&gt;
 RewriteCond %{SERVER_PORT} ^80$&lt;br /&gt;
 RewriteCond %{REQUEST_URI} !=/index.php&lt;br /&gt;
 RewriteRule ^piwik/(.*)$ piwik/$1 [L,PT]&lt;br /&gt;
&lt;br /&gt;
=== Installationsassistent ===&lt;br /&gt;
&lt;br /&gt;
Dann die Seite http://www.mydomain.de/piwik aufrufen und den Installationsassistenten durchklicken. Hierbei müssen Fragen zur MySQL-Anbindung, dem Piwik-Superuser und der ersten Webseite, die in Piwik ausgewertet werden soll, beantwortet werden. Der Assistent weist mit deutlicher Farbgebung und einem &amp;quot;Fortschrittsbalken&amp;quot; auf den Fortschritt der Installation hin.&lt;br /&gt;
&lt;br /&gt;
Piwik behauptet von sich eine &amp;quot;5-Minuten-Installation&amp;quot; zu ermöglichen ([http://de.piwik.org/dokumentation/piwik-installieren/ offizielle Installationsanleitung]).&lt;br /&gt;
&lt;br /&gt;
Für die Installation sind die Anleitungen von Hostsharing zum Anlegen und Verwalten von [[Datenbanken]] hilfreich. Folgende Angaben müssen für Piwik bereitgehalten werden:&lt;br /&gt;
* Adresse des Datenbankservers (&amp;quot;localhost&amp;quot;)&lt;br /&gt;
* der Name der angelegten Datenbank&lt;br /&gt;
* der vergebene DB-Benutzername (z.B. xyz00_otto)&lt;br /&gt;
* das DB-Passwort, das beim Anlegen dieser Datenbank für xyz00_otto vergeben wurde)&lt;br /&gt;
* ein (optionales) Datenbank-Prefix (Voreinstellung: piwik_)&lt;br /&gt;
&lt;br /&gt;
Danach wird ein Superuser-Account angelegt, der über einen frei definierbaren Benutzernamen, ein Passwort und eine Mailadresse definiert wird.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig werden Daten der ersten Webseite, die erfasst werden soll, mit abgefragt. Wichtigste Angaben sind Name und URL.&lt;br /&gt;
&lt;br /&gt;
== Datenschutz ==&lt;br /&gt;
&lt;br /&gt;
Um die Installation gemäß deutschen Rechts datenschutzkonform zu halten empfiehlt sich eine Anpassung gemäß der Vorgaben des [https://www.datenschutzzentrum.de/ Unabhängigen Datenschutzzentrums Schleswig-Holstein], die [https://www.datenschutzzentrum.de/uploads/projekte/verbraucherdatenschutz/20110315-webanalyse-piwik.pdf als PDF heruntergeladen werden] kann.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Dokument wird zum Lesen empfohlen. Hieraus sind u.a. wichtig:&lt;br /&gt;
&lt;br /&gt;
=== Abschnitt 3.1 &amp;quot;Plugin AnonymizeIP einsetzen&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Hierfür ist im Piwik-Menü als superuser das Plugin zu aktivieren: Einstellungen &amp;gt; Plugins &amp;gt; AnonymizeIP aktivieren. Die Anzahl der zu kürzenden Oktale gibt man über eine Konfiguration in config/config.ini.php an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Tracker]&lt;br /&gt;
ip_address_mask_length = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Einstellung wird die IP-Adresse z.B. als 89.247.0.0 angezeigt. Siehe hierzu die Erläuterungen im oben verlinkten PDF. Nach Abschnitt 3.6 soll die Lebensdauer der Cookies auf kleine Werte, z.B. weniger als 1 Woche (640800 Sekunden) gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Tracker]&lt;br /&gt;
ip_address_mask_length = 2&lt;br /&gt;
cookie_expire = 640800&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Abschnitt 3.2 &amp;quot;Widerspruchsmöglichkeit bereitstellen&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Piwik ermöglicht opt-out mittels der Nutzung eines Cookies. Die Möglichkeit hierzu ist dem User der Webseite bereitzustellen.  Die Einbindung erfolgt über einen IFrame, dessen Code im Piwik unter Einstellungen &amp;gt; Allgemeine Einstellungen &amp;gt; &amp;quot;Piwik-Deaktivierung für Ihre Besucher&amp;quot; zu finden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe frameborder=&amp;quot;no&amp;quot; width=&amp;quot;600px&amp;quot; height=&amp;quot;200px&amp;quot; src=&amp;quot;http://www.example.com/x_piwik/index.php?module=CoreAdminHome&amp;amp;action=optOut&amp;amp;language=de&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe auch hierzu die Erläuterungen im oben verlinkten PDF.&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:Piwik]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=5018</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=5018"/>
		<updated>2019-11-25T17:23:35Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: &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). 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;
&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 php -u $USER&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 der $USER werden gelöscht.&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 kommen 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;
==== safe_mode ==== &lt;br /&gt;
{{Textkasten|rot|Veraltete Option|Die Verwendung des Safe Mode wird explizit &#039;&#039;&#039;nicht&#039;&#039;&#039; empfohlen. Mit PHP 5.3.0 ist der Safe Mode veraltet, in PHP 6 gibt es diese Option nicht mehr.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dank (Fast)CGI laufen PHP Skripte zwar &amp;quot;nur&amp;quot; mit Userrechten, dennoch ist es ratsam, den PHP safe_mode zu aktivieren, sofern dies mit den eingesetzten PHP Skripten möglich ist. Der safe_mode kann auch die Daten des Users vor (kompromittierten) PHP Skripten schützen. In der php.ini ist dafür die Option&lt;br /&gt;
&lt;br /&gt;
  safe_mode = On&lt;br /&gt;
&lt;br /&gt;
zu setzten, und die weiteren Optionen sind zu prüfen.&lt;br /&gt;
&lt;br /&gt;
Falls Systembefehle oder Shellskripte ausgeführt werden müssen, sollten diese über ein extra safe_mode_exec_dir außerhalb des open_basedir bereitgestellt werden (z.B. ~/priv/bin).&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 (2019-04-15) Standardversion 7.0.x auch PHP 7.1, 7.2, und 7.3 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 7.3 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub73 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub73 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 7.3 aktivieren===&lt;br /&gt;
&lt;br /&gt;
In der jeweiligen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php73 .php&lt;br /&gt;
Action application/x-httpd-php73 /fastcgi-bin/phpstub73&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 7.3 verwendet.&lt;br /&gt;
&lt;br /&gt;
Auf die gleiche Weise können auch PHP 7.2 oder PHP 7.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;
----&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>Hsh-marcsandlus</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=5017</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Nextcloud&amp;diff=5017"/>
		<updated>2019-11-25T17:20:11Z</updated>

		<summary type="html">&lt;p&gt;Hsh-marcsandlus: /* Nextcloud beschleunigen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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-16.0.4.zip &lt;br /&gt;
  unzip nextcloud-16.0.4.zip &lt;br /&gt;
  rm nextcloud-16.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;
Zur Zeit muss für Nextcloud PHP in der Version 7.3 manuell aktiviert werden. Eine Anleitung dazu findet sich auf der Seite [[PHP#Vorinstallierte_PHP_Version_wechseln]]&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;
  session.save_path=/home/pacs/xyz00/users/cloud/tmp&lt;br /&gt;
  opcache.enable=1&lt;br /&gt;
  opcache.enable_cli=1&lt;br /&gt;
  opcache.interned_strings_buffer=8&lt;br /&gt;
  opcache.max_accelerated_files=10000&lt;br /&gt;
  opcache.memory_consumption=128&lt;br /&gt;
  opcache.save_comments=1&lt;br /&gt;
  opcache.revalidate_freq=1&lt;br /&gt;
&lt;br /&gt;
Dann mit einem Editor diese Datei bearbeiten: In der erste 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&lt;br /&gt;
* Das Verzeichnis &amp;quot;/home/pacs/xyz00/users/cloud/data/&amp;quot; als Daten-Verzeichnis&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 im Browser 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. In Verbindung mit einem Shared Webspace muss Redis als eigener Server Daemon angemeldet werden und ist kostenpflichtig. 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;
  port 32123&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/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 übernimmet &#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 120&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 mailserver localhost&lt;br /&gt;
  set mail-format { from: monit@cloud.example.com }&lt;br /&gt;
  set alert webmaster@example.com&lt;br /&gt;
  set httpd port 32123 address xyz00.hostsharing.net &lt;br /&gt;
      allow nextcloud: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;
Verzeichnis für &#039;&#039;monit&#039;&#039; anlgegen:&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.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;127.0.0.1&#039;,&lt;br /&gt;
      &#039;port&#039; =&amp;gt; 32123,&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;
  1,16,31,46 * * * * /usr/bin/php7.3 $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;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Hsh-marcsandlus</name></author>
	</entry>
</feed>