<?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=Opa00-hostsharing</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=Opa00-hostsharing"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Opa00-hostsharing"/>
	<updated>2026-04-25T22:46:17Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=OpenProject_installieren&amp;diff=7393</id>
		<title>OpenProject installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=OpenProject_installieren&amp;diff=7393"/>
		<updated>2025-07-18T13:21:22Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Upgrade durchführen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
OpenProject ist eine umfangreiche Projektmanagement-Software.  Die Software ist multiprojektfähig;  für jedes Projekt stehen unter anderem folgende Werkzeuge zur Verfügung:&lt;br /&gt;
* Wiki&lt;br /&gt;
* Vorgangsverfolgung (Ticketsystem, Issue Tracker)&lt;br /&gt;
* Zeiterfassung&lt;br /&gt;
* Dokument- und Dateiverwaltung&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt, wie man OpenProject auf der Managed Hosting Plattform von Hostsharing installieren kann. OpenProject lässt sich in jedem Managed Webspace betreiben.&lt;br /&gt;
&lt;br /&gt;
Die Anleitung wurde für OpenProject Version 11 erstellt.&lt;br /&gt;
&lt;br /&gt;
== Ansible Skript ==&lt;br /&gt;
&lt;br /&gt;
Alternativ zur manuellen Installation, die in diesem Wiki Artikel beschrieben wird, gibt es ein&lt;br /&gt;
Ansible Skript, das die Installationsschritte für OpenProject automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/openproject&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
=== Service-User, Domain und Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von HSAdmin werden angelegt:&lt;br /&gt;
# Ein User als Service-User mit &#039;&#039;/bin/bash&#039;&#039; als Shell, zum Beispiel Beispiel: &#039;&#039;xyz00-project&amp;quot;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-project&#039;&#039; als Domain-Administrator, zum Beispiel &amp;quot;prj.example.com&amp;quot;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_dbuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_prjdb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_dbuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung des Webspace ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;leichtgewichtige&amp;quot; Subdomain &amp;quot;www&amp;quot; wird gelöscht. Ebenso die &#039;&#039;.htaccess&#039;&#039;-Datei mit der Weiterleitung dorthin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@h20 $ sudo -u xyz00-project -i&lt;br /&gt;
xyz00-project@h20:~$ cd ~/doms/projekt.example.com/&lt;br /&gt;
xyz00-project@h20:~/doms/projekt.example.com$ rm -rf subs/www/ subs-ssl/www/ htdocs-ssl/.htaccess &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation von Ruby ===&lt;br /&gt;
&lt;br /&gt;
Weiterhin benötigt OpenProject eine geeignete Version der Programmiersprache Ruby.&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Version kann hier abgelesen werden: https://github.com/opf/openproject/blob/stable/11/.ruby-version&lt;br /&gt;
&lt;br /&gt;
Die Installation-Anleitung für OpenProject schlägt für die Installation &#039;&#039;rbenv&#039;&#039; vor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~/doms/projekt.example.com$ cd&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv&lt;br /&gt;
xyz00-project@h20:~$ touch .profile&lt;br /&gt;
xyz00-project@h20:~$ chmod u+x .profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;eval &amp;quot;$(rbenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build&lt;br /&gt;
xyz00-project@h20:~$ rbenv install 2.7.4&lt;br /&gt;
xyz00-project@h20:~$ rbenv rehash&lt;br /&gt;
xyz00-project@h20:~$ rbenv global 2.7.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Test bitte aufrufen: &#039;&#039;ruby -v&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige sollte etwa das Folgende enthalten:&lt;br /&gt;
ruby 2.7.4pXYZ (....) [x86_64-linux]&lt;br /&gt;
&lt;br /&gt;
=== Installation von Node ===&lt;br /&gt;
&lt;br /&gt;
Die Installation-Anleitung für OpenProject schlägt für die Installation &#039;&#039;nodenv&#039;&#039; vor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/OiNutter/nodenv.git ~/.nodenv&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;export PATH=&amp;quot;$HOME/.nodenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;eval &amp;quot;$(nodenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ git clone git://github.com/OiNutter/node-build.git ~/.nodenv/plugins/node-build&lt;br /&gt;
xyz00-project@h20:~$ nodenv install 12.18.4&lt;br /&gt;
xyz00-project@h20:~$ nodenv rehash&lt;br /&gt;
xyz00-project@h20:~$ nodenv global 12.18.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Test mit &#039;&#039;node --version&#039;&#039; solte anzeigen: v12.18.4&lt;br /&gt;
&lt;br /&gt;
== Installation und Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Installation von OpenProject ===&lt;br /&gt;
&lt;br /&gt;
Wir installieren die OpenProject Community Edition. siehe https://github.com/opf/openproject&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/opf/openproject.git --branch stable/11 --depth 1&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~$ gem update --system&lt;br /&gt;
xyz00-project@h20:~$ gem install bundler&lt;br /&gt;
xyz00-project@h20:~$ bundle update --bundler&lt;br /&gt;
xyz00-project@h20:~$ bundle config set deployment &#039;true&#039;&lt;br /&gt;
xyz00-project@h20:~$ bundle config set without &#039;mysql2 sqlite development test therubyracer docker&#039;&lt;br /&gt;
xyz00-project@h20:~$ bundle install&lt;br /&gt;
xyz00-project@h20:~$ npm install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von OpenProject ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Konfiguration für den Datenbank-Zugriff in der Datei &#039;&#039;config/database.yml&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ cp config/database.yml.example config/database.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der neuen Datei &#039;&#039;database.yml&#039;&#039; wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
production:&lt;br /&gt;
  adapter: postgresql&lt;br /&gt;
  encoding: unicode&lt;br /&gt;
  host: localhost&lt;br /&gt;
  database: xyz00_prjdb (wie oben angegeben)&lt;br /&gt;
  pool: 10&lt;br /&gt;
  username: xyz00_dbuser (wie oben angegeben)&lt;br /&gt;
  password: meinPasswort (wie oben angegeben)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einträge für &#039;&#039;development&#039;&#039; und &#039;&#039;test&#039;&#039; können gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Dann wird die Datei &#039;&#039;configuration.yml&#039;&#039; angelegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ cp config/configuration.yml.example config/configuration.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort erfolgen die Einstellungen für ausgehende E-Mails:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
default:&lt;br /&gt;
  log_level: info&lt;br /&gt;
  email_delivery_method: :smtp&lt;br /&gt;
  smtp_address: localhost&lt;br /&gt;
  smtp_port: 25&lt;br /&gt;
  smtp_domain: example.com&lt;br /&gt;
  #smtp_authentication: :login&lt;br /&gt;
  #smtp_user_name: &amp;quot;openproject@example.net&amp;quot;&lt;br /&gt;
  #smtp_password: &amp;quot;my_openproject_password&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zeilen mit smtp_authentication, smtp_user_name und smtp_password können auskommentiert werden, sie werden in unserem Setup nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Es muss außerdem vermieden werden, dass beim Hochladen von Dateien in /tmp geschrieben wird. Dazu wird das Verzeichnis $HOME/var/tmp angelegt, und die Datei &amp;lt;code&amp;gt;openproject/config/initializers/tmpdir.rb&amp;lt;/code&amp;gt; mit folgendem Inhalt erstellt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot; line&amp;gt;&lt;br /&gt;
class Dir&lt;br /&gt;
  def self.tmpdir&lt;br /&gt;
    &amp;quot;/home/pacs/xyz00/users/project/var/tmp/&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen geheimen Schlüssel erzeugen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ EDITOR=cat ./bin/rails credentials:edit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Initialisiere Datenbank und erzeuge Web-Ressourcen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rails db:prepare&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake assets:precompile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlegen des Administrators ===&lt;br /&gt;
&lt;br /&gt;
Es kann eine Demo Installation installiert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ LOCALE=en ./bin/rake db:seed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird ein Beispiel-Projekt angelegt, das man wieder löschen kann.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist aber, dass der Benutzer &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; mit dem Passwort &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; angelegt wird. Das Passwort muss bei der ersten Anmeldung geändert werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration in Passenger ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/doms/prj.example.com&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ rm -rf app-ssl htdocs-ssl&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ ln -s $HOME/openproject app-ssl&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ ln -s $HOME/openproject/public htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss in einer .htaccess-Datei in diesem Verzeichnis die richtige Umgebung gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
# xyz00-project@h20:~/doms/prj.example.com$ cat .htaccess&lt;br /&gt;
&lt;br /&gt;
SetEnv OPENPROJECT_STORAGE_TMP__PATH /home/pacs/xyz00/users/project/var/tmp/&lt;br /&gt;
SetEnv TMPDIR /home/pacs/xyz00/users/project/var/tmp/&lt;br /&gt;
PassengerRuby /home/pacs/xyz00/users/project/.rbenv/shims/ruby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufsetzen des systemd Timers für Hintergrundprozesse ==&lt;br /&gt;
&lt;br /&gt;
Es werden Benachrichtigungs-E-Mails im Hintergrund verschickt. Dazu muss ein Prozess im Hintergrund gestartet werden. Um Probleme zu vermeiden, dass source nicht zur Verfügung steht, kann der Aufruf in einer eigenen Skriptdatei geschehen, die zwingend mit Bash ausgeführt wird, wo source verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Datei &#039;&#039;/home/pacs/xyz00/users/project/emailjob.sh&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
source ~/.profile&lt;br /&gt;
cd ~/openproject&lt;br /&gt;
RAILS_ENV=&amp;quot;production&amp;quot; ./bin/rake jobs:workoff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Datei &#039;&#039;/home/pacs/xyz00/users/project/jobrestart.sh&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
source ~/.profile&lt;br /&gt;
cd ~/openproject&lt;br /&gt;
RAILS_ENV=&amp;quot;production&amp;quot;  ./bin/delayed_job restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können die Timer eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/openproject_emails.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject mails&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/home/pacs/xyz00/users/project/emailjob.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/openproject_emails.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject mails&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:0/2&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird der Hintergrundprozess alle 2 Minuten gestartet.&lt;br /&gt;
&lt;br /&gt;
Es gibt noch einen Hintergrundjob, den ich einmal in der Stunde neu starte:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/openproject_jobrestart.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject restart job&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/home/pacs/xyz00/users/project/jobrestart.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/openproject_jobrestart.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject restart job&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:22&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
$ systemctl --user enable openproject_emails.timer&lt;br /&gt;
$ systemctl --user start openproject_emails.timer&lt;br /&gt;
$ systemctl --user enable openproject_jobrestart.timer&lt;br /&gt;
$ systemctl --user start openproject_jobrestart.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Upgrade durchführen ==&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Ruby Version kann hier abgelesen werden (ggf. Branch passend wechseln): https://github.com/opf/openproject/blob/stable/11/.ruby-version&lt;br /&gt;
&lt;br /&gt;
Die benötigte Nodejs Version kann im git repository in der package.json unter engine abgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Für das Upgrade von OpenProject 11.2.4 auf 11.3.4, musste eine neue Version von Ruby installiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git -C $HOME/.rbenv/plugins/ruby-build pull&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv install 2.7.4&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv rehash&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv global 2.7.4&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ rm -Rf $HOME/.rbenv/versions/2.7.3/  # alte Version kann gelöscht werden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil das Git Repository bei der Erstinstallation nur einen Branch enthielt, muss nun das Repository passend nachgeladen werden (Beispielhaft für den Branch stable/15)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git remote set-branches --add origin stable/15&lt;br /&gt;
xyz00-project@h20:~/openproject$ git fetch&lt;br /&gt;
xyz00-project@h20:~/openproject$ git checkout stable/15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Verifikation dass das update erfolgreich war, kann der alte Branch gelöscht werden, nach bedarf mit: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git branch -D old_branch_name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generell müssen diese Schritte durchgeführt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git fetch&lt;br /&gt;
xyz00-project@h20:~/openproject$ git pull&lt;br /&gt;
xyz00-project@h20:~/openproject$ gem update --system&lt;br /&gt;
xyz00-project@h20:~/openproject$ bundle install&lt;br /&gt;
xyz00-project@h20:~/openproject$ npm install&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake db:migrate&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake assets:precompile&lt;br /&gt;
xyz00-project@h20:~/openproject$ touch ~/doms/prj.example.com/app-ssl/tmp/restart.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es ein Update der Ruby Version gab muss die neue Version ggf. noch im HS Admin für Passenger eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.openproject.org/installation-and-operations/installation/manual/ Anleitung für die manuelle Installation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/openproject Ansible Playbook für Hostsharing]&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Passenger]]&lt;br /&gt;
[[Kategorie:Projektmanagement]]&lt;br /&gt;
[[Kategorie:Projektverwaltung]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Etherpad_Installieren&amp;diff=7294</id>
		<title>Etherpad Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Etherpad_Installieren&amp;diff=7294"/>
		<updated>2025-03-06T00:14:49Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Etherpad Lite installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Etherpad Lite installieren =&lt;br /&gt;
&lt;br /&gt;
Etherpad ist eine JavaScript-Anwendung mit der mehrere Bearbeiter gleichzeitig einen Text im Browser editieren können. &lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von Etherpad können zum Beispiel die Teilnehmer einer Telefonkonferenz gemeinsam an einem Text-Dokument arbeiten.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
&lt;br /&gt;
Als Paket-Admin &#039;&#039;xyz00&#039;&#039; werden mit HSAdmin ein User angelegt und eine Domain aufgeschaltet. Eine produktive Installation von Etherpad braucht zusätzlich einen MySQL-User und eine MySQL-Datenbank.&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsscript&#039;&#039; können diese Ressourcen wie folgt angelegt werden:&lt;br /&gt;
&lt;br /&gt;
Als Paketadmin &#039;&#039;xyz00&#039;&#039; aufrufen: &amp;lt;code&amp;gt;hsscript -i&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der HSAdmin-Shell gibt man dann ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-pad&#039;, password:&#039;mein-Geheimwort&#039;, shell:&#039;/bin/bash&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;pad.example.com&#039;, user:&#039;xyz00-pad&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_padusr&#039;, password:&#039;anderes-Geheimwort&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_paddb&#039;, owner:&#039;xyz00_padusr&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Etherpad v2.2.7 benötigt &#039;&#039;nodejs&#039;&#039; in einer Version &amp;gt; 18.18. Die Installation erfolgt gemäß der Wiki-Anleitung: [[NodeJS]]&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss der Paketmanager pnpm für Version 2 vorgehalten werden &lt;br /&gt;
&lt;br /&gt;
npm install pnpm@latest-10&lt;br /&gt;
&lt;br /&gt;
Als Paketadmin &#039;&#039;xyz00&#039;&#039; nimmt man mit &amp;lt;code&amp;gt;sudo -u xyz00-pad -i&amp;lt;/code&amp;gt; die Rechte des Domain-Administrators &#039;&#039;xyz00-pad&#039;&#039; für die neue Domain &#039;&#039;pad.example.com&#039;&#039; an.&lt;br /&gt;
&lt;br /&gt;
Die Etherpad-Software kann aus dem Git-Repository bei Github ausgecheckt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
git clone https://github.com/ether/etherpad-lite.git&lt;br /&gt;
cd etherpad-lite/&lt;br /&gt;
git tag -l&lt;br /&gt;
git checkout tags/2.2.7&lt;br /&gt;
./bin/run.sh &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &amp;quot;git checkout tags/2.2.7&amp;quot; wird Release 2.2.7 ausgecheckt, die heute (06.03.2025) aktuelle Version.&lt;br /&gt;
&lt;br /&gt;
Bei der Initialisierung der Anwendung gibt es einige Warnungen, die man ignorieren kann. Wenn die Initialisierung durchgelaufen ist, kann man&lt;br /&gt;
unter der URL http://xyz00.hostsharing.net:9001/ schon die die Etherpad-Anwendung ohne Datenbank und ohne die gewünschte Domain sehen.&lt;br /&gt;
&lt;br /&gt;
Wir brechen das &#039;&#039;run.sh&#039;&#039;-Skript mit Ctrl-c ab.&lt;br /&gt;
&lt;br /&gt;
== v2: Konfiguration mit Proxy und systemd ==&lt;br /&gt;
&lt;br /&gt;
  #.config/systemd/user/etherpad-lite.service&lt;br /&gt;
  [Unit]&lt;br /&gt;
  Description=Etherpad-Lite Service&lt;br /&gt;
  [Service]&lt;br /&gt;
  WorkingDirectory=%h/etherpad-lite&lt;br /&gt;
  Environment=&amp;quot;NODE_ENV=production&amp;quot;&lt;br /&gt;
  Environment=&amp;quot;BIND=127.0.0.1&amp;quot;&lt;br /&gt;
  Environment=&amp;quot;PATH=/home/pacs/xyz00/users/tools_pad/.nvm/versions/node/v20.18.3/bin:/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
  ExecStart=%h/.nvm/versions/node/v20.18.3/bin/pnpm run prod&lt;br /&gt;
  [Install]&lt;br /&gt;
  WantedBy=default.target&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  #~/doms/pad.example.com/.htaccess&lt;br /&gt;
  DirectoryIndex disabled&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
  RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
  RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
  RewriteRule .* ws://localhost:9001%{REQUEST_URI}  [proxy]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
  RewriteRule .* http://localhost:9001%{REQUEST_URI} [proxy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, dass auf 127.0.0.1 ge-binded wird, und nicht die von Welt erreichbare Adresse 0.0.0.0. Man beachte das im Systemd Service File die node version hardcoded wird und beim Update zwei mal entsprechend angepasst werden muss. Genauso der User und der Paketusername, der leider nicht direkt ersetzt werden kann. &lt;br /&gt;
&lt;br /&gt;
Dass auch nach Neustart der Etherpad Server erreichbar ist: &lt;br /&gt;
&lt;br /&gt;
systemctl --user enable etherpad-lite&lt;br /&gt;
&lt;br /&gt;
== v1: Konfiguration für Apache und Passenger ==&lt;br /&gt;
&lt;br /&gt;
Vor der Nutzung von [[Phusion Passenger]] bitte unbedingt die dortigen Hinweise zur Nutzung beachten.&lt;br /&gt;
&lt;br /&gt;
Die statischen Dateien der Anwendung werden mit den folgenden Befehlen richtig verlinkt&lt;br /&gt;
(immer noch als User &#039;&#039;xyz00-pad&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
cd ~/doms/pad.example.com&lt;br /&gt;
rm -rf subs/www&lt;br /&gt;
rm -rf subs-ssl/www&lt;br /&gt;
rm -rf htdocs-ssl&lt;br /&gt;
ln -s ~/etherpad-lite/src/static htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Anwendung legen wir im Verzeichnis &#039;&#039;~/doms/pad.example.com/app-ssl/&#039;&#039; eine Datei app.js mit dem folgenden Inhalt an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
require(&#039;/home/pacs/xyz00/users/pad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js&#039;);&lt;br /&gt;
process.chdir(&#039;/home/pacs/xyz00/users/pad/etherpad-lite&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Datenbank anpassen =&lt;br /&gt;
&lt;br /&gt;
Zum Schluß wird in der Datei &#039;&#039;~/etherpad-lite/settings.js&#039;&#039; noch die MySQL-Datenbank konfiguriert. Dazu muss der Teil mit &#039;&#039;dbType: mysql&#039;&#039; aktiv (nicht auskommentiert) sein. Etwa wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;dbType&amp;quot; : &amp;quot;mysql&amp;quot;,&lt;br /&gt;
&amp;quot;dbSettings&amp;quot; : {&lt;br /&gt;
  &amp;quot;user&amp;quot;    : &amp;quot;xyz00_padusr&amp;quot;,&lt;br /&gt;
  &amp;quot;host&amp;quot;    : &amp;quot;localhost&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;anderes-Geheimwort&amp;quot;,&lt;br /&gt;
  &amp;quot;database&amp;quot;: &amp;quot;xyz00_paddb&amp;quot;,&lt;br /&gt;
  &amp;quot;charset&amp;quot; : &amp;quot;utf8mb4&amp;quot;,&lt;br /&gt;
  &amp;quot;insecureAuth&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen für den &#039;&#039;dbType: dirty&#039;&#039; werden dafür entfernt.&lt;br /&gt;
&lt;br /&gt;
Weiter unten in der Datei kann dann noch ein Admin-User aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Etherpad sollte nun unter der URL: &#039;&#039;http://pad.example.com/&#039;&#039; erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
= Update = &lt;br /&gt;
&lt;br /&gt;
Etherpad ist sehr pflegeleicht was das Update angeht. Es muss nur die neue Version in Git ausgecheckt werden und ./bin/run.sh erneut (einmalig) ausgeführt werden, damit die dependencies wieder neu gebaut werden. Auch von v1 -&amp;gt; v2 ist sonst nichts weiter zu tun.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
*[http://etherpad.org/ Etherpad Homepage (Englisch)]&lt;br /&gt;
*[https://github.com/ether/etherpad-lite/ Github Repository (Englisch)]&lt;br /&gt;
*[https://github.com/ether/etherpad-lite/wiki/Running-Etherpad-on-Phusion-Passenger Running Etherpad on Phusion Passenger (Englisch)]&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:Passenger]]&lt;br /&gt;
[[Kategorie:NodeJS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Etherpad_Installieren&amp;diff=7293</id>
		<title>Etherpad Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Etherpad_Installieren&amp;diff=7293"/>
		<updated>2025-03-06T00:13:55Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* v2: Konfiguration mit Proxy und systemd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Etherpad Lite installieren =&lt;br /&gt;
&lt;br /&gt;
Etherpad ist eine JavaScript-Anwendung mit der mehrere Bearbeiter gleichzeitig einen Text im Browser editieren können. &lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von Etherpad können zum Beispiel die Teilnehmer einer Telefonkonferenz gemeinsam an einem Text-Dokument arbeiten.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
&lt;br /&gt;
Als Paket-Admin &#039;&#039;xyz00&#039;&#039; werden mit HSAdmin ein User angelegt und eine Domain aufgeschaltet. Eine produktive Installation von Etherpad braucht zusätzlich einen MySQL-User und eine MySQL-Datenbank.&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsscript&#039;&#039; können diese Ressourcen wie folgt angelegt werden:&lt;br /&gt;
&lt;br /&gt;
Als Paketadmin &#039;&#039;xyz00&#039;&#039; aufrufen: &amp;lt;code&amp;gt;hsscript -i&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der HSAdmin-Shell gibt man dann ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-pad&#039;, password:&#039;mein-Geheimwort&#039;, shell:&#039;/bin/bash&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;pad.example.com&#039;, user:&#039;xyz00-pad&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_padusr&#039;, password:&#039;anderes-Geheimwort&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_paddb&#039;, owner:&#039;xyz00_padusr&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Etherpad v2.2.7 benötigt &#039;&#039;nodejs&#039;&#039; in einer Version &amp;gt; 18.18. Die Installation erfolgt gemäß der Wiki-Anleitung: [[NodeJS]]&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss der Paketmanager pnpm für Version 2 vorgehalten werden &lt;br /&gt;
&lt;br /&gt;
npm install pnpm@latest-10&lt;br /&gt;
&lt;br /&gt;
Als Paketadmin &#039;&#039;xyz00&#039;&#039; nimmt man mit &amp;lt;code&amp;gt;sudo -u xyz00-pad -i&amp;lt;/code&amp;gt; die Rechte des Domain-Administrators &#039;&#039;xyz00-pad&#039;&#039; für die neue Domain &#039;&#039;pad.example.com&#039;&#039; an.&lt;br /&gt;
&lt;br /&gt;
Die Etherpad-Software kann aus dem Git-Repository bei Github ausgecheckt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
git clone https://github.com/ether/etherpad-lite.git&lt;br /&gt;
cd etherpad-lite/&lt;br /&gt;
git tag -l&lt;br /&gt;
git checkout tags/2.2.7&lt;br /&gt;
./bin/run.sh &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &amp;quot;git checkout tags/2.2.7&amp;quot; wird Release 2.2.7 ausgecheckt, die heute (06.03.2025) aktuelle Version.&lt;br /&gt;
&lt;br /&gt;
Bei der Initialisierung der Anwendung gibt es einige Warnungen, die man ignorieren kann. Wenn die Initialisierung durchgelaufen ist, kann man&lt;br /&gt;
unter der URL http://xyz00.hostsharing.net:9001/ schon die die Etherpad-Anwendung ohne Datenbank und ohne die gewünschte Domain sehen.&lt;br /&gt;
&lt;br /&gt;
Wir brechen das &#039;&#039;run.sh&#039;&#039;-Skript mit Ctrl-c ab.&lt;br /&gt;
&lt;br /&gt;
== v2: Konfiguration mit Proxy und systemd ==&lt;br /&gt;
&lt;br /&gt;
  #.config/systemd/user/etherpad-lite.service&lt;br /&gt;
  [Unit]&lt;br /&gt;
  Description=Etherpad-Lite Service&lt;br /&gt;
  [Service]&lt;br /&gt;
  WorkingDirectory=%h/etherpad-lite&lt;br /&gt;
  Environment=&amp;quot;NODE_ENV=production&amp;quot;&lt;br /&gt;
  Environment=&amp;quot;BIND=127.0.0.1&amp;quot;&lt;br /&gt;
  Environment=&amp;quot;PATH=/home/pacs/xyz00/users/tools_pad/.nvm/versions/node/v20.18.3/bin:/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
  ExecStart=%h/.nvm/versions/node/v20.18.3/bin/pnpm run prod&lt;br /&gt;
  [Install]&lt;br /&gt;
  WantedBy=default.target&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  #~/doms/pad.example.com/.htaccess&lt;br /&gt;
  DirectoryIndex disabled&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
  RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
  RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
  RewriteRule .* ws://localhost:9001%{REQUEST_URI}  [proxy]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
  RewriteRule .* http://localhost:9001%{REQUEST_URI} [proxy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, dass auf 127.0.0.1 ge-binded wird, und nicht die von Welt erreichbare Adresse 0.0.0.0. Man beachte das im Systemd Service File die node version hardcoded wird und beim Update zwei mal entsprechend angepasst werden muss. Genauso der User und der Paketusername, der leider nicht direkt ersetzt werden kann. &lt;br /&gt;
&lt;br /&gt;
Dass auch nach Neustart der Etherpad Server erreichbar ist: &lt;br /&gt;
&lt;br /&gt;
systemctl --user enable etherpad-lite&lt;br /&gt;
&lt;br /&gt;
== v1: Konfiguration für Apache und Passenger ==&lt;br /&gt;
&lt;br /&gt;
Vor der Nutzung von [[Phusion Passenger]] bitte unbedingt die dortigen Hinweise zur Nutzung beachten.&lt;br /&gt;
&lt;br /&gt;
Die statischen Dateien der Anwendung werden mit den folgenden Befehlen richtig verlinkt&lt;br /&gt;
(immer noch als User &#039;&#039;xyz00-pad&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
cd ~/doms/pad.example.com&lt;br /&gt;
rm -rf subs/www&lt;br /&gt;
rm -rf subs-ssl/www&lt;br /&gt;
rm -rf htdocs-ssl&lt;br /&gt;
ln -s ~/etherpad-lite/src/static htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Anwendung legen wir im Verzeichnis &#039;&#039;~/doms/pad.example.com/app-ssl/&#039;&#039; eine Datei app.js mit dem folgenden Inhalt an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
require(&#039;/home/pacs/xyz00/users/pad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js&#039;);&lt;br /&gt;
process.chdir(&#039;/home/pacs/xyz00/users/pad/etherpad-lite&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluß wird in der Datei &#039;&#039;~/etherpad-lite/settings.js&#039;&#039; noch die MySQL-Datenbank konfiguriert. Dazu muss der Teil mit &#039;&#039;dbType: mysql&#039;&#039; aktiv (nicht auskommentiert) sein. Etwa wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;dbType&amp;quot; : &amp;quot;mysql&amp;quot;,&lt;br /&gt;
&amp;quot;dbSettings&amp;quot; : {&lt;br /&gt;
  &amp;quot;user&amp;quot;    : &amp;quot;xyz00_padusr&amp;quot;,&lt;br /&gt;
  &amp;quot;host&amp;quot;    : &amp;quot;localhost&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;anderes-Geheimwort&amp;quot;,&lt;br /&gt;
  &amp;quot;database&amp;quot;: &amp;quot;xyz00_paddb&amp;quot;,&lt;br /&gt;
  &amp;quot;charset&amp;quot; : &amp;quot;utf8mb4&amp;quot;,&lt;br /&gt;
  &amp;quot;insecureAuth&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen für den &#039;&#039;dbType: dirty&#039;&#039; werden dafür entfernt.&lt;br /&gt;
&lt;br /&gt;
Weiter unten in der Datei kann dann noch ein Admin-User aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Etherpad sollte nun unter der URL: &#039;&#039;http://pad.example.com/&#039;&#039; erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
== Update == &lt;br /&gt;
&lt;br /&gt;
Etherpad ist sehr pflegeleicht was das Update angeht. Es muss nur die neue Version in Git ausgecheckt werden und ./bin/run.sh erneut (einmalig) ausgeführt werden, damit die dependencies wieder neu gebaut werden. Auch von v1 -&amp;gt; v2 ist sonst nichts weiter zu tun.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[http://etherpad.org/ Etherpad Homepage (Englisch)]&lt;br /&gt;
*[https://github.com/ether/etherpad-lite/ Github Repository (Englisch)]&lt;br /&gt;
*[https://github.com/ether/etherpad-lite/wiki/Running-Etherpad-on-Phusion-Passenger Running Etherpad on Phusion Passenger (Englisch)]&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:Passenger]]&lt;br /&gt;
[[Kategorie:NodeJS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Etherpad_Installieren&amp;diff=7292</id>
		<title>Etherpad Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Etherpad_Installieren&amp;diff=7292"/>
		<updated>2025-03-06T00:12:28Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: update zu v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Etherpad Lite installieren =&lt;br /&gt;
&lt;br /&gt;
Etherpad ist eine JavaScript-Anwendung mit der mehrere Bearbeiter gleichzeitig einen Text im Browser editieren können. &lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von Etherpad können zum Beispiel die Teilnehmer einer Telefonkonferenz gemeinsam an einem Text-Dokument arbeiten.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
&lt;br /&gt;
Als Paket-Admin &#039;&#039;xyz00&#039;&#039; werden mit HSAdmin ein User angelegt und eine Domain aufgeschaltet. Eine produktive Installation von Etherpad braucht zusätzlich einen MySQL-User und eine MySQL-Datenbank.&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsscript&#039;&#039; können diese Ressourcen wie folgt angelegt werden:&lt;br /&gt;
&lt;br /&gt;
Als Paketadmin &#039;&#039;xyz00&#039;&#039; aufrufen: &amp;lt;code&amp;gt;hsscript -i&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der HSAdmin-Shell gibt man dann ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-pad&#039;, password:&#039;mein-Geheimwort&#039;, shell:&#039;/bin/bash&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;pad.example.com&#039;, user:&#039;xyz00-pad&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_padusr&#039;, password:&#039;anderes-Geheimwort&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_paddb&#039;, owner:&#039;xyz00_padusr&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Etherpad v2.2.7 benötigt &#039;&#039;nodejs&#039;&#039; in einer Version &amp;gt; 18.18. Die Installation erfolgt gemäß der Wiki-Anleitung: [[NodeJS]]&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss der Paketmanager pnpm für Version 2 vorgehalten werden &lt;br /&gt;
&lt;br /&gt;
npm install pnpm@latest-10&lt;br /&gt;
&lt;br /&gt;
Als Paketadmin &#039;&#039;xyz00&#039;&#039; nimmt man mit &amp;lt;code&amp;gt;sudo -u xyz00-pad -i&amp;lt;/code&amp;gt; die Rechte des Domain-Administrators &#039;&#039;xyz00-pad&#039;&#039; für die neue Domain &#039;&#039;pad.example.com&#039;&#039; an.&lt;br /&gt;
&lt;br /&gt;
Die Etherpad-Software kann aus dem Git-Repository bei Github ausgecheckt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
git clone https://github.com/ether/etherpad-lite.git&lt;br /&gt;
cd etherpad-lite/&lt;br /&gt;
git tag -l&lt;br /&gt;
git checkout tags/2.2.7&lt;br /&gt;
./bin/run.sh &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &amp;quot;git checkout tags/2.2.7&amp;quot; wird Release 2.2.7 ausgecheckt, die heute (06.03.2025) aktuelle Version.&lt;br /&gt;
&lt;br /&gt;
Bei der Initialisierung der Anwendung gibt es einige Warnungen, die man ignorieren kann. Wenn die Initialisierung durchgelaufen ist, kann man&lt;br /&gt;
unter der URL http://xyz00.hostsharing.net:9001/ schon die die Etherpad-Anwendung ohne Datenbank und ohne die gewünschte Domain sehen.&lt;br /&gt;
&lt;br /&gt;
Wir brechen das &#039;&#039;run.sh&#039;&#039;-Skript mit Ctrl-c ab.&lt;br /&gt;
&lt;br /&gt;
== v2: Konfiguration mit Proxy und systemd ==&lt;br /&gt;
&lt;br /&gt;
#.config/systemd/user/etherpad-lite.service&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Etherpad-Lite Service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
WorkingDirectory=%h/etherpad-lite&lt;br /&gt;
Environment=&amp;quot;NODE_ENV=production&amp;quot;&lt;br /&gt;
Environment=&amp;quot;BIND=127.0.0.1&amp;quot;&lt;br /&gt;
Environment=&amp;quot;PATH=/home/pacs/xyz00/users/tools_pad/.nvm/versions/node/v20.18.3/bin:/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
ExecStart=%h/.nvm/versions/node/v20.18.3/bin/pnpm run prod&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&lt;br /&gt;
#~/doms/pad.example.com/.htaccess&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
RewriteRule .* ws://localhost:9001%{REQUEST_URI}  [proxy]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* http://localhost:9001%{REQUEST_URI} [proxy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, dass auf 127.0.0.1 ge-binded wird, und nicht die von Welt erreichbare Adresse 0.0.0.0. Man beachte das im Systemd Service File die node version hardcoded wird und beim Update zwei mal entsprechend angepasst werden muss. Genauso der User und der Paketusername, der leider nicht direkt ersetzt werden kann. &lt;br /&gt;
&lt;br /&gt;
Dass auch nach Neustart der Etherpad Server erreichbar ist: &lt;br /&gt;
&lt;br /&gt;
systemctl --user enable etherpad-lite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== v1: Konfiguration für Apache und Passenger ==&lt;br /&gt;
&lt;br /&gt;
Vor der Nutzung von [[Phusion Passenger]] bitte unbedingt die dortigen Hinweise zur Nutzung beachten.&lt;br /&gt;
&lt;br /&gt;
Die statischen Dateien der Anwendung werden mit den folgenden Befehlen richtig verlinkt&lt;br /&gt;
(immer noch als User &#039;&#039;xyz00-pad&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
cd ~/doms/pad.example.com&lt;br /&gt;
rm -rf subs/www&lt;br /&gt;
rm -rf subs-ssl/www&lt;br /&gt;
rm -rf htdocs-ssl&lt;br /&gt;
ln -s ~/etherpad-lite/src/static htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Anwendung legen wir im Verzeichnis &#039;&#039;~/doms/pad.example.com/app-ssl/&#039;&#039; eine Datei app.js mit dem folgenden Inhalt an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
require(&#039;/home/pacs/xyz00/users/pad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js&#039;);&lt;br /&gt;
process.chdir(&#039;/home/pacs/xyz00/users/pad/etherpad-lite&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluß wird in der Datei &#039;&#039;~/etherpad-lite/settings.js&#039;&#039; noch die MySQL-Datenbank konfiguriert. Dazu muss der Teil mit &#039;&#039;dbType: mysql&#039;&#039; aktiv (nicht auskommentiert) sein. Etwa wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;dbType&amp;quot; : &amp;quot;mysql&amp;quot;,&lt;br /&gt;
&amp;quot;dbSettings&amp;quot; : {&lt;br /&gt;
  &amp;quot;user&amp;quot;    : &amp;quot;xyz00_padusr&amp;quot;,&lt;br /&gt;
  &amp;quot;host&amp;quot;    : &amp;quot;localhost&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;anderes-Geheimwort&amp;quot;,&lt;br /&gt;
  &amp;quot;database&amp;quot;: &amp;quot;xyz00_paddb&amp;quot;,&lt;br /&gt;
  &amp;quot;charset&amp;quot; : &amp;quot;utf8mb4&amp;quot;,&lt;br /&gt;
  &amp;quot;insecureAuth&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen für den &#039;&#039;dbType: dirty&#039;&#039; werden dafür entfernt.&lt;br /&gt;
&lt;br /&gt;
Weiter unten in der Datei kann dann noch ein Admin-User aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Etherpad sollte nun unter der URL: &#039;&#039;http://pad.example.com/&#039;&#039; erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
== Update == &lt;br /&gt;
&lt;br /&gt;
Etherpad ist sehr pflegeleicht was das Update angeht. Es muss nur die neue Version in Git ausgecheckt werden und ./bin/run.sh erneut (einmalig) ausgeführt werden, damit die dependencies wieder neu gebaut werden. Auch von v1 -&amp;gt; v2 ist sonst nichts weiter zu tun.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[http://etherpad.org/ Etherpad Homepage (Englisch)]&lt;br /&gt;
*[https://github.com/ether/etherpad-lite/ Github Repository (Englisch)]&lt;br /&gt;
*[https://github.com/ether/etherpad-lite/wiki/Running-Etherpad-on-Phusion-Passenger Running Etherpad on Phusion Passenger (Englisch)]&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:Passenger]]&lt;br /&gt;
[[Kategorie:NodeJS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=NodeJS&amp;diff=7291</id>
		<title>NodeJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=NodeJS&amp;diff=7291"/>
		<updated>2025-03-05T23:17:51Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation von nvm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Eigene NodeJS Installation ==&lt;br /&gt;
&lt;br /&gt;
Die JavaScript-Umgebung NodeJS für das Ausführen von JavaScript auf dem Server unterliegt noch einer rasanten Entwicklung.&lt;br /&gt;
Daher ist die Debian-Version, die bei Hostsharing vorinstalliert ist, oft zu alt für aktuelle Software.&lt;br /&gt;
&lt;br /&gt;
Ein kurze Anleitung für die eigene NodeJS-Installation für einen User.&lt;br /&gt;
&lt;br /&gt;
=== Installation von nvm ===&lt;br /&gt;
&lt;br /&gt;
Die aktuellste Version von nvm kann wie folgt heruntergeladen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
touch ~/.profile&lt;br /&gt;
chmod u+x ~/.profile&lt;br /&gt;
cd /tmp&lt;br /&gt;
wget https://raw.githubusercontent.com/nvm-sh/nvm/refs/heads/master/install.sh&lt;br /&gt;
chmod u+x install.sh &lt;br /&gt;
./install.sh &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle ab- und wieder anmelden oder die Befehle ausführen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
export NVM_DIR=&amp;quot;/home/pacs/xyz00/users/example/.nvm&amp;quot;&lt;br /&gt;
[ -s &amp;quot;$NVM_DIR/nvm.sh&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/nvm.sh&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitte auf die bei der Installation ausgegebenen Zeilen am Ende achten, &lt;br /&gt;
denn neuere nvm-Versionen benötigen ggf. etwas andere Schritte zur sofortigen Aktivierung.&lt;br /&gt;
&lt;br /&gt;
=== Installation von NodeJS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
nvm install 18&lt;br /&gt;
nvm alias default 18&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
installiert (zum Beispiel) sehr einfach NodeJS in der Version 18.x.&lt;br /&gt;
&lt;br /&gt;
analog für die Version 20.x:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
nvm install 20&lt;br /&gt;
nvm alias default 20&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aktuelle Versionen und LTS Versionen sind hier zu finden: https://nodejs.org/en/download/releases&lt;br /&gt;
&lt;br /&gt;
==== Überprüfung der Installation ====&lt;br /&gt;
&lt;br /&gt;
Der Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
node -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gibt die Version des aktiven NodeJS aus.&lt;br /&gt;
&lt;br /&gt;
=== NodeJS Web-Applikation ===&lt;br /&gt;
&lt;br /&gt;
Zur Integration der eigenen NodeJS-Installation in den Apache erfolgt über das  Apache-Modul &amp;quot;Passenger&amp;quot;.&lt;br /&gt;
Vor der Nutzung dieses Moduls bitte unbedingt die 	&lt;br /&gt;
[[Phusion Passenger|Hinweise zur Nutzung beachten]].&lt;br /&gt;
&lt;br /&gt;
Den Pfad zum node-Binärprogramm konfiguriert man in einer &amp;quot;.htaccess&amp;quot;-Datei im&lt;br /&gt;
Verzeichnis der Domain &amp;quot;/home/pacs/xyz00/users/example/doms/example.com/.htaccess&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot; line&amp;gt;&lt;br /&gt;
PassengerNodejs /home/pacs/xyz00/users/example/.nvm/versions/node/v16.14.2/bin/node&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Versionsnummer, User und Paket im Pfad anpassen)&lt;br /&gt;
&lt;br /&gt;
Für&#039;s Debugging ist die zusätzlich Option &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot; line&amp;gt;&lt;br /&gt;
PassengerFriendlyErrorPages On&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hilfreich.&lt;br /&gt;
&lt;br /&gt;
Zum Testen kann man eine &amp;quot;app.js&amp;quot; ins Verzeichnis &amp;quot;/home/pacs/xyz00/users/example/doms/example.com/app-ssl/&amp;quot; &lt;br /&gt;
ablegen.&lt;br /&gt;
&lt;br /&gt;
Eine minimale &amp;quot;app.js&amp;quot; zur Anzeige der NodeJS Version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;gt;&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
http.createServer(function (request, response) {&lt;br /&gt;
    response.writeHead(200, {&#039;Content-Type&#039;: &#039;text/plain&#039;});&lt;br /&gt;
    response.write(&#039;node version &#039; + process.version + &#039;\n&#039;);&lt;br /&gt;
    response.end();&lt;br /&gt;
}).listen(3000);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um diese App zu deaktivieren, muss die Datei gelöscht werden.&lt;br /&gt;
Es reicht nicht aus, eine etwaige Konfiguration aus der .htaccess zu entfernen.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Installationen ===&lt;br /&gt;
&lt;br /&gt;
Mit dem &amp;quot;Node Package Manager&amp;quot; npm läßt sich weitere Software in die Node-Umgebung installieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
npm install -g gulp&lt;br /&gt;
npm install -g yarn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Passenger]]&lt;br /&gt;
[[Kategorie:NodeJS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=OpenProject_installieren&amp;diff=7284</id>
		<title>OpenProject installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=OpenProject_installieren&amp;diff=7284"/>
		<updated>2025-03-02T14:14:01Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Upgrade durchführen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
OpenProject ist eine umfangreiche Projektmanagement-Software.  Die Software ist multiprojektfähig;  für jedes Projekt stehen unter anderem folgende Werkzeuge zur Verfügung:&lt;br /&gt;
* Wiki&lt;br /&gt;
* Vorgangsverfolgung (Ticketsystem, Issue Tracker)&lt;br /&gt;
* Zeiterfassung&lt;br /&gt;
* Dokument- und Dateiverwaltung&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt, wie man OpenProject auf der Managed Hosting Plattform von Hostsharing installieren kann. OpenProject lässt sich in jedem Managed Webspace betreiben.&lt;br /&gt;
&lt;br /&gt;
Die Anleitung wurde für OpenProject Version 11 erstellt.&lt;br /&gt;
&lt;br /&gt;
== Ansible Skript ==&lt;br /&gt;
&lt;br /&gt;
Alternativ zur manuellen Installation, die in diesem Wiki Artikel beschrieben wird, gibt es ein&lt;br /&gt;
Ansible Skript, das die Installationsschritte für OpenProject automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/openproject&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
=== Service-User, Domain und Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von HSAdmin werden angelegt:&lt;br /&gt;
# Ein User als Service-User mit &#039;&#039;/bin/bash&#039;&#039; als Shell, zum Beispiel Beispiel: &#039;&#039;xyz00-project&amp;quot;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-project&#039;&#039; als Domain-Administrator, zum Beispiel &amp;quot;prj.example.com&amp;quot;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_dbuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_prjdb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_dbuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung des Webspace ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;leichtgewichtige&amp;quot; Subdomain &amp;quot;www&amp;quot; wird gelöscht. Ebenso die &#039;&#039;.htaccess&#039;&#039;-Datei mit der Weiterleitung dorthin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@h20 $ sudo -u xyz00-project -i&lt;br /&gt;
xyz00-project@h20:~$ cd ~/doms/projekt.example.com/&lt;br /&gt;
xyz00-project@h20:~/doms/projekt.example.com$ rm -rf subs/www/ subs-ssl/www/ htdocs-ssl/.htaccess &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation von Ruby ===&lt;br /&gt;
&lt;br /&gt;
Weiterhin benötigt OpenProject eine geeignete Version der Programmiersprache Ruby.&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Version kann hier abgelesen werden: https://github.com/opf/openproject/blob/stable/11/.ruby-version&lt;br /&gt;
&lt;br /&gt;
Die Installation-Anleitung für OpenProject schlägt für die Installation &#039;&#039;rbenv&#039;&#039; vor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~/doms/projekt.example.com$ cd&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv&lt;br /&gt;
xyz00-project@h20:~$ touch .profile&lt;br /&gt;
xyz00-project@h20:~$ chmod u+x .profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;eval &amp;quot;$(rbenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build&lt;br /&gt;
xyz00-project@h20:~$ rbenv install 2.7.4&lt;br /&gt;
xyz00-project@h20:~$ rbenv rehash&lt;br /&gt;
xyz00-project@h20:~$ rbenv global 2.7.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Test bitte aufrufen: &#039;&#039;ruby -v&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige sollte etwa das Folgende enthalten:&lt;br /&gt;
ruby 2.7.4pXYZ (....) [x86_64-linux]&lt;br /&gt;
&lt;br /&gt;
=== Installation von Node ===&lt;br /&gt;
&lt;br /&gt;
Die Installation-Anleitung für OpenProject schlägt für die Installation &#039;&#039;nodenv&#039;&#039; vor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/OiNutter/nodenv.git ~/.nodenv&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;export PATH=&amp;quot;$HOME/.nodenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;eval &amp;quot;$(nodenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ git clone git://github.com/OiNutter/node-build.git ~/.nodenv/plugins/node-build&lt;br /&gt;
xyz00-project@h20:~$ nodenv install 12.18.4&lt;br /&gt;
xyz00-project@h20:~$ nodenv rehash&lt;br /&gt;
xyz00-project@h20:~$ nodenv global 12.18.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Test mit &#039;&#039;node --version&#039;&#039; solte anzeigen: v12.18.4&lt;br /&gt;
&lt;br /&gt;
== Installation und Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Installation von OpenProject ===&lt;br /&gt;
&lt;br /&gt;
Wir installieren die OpenProject Community Edition. siehe https://github.com/opf/openproject&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/opf/openproject.git --branch stable/11 --depth 1&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~$ gem update --system&lt;br /&gt;
xyz00-project@h20:~$ gem install bundler&lt;br /&gt;
xyz00-project@h20:~$ bundle update --bundler&lt;br /&gt;
xyz00-project@h20:~$ bundle config set deployment &#039;true&#039;&lt;br /&gt;
xyz00-project@h20:~$ bundle config set without &#039;mysql2 sqlite development test therubyracer docker&#039;&lt;br /&gt;
xyz00-project@h20:~$ bundle install&lt;br /&gt;
xyz00-project@h20:~$ npm install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von OpenProject ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Konfiguration für den Datenbank-Zugriff in der Datei &#039;&#039;config/database.yml&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ cp config/database.yml.example config/database.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der neuen Datei &#039;&#039;database.yml&#039;&#039; wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
production:&lt;br /&gt;
  adapter: postgresql&lt;br /&gt;
  encoding: unicode&lt;br /&gt;
  host: localhost&lt;br /&gt;
  database: xyz00_prjdb (wie oben angegeben)&lt;br /&gt;
  pool: 10&lt;br /&gt;
  username: xyz00_dbuser (wie oben angegeben)&lt;br /&gt;
  password: meinPasswort (wie oben angegeben)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einträge für &#039;&#039;development&#039;&#039; und &#039;&#039;test&#039;&#039; können gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Dann wird die Datei &#039;&#039;configuration.yml&#039;&#039; angelegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ cp config/configuration.yml.example config/configuration.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort erfolgen die Einstellungen für ausgehende E-Mails:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
default:&lt;br /&gt;
  log_level: info&lt;br /&gt;
  email_delivery_method: :smtp&lt;br /&gt;
  smtp_address: localhost&lt;br /&gt;
  smtp_port: 25&lt;br /&gt;
  smtp_domain: example.com&lt;br /&gt;
  #smtp_authentication: :login&lt;br /&gt;
  #smtp_user_name: &amp;quot;openproject@example.net&amp;quot;&lt;br /&gt;
  #smtp_password: &amp;quot;my_openproject_password&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zeilen mit smtp_authentication, smtp_user_name und smtp_password können auskommentiert werden, sie werden in unserem Setup nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Es muss außerdem vermieden werden, dass beim Hochladen von Dateien in /tmp geschrieben wird. Dazu wird das Verzeichnis $HOME/var/tmp angelegt, und die Datei &amp;lt;code&amp;gt;openproject/config/initializers/tmpdir.rb&amp;lt;/code&amp;gt; mit folgendem Inhalt erstellt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot; line&amp;gt;&lt;br /&gt;
class Dir&lt;br /&gt;
  def self.tmpdir&lt;br /&gt;
    &amp;quot;/home/pacs/xyz00/users/project/var/tmp/&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen geheimen Schlüssel erzeugen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ EDITOR=cat ./bin/rails credentials:edit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Initialisiere Datenbank und erzeuge Web-Ressourcen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rails db:prepare&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake assets:precompile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlegen des Administrators ===&lt;br /&gt;
&lt;br /&gt;
Es kann eine Demo Installation installiert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ LOCALE=en ./bin/rake db:seed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird ein Beispiel-Projekt angelegt, das man wieder löschen kann.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist aber, dass der Benutzer &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; mit dem Passwort &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; angelegt wird. Das Passwort muss bei der ersten Anmeldung geändert werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration in Passenger ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/doms/prj.example.com&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ rm -rf app-ssl htdocs-ssl&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ ln -s $HOME/openproject app-ssl&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ ln -s $HOME/openproject/public htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss in einer .htaccess-Datei in diesem Verzeichnis die richtige Umgebung gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
# xyz00-project@h20:~/doms/prj.example.com$ cat .htaccess&lt;br /&gt;
&lt;br /&gt;
SetEnv OPENPROJECT_STORAGE_TMP__PATH /home/pacs/xyz00/users/project/var/tmp/&lt;br /&gt;
SetEnv TMPDIR /home/pacs/xyz00/users/project/var/tmp/&lt;br /&gt;
PassengerRuby /home/pacs/xyz00/users/project/.rbenv/shims/ruby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufsetzen des systemd Timers für Hintergrundprozesse ==&lt;br /&gt;
&lt;br /&gt;
Es werden Benachrichtigungs-E-Mails im Hintergrund verschickt. Dazu muss ein Prozess im Hintergrund gestartet werden. Um Probleme zu vermeiden, dass source nicht zur Verfügung steht, kann der Aufruf in einer eigenen Skriptdatei geschehen, die zwingend mit Bash ausgeführt wird, wo source verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Datei &#039;&#039;/home/pacs/xyz00/users/project/emailjob.sh&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
source ~/.profile&lt;br /&gt;
cd ~/openproject&lt;br /&gt;
RAILS_ENV=&amp;quot;production&amp;quot; ./bin/rake jobs:workoff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Datei &#039;&#039;/home/pacs/xyz00/users/project/jobrestart.sh&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
source ~/.profile&lt;br /&gt;
cd ~/openproject&lt;br /&gt;
RAILS_ENV=&amp;quot;production&amp;quot;  ./bin/delayed_job restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können die Timer eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/openproject_emails.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject mails&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/home/pacs/xyz00/users/project/emailjob.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/openproject_emails.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject mails&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:0/2&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird der Hintergrundprozess alle 2 Minuten gestartet.&lt;br /&gt;
&lt;br /&gt;
Es gibt noch einen Hintergrundjob, den ich einmal in der Stunde neu starte:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/openproject_jobrestart.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject restart job&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/home/pacs/xyz00/users/project/jobrestart.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/openproject_jobrestart.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject restart job&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:22&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
$ systemctl --user enable openproject_emails.timer&lt;br /&gt;
$ systemctl --user start openproject_emails.timer&lt;br /&gt;
$ systemctl --user enable openproject_jobrestart.timer&lt;br /&gt;
$ systemctl --user start openproject_jobrestart.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Upgrade durchführen ==&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Ruby Version kann hier abgelesen werden (ggf. Branch passend wechseln): https://github.com/opf/openproject/blob/stable/11/.ruby-version&lt;br /&gt;
&lt;br /&gt;
Die benötigte Nodejs Version kann im git repository in der package.json unter engine abgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Für das Upgrade von OpenProject 11.2.4 auf 11.3.4, musste eine neue Version von Ruby installiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git -C $HOME/.rbenv/plugins/ruby-build pull&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv install 2.7.4&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv rehash&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv global 2.7.4&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ rm -Rf $HOME/.rbenv/versions/2.7.3/  # alte Version kann gelöscht werden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil das Git Repository bei der Erstinstallation nur einen Branch enthielt, muss nun das Repository passend nachgeladen werden (Beispielhaft für den Branch stable/15)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git remote set-branches --add origin stable/15&lt;br /&gt;
xyz00-project@h20:~/openproject$ git fetch&lt;br /&gt;
xyz00-project@h20:~/openproject$ git checkout stable/15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Verifikation dass das update erfolgreich war, kann der alte Branch gelöscht werden, nach bedarf mit: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git branch -D old_branch_name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generell müssen diese Schritte durchgeführt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git fetch&lt;br /&gt;
xyz00-project@h20:~/openproject$ git pull&lt;br /&gt;
xyz00-project@h20:~/openproject$ gem update --system&lt;br /&gt;
xyz00-project@h20:~/openproject$ bundle install&lt;br /&gt;
xyz00-project@h20:~/openproject$ npm install&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake db:migrate&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake assets:precompile&lt;br /&gt;
xyz00-project@h20:~/openproject$ touch ~/doms/prj.example.com/app-ssl/tmp/restart.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.openproject.org/installation-and-operations/installation/manual/ Anleitung für die manuelle Installation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/openproject Ansible Playbook für Hostsharing]&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Passenger]]&lt;br /&gt;
[[Kategorie:Projektmanagement]]&lt;br /&gt;
[[Kategorie:Projektverwaltung]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=OpenProject_installieren&amp;diff=7283</id>
		<title>OpenProject installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=OpenProject_installieren&amp;diff=7283"/>
		<updated>2025-03-02T14:10:47Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
OpenProject ist eine umfangreiche Projektmanagement-Software.  Die Software ist multiprojektfähig;  für jedes Projekt stehen unter anderem folgende Werkzeuge zur Verfügung:&lt;br /&gt;
* Wiki&lt;br /&gt;
* Vorgangsverfolgung (Ticketsystem, Issue Tracker)&lt;br /&gt;
* Zeiterfassung&lt;br /&gt;
* Dokument- und Dateiverwaltung&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt, wie man OpenProject auf der Managed Hosting Plattform von Hostsharing installieren kann. OpenProject lässt sich in jedem Managed Webspace betreiben.&lt;br /&gt;
&lt;br /&gt;
Die Anleitung wurde für OpenProject Version 11 erstellt.&lt;br /&gt;
&lt;br /&gt;
== Ansible Skript ==&lt;br /&gt;
&lt;br /&gt;
Alternativ zur manuellen Installation, die in diesem Wiki Artikel beschrieben wird, gibt es ein&lt;br /&gt;
Ansible Skript, das die Installationsschritte für OpenProject automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/openproject&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
=== Service-User, Domain und Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von HSAdmin werden angelegt:&lt;br /&gt;
# Ein User als Service-User mit &#039;&#039;/bin/bash&#039;&#039; als Shell, zum Beispiel Beispiel: &#039;&#039;xyz00-project&amp;quot;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-project&#039;&#039; als Domain-Administrator, zum Beispiel &amp;quot;prj.example.com&amp;quot;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_dbuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_prjdb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_dbuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung des Webspace ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;leichtgewichtige&amp;quot; Subdomain &amp;quot;www&amp;quot; wird gelöscht. Ebenso die &#039;&#039;.htaccess&#039;&#039;-Datei mit der Weiterleitung dorthin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@h20 $ sudo -u xyz00-project -i&lt;br /&gt;
xyz00-project@h20:~$ cd ~/doms/projekt.example.com/&lt;br /&gt;
xyz00-project@h20:~/doms/projekt.example.com$ rm -rf subs/www/ subs-ssl/www/ htdocs-ssl/.htaccess &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation von Ruby ===&lt;br /&gt;
&lt;br /&gt;
Weiterhin benötigt OpenProject eine geeignete Version der Programmiersprache Ruby.&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Version kann hier abgelesen werden: https://github.com/opf/openproject/blob/stable/11/.ruby-version&lt;br /&gt;
&lt;br /&gt;
Die Installation-Anleitung für OpenProject schlägt für die Installation &#039;&#039;rbenv&#039;&#039; vor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~/doms/projekt.example.com$ cd&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv&lt;br /&gt;
xyz00-project@h20:~$ touch .profile&lt;br /&gt;
xyz00-project@h20:~$ chmod u+x .profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;eval &amp;quot;$(rbenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build&lt;br /&gt;
xyz00-project@h20:~$ rbenv install 2.7.4&lt;br /&gt;
xyz00-project@h20:~$ rbenv rehash&lt;br /&gt;
xyz00-project@h20:~$ rbenv global 2.7.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Test bitte aufrufen: &#039;&#039;ruby -v&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige sollte etwa das Folgende enthalten:&lt;br /&gt;
ruby 2.7.4pXYZ (....) [x86_64-linux]&lt;br /&gt;
&lt;br /&gt;
=== Installation von Node ===&lt;br /&gt;
&lt;br /&gt;
Die Installation-Anleitung für OpenProject schlägt für die Installation &#039;&#039;nodenv&#039;&#039; vor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/OiNutter/nodenv.git ~/.nodenv&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;export PATH=&amp;quot;$HOME/.nodenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ echo &#039;eval &amp;quot;$(nodenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~$ git clone git://github.com/OiNutter/node-build.git ~/.nodenv/plugins/node-build&lt;br /&gt;
xyz00-project@h20:~$ nodenv install 12.18.4&lt;br /&gt;
xyz00-project@h20:~$ nodenv rehash&lt;br /&gt;
xyz00-project@h20:~$ nodenv global 12.18.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Test mit &#039;&#039;node --version&#039;&#039; solte anzeigen: v12.18.4&lt;br /&gt;
&lt;br /&gt;
== Installation und Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Installation von OpenProject ===&lt;br /&gt;
&lt;br /&gt;
Wir installieren die OpenProject Community Edition. siehe https://github.com/opf/openproject&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git clone https://github.com/opf/openproject.git --branch stable/11 --depth 1&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~$ gem update --system&lt;br /&gt;
xyz00-project@h20:~$ gem install bundler&lt;br /&gt;
xyz00-project@h20:~$ bundle update --bundler&lt;br /&gt;
xyz00-project@h20:~$ bundle config set deployment &#039;true&#039;&lt;br /&gt;
xyz00-project@h20:~$ bundle config set without &#039;mysql2 sqlite development test therubyracer docker&#039;&lt;br /&gt;
xyz00-project@h20:~$ bundle install&lt;br /&gt;
xyz00-project@h20:~$ npm install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von OpenProject ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Konfiguration für den Datenbank-Zugriff in der Datei &#039;&#039;config/database.yml&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ cp config/database.yml.example config/database.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der neuen Datei &#039;&#039;database.yml&#039;&#039; wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
production:&lt;br /&gt;
  adapter: postgresql&lt;br /&gt;
  encoding: unicode&lt;br /&gt;
  host: localhost&lt;br /&gt;
  database: xyz00_prjdb (wie oben angegeben)&lt;br /&gt;
  pool: 10&lt;br /&gt;
  username: xyz00_dbuser (wie oben angegeben)&lt;br /&gt;
  password: meinPasswort (wie oben angegeben)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einträge für &#039;&#039;development&#039;&#039; und &#039;&#039;test&#039;&#039; können gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Dann wird die Datei &#039;&#039;configuration.yml&#039;&#039; angelegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ cp config/configuration.yml.example config/configuration.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort erfolgen die Einstellungen für ausgehende E-Mails:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line&amp;gt;&lt;br /&gt;
default:&lt;br /&gt;
  log_level: info&lt;br /&gt;
  email_delivery_method: :smtp&lt;br /&gt;
  smtp_address: localhost&lt;br /&gt;
  smtp_port: 25&lt;br /&gt;
  smtp_domain: example.com&lt;br /&gt;
  #smtp_authentication: :login&lt;br /&gt;
  #smtp_user_name: &amp;quot;openproject@example.net&amp;quot;&lt;br /&gt;
  #smtp_password: &amp;quot;my_openproject_password&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zeilen mit smtp_authentication, smtp_user_name und smtp_password können auskommentiert werden, sie werden in unserem Setup nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Es muss außerdem vermieden werden, dass beim Hochladen von Dateien in /tmp geschrieben wird. Dazu wird das Verzeichnis $HOME/var/tmp angelegt, und die Datei &amp;lt;code&amp;gt;openproject/config/initializers/tmpdir.rb&amp;lt;/code&amp;gt; mit folgendem Inhalt erstellt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot; line&amp;gt;&lt;br /&gt;
class Dir&lt;br /&gt;
  def self.tmpdir&lt;br /&gt;
    &amp;quot;/home/pacs/xyz00/users/project/var/tmp/&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen geheimen Schlüssel erzeugen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ EDITOR=cat ./bin/rails credentials:edit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Initialisiere Datenbank und erzeuge Web-Ressourcen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rails db:prepare&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake assets:precompile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlegen des Administrators ===&lt;br /&gt;
&lt;br /&gt;
Es kann eine Demo Installation installiert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ LOCALE=en ./bin/rake db:seed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird ein Beispiel-Projekt angelegt, das man wieder löschen kann.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist aber, dass der Benutzer &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; mit dem Passwort &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; angelegt wird. Das Passwort muss bei der ersten Anmeldung geändert werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration in Passenger ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/doms/prj.example.com&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ rm -rf app-ssl htdocs-ssl&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ ln -s $HOME/openproject app-ssl&lt;br /&gt;
xyz00-project@h20:~/doms/prj.example.com$ ln -s $HOME/openproject/public htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss in einer .htaccess-Datei in diesem Verzeichnis die richtige Umgebung gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
# xyz00-project@h20:~/doms/prj.example.com$ cat .htaccess&lt;br /&gt;
&lt;br /&gt;
SetEnv OPENPROJECT_STORAGE_TMP__PATH /home/pacs/xyz00/users/project/var/tmp/&lt;br /&gt;
SetEnv TMPDIR /home/pacs/xyz00/users/project/var/tmp/&lt;br /&gt;
PassengerRuby /home/pacs/xyz00/users/project/.rbenv/shims/ruby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufsetzen des systemd Timers für Hintergrundprozesse ==&lt;br /&gt;
&lt;br /&gt;
Es werden Benachrichtigungs-E-Mails im Hintergrund verschickt. Dazu muss ein Prozess im Hintergrund gestartet werden. Um Probleme zu vermeiden, dass source nicht zur Verfügung steht, kann der Aufruf in einer eigenen Skriptdatei geschehen, die zwingend mit Bash ausgeführt wird, wo source verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Datei &#039;&#039;/home/pacs/xyz00/users/project/emailjob.sh&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
source ~/.profile&lt;br /&gt;
cd ~/openproject&lt;br /&gt;
RAILS_ENV=&amp;quot;production&amp;quot; ./bin/rake jobs:workoff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Datei &#039;&#039;/home/pacs/xyz00/users/project/jobrestart.sh&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
source ~/.profile&lt;br /&gt;
cd ~/openproject&lt;br /&gt;
RAILS_ENV=&amp;quot;production&amp;quot;  ./bin/delayed_job restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können die Timer eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/openproject_emails.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject mails&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/home/pacs/xyz00/users/project/emailjob.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/openproject_emails.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject mails&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:0/2&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird der Hintergrundprozess alle 2 Minuten gestartet.&lt;br /&gt;
&lt;br /&gt;
Es gibt noch einen Hintergrundjob, den ich einmal in der Stunde neu starte:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.config/systemd/user/openproject_jobrestart.service&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject restart job&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/home/pacs/xyz00/users/project/jobrestart.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/openproject_jobrestart.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=openproject restart job&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*:22&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash line&amp;gt;&lt;br /&gt;
$ systemctl --user enable openproject_emails.timer&lt;br /&gt;
$ systemctl --user start openproject_emails.timer&lt;br /&gt;
$ systemctl --user enable openproject_jobrestart.timer&lt;br /&gt;
$ systemctl --user start openproject_jobrestart.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Upgrade durchführen ==&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Ruby Version kann hier abgelesen werden: https://github.com/opf/openproject/blob/stable/11/.ruby-version&lt;br /&gt;
&lt;br /&gt;
Für das Upgrade von OpenProject 11.2.4 auf 11.3.4, musste eine neue Version von Ruby installiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd ~/openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git -C $HOME/.rbenv/plugins/ruby-build pull&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv install 2.7.4&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv rehash&lt;br /&gt;
xyz00-project@h20:~/openproject$ rbenv global 2.7.4&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ rm -Rf $HOME/.rbenv/versions/2.7.3/  # alte Version kann gelöscht werden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil das Git Repository bei der Erstinstallation nur einen Branch enthielt, muss nun das Repository passend nachgeladen werden (Beispielhaft für den Branch stable/15)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git remote set-branches --add origin stable/15&lt;br /&gt;
xyz00-project@h20:~/openproject$ git fetch&lt;br /&gt;
xyz00-project@h20:~/openproject$ git checkout stable/15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Verifikation dass das update erfolgreich war, kann der alte Branch gelöscht werden, nach bedarf mit: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ git branch -D old_branch_name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generell müssen diese Schritte durchgeführt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-project@h20:~$ cd openproject&lt;br /&gt;
xyz00-project@h20:~/openproject$ source ~/.profile&lt;br /&gt;
xyz00-project@h20:~/openproject$ git fetch&lt;br /&gt;
xyz00-project@h20:~/openproject$ git pull&lt;br /&gt;
xyz00-project@h20:~/openproject$ gem update --system&lt;br /&gt;
xyz00-project@h20:~/openproject$ bundle install&lt;br /&gt;
xyz00-project@h20:~/openproject$ npm install&lt;br /&gt;
xyz00-project@h20:~/openproject$ export RAILS_ENV=&amp;quot;production&amp;quot;&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake db:migrate&lt;br /&gt;
xyz00-project@h20:~/openproject$ ./bin/rake assets:precompile&lt;br /&gt;
xyz00-project@h20:~/openproject$ touch ~/doms/prj.example.com/app-ssl/tmp/restart.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.openproject.org/installation-and-operations/installation/manual/ Anleitung für die manuelle Installation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/openproject Ansible Playbook für Hostsharing]&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Passenger]]&lt;br /&gt;
[[Kategorie:Projektmanagement]]&lt;br /&gt;
[[Kategorie:Projektverwaltung]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=7228</id>
		<title>Zammad</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=7228"/>
		<updated>2025-01-21T08:20:01Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation nodejs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anforderungen ==&lt;br /&gt;
Zammad ist ein relativ umfangreiches, mächtiges und modernes OSS Helpdesk Tool. Für die Installation wird benötigt: &lt;br /&gt;
&lt;br /&gt;
* eine (Sub)Domain &lt;br /&gt;
* 2 bis 4 GB RAM (Schätzung, eure Erfahrung kann abweichen, je nach Nutzung)&lt;br /&gt;
* ruby&lt;br /&gt;
* nodejs&lt;br /&gt;
* mehrere Daemons für Hintergrunddienste (worker, websocket)&lt;br /&gt;
* evtl. noch ElasticSearch für Volltextsuche&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Die Installation orientiert sich an dieser Anleitung und wurde für zammad 6.3 verfasst. &lt;br /&gt;
Einige HS spezifische Abweichungen gibt es jedoch.&lt;br /&gt;
&lt;br /&gt;
* https://docs.zammad.org/en/latest/install/source.html &lt;br /&gt;
&lt;br /&gt;
=== User anlegen ===&lt;br /&gt;
Für diese Anleitung wird angenommen das der User unter dem zammad laufen soll xyz00-zammad im Packet xyz00 ist.&lt;br /&gt;
&lt;br /&gt;
=== Installation ruby / ruby env ===&lt;br /&gt;
Prüfe die Version von ruby die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#ruby-programming-language hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 3.2.3 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Die Installationsanleitung für rubyenv und ruby findet sich unter [[RubyRBEnv]].&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
ruby -v &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation nodejs ===&lt;br /&gt;
Prüfe die Version von nodejs die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#node-js  hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 20 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
node -v &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
Hinweis: ab Zammad v6.4.1 wird mit pnpm gearbeitet&lt;br /&gt;
&lt;br /&gt;
Ersteinrichtung von pnpm: &lt;br /&gt;
&lt;br /&gt;
  corepack enable pnpm&lt;br /&gt;
&lt;br /&gt;
Installation der Zammad Packages&lt;br /&gt;
 &lt;br /&gt;
  pnpm install&lt;br /&gt;
&lt;br /&gt;
=== Installation Redis === &lt;br /&gt;
&lt;br /&gt;
Siehe [[Redis]]&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen === &lt;br /&gt;
&lt;br /&gt;
Meine `.profile`, `.bashrc`, `.bash_profile` sahen dann wie folgt aus (möglicherweise gibt es hier optimierungspotential)&lt;br /&gt;
&lt;br /&gt;
Die Datei `.bash_profile`:&lt;br /&gt;
. ~/.profile&lt;br /&gt;
. ~/.bashrc&lt;br /&gt;
Die Datei `.profile` (vgl instalation ruby und nodejs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
#ruby&lt;br /&gt;
export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(rbenv init -)&amp;quot;&lt;br /&gt;
#nodejs&lt;br /&gt;
export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot;&lt;br /&gt;
[ -s &amp;quot;$NVM_DIR/nvm.sh&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/nvm.sh&amp;quot;  # This loads nvm&lt;br /&gt;
[ -s &amp;quot;$NVM_DIR/bash_completion&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/bash_completion&amp;quot;  # This loads nvm bash_completion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
und die Datei `.bashrc`. Quellen vgl. [https://github.com/zammad/zammad/tree/develop/script/systemd/zammad.env] und  [https://docs.zammad.org/en/latest/appendix/configure-env-vars.html#performance-tuning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
export REDIS_URL=redis://:&amp;lt;your-password-goes-here&amp;gt;@127.0.0.1:&amp;lt;port&amp;gt;&lt;br /&gt;
export RAILS_ENV=production&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann entweder alles neu einlesen oder einmal aus und wieder  einloggen. Wenn alles geklappt hat, sollten die folgenden Befehle alle sinnvolle Ausgaben liefern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
echo $RAILS_ENV # Ausgabe: production&lt;br /&gt;
ruby -v # Ausgabe vgl. oben&lt;br /&gt;
nodejs -v #  Ausgabe vgl. oben&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation  von Zammad ===&lt;br /&gt;
Zuerst laden wir zammad herunter, entpacken es, und installieren die dependencies (nur production)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
mkdir zammad&lt;br /&gt;
cd zammad&lt;br /&gt;
wget -O - https://ftp.zammad.com/zammad-latest.tar.gz |tar -xvvz&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann tragen wir die zugangsdaten der postgres Datenbank ein (auf HS Admin selbst erstellen) hier: beides `xyz00_zammad`&lt;br /&gt;
Mit folgendem Inhalt (Einrückung beachten!): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=yaml line&amp;gt;&lt;br /&gt;
# nano config/database.yml&lt;br /&gt;
&lt;br /&gt;
# config/database.yml&lt;br /&gt;
production:&lt;br /&gt;
  adapter: postgresql&lt;br /&gt;
  host: localhost&lt;br /&gt;
  database: xyz00_zammad&lt;br /&gt;
  pool: 50&lt;br /&gt;
  timeout: 5000&lt;br /&gt;
  encoding: utf8&lt;br /&gt;
  username: xyz00_zammad&lt;br /&gt;
  password: changeme&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn alles stimmt sollten sich die folgenden Befehle ohne Fehler ausführen lassen und die Datenbanktabellen   sowie die statischen Dateien zum ausliefern  anlegen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
rake db:migrate&lt;br /&gt;
rake assets:precompile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zammad ausliefern === &lt;br /&gt;
Um via Browser auf zammad zugreifen zu können kann es via [[Phusion Passenger]] ausgeliefert werden. Dazu muss im HS Admin eine Domain aufgeschaltet werden. Dann wird:&lt;br /&gt;
* die .htaccess wie folgend gesetzt werden &lt;br /&gt;
* der zammad ordner nach app-ssl gelinkt werden&lt;br /&gt;
* und der statische content in htdocs-ssl&lt;br /&gt;
* Optional kann das Domain Template noch um die subdomains bereinigt werden (2. Befehl)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd ~/doms/zammad.example.org/&lt;br /&gt;
rm -r subs*&lt;br /&gt;
rm -r htdocs-ssl&lt;br /&gt;
rm -r app-ssl&lt;br /&gt;
ln -s ~/zammad app-ssl&lt;br /&gt;
ln -s ~/zammad/public htdocs-ssl&lt;br /&gt;
nano .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HS-Admin muss unter der Domain dann folgende Eigenschaft bei Passenger gesetzt werden: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
PassengerRuby /home/pacs/xyz00/users/zammad/.rbenv/shims/ruby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
# Inhalt .htaccess&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
RewriteRule .* ws://127.0.0.1:6042/%{REQUEST_URI}  [P,L]&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
RewriteRule .* http://127.0.0.1:6041/%{REQUEST_URI} [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat sollte auf der Domain das restliche Web-basierte Setup zu sehen sein. Dort muss dann auch der andere HS Postfach User eingetragen werden. Theoretisch könnte man das auf dem gleichen Account abwickeln, ich persönlich würde es allerdings trennen. Piping wie bei manch andren Mailbasierten Anwendungen scheint nicht so einfach  möglich zu sein (needs more investigation)&lt;br /&gt;
&lt;br /&gt;
=== Hintergrunddienste === &lt;br /&gt;
&lt;br /&gt;
Damit der Websocket-Server und der Hintergrund Worker ordentlich laufen müssen folgende Befehle ausgeführt werden. Die IP Adresse und der Port beim Socket werden aus den Enviroment Variablen von oben bezogen, können allerdings auch manuell  gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd zammad&lt;br /&gt;
bundle exec script/background-worker.rb start&lt;br /&gt;
bundle exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT} start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfohlen: Monit  ==&lt;br /&gt;
Ich habe alles monit spezifische in den ordner monit gepackt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd   &lt;br /&gt;
mkdir monit&lt;br /&gt;
cd monit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum starten habe ich ein kleines start und stop script (für monit) erstellt (lange zeile ggf. beachten)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
# nano start-worker.sh&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
. ~/.bash_profile&lt;br /&gt;
cd ~/zammad&lt;br /&gt;
exec  ${BUNDLE_BINARY} exec script/background-worker.rb start &amp;gt; ~/monit/worker.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
echo $! &amp;gt; ~/monit/worker.pid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
# nano start-websocket.sh&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
. ~/.bash_profile&lt;br /&gt;
cd ~/zammad&lt;br /&gt;
# warnung, der  socket  produziert relativ viel log output im normalen Betrieb ggf. anpassen&lt;br /&gt;
exec ${BUNDLE_BINARY} exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT}  start &amp;gt; ~/monit/socket.log 2&amp;gt;&amp;amp;1 &amp;amp; &lt;br /&gt;
echo $! &amp;gt; ~/monit/socket.pid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
# nano stop-worker.sh&lt;br /&gt;
&lt;br /&gt;
kill $( cat ~/monit/worker.pid )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
# nano stop-websocket.sh&lt;br /&gt;
&lt;br /&gt;
kill $( cat ~/monit/socket.pid )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das dann alles noch in der `~/.monitrc` zusammenführen (achtung einige xyz00, zammad (user) und Mail Platzhalter):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
# nano ~/.monitrc&lt;br /&gt;
&lt;br /&gt;
set daemon 60 with start delay 10&lt;br /&gt;
set logfile /home/pacs/xyz00/users/zammad/monit/monit.log&lt;br /&gt;
set idfile /home/pacs/xyz00/users/zammad/monit/monit.id&lt;br /&gt;
set statefile /home/pacs/xyz00/users/zammad/monit/monit.state&lt;br /&gt;
set mailserver localhost&lt;br /&gt;
set mail-format { from: monit@your-domain.com }&lt;br /&gt;
#set httpd port 39008 address localhost&lt;br /&gt;
#    allow zammadadmin:ein-monit-passwort&lt;br /&gt;
check process zammad_worker with pidfile /home/pacs/xyz00/users/zammad/monit/worker.pid&lt;br /&gt;
  start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-worker.sh&amp;quot;&lt;br /&gt;
  stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-worker.sh&amp;quot;&lt;br /&gt;
check process zammad_socket with pidfile /home/pacs/opa00/users/zammad/monit/socket.pid&lt;br /&gt;
  start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-websocket.sh&amp;quot;&lt;br /&gt;
  stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-websocket.sh&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Noch schnell die rechte der 4 scripts anpassen: &lt;br /&gt;
   chmod u+x ~/monit/*.sh&lt;br /&gt;
&lt;br /&gt;
Monit kann dann mit &lt;br /&gt;
   monit&lt;br /&gt;
gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Sobald monit einmal erfolgreich anlief sollte der monit Ordner so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
#  ls -lh&lt;br /&gt;
&lt;br /&gt;
-rw-r--r-- 1 xyz00-zammad xyz00    32 Feb 23 11:59 monit.id&lt;br /&gt;
-rw-r--r-- 1 xyz00-zammad xyz00  2867 Feb 24 23:46 monit.log&lt;br /&gt;
-rw------- 1 xyz00-zammad xyz00   800 Feb 24 13:20 monit.state&lt;br /&gt;
-rw-r--r-- 1 xyz00-zammad xyz00 41048 Feb 25 00:49 socket.log&lt;br /&gt;
-rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:45 socket.pid&lt;br /&gt;
-rwxr--r-- 1 xyz00-zammad xyz00   209 Feb 24 23:45 start-websocket.sh&lt;br /&gt;
-rwxr--r-- 1 xyz00-zammad xyz00   161 Feb 24 23:27 start-worker.sh&lt;br /&gt;
-rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 24 23:30 stop-websocket.sh&lt;br /&gt;
-rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 23 11:53 stop-worker.sh&lt;br /&gt;
-rw-r--r-- 1 xyz00-zammad xyz00     0 Feb 24 23:38 worker.log&lt;br /&gt;
-rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:38 worker.pid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Mail-Piping ==&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen (viel) Last vom Background-Worker zu nehmen kann Mailpiping eingerichtet werden. Dafür sollte vermutlich  zuerst der Webinstaller mit einer anderen IMAP/SMTP config durchgeklickt werden. Zusätzlich reduziert sich die Latenz von Maileingang bis Ticketeingang ein wenig. &lt;br /&gt;
&lt;br /&gt;
=== Ausgangsserver auf sendmail festlegen ===&lt;br /&gt;
&lt;br /&gt;
Der folgende Code schnippsel legt einen Mail-Kanal an, ohne einen dedizierten Eingang der regelmäßig abgerufen werden müsste. Quelle [https://admin-docs.zammad.org/en/latest/channels/email/advanced/sendmail.html]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ruby&amp;gt;&lt;br /&gt;
  rails r &amp;quot;Channel.create(area: &#039;Email::Account&#039;, options: { inbound: { adapter: &#039;null&#039;, options: {} }, outbound: { adapter: &#039;sendmail&#039; } }, active: true, preferences: { editable: false }, updated_by_id: 1, created_by_id: 1)&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maileingang per  procmail  ===  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optional: Elasticsearch Anbindung ==&lt;br /&gt;
&lt;br /&gt;
Weiteren User nach [[Elasticsearch]] anlegen. Dieser muss dann mit zammad verknüpft werden. Hier wird der  Port 39200 angenommen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd ~/zammad&lt;br /&gt;
rails r &amp;quot;Setting.set(&#039;es_url&#039;, &#039;http://localhost:39200&#039;)&amp;quot;&lt;br /&gt;
rails r &amp;quot;Setting.set(&#039;es_user&#039;, &#039;elasticsearch&#039;)&amp;quot;&lt;br /&gt;
rails r &amp;quot;Setting.set(&#039;es_password&#039;, &#039;changeme&#039;)&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Elasticsearch wieder zu deaktivieren einfach die URL durch einen leeren string ersetzen.&lt;br /&gt;
&lt;br /&gt;
Es wird für Zammad 5.x ein ElasticSearch 7.x benötigt. siehe auch https://docs.zammad.org/en/latest/install/elasticsearch.html&lt;br /&gt;
&lt;br /&gt;
Zum ersten Einrichten, oder auch zum Testen der Verbindung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd ~/zammad&lt;br /&gt;
rake searchindex:rebuild --trace&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
  create indexes...rake aborted!&lt;br /&gt;
  Can&#039;t find config setting &#039;es_multi_index&#039;&lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
psql -U xyz00_zammad&lt;br /&gt;
  INSERT INTO settings \&lt;br /&gt;
    (title, name, description, area, frontend, created_at, updated_at) \&lt;br /&gt;
    VALUES (&#039;ElasticSearch Multi Index&#039;, &#039;es_multi_index&#039;, \&lt;br /&gt;
    &#039;&#039;,&#039;SearchIndex::ElasticSearch&#039;, \&lt;br /&gt;
    false, &#039;2023-03-15 01:00:00&#039;, &#039;2023-03-15 01:00:00&#039;);&lt;br /&gt;
cd ~/zammad&lt;br /&gt;
rails r &amp;quot;Setting.set(&#039;es_multi_index&#039;, false)&amp;quot;&lt;br /&gt;
rake searchindex:rebuild --trace&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zammad Upgrade ==&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
killall -u $USER&lt;br /&gt;
killall -u $USER 9&lt;br /&gt;
&lt;br /&gt;
cp -a zammad zammad-old&lt;br /&gt;
cd zammad&lt;br /&gt;
rm -Rf app&lt;br /&gt;
rm -Rf public/assets&lt;br /&gt;
wget -O - https://ftp.zammad.com/zammad-5.3.1.tar.gz |tar -xvvz&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Ruby 2.2.5 fehlt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Rbenv ist zu alt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
cd ~/.rbenv/plugins/ruby-build&lt;br /&gt;
git pull&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
rbenv global 2.5.5&lt;br /&gt;
rbenv local 2.5.5&lt;br /&gt;
&lt;br /&gt;
cd zammad&lt;br /&gt;
gem install bundle&lt;br /&gt;
gem install bundler&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
# Geht nicht, Bundler 1.17.x wird gebraucht.&lt;br /&gt;
&lt;br /&gt;
gem install bundler==1.17.3&lt;br /&gt;
&lt;br /&gt;
#	Geht auch nicht.&lt;br /&gt;
#	Dann hacken wir das mal versuchsweise ins Lock.&lt;br /&gt;
&lt;br /&gt;
# vim Gemfile.lock&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
#	Es fehlen Libs.&lt;br /&gt;
#	HS bitte installieren...&lt;br /&gt;
#	[...]&lt;br /&gt;
#	Danke!&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
export RAILS_ENV=production&lt;br /&gt;
rake db:migrate&lt;br /&gt;
rake assets:clean&lt;br /&gt;
rake zammad:flush:cache&lt;br /&gt;
rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Problemen mit Assets muss man den Dienst nochmal neustarten.&lt;br /&gt;
&lt;br /&gt;
Nach dem Update testen, ob ElasticSearch noch funktioniert, eventuell muss auch ElasticSearch aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://zammad.org/documentation Zammad Dokumentation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/zammad Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Helpdesk]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=6840</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=6840"/>
		<updated>2024-07-08T11:13:25Z</updated>

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

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

		<summary type="html">&lt;p&gt;Opa00-hostsharing: WIP vaultwarden&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Vaultwarden, früher bekannt als Bitwarden_RS, ist eine leichtgewichtige und performante Open-Source-Alternative zu Bitwarden. Es handelt sich um eine selbst gehostete Passwortverwaltungslösung, die vollständig mit dem offiziellen Bitwarden-Ökosystem kompatibel ist. Vaultwarden ermöglicht es, sensible Zugangsdaten, sichere Notizen und andere geheime Informationen zentral und sicher zu verwalten.&lt;br /&gt;
&lt;br /&gt;
Mit minimalen Systemanforderungen kann Vaultwarden problemlos auf ressourcenschwachen Systemen oder in Containern betrieben werden. Es unterstützt Funktionen wie Zwei-Faktor-Authentifizierung (2FA), End-to-End-Verschlüsselung und die Integration in bestehende Verzeichnisdienste. Vaultwarden bietet zudem eine Webschnittstelle und verschiedene Clients für eine nahtlose Benutzererfahrung.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Cargo herunterladen ==&lt;br /&gt;
&lt;br /&gt;
  curl --proto &#039;=https&#039; --tlsv1.2 -sSf https://sh.rustup.rs | sh&lt;br /&gt;
  source $HOME/.cargo/env&lt;br /&gt;
&lt;br /&gt;
== Vaultvarden herunterladen und builden ==&lt;br /&gt;
  &lt;br /&gt;
  git clone https://github.com/dani-garcia/vaultwarden.git&lt;br /&gt;
  cargo build --features postgresql --release&lt;br /&gt;
  &lt;br /&gt;
== Auf eine Domain aufschalten ==&lt;br /&gt;
&lt;br /&gt;
run.sh &lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  screen -dmS bitwarden ~/vaultwarden/target/release/vaultwarden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== .env File ===&lt;br /&gt;
  &lt;br /&gt;
Passe den Port nach belieben an, und stelle sicher das die SQL Daten (user, passwort und dbname) und der admin token stimmen, die vollständigen Informationen und alle setzbare Optionen (und deren defaults) findet sich unter https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/.env.template &lt;br /&gt;
&lt;br /&gt;
  ## Be aware that most of these settings will be overridden if they were changed&lt;br /&gt;
  ## in the admin interface. Those overrides are stored within DATA_FOLDER/config.json .&lt;br /&gt;
  ##&lt;br /&gt;
  ## By default, Vaultwarden expects for this file to be named &amp;quot;.env&amp;quot; and located&lt;br /&gt;
  ## in the current working directory. If this is not the case, the environment&lt;br /&gt;
  ## variable ENV_FILE can be set to the location of this file prior to starting&lt;br /&gt;
  ## Vaultwarden.&lt;br /&gt;
  DOMAIN=https://bitwarden.example.com&lt;br /&gt;
  SIGNUPS_ALLOWED=false&lt;br /&gt;
  ROCKET_ADDRESS=127.0.0.1&lt;br /&gt;
  ROCKET_PORT=8222&lt;br /&gt;
  DATABASE_URL=&#039;postgresql://xyz00_bitwarden:thesqlpassword@localhost/xyz00_bitwarden&#039;&lt;br /&gt;
  SMTP_HOST=127.0.0.1&lt;br /&gt;
  SMTP_PORT=25&lt;br /&gt;
  SMTP_SSL=false&lt;br /&gt;
  SMTP_FROM=bitwarden@example.com&lt;br /&gt;
  SMTP_FROM_NAME=&amp;quot;My Personal Bitwarden&amp;quot;&lt;br /&gt;
  ADMIN_TOKEN=&amp;lt;someverLonganduniquetoken&amp;gt;&lt;br /&gt;
  ORG_CREATION_USERS=user@example.com&lt;br /&gt;
  REQUIRE_DEVICE_EMAIL=true&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
Falls du den Port angepasst hast muss er auch hier angepasst werden.&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$           [NC,OR]&lt;br /&gt;
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]&lt;br /&gt;
  RewriteRule .* ws://127.0.0.1:8222%{REQUEST_URI}  [proxy]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteRule .* http://127.0.0.1:8222%{REQUEST_URI} [proxy,last]&lt;br /&gt;
&lt;br /&gt;
=== Weboberfläche bereitstellen ===&lt;br /&gt;
&lt;br /&gt;
Versionsnummer anpassen, herunterladen und entpacken https://github.com/dani-garcia/bw_web_builds/releases/&lt;br /&gt;
&lt;br /&gt;
   wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2022.6.2/bw_web_v2022.6.2.tar.gz&lt;br /&gt;
   tar xvf bw_web_v2022.6.2.tar.gz &lt;br /&gt;
   rm bw_web_v2022.6.2.tar.gz&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6573</id>
		<title>Zammad</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6573"/>
		<updated>2024-05-14T07:55:51Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Zammad ausliefern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anforderungen ==&lt;br /&gt;
Zammad ist ein relativ umfangreiches, mächtiges und modernes OSS Helpdesk Tool. Für die Installation wird benötigt: &lt;br /&gt;
&lt;br /&gt;
* eine (Sub)Domain &lt;br /&gt;
* 2 bis 4 GB RAM (Schätzung, eure Erfahrung kann abweichen, je nach Nutzung)&lt;br /&gt;
* ruby&lt;br /&gt;
* nodejs&lt;br /&gt;
* mehrere Daemons für Hintergrunddienste (worker, websocket)&lt;br /&gt;
* evtl. noch ElasticSearch für Volltextsuche&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Die Installation orientiert sich an dieser Anleitung und wurde für zammad 6.3 verfasst. &lt;br /&gt;
Einige HS spezifische Abweichungen gibt es jedoch.&lt;br /&gt;
&lt;br /&gt;
* https://docs.zammad.org/en/latest/install/source.html &lt;br /&gt;
&lt;br /&gt;
=== User anlegen ===&lt;br /&gt;
Für diese Anleitung wird angenommen das der User unter dem zammad laufen soll xyz00-zammad im Packet xyz00 ist.&lt;br /&gt;
&lt;br /&gt;
=== Installation ruby / ruby env ===&lt;br /&gt;
Prüfe die Version von ruby die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#ruby-programming-language hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 3.2.3 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Die Installationsanleitung für rubyenv und ruby findet sich unter [[RubyRBEnv]].&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  ruby -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation nodejs ===&lt;br /&gt;
Prüfe die Version von nodejs die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#node-js  hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 20 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  node -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation Redis === &lt;br /&gt;
&lt;br /&gt;
Siehe [[Redis]]&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen === &lt;br /&gt;
&lt;br /&gt;
Meine `.profile`, `.bashrc`, `.bash_profile` sahen dann wie folgt aus (möglicherweise gibt es hier optimierungspotential)&lt;br /&gt;
&lt;br /&gt;
Die Datei `.bash_profile`:&lt;br /&gt;
  . ~/.profile&lt;br /&gt;
  . ~/.bashrc&lt;br /&gt;
Die Datei `.profile` (vgl instalation ruby und nodejs):&lt;br /&gt;
  #ruby&lt;br /&gt;
  export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&lt;br /&gt;
  eval &amp;quot;$(rbenv init -)&amp;quot;&lt;br /&gt;
  #nodejs&lt;br /&gt;
  export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot;&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/nvm.sh&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/nvm.sh&amp;quot;  # This loads nvm&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/bash_completion&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/bash_completion&amp;quot;  # This loads nvm bash_completion&lt;br /&gt;
und die Datei `.bashrc`. Quellen vgl. [https://github.com/zammad/zammad/tree/develop/script/systemd/zammad.env] und  [https://docs.zammad.org/en/latest/appendix/configure-env-vars.html#performance-tuning]&lt;br /&gt;
  &lt;br /&gt;
  export REDIS_URL=redis://:&amp;lt;your-password-goes-here&amp;gt;@127.0.0.1:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann entweder alles neu einlesen oder einmal aus und wieder  einloggen. Wenn alles geklappt hat, sollten die folgenden Befehle alle sinnvolle Ausgaben liefern&lt;br /&gt;
  echo $RAILS_ENV # Ausgabe: production&lt;br /&gt;
  ruby -v # Ausgabe vgl. oben&lt;br /&gt;
  nodejs -v #  Ausgabe vgl. oben&lt;br /&gt;
&lt;br /&gt;
=== Installation  von Zammad ===&lt;br /&gt;
Zuerst laden wir zammad herunter, entpacken es, und installieren die dependencies (nur production)&lt;br /&gt;
  &lt;br /&gt;
  mkdir zammad&lt;br /&gt;
  cd zammad&lt;br /&gt;
  wget -O - https://ftp.zammad.com/zammad-latest.tar.gz |tar -xvvz&lt;br /&gt;
  bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
  bundle install&lt;br /&gt;
  &lt;br /&gt;
Dann tragen wir die zugangsdaten der postgres Datenbank ein (auf HS Admin selbst erstellen) hier: beides `xyz00_zammad`&lt;br /&gt;
Mit folgendem Inhalt (Einrückung beachten!): &lt;br /&gt;
  nano config/database.yml&lt;br /&gt;
  &lt;br /&gt;
  # config/database.yml&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    host: localhost&lt;br /&gt;
    database: xyz00_zammad&lt;br /&gt;
    pool: 50&lt;br /&gt;
    timeout: 5000&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    username: xyz00_zammad&lt;br /&gt;
    password: changeme&lt;br /&gt;
&lt;br /&gt;
Wenn alles stimmt sollten sich die folgenden Befehle ohne Fehler ausführen lassen und die Datenbanktabellen   sowie die statischen Dateien zum ausliefern  anlegen&lt;br /&gt;
  &lt;br /&gt;
   rake db:migrate&lt;br /&gt;
   rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
=== Zammad ausliefern === &lt;br /&gt;
Um via Browser auf zammad zugreifen zu können kann es via [[Phusion Passenger]] ausgeliefert werden. Dazu muss im HS Admin eine Domain aufgeschaltet werden. Dann wird:&lt;br /&gt;
* die .htaccess wie folgend gesetzt werden &lt;br /&gt;
* der zammad ordner nach app-ssl gelinkt werden&lt;br /&gt;
* und der statische content in htdocs-ssl&lt;br /&gt;
* Optional kann das Domain Template noch um die subdomains bereinigt werden (2. Befehl)&lt;br /&gt;
&lt;br /&gt;
  cd ~/doms/zammad.example.org/&lt;br /&gt;
  rm -r subs*&lt;br /&gt;
  rm -r htdocs-ssl&lt;br /&gt;
  rm -r app-ssl&lt;br /&gt;
  ln -s ~/zammad app-ssl&lt;br /&gt;
  ln -s ~/zammad/public htdocs-ssl&lt;br /&gt;
  nano .htaccess&lt;br /&gt;
&lt;br /&gt;
In HS-Admin muss unter der Domain dann folgende Eigenschaft bei Passenger gesetzt werden: &lt;br /&gt;
&lt;br /&gt;
  PassengerRuby /home/pacs/xyz00/users/zammad/.rbenv/shims/ruby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # Inhalt .htaccess&lt;br /&gt;
  DirectoryIndex disabled&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
  RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
  RewriteRule .* ws://127.0.0.1:6042/%{REQUEST_URI}  [P,L]&lt;br /&gt;
&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
  RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
  RewriteRule .* http://127.0.0.1:6041/%{REQUEST_URI} [proxy,last]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat sollte auf der Domain das restliche Web-basierte Setup zu sehen sein. Dort muss dann auch der andere HS Postfach User eingetragen werden. Theoretisch könnte man das auf dem gleichen Account abwickeln, ich persönlich würde es allerdings trennen. Piping wie bei manch andren Mailbasierten Anwendungen scheint nicht so einfach  möglich zu sein (needs more investigation)&lt;br /&gt;
&lt;br /&gt;
=== Hintergrunddienste === &lt;br /&gt;
&lt;br /&gt;
Damit der Websocket-Server und der Hintergrund Worker ordentlich laufen müssen folgende Befehle ausgeführt werden. Die IP Adresse und der Port beim Socket werden aus den Enviroment Variablen von oben bezogen, können allerdings auch manuell  gesetzt werden.&lt;br /&gt;
  cd zammad&lt;br /&gt;
  bundle exec script/background-worker.rb start&lt;br /&gt;
  bundle exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT} start&lt;br /&gt;
&lt;br /&gt;
== Empfohlen: Monit  ==&lt;br /&gt;
Ich habe alles monit spezifische in den ordner monit gepackt&lt;br /&gt;
  cd   &lt;br /&gt;
  mkdir monit&lt;br /&gt;
  cd monit&lt;br /&gt;
Zum starten habe ich ein kleines start und stop script (für monit) erstellt (lange zeile ggf. beachten)&lt;br /&gt;
&lt;br /&gt;
  nano start-worker.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  exec  ${BUNDLE_BINARY} exec script/background-worker.rb start &amp;gt; ~/monit/worker.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
  echo $! &amp;gt; ~/monit/worker.pid&lt;br /&gt;
&lt;br /&gt;
  nano start-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  # warnung, der  socket  produziert relativ viel log output im normalen Betrieb ggf. anpassen&lt;br /&gt;
  exec ${BUNDLE_BINARY} exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT}  start &amp;gt; ~/monit/socket.log 2&amp;gt;&amp;amp;1 &amp;amp; &lt;br /&gt;
  echo $! &amp;gt; ~/monit/socket.pid&lt;br /&gt;
&lt;br /&gt;
  nano stop-worker.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/worker.pid )&lt;br /&gt;
&lt;br /&gt;
  nano stop-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/socket.pid )&lt;br /&gt;
&lt;br /&gt;
Das dann alles noch in der `~/.monitrc` zusammenführen (achtung einige xyz00, zammad (user) und Mail Platzhalter):&lt;br /&gt;
&lt;br /&gt;
  nano ~/.monitrc&lt;br /&gt;
&lt;br /&gt;
  set daemon 60 with start delay 10&lt;br /&gt;
  set logfile /home/pacs/xyz00/users/zammad/monit/monit.log&lt;br /&gt;
  set idfile /home/pacs/xyz00/users/zammad/monit/monit.id&lt;br /&gt;
  set statefile /home/pacs/xyz00/users/zammad/monit/monit.state&lt;br /&gt;
  set mailserver localhost&lt;br /&gt;
  set mail-format { from: monit@your-domain.com }&lt;br /&gt;
  #set httpd port 39008 address localhost&lt;br /&gt;
  #    allow zammadadmin:ein-monit-passwort&lt;br /&gt;
  check process zammad_worker with pidfile /home/pacs/xyz00/users/zammad/monit/worker.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-worker.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-worker.sh&amp;quot;&lt;br /&gt;
  check process zammad_socket with pidfile /home/pacs/opa00/users/zammad/monit/socket.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-websocket.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-websocket.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Noch schnell die rechte der 4 scripts anpassen: &lt;br /&gt;
   chmod u+x ~/monit/*.sh&lt;br /&gt;
&lt;br /&gt;
Monit kann dann mit &lt;br /&gt;
   monit&lt;br /&gt;
gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Sobald monit einmal erfolgreich anlief sollte der monit Ordner so aussehen:&lt;br /&gt;
  ls -lh&lt;br /&gt;
&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00    32 Feb 23 11:59 monit.id&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00  2867 Feb 24 23:46 monit.log&lt;br /&gt;
  -rw------- 1 xyz00-zammad xyz00   800 Feb 24 13:20 monit.state&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00 41048 Feb 25 00:49 socket.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:45 socket.pid&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   209 Feb 24 23:45 start-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   161 Feb 24 23:27 start-worker.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 24 23:30 stop-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 23 11:53 stop-worker.sh&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     0 Feb 24 23:38 worker.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:38 worker.pid&lt;br /&gt;
&lt;br /&gt;
== Optional: Mail-Piping ==&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen (viel) Last vom Background-Worker zu nehmen kann Mailpiping eingerichtet werden. Dafür sollte vermutlich  zuerst der Webinstaller mit einer anderen IMAP/SMTP config durchgeklickt werden. Zusätzlich reduziert sich die Latenz von Maileingang bis Ticketeingang ein wenig. &lt;br /&gt;
&lt;br /&gt;
=== Ausgangsserver auf sendmail festlegen ===&lt;br /&gt;
&lt;br /&gt;
Der folgende Code schnippsel legt einen Mail-Kanal an, ohne einen dedizierten Eingang der regelmäßig abgerufen werden müsste. Quelle [https://admin-docs.zammad.org/en/latest/channels/email/advanced/sendmail.html]&lt;br /&gt;
&lt;br /&gt;
  rails r &amp;quot;Channel.create(area: &#039;Email::Account&#039;, options: { inbound: { adapter: &#039;null&#039;, options: {} }, outbound: { adapter: &#039;sendmail&#039; } }, active: true, preferences: { editable: false }, updated_by_id: 1, created_by_id: 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Maileingang per  procmail  ===  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optional: Elasticsearch Anbindung ==&lt;br /&gt;
&lt;br /&gt;
Weiteren User nach [[Elasticsearch]] anlegen. Dieser muss dann mit zammad verknüpft werden. Hier wird der  Port 39200 angenommen. &lt;br /&gt;
&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_url&#039;, &#039;http://localhost:39200&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_user&#039;, &#039;elasticsearch&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_password&#039;, &#039;changeme&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Um Elasticsearch wieder zu deaktivieren einfach die URL durch einen leeren string ersetzen.&lt;br /&gt;
&lt;br /&gt;
Es wird für Zammad 5.x ein ElasticSearch 7.x benötigt. siehe auch https://docs.zammad.org/en/latest/install/elasticsearch.html&lt;br /&gt;
&lt;br /&gt;
Zum ersten Einrichten, oder auch zum Testen der Verbindung:&lt;br /&gt;
&lt;br /&gt;
 cd ~/zammad&lt;br /&gt;
 rake searchindex:rebuild --trace&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
  create indexes...rake aborted!&lt;br /&gt;
  Can&#039;t find config setting &#039;es_multi_index&#039;&lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  psql -U xyz00_zammad&lt;br /&gt;
    INSERT INTO settings \&lt;br /&gt;
      (title, name, description, area, frontend, created_at, updated_at) \&lt;br /&gt;
      VALUES (&#039;ElasticSearch Multi Index&#039;, &#039;es_multi_index&#039;, \&lt;br /&gt;
      &#039;&#039;,&#039;SearchIndex::ElasticSearch&#039;, \&lt;br /&gt;
      false, &#039;2023-03-15 01:00:00&#039;, &#039;2023-03-15 01:00:00&#039;);&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_multi_index&#039;, false)&amp;quot;&lt;br /&gt;
  rake searchindex:rebuild --trace&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zammad Upgrade ==&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER&lt;br /&gt;
killall -u $USER 9&lt;br /&gt;
&lt;br /&gt;
cp -a zammad zammad-old&lt;br /&gt;
cd zammad&lt;br /&gt;
rm -Rf app&lt;br /&gt;
rm -Rf public/assets&lt;br /&gt;
wget -O - https://ftp.zammad.com/zammad-5.3.1.tar.gz |tar -xvvz&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Ruby 2.2.5 fehlt!&lt;br /&gt;
&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Rbenv ist zu alt!&lt;br /&gt;
&lt;br /&gt;
cd ~/.rbenv/plugins/ruby-build&lt;br /&gt;
git pull&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
rbenv global 2.5.5&lt;br /&gt;
rbenv local 2.5.5&lt;br /&gt;
&lt;br /&gt;
cd zammad&lt;br /&gt;
gem install bundle&lt;br /&gt;
gem install bundler&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
Geht nicht, Bundler 1.17.x wird gebraucht.&lt;br /&gt;
&lt;br /&gt;
gem install bundler==1.17.3&lt;br /&gt;
&lt;br /&gt;
	Geht auch nicht.&lt;br /&gt;
	Dann hacken wir das mal versuchsweise ins Lock.&lt;br /&gt;
&lt;br /&gt;
vim Gemfile.lock&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Es fehlen Libs.&lt;br /&gt;
	HS bitte installieren...&lt;br /&gt;
	[...]&lt;br /&gt;
	Danke!&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
export RAILS_ENV=production&lt;br /&gt;
rake db:migrate&lt;br /&gt;
rake assets:clean&lt;br /&gt;
rake zammad:flush:cache&lt;br /&gt;
rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Problemen mit Assets muss man den Dienst nochmal neustarten.&lt;br /&gt;
&lt;br /&gt;
Nach dem Update testen, ob ElasticSearch noch funktioniert, eventuell muss auch ElasticSearch aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://zammad.org/documentation Zammad Dokumentation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/zammad Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Helpdesk]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Redis&amp;diff=6572</id>
		<title>Redis</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Redis&amp;diff=6572"/>
		<updated>2024-05-14T07:52:19Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: changed for new debian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Redis installieren ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Redis&#039;&#039;&#039; ist ein einfacher Datenspeicher für Schlüssel-Wert-Paare. Datensätze werden jeweils unter einem Schlüssel abgelegt. Die Daten werden jeweils im Hauptspeicher gehalten und nur zu konfigurierbaren Zeitpunkten auf die Festplatte gesichert. &lt;br /&gt;
&lt;br /&gt;
Redis-Datenbanken werden häufig zur Speicherung von Warteschlangen benutzt. In Redis werden Aufträge gespeichert, die asynchron von Hintergrundprogrammen abgearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Redis ist auf den Hostsharing-Servern vorinstalliert. Für die Nutzung muss lediglich eine Konfigurationsdatei angelegt werden und ein Hitergrundprogramm gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird für den User &#039;&#039;xyz00-service&#039;&#039; ein Redis-Dienst eingerichtet.&lt;br /&gt;
Der User &#039;&#039;xyz00-service&#039;&#039; ist in HSAdmin mit &#039;&#039;/bin/bash&#039;&#039; als Shell eingerichtet.&lt;br /&gt;
&lt;br /&gt;
Nach dem Login als &#039;&#039;xyz00-service&#039;&#039; lege ich Verzeichnisse &#039;&#039;~/redis/etc&#039;&#039; und &#039;&#039;~/redis/var&#039;&#039; an:&lt;br /&gt;
&lt;br /&gt;
 xyz00-service@h00:~$ mkdir redis&lt;br /&gt;
 xyz00-service@h00:~$ mkdir redis/etc&lt;br /&gt;
 xyz00-service@h00:~$ mkdir redis/var&lt;br /&gt;
&lt;br /&gt;
Im etc-Verzeichnis wird die Konfigurationsdatei &#039;&#039;redis.conf&#039;&#039; für den Redis-Dienst abgelegt.&lt;br /&gt;
&lt;br /&gt;
Eine Beispiel-Konfiguration ist:&lt;br /&gt;
&lt;br /&gt;
 requirepass &amp;lt;generiertes-passwort&amp;gt;&lt;br /&gt;
 bind 127.0.0.1&lt;br /&gt;
 port 33033&lt;br /&gt;
 tcp-backlog 128&lt;br /&gt;
 timeout 300&lt;br /&gt;
 loglevel notice&lt;br /&gt;
 logfile /home/pacs/xyz00/users/service/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/service/redis/var/&lt;br /&gt;
&lt;br /&gt;
Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port &#039;&#039;33033&#039;&#039; für die Netzwerk-Schnittstelle muss ggf. angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Der Dienst wird gestartet mit:&lt;br /&gt;
&lt;br /&gt;
 xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf&lt;br /&gt;
&lt;br /&gt;
Mit Ctrl-C kann der Dienst wieder gestoppt werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile &#039;bind 127.0.0.1&#039; in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert:&lt;br /&gt;
&lt;br /&gt;
 unixsocket /home/pacs/xyz00/users/service/redis/var/redis-server.sock&lt;br /&gt;
 unixsocketperm 700&lt;br /&gt;
 port 0&lt;br /&gt;
&lt;br /&gt;
(der Unixsocket benötigt in der Konfiguration den vollständigen absoluten Pfad zum Socket im Dateisystem!)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung als Server-Dienst ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Redis&#039;&#039;&#039; soll über den Systemdienst &#039;&#039;&#039;SystemD&#039;&#039;&#039; automatisch im Hintergrund gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Dazu wird im Verzeichnis &#039;&#039;~/.config/systemd/user&#039;&#039; eine Datei &#039;&#039;redis.service&#039;&#039; mit dem folgenden Inhalt angelegt:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Redis Service&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 WorkingDirectory=%h/redis&lt;br /&gt;
 Environment=&amp;quot;PATH=/usr/local/bin:/usr/bin:/bin&amp;quot;&lt;br /&gt;
 ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf&lt;br /&gt;
 Restart=always&lt;br /&gt;
 PrivateTmp=true&lt;br /&gt;
 NoNewPrivileges=true&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
&lt;br /&gt;
Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user daemon-reload&lt;br /&gt;
 systemctl --user enable redis.service&lt;br /&gt;
 systemctl --user start redis.service&lt;br /&gt;
&lt;br /&gt;
Mit den Kommandos&lt;br /&gt;
&lt;br /&gt;
 systemctl --user status &lt;br /&gt;
 systemctl --user status redis.service&lt;br /&gt;
&lt;br /&gt;
kann der Status des Dienstes ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
* [https://redis.io/ Internetseite des Redis Projekts]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:SystemD]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6571</id>
		<title>Zammad</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6571"/>
		<updated>2024-05-14T07:38:39Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation  von Zammad */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anforderungen ==&lt;br /&gt;
Zammad ist ein relativ umfangreiches, mächtiges und modernes OSS Helpdesk Tool. Für die Installation wird benötigt: &lt;br /&gt;
&lt;br /&gt;
* eine (Sub)Domain &lt;br /&gt;
* 2 bis 4 GB RAM (Schätzung, eure Erfahrung kann abweichen, je nach Nutzung)&lt;br /&gt;
* ruby&lt;br /&gt;
* nodejs&lt;br /&gt;
* mehrere Daemons für Hintergrunddienste (worker, websocket)&lt;br /&gt;
* evtl. noch ElasticSearch für Volltextsuche&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Die Installation orientiert sich an dieser Anleitung und wurde für zammad 6.3 verfasst. &lt;br /&gt;
Einige HS spezifische Abweichungen gibt es jedoch.&lt;br /&gt;
&lt;br /&gt;
* https://docs.zammad.org/en/latest/install/source.html &lt;br /&gt;
&lt;br /&gt;
=== User anlegen ===&lt;br /&gt;
Für diese Anleitung wird angenommen das der User unter dem zammad laufen soll xyz00-zammad im Packet xyz00 ist.&lt;br /&gt;
&lt;br /&gt;
=== Installation ruby / ruby env ===&lt;br /&gt;
Prüfe die Version von ruby die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#ruby-programming-language hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 3.2.3 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Die Installationsanleitung für rubyenv und ruby findet sich unter [[RubyRBEnv]].&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  ruby -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation nodejs ===&lt;br /&gt;
Prüfe die Version von nodejs die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#node-js  hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 20 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  node -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation Redis === &lt;br /&gt;
&lt;br /&gt;
Siehe [[Redis]]&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen === &lt;br /&gt;
&lt;br /&gt;
Meine `.profile`, `.bashrc`, `.bash_profile` sahen dann wie folgt aus (möglicherweise gibt es hier optimierungspotential)&lt;br /&gt;
&lt;br /&gt;
Die Datei `.bash_profile`:&lt;br /&gt;
  . ~/.profile&lt;br /&gt;
  . ~/.bashrc&lt;br /&gt;
Die Datei `.profile` (vgl instalation ruby und nodejs):&lt;br /&gt;
  #ruby&lt;br /&gt;
  export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&lt;br /&gt;
  eval &amp;quot;$(rbenv init -)&amp;quot;&lt;br /&gt;
  #nodejs&lt;br /&gt;
  export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot;&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/nvm.sh&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/nvm.sh&amp;quot;  # This loads nvm&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/bash_completion&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/bash_completion&amp;quot;  # This loads nvm bash_completion&lt;br /&gt;
und die Datei `.bashrc`. Quellen vgl. [https://github.com/zammad/zammad/tree/develop/script/systemd/zammad.env] und  [https://docs.zammad.org/en/latest/appendix/configure-env-vars.html#performance-tuning]&lt;br /&gt;
  &lt;br /&gt;
  export REDIS_URL=redis://:&amp;lt;your-password-goes-here&amp;gt;@127.0.0.1:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann entweder alles neu einlesen oder einmal aus und wieder  einloggen. Wenn alles geklappt hat, sollten die folgenden Befehle alle sinnvolle Ausgaben liefern&lt;br /&gt;
  echo $RAILS_ENV # Ausgabe: production&lt;br /&gt;
  ruby -v # Ausgabe vgl. oben&lt;br /&gt;
  nodejs -v #  Ausgabe vgl. oben&lt;br /&gt;
&lt;br /&gt;
=== Installation  von Zammad ===&lt;br /&gt;
Zuerst laden wir zammad herunter, entpacken es, und installieren die dependencies (nur production)&lt;br /&gt;
  &lt;br /&gt;
  mkdir zammad&lt;br /&gt;
  cd zammad&lt;br /&gt;
  wget -O - https://ftp.zammad.com/zammad-latest.tar.gz |tar -xvvz&lt;br /&gt;
  bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
  bundle install&lt;br /&gt;
  &lt;br /&gt;
Dann tragen wir die zugangsdaten der postgres Datenbank ein (auf HS Admin selbst erstellen) hier: beides `xyz00_zammad`&lt;br /&gt;
Mit folgendem Inhalt (Einrückung beachten!): &lt;br /&gt;
  nano config/database.yml&lt;br /&gt;
  &lt;br /&gt;
  # config/database.yml&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    host: localhost&lt;br /&gt;
    database: xyz00_zammad&lt;br /&gt;
    pool: 50&lt;br /&gt;
    timeout: 5000&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    username: xyz00_zammad&lt;br /&gt;
    password: changeme&lt;br /&gt;
&lt;br /&gt;
Wenn alles stimmt sollten sich die folgenden Befehle ohne Fehler ausführen lassen und die Datenbanktabellen   sowie die statischen Dateien zum ausliefern  anlegen&lt;br /&gt;
  &lt;br /&gt;
   rake db:migrate&lt;br /&gt;
   rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
=== Zammad ausliefern === &lt;br /&gt;
Um via Browser auf zammad zugreifen zu können kann es via [[Phusion Passenger]] ausgeliefert werden. Dazu muss im HS Admin eine Domain aufgeschaltet werden. Dann wird:&lt;br /&gt;
* die .htaccess wie folgend gesetzt werden &lt;br /&gt;
* der zammad ordner nach app-ssl gelinkt werden&lt;br /&gt;
* und der statische content in htdocs-ssl&lt;br /&gt;
* Optional kann das Domain Template noch um die subdomains bereinigt werden (2. Befehl)&lt;br /&gt;
&lt;br /&gt;
  cd ~/doms/zammad.example.org/&lt;br /&gt;
  rm -r subs*&lt;br /&gt;
  rm -r htdocs-ssl&lt;br /&gt;
  rm -r app-ssl&lt;br /&gt;
  ln -s ~/zammad app-ssl&lt;br /&gt;
  ln -s ~/zammad/public htdocs-ssl&lt;br /&gt;
  nano .htaccess&lt;br /&gt;
&lt;br /&gt;
  # Inhalt .htaccess&lt;br /&gt;
  #PassengerFriendlyErrorPages on # falls nötig zum debuggen einkommentieren&lt;br /&gt;
  RackEnv production&lt;br /&gt;
  RailsEnv production&lt;br /&gt;
  PassengerRuby /home/pacs/xyz00/users/zammad/.rbenv/shims/ruby&lt;br /&gt;
  # local websocket ssl forwarding&lt;br /&gt;
  RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
  RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
  RewriteRule /(.*) ws://127.0.0.1:6042/$1  [P,L]&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat sollte auf der Domain das restliche Web-basierte Setup zu sehen sein. Dort muss dann auch der andere HS Postfach User eingetragen werden. Theoretisch könnte man das auf dem gleichen Account abwickeln, ich persönlich würde es allerdings trennen. Piping wie bei manch andren Mailbasierten Anwendungen scheint nicht so einfach  möglich zu sein (needs more investigation)&lt;br /&gt;
&lt;br /&gt;
=== Hintergrunddienste === &lt;br /&gt;
&lt;br /&gt;
Damit der Websocket-Server und der Hintergrund Worker ordentlich laufen müssen folgende Befehle ausgeführt werden. Die IP Adresse und der Port beim Socket werden aus den Enviroment Variablen von oben bezogen, können allerdings auch manuell  gesetzt werden.&lt;br /&gt;
  cd zammad&lt;br /&gt;
  bundle exec script/background-worker.rb start&lt;br /&gt;
  bundle exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT} start&lt;br /&gt;
&lt;br /&gt;
== Empfohlen: Monit  ==&lt;br /&gt;
Ich habe alles monit spezifische in den ordner monit gepackt&lt;br /&gt;
  cd   &lt;br /&gt;
  mkdir monit&lt;br /&gt;
  cd monit&lt;br /&gt;
Zum starten habe ich ein kleines start und stop script (für monit) erstellt (lange zeile ggf. beachten)&lt;br /&gt;
&lt;br /&gt;
  nano start-worker.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  exec  ${BUNDLE_BINARY} exec script/background-worker.rb start &amp;gt; ~/monit/worker.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
  echo $! &amp;gt; ~/monit/worker.pid&lt;br /&gt;
&lt;br /&gt;
  nano start-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  # warnung, der  socket  produziert relativ viel log output im normalen Betrieb ggf. anpassen&lt;br /&gt;
  exec ${BUNDLE_BINARY} exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT}  start &amp;gt; ~/monit/socket.log 2&amp;gt;&amp;amp;1 &amp;amp; &lt;br /&gt;
  echo $! &amp;gt; ~/monit/socket.pid&lt;br /&gt;
&lt;br /&gt;
  nano stop-worker.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/worker.pid )&lt;br /&gt;
&lt;br /&gt;
  nano stop-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/socket.pid )&lt;br /&gt;
&lt;br /&gt;
Das dann alles noch in der `~/.monitrc` zusammenführen (achtung einige xyz00, zammad (user) und Mail Platzhalter):&lt;br /&gt;
&lt;br /&gt;
  nano ~/.monitrc&lt;br /&gt;
&lt;br /&gt;
  set daemon 60 with start delay 10&lt;br /&gt;
  set logfile /home/pacs/xyz00/users/zammad/monit/monit.log&lt;br /&gt;
  set idfile /home/pacs/xyz00/users/zammad/monit/monit.id&lt;br /&gt;
  set statefile /home/pacs/xyz00/users/zammad/monit/monit.state&lt;br /&gt;
  set mailserver localhost&lt;br /&gt;
  set mail-format { from: monit@your-domain.com }&lt;br /&gt;
  #set httpd port 39008 address localhost&lt;br /&gt;
  #    allow zammadadmin:ein-monit-passwort&lt;br /&gt;
  check process zammad_worker with pidfile /home/pacs/xyz00/users/zammad/monit/worker.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-worker.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-worker.sh&amp;quot;&lt;br /&gt;
  check process zammad_socket with pidfile /home/pacs/opa00/users/zammad/monit/socket.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-websocket.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-websocket.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Noch schnell die rechte der 4 scripts anpassen: &lt;br /&gt;
   chmod u+x ~/monit/*.sh&lt;br /&gt;
&lt;br /&gt;
Monit kann dann mit &lt;br /&gt;
   monit&lt;br /&gt;
gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Sobald monit einmal erfolgreich anlief sollte der monit Ordner so aussehen:&lt;br /&gt;
  ls -lh&lt;br /&gt;
&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00    32 Feb 23 11:59 monit.id&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00  2867 Feb 24 23:46 monit.log&lt;br /&gt;
  -rw------- 1 xyz00-zammad xyz00   800 Feb 24 13:20 monit.state&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00 41048 Feb 25 00:49 socket.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:45 socket.pid&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   209 Feb 24 23:45 start-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   161 Feb 24 23:27 start-worker.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 24 23:30 stop-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 23 11:53 stop-worker.sh&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     0 Feb 24 23:38 worker.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:38 worker.pid&lt;br /&gt;
&lt;br /&gt;
== Optional: Mail-Piping ==&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen (viel) Last vom Background-Worker zu nehmen kann Mailpiping eingerichtet werden. Dafür sollte vermutlich  zuerst der Webinstaller mit einer anderen IMAP/SMTP config durchgeklickt werden. Zusätzlich reduziert sich die Latenz von Maileingang bis Ticketeingang ein wenig. &lt;br /&gt;
&lt;br /&gt;
=== Ausgangsserver auf sendmail festlegen ===&lt;br /&gt;
&lt;br /&gt;
Der folgende Code schnippsel legt einen Mail-Kanal an, ohne einen dedizierten Eingang der regelmäßig abgerufen werden müsste. Quelle [https://admin-docs.zammad.org/en/latest/channels/email/advanced/sendmail.html]&lt;br /&gt;
&lt;br /&gt;
  rails r &amp;quot;Channel.create(area: &#039;Email::Account&#039;, options: { inbound: { adapter: &#039;null&#039;, options: {} }, outbound: { adapter: &#039;sendmail&#039; } }, active: true, preferences: { editable: false }, updated_by_id: 1, created_by_id: 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Maileingang per  procmail  ===  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optional: Elasticsearch Anbindung ==&lt;br /&gt;
&lt;br /&gt;
Weiteren User nach [[Elasticsearch]] anlegen. Dieser muss dann mit zammad verknüpft werden. Hier wird der  Port 39200 angenommen. &lt;br /&gt;
&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_url&#039;, &#039;http://localhost:39200&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_user&#039;, &#039;elasticsearch&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_password&#039;, &#039;changeme&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Um Elasticsearch wieder zu deaktivieren einfach die URL durch einen leeren string ersetzen.&lt;br /&gt;
&lt;br /&gt;
Es wird für Zammad 5.x ein ElasticSearch 7.x benötigt. siehe auch https://docs.zammad.org/en/latest/install/elasticsearch.html&lt;br /&gt;
&lt;br /&gt;
Zum ersten Einrichten, oder auch zum Testen der Verbindung:&lt;br /&gt;
&lt;br /&gt;
 cd ~/zammad&lt;br /&gt;
 rake searchindex:rebuild --trace&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
  create indexes...rake aborted!&lt;br /&gt;
  Can&#039;t find config setting &#039;es_multi_index&#039;&lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  psql -U xyz00_zammad&lt;br /&gt;
    INSERT INTO settings \&lt;br /&gt;
      (title, name, description, area, frontend, created_at, updated_at) \&lt;br /&gt;
      VALUES (&#039;ElasticSearch Multi Index&#039;, &#039;es_multi_index&#039;, \&lt;br /&gt;
      &#039;&#039;,&#039;SearchIndex::ElasticSearch&#039;, \&lt;br /&gt;
      false, &#039;2023-03-15 01:00:00&#039;, &#039;2023-03-15 01:00:00&#039;);&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_multi_index&#039;, false)&amp;quot;&lt;br /&gt;
  rake searchindex:rebuild --trace&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zammad Upgrade ==&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER&lt;br /&gt;
killall -u $USER 9&lt;br /&gt;
&lt;br /&gt;
cp -a zammad zammad-old&lt;br /&gt;
cd zammad&lt;br /&gt;
rm -Rf app&lt;br /&gt;
rm -Rf public/assets&lt;br /&gt;
wget -O - https://ftp.zammad.com/zammad-5.3.1.tar.gz |tar -xvvz&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Ruby 2.2.5 fehlt!&lt;br /&gt;
&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Rbenv ist zu alt!&lt;br /&gt;
&lt;br /&gt;
cd ~/.rbenv/plugins/ruby-build&lt;br /&gt;
git pull&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
rbenv global 2.5.5&lt;br /&gt;
rbenv local 2.5.5&lt;br /&gt;
&lt;br /&gt;
cd zammad&lt;br /&gt;
gem install bundle&lt;br /&gt;
gem install bundler&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
Geht nicht, Bundler 1.17.x wird gebraucht.&lt;br /&gt;
&lt;br /&gt;
gem install bundler==1.17.3&lt;br /&gt;
&lt;br /&gt;
	Geht auch nicht.&lt;br /&gt;
	Dann hacken wir das mal versuchsweise ins Lock.&lt;br /&gt;
&lt;br /&gt;
vim Gemfile.lock&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Es fehlen Libs.&lt;br /&gt;
	HS bitte installieren...&lt;br /&gt;
	[...]&lt;br /&gt;
	Danke!&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
export RAILS_ENV=production&lt;br /&gt;
rake db:migrate&lt;br /&gt;
rake assets:clean&lt;br /&gt;
rake zammad:flush:cache&lt;br /&gt;
rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Problemen mit Assets muss man den Dienst nochmal neustarten.&lt;br /&gt;
&lt;br /&gt;
Nach dem Update testen, ob ElasticSearch noch funktioniert, eventuell muss auch ElasticSearch aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://zammad.org/documentation Zammad Dokumentation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/zammad Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Helpdesk]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6570</id>
		<title>Zammad</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6570"/>
		<updated>2024-05-14T07:31:08Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anforderungen ==&lt;br /&gt;
Zammad ist ein relativ umfangreiches, mächtiges und modernes OSS Helpdesk Tool. Für die Installation wird benötigt: &lt;br /&gt;
&lt;br /&gt;
* eine (Sub)Domain &lt;br /&gt;
* 2 bis 4 GB RAM (Schätzung, eure Erfahrung kann abweichen, je nach Nutzung)&lt;br /&gt;
* ruby&lt;br /&gt;
* nodejs&lt;br /&gt;
* mehrere Daemons für Hintergrunddienste (worker, websocket)&lt;br /&gt;
* evtl. noch ElasticSearch für Volltextsuche&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Die Installation orientiert sich an dieser Anleitung und wurde für zammad 6.3 verfasst. &lt;br /&gt;
Einige HS spezifische Abweichungen gibt es jedoch.&lt;br /&gt;
&lt;br /&gt;
* https://docs.zammad.org/en/latest/install/source.html &lt;br /&gt;
&lt;br /&gt;
=== User anlegen ===&lt;br /&gt;
Für diese Anleitung wird angenommen das der User unter dem zammad laufen soll xyz00-zammad im Packet xyz00 ist.&lt;br /&gt;
&lt;br /&gt;
=== Installation ruby / ruby env ===&lt;br /&gt;
Prüfe die Version von ruby die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#ruby-programming-language hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 3.2.3 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Die Installationsanleitung für rubyenv und ruby findet sich unter [[RubyRBEnv]].&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  ruby -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation nodejs ===&lt;br /&gt;
Prüfe die Version von nodejs die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#node-js  hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 20 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  node -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation Redis === &lt;br /&gt;
&lt;br /&gt;
Siehe [[Redis]]&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen === &lt;br /&gt;
&lt;br /&gt;
Meine `.profile`, `.bashrc`, `.bash_profile` sahen dann wie folgt aus (möglicherweise gibt es hier optimierungspotential)&lt;br /&gt;
&lt;br /&gt;
Die Datei `.bash_profile`:&lt;br /&gt;
  . ~/.profile&lt;br /&gt;
  . ~/.bashrc&lt;br /&gt;
Die Datei `.profile` (vgl instalation ruby und nodejs):&lt;br /&gt;
  #ruby&lt;br /&gt;
  export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&lt;br /&gt;
  eval &amp;quot;$(rbenv init -)&amp;quot;&lt;br /&gt;
  #nodejs&lt;br /&gt;
  export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot;&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/nvm.sh&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/nvm.sh&amp;quot;  # This loads nvm&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/bash_completion&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/bash_completion&amp;quot;  # This loads nvm bash_completion&lt;br /&gt;
und die Datei `.bashrc`. Quellen vgl. [https://github.com/zammad/zammad/tree/develop/script/systemd/zammad.env] und  [https://docs.zammad.org/en/latest/appendix/configure-env-vars.html#performance-tuning]&lt;br /&gt;
  &lt;br /&gt;
  export REDIS_URL=redis://:&amp;lt;your-password-goes-here&amp;gt;@127.0.0.1:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann entweder alles neu einlesen oder einmal aus und wieder  einloggen. Wenn alles geklappt hat, sollten die folgenden Befehle alle sinnvolle Ausgaben liefern&lt;br /&gt;
  echo $RAILS_ENV # Ausgabe: production&lt;br /&gt;
  ruby -v # Ausgabe vgl. oben&lt;br /&gt;
  nodejs -v #  Ausgabe vgl. oben&lt;br /&gt;
&lt;br /&gt;
=== Installation  von Zammad ===&lt;br /&gt;
Zuerst laden wir zammad herunter, entpacken es, und installieren die dependencies (nur production)&lt;br /&gt;
  &lt;br /&gt;
  wget -O - https://ftp.zammad.com/zammad-latest.tar.gz |tar -xvvz&lt;br /&gt;
  cd zammad&lt;br /&gt;
  bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
  bundle install&lt;br /&gt;
  &lt;br /&gt;
Dann tragen wir die zugangsdaten der postgres Datenbank ein (auf HS Admin selbst erstellen) hier: beides `xyz00_zammad`&lt;br /&gt;
Mit folgendem Inhalt (Einrückung beachten!): &lt;br /&gt;
  nano config/database.yml&lt;br /&gt;
  &lt;br /&gt;
  # config/database.yml&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    host: localhost&lt;br /&gt;
    database: xyz00_zammad&lt;br /&gt;
    pool: 50&lt;br /&gt;
    timeout: 5000&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    username: xyz00_zammad&lt;br /&gt;
    password: changeme&lt;br /&gt;
&lt;br /&gt;
Wenn alles stimmt sollten sich die folgenden Befehle ohne Fehler ausführen lassen und die Datenbanktabellen   sowie die statischen Dateien zum ausliefern  anlegen&lt;br /&gt;
  &lt;br /&gt;
   rake db:migrate&lt;br /&gt;
   rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
=== Zammad ausliefern === &lt;br /&gt;
Um via Browser auf zammad zugreifen zu können kann es via [[Phusion Passenger]] ausgeliefert werden. Dazu muss im HS Admin eine Domain aufgeschaltet werden. Dann wird:&lt;br /&gt;
* die .htaccess wie folgend gesetzt werden &lt;br /&gt;
* der zammad ordner nach app-ssl gelinkt werden&lt;br /&gt;
* und der statische content in htdocs-ssl&lt;br /&gt;
* Optional kann das Domain Template noch um die subdomains bereinigt werden (2. Befehl)&lt;br /&gt;
&lt;br /&gt;
  cd ~/doms/zammad.example.org/&lt;br /&gt;
  rm -r subs*&lt;br /&gt;
  rm -r htdocs-ssl&lt;br /&gt;
  rm -r app-ssl&lt;br /&gt;
  ln -s ~/zammad app-ssl&lt;br /&gt;
  ln -s ~/zammad/public htdocs-ssl&lt;br /&gt;
  nano .htaccess&lt;br /&gt;
&lt;br /&gt;
  # Inhalt .htaccess&lt;br /&gt;
  #PassengerFriendlyErrorPages on # falls nötig zum debuggen einkommentieren&lt;br /&gt;
  RackEnv production&lt;br /&gt;
  RailsEnv production&lt;br /&gt;
  PassengerRuby /home/pacs/xyz00/users/zammad/.rbenv/shims/ruby&lt;br /&gt;
  # local websocket ssl forwarding&lt;br /&gt;
  RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
  RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
  RewriteRule /(.*) ws://127.0.0.1:6042/$1  [P,L]&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat sollte auf der Domain das restliche Web-basierte Setup zu sehen sein. Dort muss dann auch der andere HS Postfach User eingetragen werden. Theoretisch könnte man das auf dem gleichen Account abwickeln, ich persönlich würde es allerdings trennen. Piping wie bei manch andren Mailbasierten Anwendungen scheint nicht so einfach  möglich zu sein (needs more investigation)&lt;br /&gt;
&lt;br /&gt;
=== Hintergrunddienste === &lt;br /&gt;
&lt;br /&gt;
Damit der Websocket-Server und der Hintergrund Worker ordentlich laufen müssen folgende Befehle ausgeführt werden. Die IP Adresse und der Port beim Socket werden aus den Enviroment Variablen von oben bezogen, können allerdings auch manuell  gesetzt werden.&lt;br /&gt;
  cd zammad&lt;br /&gt;
  bundle exec script/background-worker.rb start&lt;br /&gt;
  bundle exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT} start&lt;br /&gt;
&lt;br /&gt;
== Empfohlen: Monit  ==&lt;br /&gt;
Ich habe alles monit spezifische in den ordner monit gepackt&lt;br /&gt;
  cd   &lt;br /&gt;
  mkdir monit&lt;br /&gt;
  cd monit&lt;br /&gt;
Zum starten habe ich ein kleines start und stop script (für monit) erstellt (lange zeile ggf. beachten)&lt;br /&gt;
&lt;br /&gt;
  nano start-worker.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  exec  ${BUNDLE_BINARY} exec script/background-worker.rb start &amp;gt; ~/monit/worker.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
  echo $! &amp;gt; ~/monit/worker.pid&lt;br /&gt;
&lt;br /&gt;
  nano start-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  # warnung, der  socket  produziert relativ viel log output im normalen Betrieb ggf. anpassen&lt;br /&gt;
  exec ${BUNDLE_BINARY} exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT}  start &amp;gt; ~/monit/socket.log 2&amp;gt;&amp;amp;1 &amp;amp; &lt;br /&gt;
  echo $! &amp;gt; ~/monit/socket.pid&lt;br /&gt;
&lt;br /&gt;
  nano stop-worker.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/worker.pid )&lt;br /&gt;
&lt;br /&gt;
  nano stop-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/socket.pid )&lt;br /&gt;
&lt;br /&gt;
Das dann alles noch in der `~/.monitrc` zusammenführen (achtung einige xyz00, zammad (user) und Mail Platzhalter):&lt;br /&gt;
&lt;br /&gt;
  nano ~/.monitrc&lt;br /&gt;
&lt;br /&gt;
  set daemon 60 with start delay 10&lt;br /&gt;
  set logfile /home/pacs/xyz00/users/zammad/monit/monit.log&lt;br /&gt;
  set idfile /home/pacs/xyz00/users/zammad/monit/monit.id&lt;br /&gt;
  set statefile /home/pacs/xyz00/users/zammad/monit/monit.state&lt;br /&gt;
  set mailserver localhost&lt;br /&gt;
  set mail-format { from: monit@your-domain.com }&lt;br /&gt;
  #set httpd port 39008 address localhost&lt;br /&gt;
  #    allow zammadadmin:ein-monit-passwort&lt;br /&gt;
  check process zammad_worker with pidfile /home/pacs/xyz00/users/zammad/monit/worker.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-worker.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-worker.sh&amp;quot;&lt;br /&gt;
  check process zammad_socket with pidfile /home/pacs/opa00/users/zammad/monit/socket.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-websocket.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-websocket.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Noch schnell die rechte der 4 scripts anpassen: &lt;br /&gt;
   chmod u+x ~/monit/*.sh&lt;br /&gt;
&lt;br /&gt;
Monit kann dann mit &lt;br /&gt;
   monit&lt;br /&gt;
gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Sobald monit einmal erfolgreich anlief sollte der monit Ordner so aussehen:&lt;br /&gt;
  ls -lh&lt;br /&gt;
&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00    32 Feb 23 11:59 monit.id&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00  2867 Feb 24 23:46 monit.log&lt;br /&gt;
  -rw------- 1 xyz00-zammad xyz00   800 Feb 24 13:20 monit.state&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00 41048 Feb 25 00:49 socket.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:45 socket.pid&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   209 Feb 24 23:45 start-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   161 Feb 24 23:27 start-worker.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 24 23:30 stop-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 23 11:53 stop-worker.sh&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     0 Feb 24 23:38 worker.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:38 worker.pid&lt;br /&gt;
&lt;br /&gt;
== Optional: Mail-Piping ==&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen (viel) Last vom Background-Worker zu nehmen kann Mailpiping eingerichtet werden. Dafür sollte vermutlich  zuerst der Webinstaller mit einer anderen IMAP/SMTP config durchgeklickt werden. Zusätzlich reduziert sich die Latenz von Maileingang bis Ticketeingang ein wenig. &lt;br /&gt;
&lt;br /&gt;
=== Ausgangsserver auf sendmail festlegen ===&lt;br /&gt;
&lt;br /&gt;
Der folgende Code schnippsel legt einen Mail-Kanal an, ohne einen dedizierten Eingang der regelmäßig abgerufen werden müsste. Quelle [https://admin-docs.zammad.org/en/latest/channels/email/advanced/sendmail.html]&lt;br /&gt;
&lt;br /&gt;
  rails r &amp;quot;Channel.create(area: &#039;Email::Account&#039;, options: { inbound: { adapter: &#039;null&#039;, options: {} }, outbound: { adapter: &#039;sendmail&#039; } }, active: true, preferences: { editable: false }, updated_by_id: 1, created_by_id: 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Maileingang per  procmail  ===  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optional: Elasticsearch Anbindung ==&lt;br /&gt;
&lt;br /&gt;
Weiteren User nach [[Elasticsearch]] anlegen. Dieser muss dann mit zammad verknüpft werden. Hier wird der  Port 39200 angenommen. &lt;br /&gt;
&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_url&#039;, &#039;http://localhost:39200&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_user&#039;, &#039;elasticsearch&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_password&#039;, &#039;changeme&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Um Elasticsearch wieder zu deaktivieren einfach die URL durch einen leeren string ersetzen.&lt;br /&gt;
&lt;br /&gt;
Es wird für Zammad 5.x ein ElasticSearch 7.x benötigt. siehe auch https://docs.zammad.org/en/latest/install/elasticsearch.html&lt;br /&gt;
&lt;br /&gt;
Zum ersten Einrichten, oder auch zum Testen der Verbindung:&lt;br /&gt;
&lt;br /&gt;
 cd ~/zammad&lt;br /&gt;
 rake searchindex:rebuild --trace&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
  create indexes...rake aborted!&lt;br /&gt;
  Can&#039;t find config setting &#039;es_multi_index&#039;&lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  psql -U xyz00_zammad&lt;br /&gt;
    INSERT INTO settings \&lt;br /&gt;
      (title, name, description, area, frontend, created_at, updated_at) \&lt;br /&gt;
      VALUES (&#039;ElasticSearch Multi Index&#039;, &#039;es_multi_index&#039;, \&lt;br /&gt;
      &#039;&#039;,&#039;SearchIndex::ElasticSearch&#039;, \&lt;br /&gt;
      false, &#039;2023-03-15 01:00:00&#039;, &#039;2023-03-15 01:00:00&#039;);&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_multi_index&#039;, false)&amp;quot;&lt;br /&gt;
  rake searchindex:rebuild --trace&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zammad Upgrade ==&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER&lt;br /&gt;
killall -u $USER 9&lt;br /&gt;
&lt;br /&gt;
cp -a zammad zammad-old&lt;br /&gt;
cd zammad&lt;br /&gt;
rm -Rf app&lt;br /&gt;
rm -Rf public/assets&lt;br /&gt;
wget -O - https://ftp.zammad.com/zammad-5.3.1.tar.gz |tar -xvvz&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Ruby 2.2.5 fehlt!&lt;br /&gt;
&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Rbenv ist zu alt!&lt;br /&gt;
&lt;br /&gt;
cd ~/.rbenv/plugins/ruby-build&lt;br /&gt;
git pull&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
rbenv global 2.5.5&lt;br /&gt;
rbenv local 2.5.5&lt;br /&gt;
&lt;br /&gt;
cd zammad&lt;br /&gt;
gem install bundle&lt;br /&gt;
gem install bundler&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
Geht nicht, Bundler 1.17.x wird gebraucht.&lt;br /&gt;
&lt;br /&gt;
gem install bundler==1.17.3&lt;br /&gt;
&lt;br /&gt;
	Geht auch nicht.&lt;br /&gt;
	Dann hacken wir das mal versuchsweise ins Lock.&lt;br /&gt;
&lt;br /&gt;
vim Gemfile.lock&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Es fehlen Libs.&lt;br /&gt;
	HS bitte installieren...&lt;br /&gt;
	[...]&lt;br /&gt;
	Danke!&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
export RAILS_ENV=production&lt;br /&gt;
rake db:migrate&lt;br /&gt;
rake assets:clean&lt;br /&gt;
rake zammad:flush:cache&lt;br /&gt;
rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Problemen mit Assets muss man den Dienst nochmal neustarten.&lt;br /&gt;
&lt;br /&gt;
Nach dem Update testen, ob ElasticSearch noch funktioniert, eventuell muss auch ElasticSearch aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://zammad.org/documentation Zammad Dokumentation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/zammad Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Helpdesk]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6569</id>
		<title>Zammad</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Zammad&amp;diff=6569"/>
		<updated>2024-05-14T07:24:48Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anforderungen ==&lt;br /&gt;
Zammad ist ein relativ umfangreiches, mächtiges und modernes OSS Helpdesk Tool. Für die Installation wird benötigt: &lt;br /&gt;
&lt;br /&gt;
* eine (Sub)Domain &lt;br /&gt;
* 2 bis 4 GB RAM (Schätzung, eure Erfahrung kann abweichen, je nach Nutzung)&lt;br /&gt;
* ruby&lt;br /&gt;
* nodejs&lt;br /&gt;
* mehrere Daemons für Hintergrunddienste (worker, websocket)&lt;br /&gt;
* evtl. noch ElasticSearch für Volltextsuche&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Die Installation orientiert sich an dieser Anleitung und wurde für zammad 6.3 verfasst. &lt;br /&gt;
Einige HS spezifische Abweichungen gibt es jedoch.&lt;br /&gt;
&lt;br /&gt;
* https://docs.zammad.org/en/latest/install/source.html &lt;br /&gt;
&lt;br /&gt;
=== User anlegen ===&lt;br /&gt;
Für diese Anleitung wird angenommen das der User unter dem zammad laufen soll xyz00-zammad im Packet xyz00 ist.&lt;br /&gt;
&lt;br /&gt;
=== Installation ruby / ruby env ===&lt;br /&gt;
Prüfe die Version von ruby die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#ruby-programming-language hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 3.2.3 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Die Installationsanleitung für rubyenv und ruby findet sich unter [[RubyRBEnv]].&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  ruby -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Installation nodejs ===&lt;br /&gt;
Prüfe die Version von nodejs die zammad benötigt [https://docs.zammad.org/en/latest/prerequisites/software.html#node-js  hier].&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung nehmen wir Version 20 an für zammad 6.3.&lt;br /&gt;
&lt;br /&gt;
Verifiziere das die Installation geklappt hat mit&lt;br /&gt;
  node -v &lt;br /&gt;
dies sollte der herausgesuchten Versionsnummer entsprechen&lt;br /&gt;
&lt;br /&gt;
=== Umgebungsvariablen === &lt;br /&gt;
&lt;br /&gt;
Meine `.profile`, `.bashrc`, `.bash_profile` sahen dann wie folgt aus (möglicherweise gibt es hier optimierungspotential)&lt;br /&gt;
&lt;br /&gt;
Die Datei `.bash_profile`:&lt;br /&gt;
  . ~/.profile&lt;br /&gt;
  . ~/.bashrc&lt;br /&gt;
Die Datei `.profile` (vgl instalation ruby und nodejs):&lt;br /&gt;
  #ruby&lt;br /&gt;
  export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&lt;br /&gt;
  eval &amp;quot;$(rbenv init -)&amp;quot;&lt;br /&gt;
  #nodejs&lt;br /&gt;
  export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot;&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/nvm.sh&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/nvm.sh&amp;quot;  # This loads nvm&lt;br /&gt;
  [ -s &amp;quot;$NVM_DIR/bash_completion&amp;quot; ] &amp;amp;&amp;amp; \. &amp;quot;$NVM_DIR/bash_completion&amp;quot;  # This loads nvm bash_completion&lt;br /&gt;
und die Datei `.bashrc`. Quellen vgl. [https://github.com/zammad/zammad/tree/develop/script/systemd/zammad.env] und  [https://docs.zammad.org/en/latest/appendix/configure-env-vars.html#performance-tuning]&lt;br /&gt;
  # zammad env config&lt;br /&gt;
  WEB_CONCURRENCY=4&lt;br /&gt;
  # service config&lt;br /&gt;
  BUNDLE_BINARY=bundle&lt;br /&gt;
  RAILS_ENV=production&lt;br /&gt;
  ZAMMAD_BIND_IP=127.0.0.1&lt;br /&gt;
  ZAMMAD_RAILS_PORT=3000&lt;br /&gt;
  ZAMMAD_WEBSOCKET_PORT=6042&lt;br /&gt;
&lt;br /&gt;
Dann entweder alles neu einlesen oder einmal aus und wieder  einloggen. Wenn alles geklappt hat, sollten die folgenden Befehle alle sinnvolle Ausgaben liefern&lt;br /&gt;
  echo $RAILS_ENV # Ausgabe: production&lt;br /&gt;
  ruby -v # Ausgabe vgl. oben&lt;br /&gt;
  nodejs -v #  Ausgabe vgl. oben&lt;br /&gt;
&lt;br /&gt;
=== Installation  von Zammad ===&lt;br /&gt;
Zuerst laden wir zammad herunter, entpacken es, und installieren die dependencies (nur production)&lt;br /&gt;
  &lt;br /&gt;
  wget -O - https://ftp.zammad.com/zammad-latest.tar.gz |tar -xvvz&lt;br /&gt;
  cd zammad&lt;br /&gt;
  bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
  bundle install&lt;br /&gt;
  &lt;br /&gt;
Dann tragen wir die zugangsdaten der postgres Datenbank ein (auf HS Admin selbst erstellen) hier: beides `xyz00_zammad`&lt;br /&gt;
Mit folgendem Inhalt (Einrückung beachten!): &lt;br /&gt;
  nano config/database.yml&lt;br /&gt;
  &lt;br /&gt;
  # config/database.yml&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    host: localhost&lt;br /&gt;
    database: xyz00_zammad&lt;br /&gt;
    pool: 50&lt;br /&gt;
    timeout: 5000&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    username: xyz00_zammad&lt;br /&gt;
    password: changeme&lt;br /&gt;
&lt;br /&gt;
Wenn alles stimmt sollten sich die folgenden Befehle ohne Fehler ausführen lassen und die Datenbanktabellen   sowie die statischen Dateien zum ausliefern  anlegen&lt;br /&gt;
  &lt;br /&gt;
   rake db:migrate&lt;br /&gt;
   rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
=== Zammad ausliefern === &lt;br /&gt;
Um via Browser auf zammad zugreifen zu können kann es via [[Phusion Passenger]] ausgeliefert werden. Dazu muss im HS Admin eine Domain aufgeschaltet werden. Dann wird:&lt;br /&gt;
* die .htaccess wie folgend gesetzt werden &lt;br /&gt;
* der zammad ordner nach app-ssl gelinkt werden&lt;br /&gt;
* und der statische content in htdocs-ssl&lt;br /&gt;
* Optional kann das Domain Template noch um die subdomains bereinigt werden (2. Befehl)&lt;br /&gt;
&lt;br /&gt;
  cd ~/doms/zammad.example.org/&lt;br /&gt;
  rm -r subs*&lt;br /&gt;
  rm -r htdocs-ssl&lt;br /&gt;
  rm -r app-ssl&lt;br /&gt;
  ln -s ~/zammad app-ssl&lt;br /&gt;
  ln -s ~/zammad/public htdocs-ssl&lt;br /&gt;
  nano .htaccess&lt;br /&gt;
&lt;br /&gt;
  # Inhalt .htaccess&lt;br /&gt;
  #PassengerFriendlyErrorPages on # falls nötig zum debuggen einkommentieren&lt;br /&gt;
  RackEnv production&lt;br /&gt;
  RailsEnv production&lt;br /&gt;
  PassengerRuby /home/pacs/xyz00/users/zammad/.rbenv/shims/ruby&lt;br /&gt;
  # local websocket ssl forwarding&lt;br /&gt;
  RewriteCond %{HTTP:Connection} Upgrade [NC]&lt;br /&gt;
  RewriteCond %{HTTP:Upgrade} websocket [NC]&lt;br /&gt;
  RewriteRule /(.*) ws://127.0.0.1:6042/$1  [P,L]&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat sollte auf der Domain das restliche Web-basierte Setup zu sehen sein. Dort muss dann auch der andere HS Postfach User eingetragen werden. Theoretisch könnte man das auf dem gleichen Account abwickeln, ich persönlich würde es allerdings trennen. Piping wie bei manch andren Mailbasierten Anwendungen scheint nicht so einfach  möglich zu sein (needs more investigation)&lt;br /&gt;
&lt;br /&gt;
=== Hintergrunddienste === &lt;br /&gt;
&lt;br /&gt;
Damit der Websocket-Server und der Hintergrund Worker ordentlich laufen müssen folgende Befehle ausgeführt werden. Die IP Adresse und der Port beim Socket werden aus den Enviroment Variablen von oben bezogen, können allerdings auch manuell  gesetzt werden.&lt;br /&gt;
  cd zammad&lt;br /&gt;
  bundle exec script/background-worker.rb start&lt;br /&gt;
  bundle exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT} start&lt;br /&gt;
&lt;br /&gt;
== Empfohlen: Monit  ==&lt;br /&gt;
Ich habe alles monit spezifische in den ordner monit gepackt&lt;br /&gt;
  cd   &lt;br /&gt;
  mkdir monit&lt;br /&gt;
  cd monit&lt;br /&gt;
Zum starten habe ich ein kleines start und stop script (für monit) erstellt (lange zeile ggf. beachten)&lt;br /&gt;
&lt;br /&gt;
  nano start-worker.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  exec  ${BUNDLE_BINARY} exec script/background-worker.rb start &amp;gt; ~/monit/worker.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
  echo $! &amp;gt; ~/monit/worker.pid&lt;br /&gt;
&lt;br /&gt;
  nano start-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  . ~/.bash_profile&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  # warnung, der  socket  produziert relativ viel log output im normalen Betrieb ggf. anpassen&lt;br /&gt;
  exec ${BUNDLE_BINARY} exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT}  start &amp;gt; ~/monit/socket.log 2&amp;gt;&amp;amp;1 &amp;amp; &lt;br /&gt;
  echo $! &amp;gt; ~/monit/socket.pid&lt;br /&gt;
&lt;br /&gt;
  nano stop-worker.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/worker.pid )&lt;br /&gt;
&lt;br /&gt;
  nano stop-websocket.sh&lt;br /&gt;
&lt;br /&gt;
  kill $( cat ~/monit/socket.pid )&lt;br /&gt;
&lt;br /&gt;
Das dann alles noch in der `~/.monitrc` zusammenführen (achtung einige xyz00, zammad (user) und Mail Platzhalter):&lt;br /&gt;
&lt;br /&gt;
  nano ~/.monitrc&lt;br /&gt;
&lt;br /&gt;
  set daemon 60 with start delay 10&lt;br /&gt;
  set logfile /home/pacs/xyz00/users/zammad/monit/monit.log&lt;br /&gt;
  set idfile /home/pacs/xyz00/users/zammad/monit/monit.id&lt;br /&gt;
  set statefile /home/pacs/xyz00/users/zammad/monit/monit.state&lt;br /&gt;
  set mailserver localhost&lt;br /&gt;
  set mail-format { from: monit@your-domain.com }&lt;br /&gt;
  #set httpd port 39008 address localhost&lt;br /&gt;
  #    allow zammadadmin:ein-monit-passwort&lt;br /&gt;
  check process zammad_worker with pidfile /home/pacs/xyz00/users/zammad/monit/worker.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-worker.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-worker.sh&amp;quot;&lt;br /&gt;
  check process zammad_socket with pidfile /home/pacs/opa00/users/zammad/monit/socket.pid&lt;br /&gt;
    start program &amp;quot;/home/pacs/xyz00/users/zammad/monit/start-websocket.sh&amp;quot;&lt;br /&gt;
    stop program &amp;quot;/home/pacs/xyz00/users/zammad/monit/stop-websocket.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Noch schnell die rechte der 4 scripts anpassen: &lt;br /&gt;
   chmod u+x ~/monit/*.sh&lt;br /&gt;
&lt;br /&gt;
Monit kann dann mit &lt;br /&gt;
   monit&lt;br /&gt;
gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Sobald monit einmal erfolgreich anlief sollte der monit Ordner so aussehen:&lt;br /&gt;
  ls -lh&lt;br /&gt;
&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00    32 Feb 23 11:59 monit.id&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00  2867 Feb 24 23:46 monit.log&lt;br /&gt;
  -rw------- 1 xyz00-zammad xyz00   800 Feb 24 13:20 monit.state&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00 41048 Feb 25 00:49 socket.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:45 socket.pid&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   209 Feb 24 23:45 start-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00   161 Feb 24 23:27 start-worker.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 24 23:30 stop-websocket.sh&lt;br /&gt;
  -rwxr--r-- 1 xyz00-zammad xyz00    34 Feb 23 11:53 stop-worker.sh&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     0 Feb 24 23:38 worker.log&lt;br /&gt;
  -rw-r--r-- 1 xyz00-zammad xyz00     5 Feb 24 23:38 worker.pid&lt;br /&gt;
&lt;br /&gt;
== Optional: Mail-Piping ==&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen (viel) Last vom Background-Worker zu nehmen kann Mailpiping eingerichtet werden. Dafür sollte vermutlich  zuerst der Webinstaller mit einer anderen IMAP/SMTP config durchgeklickt werden. Zusätzlich reduziert sich die Latenz von Maileingang bis Ticketeingang ein wenig. &lt;br /&gt;
&lt;br /&gt;
=== Ausgangsserver auf sendmail festlegen ===&lt;br /&gt;
&lt;br /&gt;
Der folgende Code schnippsel legt einen Mail-Kanal an, ohne einen dedizierten Eingang der regelmäßig abgerufen werden müsste. Quelle [https://admin-docs.zammad.org/en/latest/channels/email/advanced/sendmail.html]&lt;br /&gt;
&lt;br /&gt;
  rails r &amp;quot;Channel.create(area: &#039;Email::Account&#039;, options: { inbound: { adapter: &#039;null&#039;, options: {} }, outbound: { adapter: &#039;sendmail&#039; } }, active: true, preferences: { editable: false }, updated_by_id: 1, created_by_id: 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Maileingang per  procmail  ===  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optional: Elasticsearch Anbindung ==&lt;br /&gt;
&lt;br /&gt;
Weiteren User nach [[Elasticsearch]] anlegen. Dieser muss dann mit zammad verknüpft werden. Hier wird der  Port 39200 angenommen. &lt;br /&gt;
&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_url&#039;, &#039;http://localhost:39200&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_user&#039;, &#039;elasticsearch&#039;)&amp;quot;&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_password&#039;, &#039;changeme&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Um Elasticsearch wieder zu deaktivieren einfach die URL durch einen leeren string ersetzen.&lt;br /&gt;
&lt;br /&gt;
Es wird für Zammad 5.x ein ElasticSearch 7.x benötigt. siehe auch https://docs.zammad.org/en/latest/install/elasticsearch.html&lt;br /&gt;
&lt;br /&gt;
Zum ersten Einrichten, oder auch zum Testen der Verbindung:&lt;br /&gt;
&lt;br /&gt;
 cd ~/zammad&lt;br /&gt;
 rake searchindex:rebuild --trace&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
  create indexes...rake aborted!&lt;br /&gt;
  Can&#039;t find config setting &#039;es_multi_index&#039;&lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  psql -U xyz00_zammad&lt;br /&gt;
    INSERT INTO settings \&lt;br /&gt;
      (title, name, description, area, frontend, created_at, updated_at) \&lt;br /&gt;
      VALUES (&#039;ElasticSearch Multi Index&#039;, &#039;es_multi_index&#039;, \&lt;br /&gt;
      &#039;&#039;,&#039;SearchIndex::ElasticSearch&#039;, \&lt;br /&gt;
      false, &#039;2023-03-15 01:00:00&#039;, &#039;2023-03-15 01:00:00&#039;);&lt;br /&gt;
  cd ~/zammad&lt;br /&gt;
  rails r &amp;quot;Setting.set(&#039;es_multi_index&#039;, false)&amp;quot;&lt;br /&gt;
  rake searchindex:rebuild --trace&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zammad Upgrade ==&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER&lt;br /&gt;
killall -u $USER 9&lt;br /&gt;
&lt;br /&gt;
cp -a zammad zammad-old&lt;br /&gt;
cd zammad&lt;br /&gt;
rm -Rf app&lt;br /&gt;
rm -Rf public/assets&lt;br /&gt;
wget -O - https://ftp.zammad.com/zammad-5.3.1.tar.gz |tar -xvvz&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Ruby 2.2.5 fehlt!&lt;br /&gt;
&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
&lt;br /&gt;
	Geht nicht, Rbenv ist zu alt!&lt;br /&gt;
&lt;br /&gt;
cd ~/.rbenv/plugins/ruby-build&lt;br /&gt;
git pull&lt;br /&gt;
cd&lt;br /&gt;
rbenv install 2.5.5&lt;br /&gt;
rbenv global 2.5.5&lt;br /&gt;
rbenv local 2.5.5&lt;br /&gt;
&lt;br /&gt;
cd zammad&lt;br /&gt;
gem install bundle&lt;br /&gt;
gem install bundler&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
Geht nicht, Bundler 1.17.x wird gebraucht.&lt;br /&gt;
&lt;br /&gt;
gem install bundler==1.17.3&lt;br /&gt;
&lt;br /&gt;
	Geht auch nicht.&lt;br /&gt;
	Dann hacken wir das mal versuchsweise ins Lock.&lt;br /&gt;
&lt;br /&gt;
vim Gemfile.lock&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
	Es fehlen Libs.&lt;br /&gt;
	HS bitte installieren...&lt;br /&gt;
	[...]&lt;br /&gt;
	Danke!&lt;br /&gt;
&lt;br /&gt;
bundle config set --local without &#039;test development mysql&#039;&lt;br /&gt;
bundle install&lt;br /&gt;
export RAILS_ENV=production&lt;br /&gt;
rake db:migrate&lt;br /&gt;
rake assets:clean&lt;br /&gt;
rake zammad:flush:cache&lt;br /&gt;
rake assets:precompile&lt;br /&gt;
&lt;br /&gt;
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Problemen mit Assets muss man den Dienst nochmal neustarten.&lt;br /&gt;
&lt;br /&gt;
Nach dem Update testen, ob ElasticSearch noch funktioniert, eventuell muss auch ElasticSearch aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;br /&gt;
&lt;br /&gt;
* [https://zammad.org/documentation Zammad Dokumentation]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/zammad Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:RubyOnRails]]&lt;br /&gt;
[[Kategorie:Helpdesk]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6564</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6564"/>
		<updated>2024-05-10T17:08:07Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
 python src/manage.py compress&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;br /&gt;
&lt;br /&gt;
Zum Neustart der Anwendung (z.B. um config neu einzulesen) kann der Befehl &lt;br /&gt;
&lt;br /&gt;
  passenger-config restart-app&lt;br /&gt;
&lt;br /&gt;
verwendet werden&lt;br /&gt;
&lt;br /&gt;
=== Customization === &lt;br /&gt;
&lt;br /&gt;
Wenn du, wie wir, dieses sehr gute Grün durch eine andere Farbe ersetzen willst kannst du wie folgt vorgehen: &lt;br /&gt;
&lt;br /&gt;
Das zu ersetzende CSS findest du unter &amp;lt;code&amp;gt;~/helfertool/static/compressed/css/&amp;lt;/code&amp;gt; mit dem Dateinamen main.&amp;lt;langezahlenfolge&amp;gt;.css diese Datei muss ersetzt werden. Am einfachsten geht das wie folgt: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  cd ~/helfertool/static/helfertool/theme&lt;br /&gt;
  # dort z.b. die Farben ändern&lt;br /&gt;
  nano _colors.scss&lt;br /&gt;
  # ggf. noch weitere Änderungen vornehmen&lt;br /&gt;
  # ...&lt;br /&gt;
  # compilieren&lt;br /&gt;
  scss helfertool.scss ../../compressed/main.x.css&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In dem o.g. compressed Ordner findet sich dann die neue passende Datei main.x.css, diese einfach über die alte Datei mit der kryptischen Nummer drüber kopieren. Das war es schon :) &lt;br /&gt;
&lt;br /&gt;
Ungetestet: ggf. kann das compilieren auch mit python ~/helfertool/src/manage.py compress ausgelöst werden&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6563</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6563"/>
		<updated>2024-05-10T17:04:18Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
 python src/manage.py compress&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;br /&gt;
&lt;br /&gt;
=== Customization === &lt;br /&gt;
&lt;br /&gt;
Wenn du, wie wir, dieses sehr gute Grün durch eine andere Farbe ersetzen willst kannst du wie folgt vorgehen: &lt;br /&gt;
&lt;br /&gt;
Das zu ersetzende CSS findest du unter &amp;lt;code&amp;gt;~/helfertool/static/compressed/css/&amp;lt;/code&amp;gt; mit dem Dateinamen main.&amp;lt;langezahlenfolge&amp;gt;.css diese Datei muss ersetzt werden. Am einfachsten geht das wie folgt: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  cd ~/helfertool/static/helfertool/theme&lt;br /&gt;
  # dort z.b. die Farben ändern&lt;br /&gt;
  nano _colors.scss&lt;br /&gt;
  # ggf. noch weitere Änderungen vornehmen&lt;br /&gt;
  # ...&lt;br /&gt;
  # compilieren&lt;br /&gt;
  scss helfertool.scss ../../compressed/main.x.css&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In dem o.g. compressed Ordner findet sich dann die neue passende Datei main.x.css, diese einfach über die alte Datei mit der kryptischen Nummer drüber kopieren. Das war es schon :) &lt;br /&gt;
&lt;br /&gt;
Ungetestet: ggf. kann das compilieren auch mit python ~/helfertool/src/manage.py compress ausgelöst werden&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6562</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6562"/>
		<updated>2024-05-10T17:03:50Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Customization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;br /&gt;
&lt;br /&gt;
=== Customization === &lt;br /&gt;
&lt;br /&gt;
Wenn du, wie wir, dieses sehr gute Grün durch eine andere Farbe ersetzen willst kannst du wie folgt vorgehen: &lt;br /&gt;
&lt;br /&gt;
Das zu ersetzende CSS findest du unter &amp;lt;code&amp;gt;~/helfertool/static/compressed/css/&amp;lt;/code&amp;gt; mit dem Dateinamen main.&amp;lt;langezahlenfolge&amp;gt;.css diese Datei muss ersetzt werden. Am einfachsten geht das wie folgt: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  cd ~/helfertool/static/helfertool/theme&lt;br /&gt;
  # dort z.b. die Farben ändern&lt;br /&gt;
  nano _colors.scss&lt;br /&gt;
  # ggf. noch weitere Änderungen vornehmen&lt;br /&gt;
  # ...&lt;br /&gt;
  # compilieren&lt;br /&gt;
  scss helfertool.scss ../../compressed/main.x.css&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In dem o.g. compressed Ordner findet sich dann die neue passende Datei main.x.css, diese einfach über die alte Datei mit der kryptischen Nummer drüber kopieren. Das war es schon :) &lt;br /&gt;
&lt;br /&gt;
Ungetestet: ggf. kann das compilieren auch mit python ~/helfertool/src/manage.py compress ausgelöst werden&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6561</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6561"/>
		<updated>2024-05-10T14:20:56Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Customization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;br /&gt;
&lt;br /&gt;
=== Customization === &lt;br /&gt;
&lt;br /&gt;
Wenn du, wie wir, dieses sehr gute Grün durch eine andere Farbe ersetzen willst kannst du wie folgt vorgehen: &lt;br /&gt;
&lt;br /&gt;
Das zu ersetzende CSS findest du unter &amp;lt;code&amp;gt;~/helfertool/static/compressed/css/&amp;lt;/code&amp;gt; mit dem Dateinamen main.&amp;lt;langezahlenfolge&amp;gt;.css diese Datei muss ersetzt werden. Am einfachsten geht das wie folgt: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  cd ~/helfertool/static/helfertool/theme&lt;br /&gt;
  # dort z.b. die Farben ändern&lt;br /&gt;
  nano _colors.scss&lt;br /&gt;
  # ggf. noch weitere Änderungen vornehmen&lt;br /&gt;
  # ...&lt;br /&gt;
  # compilieren&lt;br /&gt;
  scss helfertool.scss ../../compressed/main.x.css&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In dem o.g. compressed Ordner findet sich dann die neue passende Datei main.x.css, diese einfach über die alte Datei mit der kryptischen Nummer drüber kopieren. Das war es schon :)&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6560</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6560"/>
		<updated>2024-05-10T14:20:25Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Customization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;br /&gt;
&lt;br /&gt;
=== Customization === &lt;br /&gt;
&lt;br /&gt;
Wenn du, wie wir, dieses sehr gute Grün durch eine andere Farbe ersetzen willst kannst du wie folgt vorgehen: &lt;br /&gt;
&lt;br /&gt;
Das zu ersetzende CSS findest du unter `~/helfertool/static/compressed/css/` mit dem Dateinamen main.&amp;lt;langezahlenfolge&amp;gt;.css diese Datei muss ersetzt werden. Am einfachsten geht das wie folgt: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  cd ~/helfertool/static/helfertool/theme&lt;br /&gt;
  # dort z.b. die Farben ändern&lt;br /&gt;
  nano _colors.scss&lt;br /&gt;
  # ggf. noch weitere Änderungen vornehmen&lt;br /&gt;
  # ...&lt;br /&gt;
  # compilieren&lt;br /&gt;
  scss helfertool.scss ../../compressed/main.x.css&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In dem o.g. compressed Ordner findet sich dann die neue passende Datei main.x.css, diese einfach über die alte Datei mit der kryptischen Nummer drüber kopieren. Das war es schon :)&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6559</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6559"/>
		<updated>2024-05-10T14:19:55Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: farben ändern&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;br /&gt;
&lt;br /&gt;
=== Customization === &lt;br /&gt;
&lt;br /&gt;
Wenn du, wie wir, dieses sehr gute Grün durch eine andere Farbe ersetzen willst kannst du wie folgt vorgehen: &lt;br /&gt;
&lt;br /&gt;
Das zu ersetzende CSS findest du unter `~/helfertool/static/compressed/css/` mit dem Dateinamen main.&amp;lt;langezahlenfolge&amp;gt;.css diese Datei muss ersetzt werden. Am einfachsten geht das wie folgt: &lt;br /&gt;
&lt;br /&gt;
``` &lt;br /&gt;
cd ~/helfertool/static/helfertool/theme&lt;br /&gt;
# dort z.b. die Farben ändern&lt;br /&gt;
nano _colors.scss&lt;br /&gt;
# ggf. noch weitere Änderungen vornehmen&lt;br /&gt;
# ...&lt;br /&gt;
# compilieren&lt;br /&gt;
scss helfertool.scss ../../compressed/main.x.css&lt;br /&gt;
```&lt;br /&gt;
In dem o.g. compressed Ordner findet sich dann die neue passende Datei main.x.css, diese einfach über die alte Datei mit der kryptischen Nummer drüber kopieren. Das war es schon :)&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6558</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6558"/>
		<updated>2024-05-10T13:57:31Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6557</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6557"/>
		<updated>2024-05-10T13:55:14Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: upload settings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
Leider werden neue hochgeladene Inhalte per default auch mit falschen Permissons angelegt. Das lässt sich fixen indem man folgende Datei ändert. Folgend der geänderte Inhalt:&lt;br /&gt;
&lt;br /&gt;
~/helfertool/src/helfertool/settings.py&lt;br /&gt;
  &lt;br /&gt;
  # file permissions for newly uploaded files and directories&lt;br /&gt;
  FILE_UPLOAD_PERMISSIONS = 0o644&lt;br /&gt;
  FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6388</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6388"/>
		<updated>2024-01-30T13:28:47Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py createcachetable&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6387</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6387"/>
		<updated>2024-01-30T12:31:24Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/htdocs-ssl&lt;br /&gt;
 rm .htaccess&lt;br /&gt;
 ln -s ~/helfertool/static&lt;br /&gt;
 ln -s ~/helfertool/media&lt;br /&gt;
&lt;br /&gt;
Es sollten dann 2 Links (static und media) in htdocs-ssl liegen die auf die jeweiligen Ordner im git zeigen.&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
 &lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6386</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6386"/>
		<updated>2024-01-30T12:19:26Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 python3 -m venv venv-ht # initalisierung des venv venv-ht&lt;br /&gt;
 source ~/venv-ht/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv (wichtig! venv-ht muss geladen sein!)&lt;br /&gt;
 cd helfertool&lt;br /&gt;
 pip install -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/venv-ht/bin/activate&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden, die Domain bei Allowed Hosts und die E-Mail&lt;br /&gt;
&lt;br /&gt;
ob alles geklappt hat kann mit den folgenden befehlen indirekt getestet werden&lt;br /&gt;
&lt;br /&gt;
 python ~/helfertool/src/manage.py migrate&lt;br /&gt;
 python ~/helfertool/src/manage.py loaddata toolsettings&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/&lt;br /&gt;
 rm -r htdocs-ssl&lt;br /&gt;
 ln -s ~/helfertool/static htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
Der statische Assetornder halt leider jedoch nich by default die Rechte die Hostsharing braucht, das korrigieren für die Dateien und Ornder jeweils wir mit: &lt;br /&gt;
&lt;br /&gt;
 find static/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 find static/ -type d -exec chmod 755 {} \;&lt;br /&gt;
&lt;br /&gt;
um die Python Anwendung mit Passenger auszuliefern sind jetzt noch 2 Schritte nötig: &lt;br /&gt;
&lt;br /&gt;
Eine htaccess Datei im Domain Ordner app-ssl hinterlegen mit dem Inhalt: &lt;br /&gt;
 SetEnv PYTHONPATH &amp;quot;/home/pacs/opa02/users/helfertool/helfertool/src&amp;quot;&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Zusätzlich noch im HS Admin den Pfad zum venv hinterlegen&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6380</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6380"/>
		<updated>2024-01-30T10:19:51Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/helfertool/venv/bin/activate&lt;br /&gt;
 export HELFERTOOL_CONFIG_FILE=$HOME/helfertool/src/helfertool.yaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 venv/bin/python src/manage.py compress --force&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/&lt;br /&gt;
 rm -r htdocs-ssl&lt;br /&gt;
 ln -s ~/helfertool/static htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 ln -s ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/passenger_wsgi.py&lt;br /&gt;
&lt;br /&gt;
Die Datenbank wird initalisiert: &lt;br /&gt;
 &lt;br /&gt;
 venv/bin/python src/manage.py migrate&lt;br /&gt;
 venv/bin/python src/manage.py loaddata toolsettings&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6364</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6364"/>
		<updated>2024-01-27T14:11:20Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/helfertool/venv/bin/activate&lt;br /&gt;
 export HELFERTOOL_CONFIG_FILE=$HOME/helfertool/src/helfertool.yaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 venv/bin/python src/manage.py compress --force&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.org/&lt;br /&gt;
 rm -r htdocs-ssl&lt;br /&gt;
 ln -s ~/helfertool/static htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
und die wsgi datei in app-ssl hinterlegen: &lt;br /&gt;
&lt;br /&gt;
 cp ~/helfertool/src/helfertool/wsgi.py ~/doms/example.com/app-ssl/&lt;br /&gt;
&lt;br /&gt;
Die Datenbank wird initalisiert: &lt;br /&gt;
 &lt;br /&gt;
 venv/bin/python src/manage.py migrate&lt;br /&gt;
 venv/bin/python src/manage.py loaddata toolsettings&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6363</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6363"/>
		<updated>2024-01-27T14:08:32Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/helfertool/venv/bin/activate&lt;br /&gt;
 export HELFERTOOL_CONFIG_FILE=$HOME/helfertool/src/helfertool.yaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 venv/bin/python src/manage.py migrate&lt;br /&gt;
 venv/bin/python src/manage.py compress --force&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain gelinkt. Die wsgi Datei muss in app-ssl hinterlegt werden.&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6362</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6362"/>
		<updated>2024-01-27T13:06:54Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Helfertool.org */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
Für den persönlichen Komfort habe ich folgende Zeilen in der ~/.profile hinterlegt.&lt;br /&gt;
&lt;br /&gt;
 source ~/helfertool/venv/bin/activate&lt;br /&gt;
 export HELFERTOOL_CONFIG_FILE=$HOME/helfertool/src/helfertool.yaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme === &lt;br /&gt;
&lt;br /&gt;
 venv/bin/python src/manage.py compress --force&lt;br /&gt;
 venv/bin/python src/manage.py collectstatic --noinput&lt;br /&gt;
&lt;br /&gt;
Der neue Erzeugte static ordner wird der htdocs-ssl ordner in der Entsprechenden Domain&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6361</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6361"/>
		<updated>2024-01-27T13:01:45Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;br /&gt;
&lt;br /&gt;
Dort muss insbesondere der Datenbankzugang hinterlegt werden.&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6360</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6360"/>
		<updated>2024-01-27T11:43:13Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Vom Helfertool Docker wird aktuell auch Version 3.11 eingesetzt, nachzusehen in deployment/container/etc/uwsgi.conf&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6359</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6359"/>
		<updated>2024-01-27T11:40:05Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 # installation der dependencies im venv &lt;br /&gt;
 venv/bin/pip install wheel -r src/requirements.txt -r src/requirements_prod.txt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Config Datei findet sich unter ~/helfertool/src/helfertool.yml&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6358</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6358"/>
		<updated>2024-01-27T11:35:50Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Zuerst das git repo clonen. Ggf. Versionsnummer auf die aktuelle Version anpassen.&lt;br /&gt;
&lt;br /&gt;
 git clone --single-branch -b v3.2.2 https://github.com/helfertool/helfertool/&lt;br /&gt;
&lt;br /&gt;
Aktuell wird laut src/requirements.txt ein Django in Version 4.2 benötigt. &lt;br /&gt;
&lt;br /&gt;
Aktuell wird dafür &lt;br /&gt;
&lt;br /&gt;
 Python 3.8, 3.9, 3.10, 3.11, and 3.12 (as of 4.2. 8)&lt;br /&gt;
&lt;br /&gt;
unterstützt. Auf den debian bookworm Maschinen sollte daher das installierte python3 genügen &lt;br /&gt;
&lt;br /&gt;
 python3 --version&lt;br /&gt;
 Python 3.11.2&lt;br /&gt;
&lt;br /&gt;
Falls das auf deiner Maschine nicht der Fall ist siehe  [[Python]] für die manuelle Installation einer aktuelleren Version.&lt;br /&gt;
&lt;br /&gt;
Wir installieren zuerst die Dependencies, dafür legen wir uns ein venv an um diese nur lokal zu laden. &lt;br /&gt;
&lt;br /&gt;
 cd ~/helfertool&lt;br /&gt;
 python3 -m venv venv # initalisierung des venv&lt;br /&gt;
 source venv/bin/activate # aktivierung des venv&lt;br /&gt;
 venv/bin/pip install -r src/requirements.txt # installation der dependencies im venv&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6357</id>
		<title>Helfertool</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Helfertool&amp;diff=6357"/>
		<updated>2024-01-27T10:31:19Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: init&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Helfertool.org ==&lt;br /&gt;
&lt;br /&gt;
Helfertool ist eine Software, die es erlaubt, die Freiwilligen oder Mitarbeiter für eine Veranstaltung zu verwalten. Sie können sich online für Jobs registrieren und die Verwaltungsoberfläche erlaubt es, die registrierten Personen zu verwalten. Für jeden Job können verschiedene Schichten mit einer Start- und Endzeit und einer begrenzten Anzahl von Helfern erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Sie ist in Python mit Django geschrieben. &lt;br /&gt;
&lt;br /&gt;
Features lt Website: &lt;br /&gt;
* Entscheiden Sie, ob die Registrierung für eine Stelle intern oder öffentlich sichtbar ist.&lt;br /&gt;
* Generieren Sie Ausweise zur Identifizierung und Zugangskontrolle.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
* Verwaltung von Geschenken für Freiwillige: sie können für jede geleistete Schicht ein Geschenk erhalten, die Organisatoren können vermerken, ob ein Freiwilliger das Geschenk für jede einzelne Schicht erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos auf https://www.helfertool.org&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
WIP&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6334</id>
		<title>Wordpress</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6334"/>
		<updated>2024-01-09T16:09:26Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Bestehendes Wordpress auf neuen User / Server umziehen / Uploads auf Storage auslagern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wordpress in 5 Minuten =&lt;br /&gt;
&lt;br /&gt;
Installiert wird Wordpress hier unter der Domain https://blog.example.org.&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;blog.example.org&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-blog&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Wordpress Blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;blog.example.org&#039;,user:&#039;xyz00-blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_wpuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_wpdb&#039;,owner:&#039;xyz00_wpuser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Wordpress installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-blog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-blog xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs-ssl&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd doms/blog.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www&lt;br /&gt;
  cd htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
Wordpress downloaden &amp;amp; entpacken z.b. im htdocs-ssl Verzeichnis&lt;br /&gt;
&lt;br /&gt;
   wget -O - https://wordpress.org/latest.tar.gz |tar -xz --strip 1&lt;br /&gt;
&lt;br /&gt;
== Wordpress konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://blog.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
== Uraltes Wordpress aktualisieren ==&lt;br /&gt;
&lt;br /&gt;
Manche Wordpress Installationen sind so alt, dass wp-login nicht mehr funktioniert.&lt;br /&gt;
&lt;br /&gt;
Mit wp-cli kann Wordpress auf die aktuelle Version aktualisiert werden:&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/bin&lt;br /&gt;
 cd ~/bin&lt;br /&gt;
 wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&lt;br /&gt;
 chmod a+x wp-cli.phar&lt;br /&gt;
 cd ~/wordpress # oder ~/doms/meinedomain.de/subs-ssl/www/ oder wo sonst Wordpress installiert ist&lt;br /&gt;
 ~/bin/wp-cli.phar core update&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neue Domain umziehen ==&lt;br /&gt;
Meistens muss nichts weiter geändert werden als die Home und die SITE_URL Option. &lt;br /&gt;
&lt;br /&gt;
Einfach zu ändern geht das indem man sich via phpmyadmin.hostsharing.net in den Datenbank User des Wordpress einloggt und sich die Tabelle wp_options ansieht. Dort müssen die Zeilen mit `siteurl` und `home` an die neuen URLs angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das auch über das wp-config.php machen. Meistens gibt es die beiden Einträge noch nicht, einfach an die passende Stelle für die Custom Config neu eintragen:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;WP_HOME&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
 define(&#039;WP_SITEURL&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generell lohnt es sich die wp_options Tabelle mal noch auf alte Domain Einträge zu untersuchen und ggf zu ersetzen. &lt;br /&gt;
Das geht z.B. so: &lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM wp_options WHERE option_value LIKE &amp;quot;%https://old-domain.de%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neuen User / Server umziehen / Uploads auf Storage auslagern == &lt;br /&gt;
&lt;br /&gt;
Meistens muss dafür keine weitere Änderung vorgenommen werden. Manchmal haben vorherige Anbieter einen alternativen Upload Pfad gesetzt. Das zeigt sich dadurch das man angeblich keine Schreibberechtigungen hätte beim Hochladen von z.B. Bildern. &lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit was dort kaputt sein könnte ist, das die Option `upload_path` noch auf einen alten Pfad vom alten Anbieter gesetzt wurde. Diese Option ist auch zu gebrauchen wenn der häufiger doch mal recht schnell wachsende Uploads Ordner auf den Storage und nicht auf die SSD ausgelagert werden soll. &lt;br /&gt;
&lt;br /&gt;
In der wp_options DB-Tabelle muss entsprechend die Variable `upload_path` angepasst werden. z.B. für den User xyz00-wordpress zu /home/storage/xyz00/users/wordpress/uploads&lt;br /&gt;
&lt;br /&gt;
Generell lohnt es sich die wp_options Tabelle noch mal auf den Alten Pfad zu untersuchen und ggf. anzupassen, das geht z.B. so: &lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM wp_options WHERE option_value LIKE &amp;quot;%/old/path/%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://wordpress.org/ Offizielle Webseite von Wordpress]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-Wordpress Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6333</id>
		<title>Wordpress</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6333"/>
		<updated>2024-01-09T16:08:04Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wordpress in 5 Minuten =&lt;br /&gt;
&lt;br /&gt;
Installiert wird Wordpress hier unter der Domain https://blog.example.org.&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;blog.example.org&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-blog&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Wordpress Blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;blog.example.org&#039;,user:&#039;xyz00-blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_wpuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_wpdb&#039;,owner:&#039;xyz00_wpuser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Wordpress installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-blog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-blog xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs-ssl&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd doms/blog.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www&lt;br /&gt;
  cd htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
Wordpress downloaden &amp;amp; entpacken z.b. im htdocs-ssl Verzeichnis&lt;br /&gt;
&lt;br /&gt;
   wget -O - https://wordpress.org/latest.tar.gz |tar -xz --strip 1&lt;br /&gt;
&lt;br /&gt;
== Wordpress konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://blog.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
== Uraltes Wordpress aktualisieren ==&lt;br /&gt;
&lt;br /&gt;
Manche Wordpress Installationen sind so alt, dass wp-login nicht mehr funktioniert.&lt;br /&gt;
&lt;br /&gt;
Mit wp-cli kann Wordpress auf die aktuelle Version aktualisiert werden:&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/bin&lt;br /&gt;
 cd ~/bin&lt;br /&gt;
 wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&lt;br /&gt;
 chmod a+x wp-cli.phar&lt;br /&gt;
 cd ~/wordpress # oder ~/doms/meinedomain.de/subs-ssl/www/ oder wo sonst Wordpress installiert ist&lt;br /&gt;
 ~/bin/wp-cli.phar core update&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neue Domain umziehen ==&lt;br /&gt;
Meistens muss nichts weiter geändert werden als die Home und die SITE_URL Option. &lt;br /&gt;
&lt;br /&gt;
Einfach zu ändern geht das indem man sich via phpmyadmin.hostsharing.net in den Datenbank User des Wordpress einloggt und sich die Tabelle wp_options ansieht. Dort müssen die Zeilen mit `siteurl` und `home` an die neuen URLs angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das auch über das wp-config.php machen. Meistens gibt es die beiden Einträge noch nicht, einfach an die passende Stelle für die Custom Config neu eintragen:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;WP_HOME&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
 define(&#039;WP_SITEURL&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generell lohnt es sich die wp_options Tabelle mal noch auf alte Domain Einträge zu untersuchen und ggf zu ersetzen. &lt;br /&gt;
Das geht z.B. so: &lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM wp_options WHERE option_value LIKE &amp;quot;%https://old-domain.de%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neuen User / Server umziehen / Uploads auf Storage auslagern == &lt;br /&gt;
&lt;br /&gt;
Meistens muss dafür keine weitere Änderung vorgenommen werden. Manchmal haben vorherige Anbieter einen alternativen Upload Pfad gesetzt. Das zeigt sich dadurch das man angeblich keine Schreibberechtigungen hätte beim Hochladen von z.B. Bildern. &lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit was dort kaputt sein könnte ist, das die Option `upload_path` noch auf einen alten Pfad vom alten Anbieter gesetzt wurde. Diese Option ist auch zu gebrauchen wenn der häufiger doch mal recht schnell wachsende Uploads Ordner auf den Storage und nicht auf die SSD ausgelagert werden soll. &lt;br /&gt;
&lt;br /&gt;
In der wp_options DB-Tabelle muss entsprechend die Variable `upload_path` angepasst werden. z.B. für den User xyz00-wordpress zu /home/storage/xyz00/users/wordpress/uploads  &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://wordpress.org/ Offizielle Webseite von Wordpress]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-Wordpress Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6332</id>
		<title>Wordpress</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6332"/>
		<updated>2024-01-09T16:07:42Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: /* Bestehendes Wordpress auf neue Domain umziehen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wordpress in 5 Minuten =&lt;br /&gt;
&lt;br /&gt;
Installiert wird Wordpress hier unter der Domain https://blog.example.org.&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;blog.example.org&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-blog&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Wordpress Blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;blog.example.org&#039;,user:&#039;xyz00-blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_wpuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_wpdb&#039;,owner:&#039;xyz00_wpuser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Wordpress installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-blog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-blog xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs-ssl&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd doms/blog.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www&lt;br /&gt;
  cd htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
Wordpress downloaden &amp;amp; entpacken z.b. im htdocs-ssl Verzeichnis&lt;br /&gt;
&lt;br /&gt;
   wget -O - https://wordpress.org/latest.tar.gz |tar -xz --strip 1&lt;br /&gt;
&lt;br /&gt;
== Wordpress konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://blog.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
== Uraltes Wordpress aktualisieren ==&lt;br /&gt;
&lt;br /&gt;
Manche Wordpress Installationen sind so alt, dass wp-login nicht mehr funktioniert.&lt;br /&gt;
&lt;br /&gt;
Mit wp-cli kann Wordpress auf die aktuelle Version aktualisiert werden:&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/bin&lt;br /&gt;
 cd ~/bin&lt;br /&gt;
 wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&lt;br /&gt;
 chmod a+x wp-cli.phar&lt;br /&gt;
 cd ~/wordpress # oder ~/doms/meinedomain.de/subs-ssl/www/ oder wo sonst Wordpress installiert ist&lt;br /&gt;
 ~/bin/wp-cli.phar core update&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neue Domain umziehen ==&lt;br /&gt;
Meistens muss nichts weiter geändert werden als die Home und die SITE_URL Option. &lt;br /&gt;
&lt;br /&gt;
Einfach zu ändern geht das indem man sich via phpmyadmin.hostsharing.net in den Datenbank User des Wordpress einloggt und sich die Tabelle wp_options ansieht. Dort müssen die Zeilen mit `siteurl` und `home` an die neuen URLs angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das auch über das wp-config.php machen. Meistens gibt es die beiden Einträge noch nicht, einfach an die passende Stelle für die Custom Config neu eintragen:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;WP_HOME&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
 define(&#039;WP_SITEURL&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generell lohnt es sich die wp_options Tabelle mal noch auf alte Domain Einträge zu untersuchen und ggf zu ersetzen. &lt;br /&gt;
Das geht z.B. so: SELECT * FROM wp_options WHERE option_value LIKE &amp;quot;%https://old-domain.de%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neuen User / Server umziehen / Uploads auf Storage auslagern == &lt;br /&gt;
&lt;br /&gt;
Meistens muss dafür keine weitere Änderung vorgenommen werden. Manchmal haben vorherige Anbieter einen alternativen Upload Pfad gesetzt. Das zeigt sich dadurch das man angeblich keine Schreibberechtigungen hätte beim Hochladen von z.B. Bildern. &lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit was dort kaputt sein könnte ist, das die Option `upload_path` noch auf einen alten Pfad vom alten Anbieter gesetzt wurde. Diese Option ist auch zu gebrauchen wenn der häufiger doch mal recht schnell wachsende Uploads Ordner auf den Storage und nicht auf die SSD ausgelagert werden soll. &lt;br /&gt;
&lt;br /&gt;
In der wp_options DB-Tabelle muss entsprechend die Variable `upload_path` angepasst werden. z.B. für den User xyz00-wordpress zu /home/storage/xyz00/users/wordpress/uploads  &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://wordpress.org/ Offizielle Webseite von Wordpress]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-Wordpress Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6331</id>
		<title>Wordpress</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6331"/>
		<updated>2024-01-09T16:06:08Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wordpress in 5 Minuten =&lt;br /&gt;
&lt;br /&gt;
Installiert wird Wordpress hier unter der Domain https://blog.example.org.&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;blog.example.org&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-blog&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Wordpress Blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;blog.example.org&#039;,user:&#039;xyz00-blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_wpuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_wpdb&#039;,owner:&#039;xyz00_wpuser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Wordpress installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-blog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-blog xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs-ssl&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd doms/blog.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www&lt;br /&gt;
  cd htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
Wordpress downloaden &amp;amp; entpacken z.b. im htdocs-ssl Verzeichnis&lt;br /&gt;
&lt;br /&gt;
   wget -O - https://wordpress.org/latest.tar.gz |tar -xz --strip 1&lt;br /&gt;
&lt;br /&gt;
== Wordpress konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://blog.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
== Uraltes Wordpress aktualisieren ==&lt;br /&gt;
&lt;br /&gt;
Manche Wordpress Installationen sind so alt, dass wp-login nicht mehr funktioniert.&lt;br /&gt;
&lt;br /&gt;
Mit wp-cli kann Wordpress auf die aktuelle Version aktualisiert werden:&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/bin&lt;br /&gt;
 cd ~/bin&lt;br /&gt;
 wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&lt;br /&gt;
 chmod a+x wp-cli.phar&lt;br /&gt;
 cd ~/wordpress # oder ~/doms/meinedomain.de/subs-ssl/www/ oder wo sonst Wordpress installiert ist&lt;br /&gt;
 ~/bin/wp-cli.phar core update&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neue Domain umziehen ==&lt;br /&gt;
Meistens muss nichts weiter geändert werden als die Home und die SITE_URL Option. &lt;br /&gt;
&lt;br /&gt;
Einfach zu ändern geht das indem man sich via phpmyadmin.hostsharing.net in den Datenbank User des Wordpress einloggt und sich die Tabelle wp_options ansieht. Dort müssen die Zeilen mit `siteurl` und `home` an die neuen URLs angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das auch über das wp-config.php machen. Meistens gibt es die beiden Einträge noch nicht, einfach an die passende Stelle für die Custom Config neu eintragen:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;WP_HOME&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
 define(&#039;WP_SITEURL&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neuen User / Server umziehen / Uploads auf Storage auslagern == &lt;br /&gt;
&lt;br /&gt;
Meistens muss dafür keine weitere Änderung vorgenommen werden. Manchmal haben vorherige Anbieter einen alternativen Upload Pfad gesetzt. Das zeigt sich dadurch das man angeblich keine Schreibberechtigungen hätte beim Hochladen von z.B. Bildern. &lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit was dort kaputt sein könnte ist, das die Option `upload_path` noch auf einen alten Pfad vom alten Anbieter gesetzt wurde. Diese Option ist auch zu gebrauchen wenn der häufiger doch mal recht schnell wachsende Uploads Ordner auf den Storage und nicht auf die SSD ausgelagert werden soll. &lt;br /&gt;
&lt;br /&gt;
In der wp_options DB-Tabelle muss entsprechend die Variable `upload_path` angepasst werden. z.B. für den User xyz00-wordpress zu /home/storage/xyz00/users/wordpress/uploads  &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://wordpress.org/ Offizielle Webseite von Wordpress]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-Wordpress Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6330</id>
		<title>Wordpress</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Wordpress&amp;diff=6330"/>
		<updated>2024-01-09T15:58:55Z</updated>

		<summary type="html">&lt;p&gt;Opa00-hostsharing: Anleitung zum Domainumzug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wordpress in 5 Minuten =&lt;br /&gt;
&lt;br /&gt;
Installiert wird Wordpress hier unter der Domain https://blog.example.org.&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;blog.example.org&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-blog&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Wordpress Blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;blog.example.org&#039;,user:&#039;xyz00-blog&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_wpuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_wpdb&#039;,owner:&#039;xyz00_wpuser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Wordpress installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-blog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-blog xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;htdocs-ssl&#039;&#039; Verzeichnis vorbereiten&lt;br /&gt;
&lt;br /&gt;
  cd doms/blog.example.org&lt;br /&gt;
  rm -rf subs/www subs-ssl/www&lt;br /&gt;
  cd htdocs-ssl&lt;br /&gt;
  rm .htaccess&lt;br /&gt;
&lt;br /&gt;
Wordpress downloaden &amp;amp; entpacken z.b. im htdocs-ssl Verzeichnis&lt;br /&gt;
&lt;br /&gt;
   wget -O - https://wordpress.org/latest.tar.gz |tar -xz --strip 1&lt;br /&gt;
&lt;br /&gt;
== Wordpress konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://blog.example.org gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
== Uraltes Wordpress aktualisieren ==&lt;br /&gt;
&lt;br /&gt;
Manche Wordpress Installationen sind so alt, dass wp-login nicht mehr funktioniert.&lt;br /&gt;
&lt;br /&gt;
Mit wp-cli kann Wordpress auf die aktuelle Version aktualisiert werden:&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/bin&lt;br /&gt;
 cd ~/bin&lt;br /&gt;
 wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&lt;br /&gt;
 chmod a+x wp-cli.phar&lt;br /&gt;
 cd ~/wordpress # oder ~/doms/meinedomain.de/subs-ssl/www/ oder wo sonst Wordpress installiert ist&lt;br /&gt;
 ~/bin/wp-cli.phar core update&lt;br /&gt;
&lt;br /&gt;
== Bestehendes Wordpress auf neue Domain umziehen ==&lt;br /&gt;
Meistens muss nichts weiter geändert werden als die Home und die SITE_URL Option. &lt;br /&gt;
&lt;br /&gt;
Einfach zu ändern geht das indem man sich via phpmyadmin.hostsharing.net in den Datenbank User des Wordpress einloggt und sich die Tabelle wp_options ansieht. Dort müssen die Zeilen mit `siteurl` und `home` an die neuen URLs angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das auch über das wp-config.php machen. Meistens gibt es die beiden Einträge noch nicht, einfach an die passende Stelle für die Custom Config neu eintragen:&lt;br /&gt;
&lt;br /&gt;
 define(&#039;WP_HOME&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
 define(&#039;WP_SITEURL&#039;,&#039;https://www.new-domain.de/&#039;);&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://wordpress.org/ Offizielle Webseite von Wordpress]&lt;br /&gt;
*[https://github.com/tpokorra/Hostsharing-Ansible-Wordpress Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Opa00-hostsharing</name></author>
	</entry>
</feed>