Schnellstart: minimale Welley-Bereitstellung
Der kürzeste Weg zu einer laufenden Welley-Instanz auf einem einzelnen Linux-Host, in einer beliebigen Cloud oder auf deiner eigenen Hardware. Es werden nur die Flags verwendet, die die CLI wirklich verlangt. Alles andere bleibt auf dem Standardwert.
Das bekommst du: die Plattform, die RAG-Pipeline, Nginx, Redis und einen mitgelieferten PostgreSQL-Container, dazu ein Let's-Encrypt-Zertifikat, das bei der Installation ausgestellt wird. Keine verwaltete Datenbank, kein CDN, keine Telemetrie und keine Slack-Integration (dafür gibt es die Anleitungen für AWS EC2 und DigitalOcean).
1. Voraussetzungen
Ein Linux-Host
- Ubuntu 24.04 LTS (oder eine vergleichbare aktuelle Distribution).
- 2 vCPU, 4 GB RAM und 60 GB Speicherplatz als Ausgangspunkt.
- Eine öffentliche IPv4-Adresse, die sich nicht ändert.
- Eingehende TCP-Ports 80 und 443 sind aus dem Internet offen, 22 ist für dich offen. Port 80 wird bei der Installation für die Zertifikatsprüfung gebraucht und danach für die wöchentliche Erneuerung.
- Ein Nicht-Root-Nutzer mit
sudo. Die Anleitung führt alles mit diesem Nutzer aus, unten heißt er<user>.
DNS
Zwei Einträge, die beide auf die öffentliche IP des Hosts zeigen:
| Eintrag | Zweck |
|---|---|
<domain> |
die Website selbst |
storage.<domain> |
Uploads und statische Dateien, weil es in dieser Konfiguration kein CDN gibt |
Lege sie an, bevor du anfängst: Die CLI prüft, ob beide Namen auf diesen Host zeigen, und bricht ab, wenn das nicht so ist.
DNS-Einträge für E-Mail
Die Domain deiner --smtp-from-Adresse braucht Einträge zur E-Mail-Authentifizierung. Ohne sie verwerfen Gmail, Outlook und andere große Anbieter E-Mails an Empfänger oft, wenn diese noch nie etwas von dir bekommen haben. Das betrifft jede Einladung und jede Anmeldebestätigung. Die Mail landet nicht einmal im Spam, obwohl dein SMTP-Anbieter sie als gesendet meldet.
| Eintrag | Typ | Wert |
|---|---|---|
<mail-domain> |
TXT | SPF, zum Beispiel v=spf1 include:<provider> ~all. Den genauen Wert bekommst du von deinem SMTP-Anbieter. |
_dmarc.<mail-domain> |
TXT | DMARC, zum Beispiel v=DMARC1; p=none; rua=mailto:dmarc@<mail-domain> |
<selector>._domainkey.<mail-domain> |
TXT oder CNAME | DKIM, wird von deinem SMTP-Anbieter erzeugt, wenn du die Domain verifizierst |
Eine Domain kann nur einen SPF-Eintrag haben. Wenn sie schon einen hat, ergänze ihn um deinen Anbieter, statt einen zweiten anzulegen. create warnt, wenn SPF oder DMARC fehlt, bricht aber nicht ab. DKIM kann es nicht prüfen, weil der Selector-Name vom jeweiligen Anbieter abhängt.
Überspring DKIM nicht. Viele Anbieter, darunter Amazon SES, senden standardmäßig mit ihrer eigenen Domain als Envelope-Absender. SPF prüft dann die Domain des Anbieters und nicht deine, zählt also nicht für DMARC. Die DMARC-Prüfung kann dann nur über DKIM bestanden werden. Den DKIM-Status siehst du in der Konsole deines Anbieters. In Amazon SES findest du ihn unter Verified identities, dann <mail-domain>, dann DKIM, und er muss Successful lauten. SES Easy DKIM veröffentlicht drei CNAME-Einträge mit dem Namen <token>._domainkey.<mail-domain>.
SMTP-Zugangsdaten
Host, Nutzer, Passwort und eine Absenderadresse, von einem beliebigen Anbieter. Die Plattform braucht sie für die E-Mail-Bestätigung und das Zurücksetzen von Passwörtern, und die CLI weigert sich, ohne sie zu installieren. Die Standardwerte gehen vom Versand über STARTTLS auf Port 587 aus.
Eine Admin-E-Mail-Adresse für die erste Anmeldung und das Zurücksetzen des Passworts.
2. Docker installieren
Folge der offiziellen Anleitung für deine Distribution: Install Docker Engine. Danach gibst du deinem Nutzer Zugriff auf den Daemon:
sudo usermod -aG docker <user>
Melde dich ab und wieder an und prüfe dann, ob beide Teile vorhanden sind:
docker ps
docker compose version
3. CLI herunterladen
Wähle den platform-Wert, der zu deinem Host passt:
linux/amd64
curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=linux/amd64" -o wlycli
chmod +x wlycli
./wlycli -v
linux/arm64
curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=linux/arm64" -o wlycli
chmod +x wlycli
./wlycli -v
darwin/arm64
curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=darwin/arm64" -o wlycli
chmod +x wlycli
./wlycli -v
darwin/amd64
curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=darwin/amd64" -o wlycli
chmod +x wlycli
./wlycli -v
4. Bereitstellen
./wlycli deploy create \
-d example.com \
-e admin@example.com \
--smtp-host smtp.example.com \
--smtp-user "$MAIL_USER" \
--smtp-password "$MAIL_PASSWORD" \
--smtp-from noreply@example.com
Diese sechs Flags sind alles, was nötig ist. Der Befehl prüft das DNS, schreibt die Bereitstellungsdateien, stellt das Zertifikat mit Certbot aus und startet die Container. Rechne mit mehreren Minuten.
Diese Standardwerte übernimmst du damit:
| Einstellung | Standardwert |
|---|---|
| Installationsverzeichnis | ~/.welley/<project>, wobei <project> die Domain ist, in der jedes nicht alphanumerische Zeichen durch _ ersetzt wird (aus example.com wird also example_com) |
| Datenbank | mitgelieferter PostgreSQL-Container, Daten im Installationsverzeichnis |
| Zertifikate | Let's Encrypt über Certbot, wird automatisch einmal pro Woche erneuert |
| Uploads und statische Dateien | werden von https://storage.<domain> ausgeliefert |
| Updates | Kanal stable, wird täglich geprüft, nach Möglichkeit ohne Ausfallzeit eingespielt |
5. Erste Anmeldung
Das generierte Admin-Passwort wird ins Plattform-Log geschrieben:
docker logs example_com-platform-blue-1 | grep "Auto-init complete"
Öffne https://<domain>, melde dich mit der Admin-E-Mail-Adresse an, die du mit -e angegeben hast, und ändere das Passwort sofort. Behandle das Log bis dahin als geheim.
6. Ergebnis prüfen
docker ps
Du solltest je einen Container für nginx, platform-blue, rag-pipeline-blue, postgres, redis, autoheal und snoopy sehen, alle mit dem Namen <project>-<service>-1.
Wenn etwas schiefgegangen ist
create läuft nicht ein zweites Mal, solange das Projektverzeichnis oder seine Container existieren. Wenn die Dateien in Ordnung sind und nur einige Container nicht gestartet sind, kannst du sie neu erstellen, ohne etwas zu verlieren:
./wlycli deploy restart -d example.com
Wenn die Bereitstellung selbst neu gemacht werden muss, lösche sie und fang von vorn an. Dabei wird die mitgelieferte Datenbank samt allem anderen gelöscht:
./wlycli deploy delete -d example.com --yes-please-delete-all-the-data