Keila
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
export MIX_ENV=prod mix # FIXME hier gab es bei Versuchen dennoch Schwierigkeiten, # daher wird das im Folgenden noch vorne drangesetzt. # (dev build) MIX_ENV=prod mix local.hex --force && mix local.rebar --force && mix deps.get && mix deps.compile npm ci --prefix ./assets MIX_ENV=prod mix deps.clean mime --build && MIX_ENV=prod mix assets.deploy && mix release # falls Fehlermeldung beim letzten Befehl, nochmal das Folgende getrennt ausführen: MIX_ENV=prod 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/pacs/xyz00/users/newsletter/storage/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
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)