GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie Discourse Forum mit Nginx und Free Lets Encrypt SSL unter Debian 11

Discourse ist eine Open-Source-Community-Diskussionsplattform, die mit der Ruby-Sprache erstellt wurde. Es ist so konzipiert, dass es als Forum, Chat-Software oder Mailingliste funktioniert. Es lässt sich leicht in andere Plattformen integrieren und seine Funktionalität kann mit Plugins erweitert werden.

In diesem Tutorial erfahren Sie, wie Sie Discourse Forum mit dem Nginx-Server auf einem Debian 11-basierten Server installieren.

Voraussetzungen

  • Ein Server mit Debian 11 mit mindestens 1 GB RAM und 1 Kern-CPU. Das Discourse-Setup erstellt automatisch eine Swap-Partition auf Systemen mit 1 GB oder weniger RAM. Daher wird empfohlen, es auf einem System mit mindestens 2 GB RAM zu installieren.

  • Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.

  • Ein Domänenname (discourse.example.com ) auf den Server zeigt.

  • Alles ist aktualisiert.

    $ sudo apt update &&sudo apt upgrade
  • Einige Pakete, die Ihr System benötigt.

    $ sudo apt install nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring -y

    Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Debian kommt mit ufw (Uncomplicated Firewall).

Ü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 allow 80/tcp$ sudo ufw allow 443/tcp

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/tcp ALLOW Anywhere443/tcp ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ERLAUBEN überall (v6)

Schritt 2 – Git installieren

Installieren Sie Git mit dem Standard-Appstream.

$ sudo dnf install git

Bestätigen Sie die Installation.

$ git --versiongit Version 2.30.2

Führen Sie die folgenden Befehle aus, um die Git-Installation zu konfigurieren.

$ git config --global user.name "Ihr Name" $ ​​git config --global user.email "[email protected]"

Schritt 3 – Docker installieren

Um die neueste Version von Docker zu installieren, fügen Sie den offiziellen GPG-Schlüssel von Docker hinzu.

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Installieren Sie das offizielle Docker-Repository.

$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux /debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list> /dev/null

Aktualisieren Sie die Debian-System-Repositories.

$ sudo apt update

Installieren Sie die neueste Version von Docker.

$ sudo apt install docker-ce docker-ce-cli containerd.io

Vergewissern Sie sich, dass Docker ausgeführt wird.

$ sudo systemctl Status Docker? docker.service – Container-Engine der Docker-Anwendung Geladen:geladen (/lib/systemd/system/docker.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Sa. 05.02.2022 13:32:54 UTC; vor 1hTriggeredBy:? docker.socket Docs:https://docs.docker.com Main PID:5818 (dockerd) Tasks:26 Memory:1.4G CPU:5min 34.561s CGroup:/system.slice/docker.service ?? 5818 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ??12162 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.2 -contai> ??12169 /usr/bin/docker-proxy -proto tcp -host-ip ::-host-port 8080 -container-ip 172.17.0.2 -container-p>
 

Standardmäßig benötigt Docker Root-Rechte. Wenn Sie die Verwendung von sudo vermeiden möchten jedes Mal, wenn Sie docker ausführen Befehl, fügen Sie Ihren Benutzernamen zum docker hinzu Gruppe.

$ sudo usermod -aG docker $(whoami)

Um diese Änderung zu aktivieren, müssen Sie sich vom Server abmelden und als derselbe Benutzer wieder anmelden.

Schritt 4 – Diskurs herunterladen

Erstellen Sie das Root-Verzeichnis für Discourse.

$ sudo mkdir /var/discourse

Klonen Sie das offizielle Discourse Docker Github-Repository.

$ sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse

Schritt 5 – Diskurs konfigurieren

Erstellen Sie die Konfigurationsdatei app.yml indem Sie das Beispiel standalone.yml kopieren Datei.

$ sudo cp samples/standalone.yml container/app.yml

Öffnen Sie die app.yml zum Bearbeiten.

$ sudo nano container/app.yml

Domain festlegen

Setzen Sie die Variable DISCOURSE_HOSTNAME an den Domainnamen, den Sie für Ihr Forum gewählt haben. Wenn Sie keinen Domänennamen haben, können Sie hier eine IP-Adresse verwenden.

DISCOURSE_HOSTNAME:'discourse.example.com'

Exponierte Ports konfigurieren

Ändern Sie die Zeile "80:80 zu "8080:80" . Dadurch wird der externe HTTP-Port für Discourse auf 8080 geändert, da wir Nginx auf Port 80 verwenden werden. Kommentieren Sie "443:443" aus da wir SSL extern installieren werden.

Aussetzen:- "8080:80" # http #- "443:443" # https

SMTP-Einstellungen konfigurieren

Füllen Sie je nach verwendetem Transaktions-E-Mail-Dienst die folgenden Variablen aus. Legen Sie die E-Mail für Ihr Administratorkonto mit der Variable DISCOURSE_DEVELOPER_EMAILS fest . Dieser Schritt ist obligatorisch, ansonsten wird Ihr Forum nicht gebootstrapped.

 .. DISCOURSE_DEVELOPER_EMAILS:'[email protected]' .. DISCOURSE_SMTP_ADDRESS:smtp.example.comDISCOURSE_SMTP_PORT:587DISCOURSE_SMTP_USER_NAME:[email protected] DISCOURSE_SMTP_PASSWORD:your_smtp_password # DISCOURSE_SMTP_ENABLE_START_TLS:true # (optional, standardmäßig true) #DISCOURSE_SMTP_DOMAIN:discourse.example. com # (von einigen Anbietern erforderlich)DISCOURSE_NOTIFICATION_EMAIL:[E-Mail-geschützt] # (Adresse zum Senden von Benachrichtigungen)

Speichereinstellungen (optional)

Wenn Ihr Server wenig RAM hat, können Sie die folgenden Variablen entsprechend konfigurieren, um den Speicherverbrauch von Discourse zu reduzieren.

db_shared_buffers:'128MB'UNICORN_WORKERS:2

Die Variable db_shared_buffers ist normalerweise auf 25 % des verfügbaren Speichers eingestellt.

GeoLite2-Einstellungen (optional)

Wenn Sie die IP-Lookup-Funktion auf Discourse nutzen möchten, melden Sie sich für das kostenlose Maxmind Geolite2-Konto an und erhalten Sie einen Lizenzschlüssel. Fügen Sie diesen Lizenzschlüssel als Wert für die folgende Variable ein.

DISCOURSE_MAXMIND_LICENSE_KEY:your_maxmind_license_key

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Schritt 6 – Discourse installieren

Führen Sie den folgenden Befehl aus, um Ihren Discourse-Container zu booten.

$ sudo ./launcher Bootstrap-App

Starten Sie die Discourse-Anwendung.

$ sudo ./launcher App starten

Sie können auf das Forum zugreifen, indem Sie die URLs http://yourserver_IP:8080 aufrufen oder http://discourse.example.com:8080 in Ihrem Browser. Sie erhalten den folgenden Bildschirm.

Klicken Sie auf Registrieren Schaltfläche, um fortzufahren. Die in der app.yml festgelegte E-Mail-ID Datei wird für Sie vorausgefüllt.

Klicken Sie auf Registrieren Schaltfläche, um das Administratorkonto zu registrieren. Sie gelangen zum E-Mail-Bestätigungsbildschirm.

Wenn Ihre SMTP-Einstellungen korrekt sind, erhalten Sie eine E-Mail zur Aktivierung des Kontos. Klicken Sie auf den Link in Ihrer E-Mail, um die Einrichtung des Kontos abzuschließen.

Klicken Sie auf Aktivieren Schaltfläche, um die Installation abzuschließen.

Sie gelangen zum Bildschirm des Einrichtungsassistenten von Discourse. Sie können ihn entweder überspringen, um direkt zum Forum zu gelangen, oder den gesamten Assistenten durchlaufen.

Ihr Diskursforum ist fertig. Der nächste Schritt besteht darin, SSL zu installieren und das Forum hinter den Nginx-Server zu stellen.

Schritt 7 – SSL installieren

Um ein SSL-Zertifikat mit Let's Encrypt zu installieren, müssen wir das Certbot-Tool installieren.

Wir werden dafür das Snapd-Paketinstallationsprogramm verwenden. Da die meisten Debian-Server nicht damit ausgeliefert werden, installieren Sie den Snapd-Installer.

$ sudo apt install snapd

Stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core &&sudo snap refresh core

Certbot installieren.

$ sudo snap install --classic certbot

Verwenden 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/certbot

Überprüfen Sie die Installation.

$ certbot --versioncertbot 1.22.0

Generieren Sie das SSL-Zertifikat.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d discourse.example.com

Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/discourse.example.com herunter Verzeichnis auf Ihrem Server.

Erstellen Sie eine Diffie-Hellman-Gruppe Zertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Erstellen Sie ein herausforderndes Webroot-Verzeichnis für die automatische Verlängerung von Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Erstellen 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-renew

Fügen Sie den folgenden Code ein.

#!/bin/shcertbot renew --cert-name discourse.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-renew

Schritt 8 – Nginx installieren und konfigurieren

Debian 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 offiziellen Nginx-Signaturschlüssel.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg>/dev/null

Fü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/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisieren Sie die Debian-Repositories.

$ sudo apt update

Nginx installieren.

$ sudo apt install nginx

Überprüfen Sie die Installation. Stellen Sie sicher, dass Sie sudo verwenden jedes Mal, wenn Sie den Nginx-Befehl unter Debian ausführen. Andernfalls funktioniert es nicht.

$ sudo nginx -vnginx-Version:nginx/1.20.2

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/discourse.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/discourse.conf

Fügen Sie den folgenden Code ein.

# HTTPSserver erzwingen { listen 80; hör zu [::]:80; Servername discourse.example.com; return 301 https://$host$request_uri;}server { listen 443 ssl http2; hören [::]:443 ssl http2; Servername discourse.example.com; access_log /var/log/nginx/discourse.access.log; error_log /var/log/nginx/discourse.error.log; # SSL ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/discourse.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache freigegeben:MozSSL:10m; ssl_session_tickets aus; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; 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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling an; ssl_stapling_verify an; ssl_dhparam /etc/ssl/certs/dhparam.pem; Resolver 8.8.8.8; client_max_body_size 100m; Standort / { Proxy_Pass http://discourse.example.com:8080/; Proxy_set_header Host $http_host; Proxy_http_Version 1.1; proxy_set_header X-Forwarded-Proto $schema; Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; Proxy_Set_Header X-Real-IP $remote_addr; } }

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden, sobald Sie fertig sind.

Öffnen Sie die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Fü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.

Ü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 erfolgreich

Starten Sie den Nginx-Dienst, um die neue Konfiguration zu aktivieren.

$ sudo systemctl start nginx

Schritt 9 - Diskursbefehle

Aktivieren Sie Discourse Administrator über die Befehlszeile

Wenn Sie die Aktivierungs-E-Mail nicht erhalten, können Sie das Administratorkonto über die Befehlszeile aktivieren.

Wechseln Sie zum Discourse-Verzeichnis.

$ cd /var/diskurs

Rufen Sie die Discourse-Container-Shell auf.

$ sudo ./launcher App eingeben

Geben Sie den Befehl rails c ein um auf die Rails-Eingabeaufforderung zuzugreifen.

[email protected]:/var/www/discourse# rails c

Sie werden die folgende Eingabeaufforderung sehen.

[1] pry(main)> 

Geben Sie den Befehl ein, um das Administratorkonto zu suchen.

[1] pry(main)> User.find_by_email("[email protected]")=> #, Moderator:false, title:nil, uploaded_avatar_id:3,:

Geben Sie q ein um zur Eingabeaufforderung zurückzukehren und die folgenden Befehle nacheinander einzugeben.

[2] pry(main)> user.approved =true[3] pry(main)> user.save[4] pry(main)> EmailToken.confirm(user.email_tokens.first.token)

Geben Sie exit ein zweimal, um zur Schale zurückzukehren. Ihr Administratorkonto ist aktiviert und einsatzbereit.

Upgrade-Diskurs

Um das Forum zu aktualisieren, haben Sie zwei Möglichkeiten. Die erste Möglichkeit besteht darin, es über das Administrator-Dashboard zu aktualisieren. Die zweite Methode ist die Verwendung einer Befehlszeile.

Wechseln Sie zum Discourse-Verzeichnis.

$ cd /var/diskurs

Aktualisieren Sie die Discourse-Installation, indem Sie die neuesten Dateien von Github abrufen.

$ git pull

Diskurs neu aufbauen.

$ sudo ./launcher App neu aufbauen

Sie müssen Discourse jedes Mal neu erstellen, wenn Sie Änderungen an app.yml vornehmen Datei. Nachdem Sie die Änderungen vorgenommen haben, führen Sie den obigen Befehl aus. Es zerstört den alten Container, lädt einen neuen und startet ihn.

Stoppt den Diskurs

$ sudo ./launcher stop

Diskursprotokolle anzeigen

$ sudo ./Launcher-Protokolle

Schlussfolgerung

Damit ist das Tutorial abgeschlossen. Sie haben das Discourse-Forum mit Docker hinter dem Nginx-Webserver auf einem Debian-11-Server installiert. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Debian
  1. Installieren Sie Lets Encrypt und Secure Nginx mit SSL/TLS in Debian 9

  2. Installieren Sie Automad CMS mit Nginx und Lets Encrypt SSL auf Debian 10

  3. So installieren Sie das ElkArte-Forum mit Apache und Lets Encrypt unter Debian 10

  4. So installieren Sie OpenCart mit Nginx und Lets Encrypt unter Debian 10

  5. So installieren Sie Drupal 9 mit Nginx und Lets Encrypt SSL unter Debian 10

So installieren Sie MyBB Forum mit Nginx und Lets Encrypt unter Debian 10

So installieren Sie Wekan Kanban mit Nginx und Lets Encrypt SSL unter Debian 10

So installieren Sie Drupal mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie Joomla mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie WordPress mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie das Discourse Forum unter Debian 10 mit Nginx und Let’s Encrypt