Outline ist eine kollaborative Open-Source-Wissensdatenbank-Software. Sie können es verwenden, um die Dokumentation und Fanseiten zu hosten oder es sogar zum Teilen von Notizen zu verwenden. Es enthält einen Markdown-Editor und lässt sich in mehrere Dienste wie Slack, Figma, Airtable, Google Docs, Trello, Zapier, Codepen, Spotify, Youtube usw. integrieren. Es verfügt über Sicherheitsfunktionen wie Benutzergruppen mit separaten Lese- und Schreibberechtigungen und ermöglicht die öffentliche Freigabe und hat RTL-Unterstützung mit Übersetzungen in 13 Sprachen. Es wird mit React und Node.js erstellt. Es gibt zwei Möglichkeiten, Outline zu verwenden. Eine davon ist ihre Cloud-gehostete Version, oder Sie können sie auf Ihrem Server hosten.
In diesem Tutorial erfahren Sie, wie Sie Outline Wiki mithilfe von Docker auf einem Ubuntu-basierten Server installieren.
Voraussetzungen
-
Ein Server mit Ubuntu 20.04 und mindestens 1 GB RAM.
-
Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
-
Ein Domänenname, der auf den Server zeigt. Wir verwenden
https://outline.example.com
für unser Tutorial. -
Einige wichtige Apps für den Einstieg.
$ sudo apt install nano curl wget unzip gnupg
Schritt 1 – Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.
Überprüfen Sie, ob die Firewall ausgeführt wird.
$ sudo ufw-Status
Sie sollten die folgende Ausgabe erhalten.
Status:inaktiv
SSH-Port zulassen, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.
$ sudo ufw OpenSSH zulassen
Lassen Sie auch HTTP- und HTTPS-Ports zu.
$ sudo ufw erlauben 80$ sudo ufw erlauben 443
Aktivieren Sie die Firewall.
$ sudo ufw enableCommand kann bestehende SSH-Verbindungen unterbrechen. Vorgang fortsetzen (y|n)? yFirewall ist aktiv und wird beim Systemstart aktiviert
Überprüfen Sie den Status der Firewall erneut.
$ sudo ufw-Status
Sie sollten eine ähnliche Ausgabe sehen.
Status:activeTo Aktion From-- ------ ----OpenSSH ALLOW Anywhere80 ALLOW Anywhere443 ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80 (v6) ALLOW Anywhere (v6)443 (v6) ALLOW Anywhere (v6)
Schritt 2 – Docker installieren
Wir müssen Docker mit seinem offiziellen Repository installieren. Offiziellen GPG-Schlüssel von Docker hinzufügen.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Fügen Sie das Docker-Repository zum System hinzu.
$ echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux /ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list> /dev/null
Aktualisieren Sie die APT-Repository-Liste und installieren Sie Docker.
$ sudo apt update$ sudo apt install docker-ce
Überprüfen Sie, ob die Docker-Engine korrekt installiert ist.
$ docker --versionDocker-Version 20.10.14, Build a224086
Führen Sie die folgenden Befehle aus, damit Sie sudo nicht verwenden müssen, um Docker-Befehle auszuführen.
$ sudo usermod -aG Docker ${USER}$ su - ${USER}
Schritt 3 – Docker Compose installieren
Führen Sie den folgenden Befehl aus, um Docker compose zu installieren. Docker Compose wurde kürzlich auf v2.0 aktualisiert, wodurch viele bahnbrechende Änderungen eingeführt wurden. Wir verwenden die neueste 1.x-Version, die auf der Github-Release-Seite verfügbar ist.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o / usr/local/bin/docker-compose
Wenden Sie die ausführbare Berechtigung auf die Docker-Compose-Binärdatei an.
$ sudo chmod +x /usr/local/bin/docker-compose
Überprüfen Sie, ob Docker Compose korrekt installiert ist.
$ docker-compose --versiondocker-compose Version 1.29.2, Build 5becea4c
Installieren Sie die Befehlsvervollständigung für Docker compose.
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose$ Quelle ~/.bashrc
Damit ist der Abschnitt zur Installation von Docker und Docker Compose des Tutorials abgeschlossen.
Schritt 4 – Umgebungsdatei für Docker erstellen
Slack-Authentifizierung konfigurieren
Outline erfordert, dass Sie einen Authentifizierungsanbieter konfigurieren. Für unser Tutorial werden wir die Slack-basierte Anmeldung konfigurieren.
Melden Sie sich mit Ihrem Slack-Konto an und besuchen Sie die API-Apps-Seite von Slack.
Klicken Sie auf App erstellen Schaltfläche, um fortzufahren. Klicken Sie auf Von Grund auf Link zum Erstellen der App.
Wählen Sie einen Namen für Ihre App und den Arbeitsbereich aus, in dem Ihre App angezeigt werden soll. Wenn Sie Ihre App nicht mit dem vorhandenen Arbeitsbereich verknüpfen möchten, können Sie einen anderen erstellen und zu diesem Schritt zurückkehren.
Klicken Sie auf App erstellen Taste, wenn Sie fertig sind. Scrollen Sie als Nächstes zum Ende der Seite und geben Sie Ihrer App eine Beschreibung, ein Symbol und eine Hintergrundfarbe.
Klicken Sie auf Änderungen speichern Taste, sobald Sie fertig sind. Wählen Sie OAuth und Berechtigungen aus Option in der linken Seitenleiste.
Fügen Sie die Umleitungs-URL https://outline.example.com/auth/slack.callback
hinzu in das dafür vorgesehene Feld und klicken Sie auf Hinzufügen Schaltfläche.
Klicken Sie auf URLs speichern Schaltfläche, um fortzufahren. Scrollen Sie nach unten zu den Benutzer-Token-Bereichen Abschnitt der Seite und wählen Sie die folgenden Bereiche aus dem Dropdown-Menü aus.
identity.avatar
identity.basic
identity.email
identity.team
Gehen Sie zurück zu den Grundlegenden Informationen Seite aus der linken Seitenleiste. Kopieren Sie die Werte Client-ID und Client Secret aus ihren Feldern unter App-Anmeldedaten .
Slack-Integration konfigurieren
Besuchen Sie die Slash-Befehle Option in der linken Seitenleiste.
Klicken Sie auf Neuer Befehl Schaltfläche auf der resultierenden Seite. Geben Sie /outline
ein als Befehl. Geben Sie https://outline.example.com/api/hooks.slack
ein als Anfrage-URL . Geben Sie eine Beschreibung für Ihren Befehl und ein Wort als Hinweis ein. Klicken Sie auf Speichern Schaltfläche unten, wenn Sie fertig sind.
Öffnen Sie das Menü Funktionen>> Interaktivität und Verknüpfungen aus der linken Seitenleiste. Aktivieren Sie Interaktivität indem Sie die Umschaltfläche umschalten und https://outline.example.com/api/hooks.interactive
einfügen als Anforderungs-URL. Klicken Sie auf Änderungen speichern Schaltfläche zum Beenden.
Öffnen Sie die Einstellungen>> App installieren Seite aus der linken Seitenleiste und klicken Sie auf In WorkSpace installieren Schaltfläche, um die App für deinen Slack-Workspace zu installieren.
Besuchen Sie die Basisinformationen Seite aus der linken Seitenleiste und kopieren Sie App ID und Verifizierungstoken Werte für die Slack-App-Integration.
S3-Anmeldeinformationen erstellen
Erstellen Sie einen S3-Bucket für Ihre Outline-Installation auf AWS oder einem beliebigen S3-kompatiblen Service. Fügen Sie nach dem Erstellen des Buckets die folgende JSON-Richtlinie zum Konfigurieren von Cross-Origin Resource Sharing (CORS) hinzu. Ersetzen Sie den Wert von AllowedOrigins
mit Ihrer Gliederungs-URL.
[ { "AllowedHeaders":[ "*" ], "AllowedMethods":[ "PUT", "POST" ], "AllowedOrigins":[ "https://docs.mycompany.com" ], "ExposeHeaders" :[] }, { "AllowedHeaders":[], "AllowedMethods":[ "GET" ], "AllowedOrigins":[ "*" ], "ExposeHeaders":[] }]
Erstellen Sie einen IAM-Benutzer mit der folgenden Richtlinie. Ersetzen Sie my-bucket-name
durch den tatsächlichen Namen Ihres Outline S3-Buckets.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"VisualEditor", "Effect":"Allow", "Action":[ "s3:GetObjectAcl", " s3:DeleteObject", "s3:PutObject", "s3:GetObject", "s3:PutObjectAcl" ], "Resource":"arn:aws:s3:::my-bucket-name/*" } ]}Nachdem Sie Ihren IAM-Benutzer erstellt haben, generieren Sie einen Zugriffsschlüssel und ein Geheimnis für Ihren Bucket-Benutzer.
Geheime Schlüssel erstellen
Die Umgebungsdatei erfordert einen geheimen Schlüssel und ein Utility-Secret. Führen Sie den folgenden Befehl zweimal aus, um beide Schlüssel zu generieren.
$ openssl rand -hex 32Kopieren und speichern Sie diese Werte.
Erstelle und bearbeite die Umgebungsdatei
Erstellen Sie ein Verzeichnis für die Docker-Einstellungen für Outline.
$ mkdir ~/outlineWechseln Sie in das Verzeichnis.
$ cd ~/outlineErstellen Sie
docker.env
Datei und öffnen Sie sie zum Bearbeiten. Diese Datei speichert alle für die Installation erforderlichen Umgebungsvariablen.$ nano docker.envFügen Sie den folgenden Code darin ein. Geben Sie den zuvor erstellten geheimen Schlüssel und das geheime utils-Geheimnis ein. Kopieren Sie die zuvor erstellten Slack-Anmeldeinformationen für die Authentifizierung und App-Integration. Geben Sie Ihre Amazon S3-Anmeldeinformationen wie unten angegeben ein.
Wenn Sie Google Analytics verwenden möchten, um die Statistiken Ihrer Outline-Anwendung zu verfolgen, geben Sie Ihre Analytics-ID in das Feld unten ein. Momentan unterstützt Outline keine GA4-Tags, daher müssen Sie Ihre alte Tracking-ID eingeben.
Für
WEB_CONCURRENCY
dividieren Sie Ihren Systemspeicher durch 512 und geben Sie den ungefähren Wert ein. DerFORCE_HTTPS
Die Variable ist auf „false“ gesetzt, da wir Nginx als Proxyserver verwenden.# –––––––––––––––– ERFORDERLICH ––––––––––––––––SECRET_KEY=generate_a_new_keyUTILS_SECRET=generate_a_new_keyPOSTGRES_USER=outlinepgPOSTGRES_PASSWORD=yourpasswordPOSTGRES_DB=outlineDATABASE_URL=postgres ://outlinepg:[email protected]:5432/outlineDATABASE_URL_TEST=postgres://outlinepg:[email protected]:5432/outline-testPGSSLMODE=disableREDIS_URL=redis://localhost:6379URL=https://docs.example.comPORT =3000AWS_ACCESS_KEY_ID =get_a_key_from_awsAWS_SECRET_ACCESS_KEY =get_the_secret_of_above_keyAWS_REGION =us-east-2AWS_S3_UPLOAD_BUCKET_URL =https://my-bucket-name.s3.us-east-2.amazonaws.comAWS_S3_UPLOAD_BUCKET_NAME=my-bucket-nameAWS_S3_UPLOAD_MAX_SIZE=26214400AWS_S3_FORCE_PATH_STYLE=true# ----- ––––––––– AUTHENTIFIZIERUNG ––––––––––––––SLACK_KEY=SLACK_SECRET= # ––––––––––––––– – OPTIONAL ––––––––––––––––GOOGLE_ANALYTICS_ID=UA-XXXXXXX-1SLACK_VERIFICATION_TOKEN=your_tokenSLACK_APP_ID=A0XXXXXXXSLACK_MESSAGE_ACTIONS=trueFORCE_HTTPS=falseENABLE_UPDATES=trueWEB_CONCURRENCY=2 Die obige Datei basiert auf der Beispieldatei aus dem Github-Repository von Outline. Wenn Sie zusätzliche Einstellungen konfigurieren müssen, können Sie diese in Ihre Datei kopieren.
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Schritt 5 – Docker-Compose-Datei für Outline erstellen
Erstellen Sie die
docker-compose.yml
Datei und öffnen Sie sie zum Bearbeiten.$ nano docker-compose.ymlFügen Sie den folgenden Code ein.
version:"3"services:outline:image:outlinewiki/outline:latest restart:always Befehl:sh -c "yarn sequelize:migrate --env=production-ssl-disabled &&Garnstart --env=production- ssl-disabled" env_file:./docker.env ports:- "3000:3000" dependent_on:- postgres - redis redis:image:redis restart:always env_file:./docker.env ports:- "6379:6379" Volumes:- ./redis.conf:/redis.conf-Befehl:["redis-server", "/redis.conf"] postgres:image:postgres restart:always env_file:./docker.env ports:- "5432:5432" Datenträger:- Datenbankdaten:/var/lib/postgresql/datavolumes:Datenbankdaten:Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Schritt 6 – Outline installieren
Installieren Sie Outline, indem Sie die Container starten.
$ docker-compose up -dÜberprüfen Sie den Status der Container.
$ Docker-PSSchritt 7 – SSL installieren
Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Certbot-Tool herunterladen. Wir werden dafür das Snapd-Paketinstallationsprogramm verwenden.
Installieren Sie das Snap-Installationsprogramm.
$ sudo apt install snapdStellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core &&sudo snap refresh coreCertbot installieren.
$ sudo snap install --classic certbotVerwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zu
/usr/bin
erstellen Verzeichnis.$ sudo ln -s /snap/bin/certbot /usr/bin/certbotGenerieren Sie ein SSL-Zertifikat.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d outline.example.comDer obige Befehl lädt ein Zertifikat in
/etc/letsencrypt/live/outline.example.com
herunter Verzeichnis auf Ihrem Server.Erstellen Sie eine Diffie-Hellman-Gruppe Zertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Erstellen Sie ein herausforderndes Webroot-Verzeichnis für die automatische Verlängerung von Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencryptErstellen Sie einen Cron-Job, um das SSL zu erneuern. Es wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei
/etc/cron.daily/certbot-renew
und zum Bearbeiten öffnen.$ sudo nano /etc/cron.daily/certbot-renewFügen Sie den folgenden Code ein.
#!/bin/shcertbot renew --cert-name outline.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Ändern Sie die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.
$ sudo chmod +x /etc/cron.daily/certbot-renewSchritt 8 – Nginx installieren
Ubuntu wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository herunterladen, um die neueste Version zu installieren.
Importieren Sie den Signaturschlüssel von Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg>/dev/nullFügen Sie das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.listAktualisieren Sie die System-Repositories.
$ sudo apt updateNginx installieren.
$ sudo apt install nginxÜberprüfen Sie die Installation.
$ nginx -vnginx-Version:nginx/1.20.2Aktivieren Sie den Nginx-Dienst.
$ sudo systemctl enable nginxSchritt 9 – Nginx konfigurieren
Bisher wurde Shlink auf dem lokalen System über Port 8080 ausgeführt. Wir werden Nginx verwenden, um als Reverse-Proxy für die Ausführung auf seiner Domäne zu fungieren.
Erstellen Sie eine Konfigurationsdatei für den Shlink-Server in
/etc/nginx/conf.d
Verzeichnis.$ sudo nano /etc/nginx/conf.d/outline.confFügen Sie den folgenden Code ein.
server { server_name outline.example.com; hören 443 ssl http2; hören [::]:443 ssl http2; access_log /var/log/nginx/outline.access.log; error_log /var/log/nginx/outline.error.log; ssl_certificate /etc/letsencrypt/live/outline.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/outline.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/outline.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache freigegeben:MozSSL:10m; ssl_session_tickets aus; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_stapling an; ssl_stapling_verify an; ssl_dhparam /etc/ssl/certs/dhparam.pem; Standort / { Proxy_Pass http://localhost:3000; Proxy_set_header Upgrade $http_upgrade; proxy_set_header Verbindung "Upgrade"; Proxy_set_header Host $host; Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host; Proxy_set_header Host $http_host; Proxy_Set_Header X-Real-IP $remote_addr; proxy_set_header X-Schema $schema; proxy_set_header X-Forwarded-Proto $schema; Proxy-Weiterleitung aus; }}## HTTPS Redirectserver {listen 80; hör zu [::]:80; Servername outline.example.com; gib 301 https://$host$request_uri;}zurückWenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Öffnen Sie die Datei
/etc/nginx/nginx.conf
zum Bearbeiten.$ sudo nano /etc/nginx/nginx.confFügen Sie die folgende Zeile vor der Zeile
include /etc/nginx/conf.d/*.conf;
hinzu .server_names_hash_bucket_size 64;Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden. Validieren Sie Nginx erneut.
Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -tnginx:Die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist oknginx:Der Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreichStarten Sie den Nginx-Server.
$ sudo systemctl start nginxSchritt 10 – Gliederung aufrufen
Starten Sie die Domain
https://outline.example.com
in Ihrem Browser, und Sie werden mit der folgenden Seite begrüßt.
Klicken Sie auf Mit Slack fortfahren Schaltfläche, um sich bei Slack anzumelden und Ihren Workspace zu verbinden.
Sobald Sie angemeldet sind, öffnet sich die Outline-Startseite und Sie können damit beginnen, daran zu arbeiten.
Mit der Outline-App für Slack kannst du den Link zu einem beliebigen Dokument in deinem Workspace suchen und einfügen. Öffnen Sie dazu Ihren Slack-Workspace und geben Sie
/outline <searchterm>
ein in die Nachrichten eintragen und posten.
Das mit dem Suchbegriff verknüpfte Dokument wird automatisch gefunden und in Ihren Nachrichten veröffentlicht.
Schritt 11 – Gliederung aktualisieren
Führen Sie die folgenden Befehle aus, um das Outline-Wiki zu aktualisieren. Der erste Befehl fährt herunter und entfernt die Container. Der zweite zieht die neueste Version von Docker-Images für Outline und andere Tools. Sie können dieselben Befehle ausführen, wenn Sie Änderungen in der Docker-Compose-Datei oder der Umgebungsdatei vornehmen müssen.
$ docker-compose down --remove-orphans$ docker-compose pullFühren Sie den folgenden Befehl aus, um die Datenbank zu aktualisieren.
$ docker-compose run --rm outline thread db:migrate --env=production-ssl-disabledStarten Sie den neuen Container mit frischen Bildern, während Ihre Daten intakt bleiben.
$ docker-compose up -dSchlussfolgerung
Damit ist unser Tutorial zur Installation von Outline Knowledgebase Wiki auf einem Ubuntu 20.04-Server mit Docker abgeschlossen. Wenn Sie mehr über Outline erfahren möchten, können Sie der offiziellen Dokumentation folgen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.