Keila: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
|||
Zeile 20: | Zeile 20: | ||
=== nötige asdf Plugins installieren === | === nötige asdf Plugins installieren === | ||
< | <syntaxhighlight lang=shell> | ||
asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git | asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git | ||
asdf plugin add elixir https://github.com/asdf-vm/asdf-elixir.git | asdf plugin add elixir https://github.com/asdf-vm/asdf-elixir.git | ||
</ | </syntaxhighlight> | ||
== Abhängigkeiten installieren == | == Abhängigkeiten installieren == | ||
Zeile 29: | Zeile 29: | ||
<strong>Wichtig!</strong> Abhängigkeiten in <code>keila/.tool-versions</code> überprüfen und unten ersetzen! | <strong>Wichtig!</strong> Abhängigkeiten in <code>keila/.tool-versions</code> überprüfen und unten ersetzen! | ||
< | <syntaxhighlight lang=shell> | ||
asdf install erlang 26.0 | asdf install erlang 26.0 | ||
asdf install elixir 1.15.6 | asdf install elixir 1.15.6 | ||
</ | </syntaxhighlight> | ||
== Keila bauen == | == Keila bauen == | ||
Zeile 38: | Zeile 38: | ||
Ehe wir beginnen, müssen wir für das Hostsharing Mailsystem noch eine Kleinigkeit anpassen. In <code>config/runtime.exs</code> suchen wir den Block: | Ehe wir beginnen, müssen wir für das Hostsharing Mailsystem noch eine Kleinigkeit anpassen. In <code>config/runtime.exs</code> suchen wir den Block: | ||
< | <syntaxhighlight lang=elixir line> | ||
[ | [ | ||
adapter: Swoosh.Adapters.SMTP, | adapter: Swoosh.Adapters.SMTP, | ||
Zeile 46: | Zeile 46: | ||
from_email: from_email | from_email: from_email | ||
] | ] | ||
</ | </syntaxhighlight> | ||
Hier ergänzen wir ein Komma hinter <code>from_email</code> und ergänzen die Zeile <code>no_mx_lookups: true</code>. Das Ergebnis sieht dann so aus: | Hier ergänzen wir ein Komma hinter <code>from_email</code> und ergänzen die Zeile <code>no_mx_lookups: true</code>. Das Ergebnis sieht dann so aus: | ||
< | <syntaxhighlight lang=elixir line> | ||
[ | [ | ||
adapter: Swoosh.Adapters.SMTP, | adapter: Swoosh.Adapters.SMTP, | ||
Zeile 59: | Zeile 59: | ||
no_mx_lookups: true | no_mx_lookups: true | ||
] | ] | ||
</ | </syntaxhighlight> | ||
Das ist wichtig, damit Keila sich nicht mit dem Posteingangs-Server versucht zu verbinden. Okey, weiter: | Das ist wichtig, damit Keila sich nicht mit dem Posteingangs-Server versucht zu verbinden. Okey, weiter: | ||
< | <syntaxhighlight lang=shell line> | ||
export MIX_ENV=prod | export MIX_ENV=prod | ||
Zeile 79: | Zeile 79: | ||
# falls Fehlermeldung beim letzten Befehl, nochmal das Folgende getrennt ausführen: | # falls Fehlermeldung beim letzten Befehl, nochmal das Folgende getrennt ausführen: | ||
mix assets.deploy && mix release | mix assets.deploy && mix release | ||
</ | </syntaxhighlight> | ||
Keila sollte im Anschluss wiefolgt startbar sein: <code>./_build/prod/rel/keila/bin/keila start</code> | Keila sollte im Anschluss wiefolgt startbar sein: <code>./_build/prod/rel/keila/bin/keila start</code> | ||
Zeile 92: | Zeile 92: | ||
Hinweis: eventuell auch Port setzen, bitte Hostmaster kontaktieren für freien Port | Hinweis: eventuell auch Port setzen, bitte Hostmaster kontaktieren für freien Port | ||
< | <syntaxhighlight lang=ini line> | ||
MIX_ENV=prod | MIX_ENV=prod | ||
Zeile 119: | Zeile 119: | ||
CAPTCHA_SECRET_KEY= | CAPTCHA_SECRET_KEY= | ||
#CAPTCHA_URL=wird auch automatisch gesetzt | #CAPTCHA_URL=wird auch automatisch gesetzt | ||
</syntaxhighlight> | |||
</ | |||
=== systemd === | === systemd === | ||
Zeile 126: | Zeile 125: | ||
Verzeichnis <code>mkdir -p .config/systemd/user/</code> anlegen und <code>keila.service</code> erstellen: | Verzeichnis <code>mkdir -p .config/systemd/user/</code> anlegen und <code>keila.service</code> erstellen: | ||
< | <syntaxhighlight lang=ini line> | ||
[Unit] | [Unit] | ||
Description=Keila | Description=Keila | ||
Zeile 141: | Zeile 140: | ||
# Achtung: multiuser.target würde hier zu Problemen führen | # Achtung: multiuser.target würde hier zu Problemen führen | ||
WantedBy=default.target | WantedBy=default.target | ||
</ | </syntaxhighlight> | ||
* eventuell setzen einer Variabel nötig: <code>export XDG_RUNTIME_DIR=/run/user/$UID</code> | * eventuell setzen einer Variabel nötig: <code>export XDG_RUNTIME_DIR=/run/user/$UID</code> | ||
Zeile 150: | Zeile 149: | ||
Editieren von <code>~/doms/newsletter.meine.domain/htdocs-ssl/.htaccess</code> | Editieren von <code>~/doms/newsletter.meine.domain/htdocs-ssl/.htaccess</code> | ||
< | <syntaxhighlight lang=apache line> | ||
DirectoryIndex disabled | DirectoryIndex disabled | ||
RewriteEngine On | RewriteEngine On | ||
Zeile 164: | Zeile 163: | ||
RequestHeader set X-Forwarded-Proto "https" | RequestHeader set X-Forwarded-Proto "https" | ||
RewriteRule ^(.*) http://127.0.0.1:4000/$1 [P,L] | RewriteRule ^(.*) http://127.0.0.1:4000/$1 [P,L] | ||
</ | </syntaxhighlight> | ||
= Keila updaten = | = Keila updaten = | ||
* Repo aktualisieren | * Repo aktualisieren | ||
< | <syntaxhighlight lang=shell line> | ||
cd ~/var/keila | cd ~/var/keila | ||
git fetch | git fetch | ||
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1) | git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1) | ||
# prüfen ob auch wirklich release und nicht release candidate</ | # prüfen ob auch wirklich release und nicht release candidate</syntaxhighlight> | ||
* jetzt den Instruktionen zum Bauen oben folgen! | * jetzt den Instruktionen zum Bauen oben folgen! | ||
* <code>systemctl restart --user keila</code> | * <code>systemctl restart --user keila</code> |
Version vom 24. Mai 2024, 09:05 Uhr
Keila installieren
Keila ist eine Software zum erstellen und verwalten von Newslettern. Es werden mehrere (E-Mail)Sender, sowie Instanzweite geteilte Sender und viele praktische Einstellmöglichkeiten unterstützt. Zwar gibt es (noch) kein SSO, es werden allerdings mehrere Nutzer unterstützt. Viele benötigen Double-Opt-In – dieses Feature wird in Keila v0.12.9 erwartet.
Die Software ist in Erlang/Elixir geschrieben und stellt keine fertigen Binaries bereit, daher müssen wir von Hand bauen:
Keila herunterladen
Wir clonen den aktuellen Release-branch mit Git.
git clone https://github.com/pentacent/keila -b v$releasenummer
Paketmanager für Abhängigkeiten
asdf installieren
Keila erwartet ganz bestimmte Paketversionen. Um diese bereitzustellen, installieren wir als erstes einen lokalen Paketmanager. Der Einfachheit halber ua. wegen Versionierung ein Verweis:
=> https://asdf-vm.com/guide/getting-started.html
nötige asdf Plugins installieren
asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin add elixir https://github.com/asdf-vm/asdf-elixir.git
Abhängigkeiten installieren
Wichtig! Abhängigkeiten in keila/.tool-versions
überprüfen und unten ersetzen!
asdf install erlang 26.0
asdf install elixir 1.15.6
Keila bauen
Ehe wir beginnen, müssen wir für das Hostsharing Mailsystem noch eine Kleinigkeit anpassen. In config/runtime.exs
suchen wir den Block:
[
adapter: Swoosh.Adapters.SMTP,
relay: host,
username: user,
password: password,
from_email: from_email
]
Hier ergänzen wir ein Komma hinter from_email
und ergänzen die Zeile no_mx_lookups: true
. Das Ergebnis sieht dann so aus:
[
adapter: Swoosh.Adapters.SMTP,
relay: host,
username: user,
password: password,
from_email: from_email,
no_mx_lookups: true
]
Das ist wichtig, damit Keila sich nicht mit dem Posteingangs-Server versucht zu verbinden. Okey, weiter:
export MIX_ENV=prod
mix local.hex --force
mix local.rebar --force
mix deps.get
mix deps.compile
npm ci --prefix ./assets
mix deps.clean mime --build
mix assets.deploy
mix release
# falls Fehlermeldung beim letzten Befehl, nochmal das Folgende getrennt ausführen:
mix assets.deploy && mix release
Keila sollte im Anschluss wiefolgt startbar sein: ./_build/prod/rel/keila/bin/keila start
Der Ordnung halber wird die Binary in einen ~/bin
Ordner verlinkt oder kopiert:
ln -s $HOME/var/keila/_build/prod/rel/keila/bin/keila $HOME/bin/
In Betrieb nehmen
Das Projekt erwartet mit Docker gestartet zu werden ua. daher kann Vieles über Environment Variablen konfiguriert werden. Eine Orientierung bietet die Keila Dokumentation. In unserem Beispiel wird die lokale Datei ~/etc/keina.env
angelegt und unten über systemd eingebunden:
Hinweis: eventuell auch Port setzen, bitte Hostmaster kontaktieren für freien Port
MIX_ENV=prod
DB_URL=postgres://xyz00_newsletter:sicheresDatenbankPasswort@localhost/xyz00_newsletter_db
KEILA_USER=email@adresse
KEILA_PASSWORD=sicheresPasswort
URL_HOST=newsletter.meine.domain
URL_SCHEMA=https
SECRET_KEY_BASE=langerrandomstringmindestens64zeichen
USER_CONTENT_DIR=/home/storage/xyz00/users/newsletter/keila_uploads
# keine leeren Passwörter unterstützt
MAILER_SMTP_HOST=xyz00.hostsharing.net # auch das anpassen!
MAILER_SMTP_USER=xyz00_newsletter
MAILER_SMTP_PORT=587
MAILER_SMTP_PASSWORD=sicheresUser/MailboxPasswort
# diese Option ist zum Registrieren
# und eg. Eintragungen erforderlich
CAPTCHA_PROVIDER=hcaptcha # hcaptcha ist default, friendly_captcha als Option möglich
CAPTCHA_SITE_KEY=
CAPTCHA_SECRET_KEY=
#CAPTCHA_URL=wird auch automatisch gesetzt
systemd
Verzeichnis mkdir -p .config/systemd/user/
anlegen und keila.service
erstellen:
[Unit]
Description=Keila
[Service]
Type=simple
Restart=on-abort
WorkingDirectory=/home/pacs/xyz00/users/newsletter
EnvironmentFile=-/home/pacs/xyz00/users/newsletter/etc/keila.env
ExecStart=/home/pacs/xyz00/users/newsletter/bin/keila start
[Install]
# Achtung: multiuser.target würde hier zu Problemen führen
WantedBy=default.target
- eventuell setzen einer Variabel nötig:
export XDG_RUNTIME_DIR=/run/user/$UID
- starten+Autostart:
systemctl enable --now --user keila
Webserver
Editieren von ~/doms/newsletter.meine.domain/htdocs-ssl/.htaccess
DirectoryIndex disabled
RewriteEngine On
# ohne Websocket Upgrade funktionieren beispielsweise Editoren nicht
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule ^(.*) ws://127.0.0.1:4000/$1 [P,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RequestHeader set X-Forwarded-Proto "https"
RewriteRule ^(.*) http://127.0.0.1:4000/$1 [P,L]
Keila updaten
- Repo aktualisieren
cd ~/var/keila
git fetch
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)
# prüfen ob auch wirklich release und nicht release candidate
- jetzt den Instruktionen zum Bauen oben folgen!
systemctl restart --user keila
- bei systemd Fehler sicherstellen das die nötige Variabel gesetzt ist (siehe oben, systemd)