<?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=Mgw00-dom0</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=Mgw00-dom0"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Mgw00-dom0"/>
	<updated>2026-04-25T22:35:04Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mastodon_bei_Hostsharing&amp;diff=4707</id>
		<title>Mastodon bei Hostsharing</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mastodon_bei_Hostsharing&amp;diff=4707"/>
		<updated>2018-10-09T21:08:55Z</updated>

		<summary type="html">&lt;p&gt;Mgw00-dom0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textkasten|gelb|Für Managed Server|Ein funktionierender Mastodon-Server erfordert mehrere laufende Server-Dienste. Für den Betrieb ist ein Managed Server sinnvoll.}}&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von HSAdmin wird angelegt:&lt;br /&gt;
# Ein User als Service-User mit &#039;&#039;/bin/bash&#039;&#039; als Shell, zum Beispiel Beispiel: &#039;&#039;xyz00-mastodon&#039;&#039;&lt;br /&gt;
# Eine Domain mit &#039;&#039;xyz00-mastodon&#039;&#039; als Domain-Administrator, zum Beispiel &#039;&#039;beispiel.social&#039;&#039;&lt;br /&gt;
# Einen Postgresql-User &#039;&#039;xyz00_mastuser&#039;&#039; mit Passwort &#039;&#039;meinPasswort&#039;&#039;&lt;br /&gt;
# Eine Postgresql-Datenbank &#039;&#039;xyz00_mastdb&#039;&#039; mit Datenbank-Owner &#039;&#039;xyz00_mastuser&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verwendete IP-Ports der Server-Dienste:&lt;br /&gt;
# Monit: localhost:32001&lt;br /&gt;
# Redis: localhost:32002&lt;br /&gt;
# Mastodon-Web: localhost:32003&lt;br /&gt;
# Mastodon-Streaming: localhost:32004&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Redis Server ==&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Datei &#039;&#039;/home/pacs/xyz00/users/mastodon/redis/etc/redis.conf&#039;&#039; mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
    daemonize yes&lt;br /&gt;
    pidfile /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid&lt;br /&gt;
    port 32002&lt;br /&gt;
    tcp-backlog 128&lt;br /&gt;
    bind 127.0.0.1&lt;br /&gt;
    timeout 300&lt;br /&gt;
    loglevel notice&lt;br /&gt;
    logfile /home/pacs/xyz00/users/mastodon/redis/var/redis.log&lt;br /&gt;
    databases 16&lt;br /&gt;
    save 900 1&lt;br /&gt;
    save 300 10&lt;br /&gt;
    save 60 10000&lt;br /&gt;
    slave-serve-stale-data yes&lt;br /&gt;
    appendonly no&lt;br /&gt;
    dbfilename dump.rdb&lt;br /&gt;
    dir /home/pacs/xyz00/users/mastodon/redis/var&lt;br /&gt;
&lt;br /&gt;
== Installation von NodeJS ==&lt;br /&gt;
&lt;br /&gt;
Als User &#039;xyz00-mastodon&#039;&#039;: Installation von &#039;&#039;nvm&#039;&#039; und &#039;&#039;nodejs&#039;&#039; (Version 8) nach der Anleitung [[NodeJS]]&lt;br /&gt;
&lt;br /&gt;
Installation von &#039;&#039;yarn&#039;&#039; mit:&lt;br /&gt;
&lt;br /&gt;
    npm install -g yarn&lt;br /&gt;
&lt;br /&gt;
== Installation von Ruby ==&lt;br /&gt;
&lt;br /&gt;
Als User &#039;&#039;xyz00-mastodon&#039;&#039;:  Installation von Ruby mit &#039;&#039;rbenv&#039;&#039; mit folgenden Befehlen:&lt;br /&gt;
&lt;br /&gt;
Zunächst &#039;&#039;rbenv&#039;&#039; and &#039;&#039;ruby-build&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv&lt;br /&gt;
    cd ~/.rbenv &amp;amp;&amp;amp; src/configure &amp;amp;&amp;amp; make -C src&lt;br /&gt;
    echo &#039;export PATH=&amp;quot;$HOME/.rbenv/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
    echo &#039;eval &amp;quot;$(rbenv init -)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
&lt;br /&gt;
starte neue Shell:&lt;br /&gt;
&lt;br /&gt;
    exec bash&lt;br /&gt;
&lt;br /&gt;
Überprüfe rbenv-Installation&lt;br /&gt;
&lt;br /&gt;
    type rbenv&lt;br /&gt;
&lt;br /&gt;
Installiere ruby-build als rbenv-Plugin&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build&lt;br /&gt;
&lt;br /&gt;
Nun kann die benötigte Ruby-Version installiert werden:&lt;br /&gt;
&lt;br /&gt;
    rbenv install 2.5.1&lt;br /&gt;
&lt;br /&gt;
== Installation der Mastodon Software ==&lt;br /&gt;
&lt;br /&gt;
Weiterhin Als User &#039;&#039;xyz00-mastodon&#039;&#039;:  &lt;br /&gt;
&lt;br /&gt;
    cd ~&lt;br /&gt;
    git clone https://github.com/tootsuite/mastodon.git live&lt;br /&gt;
    cd ~/live&lt;br /&gt;
&lt;br /&gt;
Die stabile Version auschecken:&lt;br /&gt;
&lt;br /&gt;
    git checkout $(git tag -l | grep -v &#039;rc[0-9]*$&#039; | sort -V | tail -n 1)&lt;br /&gt;
&lt;br /&gt;
Ruby Pakete installieren:&lt;br /&gt;
&lt;br /&gt;
    gem install bundler&lt;br /&gt;
    bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test&lt;br /&gt;
&lt;br /&gt;
Node.js Pakete installieren:&lt;br /&gt;
&lt;br /&gt;
    yarn install --pure-lockfile&lt;br /&gt;
&lt;br /&gt;
== Konfiguration der Mastodon Software ==&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Datei &#039;&#039;/home/pacs/xyz00/users/mastodon/mystodon/live/.env.production&#039;&#039; mit dem folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
    REDIS_HOST=localhost&lt;br /&gt;
    REDIS_PORT=32002&lt;br /&gt;
    DB_HOST=localhost&lt;br /&gt;
    DB_USER=xyz00_mastuser&lt;br /&gt;
    DB_NAME=xyz00_mastdb&lt;br /&gt;
    DB_PASS=meinPasswort&lt;br /&gt;
    DB_PORT=5432&lt;br /&gt;
    LOCAL_DOMAIN=beispiel.social&lt;br /&gt;
    SECRET_KEY_BASE=12ab..&lt;br /&gt;
    OTP_SECRET=34ef..&lt;br /&gt;
    VAPID_PRIVATE_KEY=ABCD..&lt;br /&gt;
    VAPID_PUBLIC_KEY=EFGH..&lt;br /&gt;
    DEFAULT_LOCALE=de&lt;br /&gt;
    SMTP_SERVER=localhost&lt;br /&gt;
    SMTP_PORT=25&lt;br /&gt;
    SMTP_FROM_ADDRESS=notifications@beispiel.social&lt;br /&gt;
    SMTP_AUTH_METHOD=none&lt;br /&gt;
    SMTP_OPENSSL_VERIFY_MODE=none&lt;br /&gt;
    STREAMING_CLUSTER_NUM=1&lt;br /&gt;
&lt;br /&gt;
Die Zufallswerte für die Variablen SECRET_KEY_BASE und OTP_SECRET erzeugt man durch zwei Aufrufe des Kommandos&lt;br /&gt;
&lt;br /&gt;
    RAILS_ENV=production bundle exec rake secret&lt;br /&gt;
&lt;br /&gt;
Die Werte für VAPID_PRIVATE_KEY und VAPID_PUBLIC_KEY erzeugt das Kommando&lt;br /&gt;
&lt;br /&gt;
    RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initialisieren der Datenbank:&lt;br /&gt;
&lt;br /&gt;
    export SAFETY_ASSURED=1&lt;br /&gt;
    RAILS_ENV=production bundle exec rails db:schema:load&lt;br /&gt;
    RAILS_ENV=production bundle exec rails db:seed&lt;br /&gt;
&lt;br /&gt;
== Starten der Dienste  ==&lt;br /&gt;
&lt;br /&gt;
Zum Start aller notwendigen Dienste wird in dieser Anleitung &#039;&#039;monit&#039;&#039; benutzt. Hier ein Beispiel für eine Datei &#039;&#039;.monitrc&#039;&#039; (überlange Zeilen werden hier im Wiki umgebrochen)&lt;br /&gt;
&lt;br /&gt;
    set daemon 60&lt;br /&gt;
        with start delay 120&lt;br /&gt;
    set logfile /home/pacs/xyz00/users/mastodon/monit/var/monit.log&lt;br /&gt;
    set idfile /home/pacs/xyz00/users/mastodon/monit/var/monit.id&lt;br /&gt;
    set statefile /home/pacs/xyz00/users/mastodon/monit/var/monit.state&lt;br /&gt;
    set mailserver localhost&lt;br /&gt;
    set mail-format { from: monit@beispiel.social }&lt;br /&gt;
    set alert mastodon@beispiel.social&lt;br /&gt;
    set httpd port 32001 address xyz00.hostsharing.net &lt;br /&gt;
        allow mostodon:monitpassword&lt;br /&gt;
    check process redis with pidfile /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid&lt;br /&gt;
        start program &amp;quot;/usr/bin/redis-server /home/pacs/xyz00/users/mastodon/redis/etc/redis.conf&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid )&#039;&amp;quot;&lt;br /&gt;
    check process mstdn_web with pidfile /home/pacs/xyz00/users/mastodon/mastodon/var/puma.pid&lt;br /&gt;
        depends redis&lt;br /&gt;
        start program &amp;quot;/bin/bash -c &#039;export HOME=/home/pacs/xyz00/users/mastodon &amp;amp;&amp;amp; cd $HOME/mastodon/live &amp;amp;&amp;amp; ( $HOME/.rbenv/shims/bundle exec puma -C config/puma.rb -e production -b tcp://127.0.0.1:32003 &amp;gt;$HOME/mastodon/var/puma.log 2&amp;gt;&amp;amp;1 &amp;amp;  echo $! &amp;gt; $HOME/mastodon/var/puma.pid  )&#039;&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/mastodon/var/puma.pid )&#039;&amp;quot;&lt;br /&gt;
    check process mstdn_sidekiq with pidfile /home/pacs/xyz00/users/mastodon/mastodon/var/sidekiq.pid&lt;br /&gt;
        depends redis&lt;br /&gt;
        start program &amp;quot;/bin/bash -c &#039;export RAILS_ENV=production &amp;amp;&amp;amp; export DB_POOL=5 &amp;amp;&amp;amp; export HOME=/home/pacs/xyz00/users/mastodon &amp;amp;&amp;amp; cd $HOME/mastodon/live &amp;amp;&amp;amp; ( $HOME/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push &amp;gt;$HOME/mastodon/var/sidekiq.log 2&amp;gt;&amp;amp;1 &amp;amp;  echo $! &amp;gt; $HOME/mastodon/var/sidekiq.pid  )&#039;&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/mastodon/var/sidekiq.pid )&#039;&amp;quot;&lt;br /&gt;
    check process mstdn_streaming with pidfile /home/pacs/xyz00/users/mastodon/mastodon/var/streaming.pid&lt;br /&gt;
        depends redis&lt;br /&gt;
        start program &amp;quot;/bin/bash -c &#039;export HOME=/home/pacs/xyz00/users/mastodon &amp;amp;&amp;amp; export NVM_DIR=&amp;quot;$HOME/.nvm&amp;quot; &amp;amp;&amp;amp; export NVM_BIN=/home/pacs/xyz00/users/mastodon/.nvm/versions/node/v8.12.0/bin &amp;amp;&amp;amp; export NODE_ENV=production &amp;amp;&amp;amp; export PORT=32004 &amp;amp;&amp;amp; BIND=127.0.0.1 &amp;amp;&amp;amp; cd $HOME/mastodon/live &amp;amp;&amp;amp; ( $HOME/.nvm/versions/node/v8.12.0/bin/node streaming/index.js &amp;gt;$HOME/mastodon/var/streaming.log 2&amp;gt;&amp;amp;1 &amp;amp;  echo $! &amp;gt; $HOME/mastodon/var/streaming.pid  )&#039;&amp;quot;&lt;br /&gt;
        stop program &amp;quot;/bin/bash -c &#039;/bin/kill $( cat /home/pacs/xyz00/users/mastodon/mastodon/var/streaming.pid )&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Einrichten des Apache VHost ==&lt;br /&gt;
&lt;br /&gt;
    cd ~/doms/beispiel.social&lt;br /&gt;
    rm -rf htdocs-ssl subs/www subs-ssl/www&lt;br /&gt;
    ln -s ~/live/public htdocs-ssl&lt;br /&gt;
    touch htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Dann die &#039;&#039;htdocs-ssl/.htaccess&#039;&#039; mit dem Editor der Wahl öffnen und &lt;br /&gt;
folgende Konfiguration einfügen:&lt;br /&gt;
&lt;br /&gt;
    DirectoryIndex disabled&lt;br /&gt;
    RewriteEngine On&lt;br /&gt;
    RewriteBase /&lt;br /&gt;
    RewriteCond %{REQUEST_URI}  ^/api/v1/streaming    [NC]&lt;br /&gt;
    RewriteRule .* ws://localhost:32004%{REQUEST_URI}  [proxy]&lt;br /&gt;
    RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
    RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
    RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
    RewriteRule .* http://localhost:32003%{REQUEST_URI} [proxy]&lt;br /&gt;
    RequestHeader set X-Forwarded-Proto &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Cronjobs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cron&#039;&#039; wird für zwei Aufgaben genutzt:&lt;br /&gt;
* Start von monit nach einem Server Reboot&lt;br /&gt;
* Aufräumen von alten Resourcen&lt;br /&gt;
&lt;br /&gt;
Einrichten der crontab mit &#039;&#039;cronttab -e&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    HOME=/home/pacs/xyz00/users/mastodon&lt;br /&gt;
    MAILTO=mastodon@beispiel.social&lt;br /&gt;
    RAILS_ENV=production&lt;br /&gt;
    NUM_DAYS=31&lt;br /&gt;
    &lt;br /&gt;
    @reboot /usr/bin/monit -c $HOME/.monitrc&lt;br /&gt;
    18 4 * * * cd $HOME/mastodon/live &amp;amp;&amp;amp; $HOME/.rbenv/shims/bundle exec rake mastodon:media:remove_remote&lt;br /&gt;
&lt;br /&gt;
== Volltextsuche ==&lt;br /&gt;
&lt;br /&gt;
In der installierten Version gibt es noch keine Volltextsuche. Es kann lediglich nach Nutzerkennungen und Hastags gesucht werden. Für die Volltextsuche kann optional Elasticsearch installiert werden.&lt;br /&gt;
* https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Elasticsearch-guide.md&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md&lt;br /&gt;
* https://krinetzki.de/2017/04/installation-von-mastodon-auf-debian-8-jessie/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;/div&gt;</summary>
		<author><name>Mgw00-dom0</name></author>
	</entry>
</feed>