GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer Discourse Forum avec Nginx et Free Lets Encrypt SSL sur Debian 11

Discourse est une plateforme de discussion communautaire open source construite à l'aide du langage Ruby. Il est conçu pour fonctionner comme un forum, un logiciel de chat ou une liste de diffusion. Il s'intègre facilement à d'autres plates-formes et ses fonctionnalités peuvent être étendues avec des plugins.

Dans ce didacticiel, vous apprendrez à installer Discourse Forum avec le serveur Nginx sur un serveur basé sur Debian 11.

Prérequis

  • Un serveur exécutant Debian 11 avec un minimum de 1 Go de RAM et 1 processeur principal. La configuration de Discourse créera automatiquement une partition d'échange sur les systèmes avec 1 Go ou moins de RAM. Par conséquent, il est recommandé de l'installer sur un système avec au moins 2 Go de RAM.

  • Un utilisateur non root avec des privilèges sudo.

  • Un nom de domaine (discourse.example.com ) pointant vers le serveur.

  • Tout est mis à jour.

    $ sudo apt update &&sudo apt upgrade
  • Peu de packages dont votre système a besoin.

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

    Certains de ces packages sont peut-être déjà installés sur votre système.

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Debian est livré avec ufw (pare-feu non compliqué).

Vérifiez si le pare-feu est en cours d'exécution.

État $ sudo ufw

Vous devriez obtenir le résultat suivant.

Statut :inactif

Autorisez le port SSH afin que le pare-feu n'interrompe pas la connexion actuelle en l'activant.

$ sudo ufw autorise OpenSSH

Autorisez également les ports HTTP et HTTPS.

$ sudo ufw allow 80/tcp$ sudo ufw allow 443/tcp

Activer le pare-feu

$ sudo ufw enableCommand peut perturber les connexions ssh existantes. Continuer avec l'opération (o|n) ? yLe pare-feu est actif et activé au démarrage du système

Vérifiez à nouveau l'état du pare-feu.

État $ sudo ufw

Vous devriez voir une sortie similaire.

Statut :activeTo Action From-- ------ ----OpenSSH AUTORISER Anywhere80/tcp AUTORISER Anywhere443/tcp AUTORISER AnywhereOpenSSH (v6) AUTORISER Anywhere (v6)80/tcp (v6) AUTORISER Anywhere (v6) 443/tcp (v6) AUTORISER n'importe où (v6)

Étape 2 - Installer Git

Installez Git en utilisant l'Appstream par défaut.

$ sudo dnf install git

Confirmez l'installation.

$ git --versiongit version 2.30.2

Exécutez les commandes suivantes pour configurer l'installation de Git.

$ git config --global user.name "Votre nom"$ git config --global user.email "[email protected]"

Étape 3 - Installer Docker

Pour installer la dernière version de Docker, ajoutez la clé GPG officielle de Docker.

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

Installez le référentiel Docker officiel.

$ 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

Mettre à jour les référentiels du système Debian.

Mise à jour $ sudo apt

Installez la dernière version de Docker.

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

Vérifiez que Docker est en cours d'exécution.

$ sudo systemctl status docker ? docker.service - Moteur de conteneur d'applications Docker chargé :chargé (/lib/systemd/system/docker.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis le samedi 2022-02-05 13:32:54 UTC ; il y a 1hTriggeredBy : ? docker.socket Docs :https://docs.docker.com PID principal :5818 (dockerd) Tâches :26 Mémoire :1,4 G CPU :5 min 34,561 s 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>
 

Par défaut, Docker nécessite des privilèges root. Si vous voulez éviter d'utiliser sudo chaque fois que vous exécutez le docker commande, ajoutez votre nom d'utilisateur au docker groupe.

$ sudo usermod -aG docker $(whoami)

Pour activer ce changement, vous devrez vous déconnecter du serveur et vous reconnecter avec le même utilisateur.

Étape 4 - Télécharger le discours

Créez le répertoire racine de Discourse.

$ sudo mkdir /var/discourse

Clonez le dépôt officiel Discourse Docker Github.

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

Étape 5 - Configurer Discourse

Créez le fichier de configuration app.yml en copiant l'exemple standalone.yml fichier.

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

Ouvrez le app.yml pour l'édition.

$ sudo nano containers/app.yml

Définir le domaine

Définissez la variable DISCOURSE_HOSTNAME au nom de domaine que vous avez choisi pour votre forum. Si vous n'avez pas de nom de domaine, vous pouvez utiliser une adresse IP ici.

DISCOURSE_HOSTNAME :'discourse.example.com'

Configurer les ports exposés

Changer la ligne "80:80 à "8080:80" . Cela changera le port HTTP externe pour Discourse en 8080 puisque nous utiliserons Nginx au port 80. Commentez le "443:443" ligne puisque nous allons installer SSL en externe.

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

Configurer les paramètres SMTP

Remplissez les variables suivantes en fonction du service de messagerie transactionnelle que vous utilisez. Définissez l'email de votre compte administrateur à l'aide de la variable DISCOURSE_DEVELOPER_EMAILS . Cette étape est obligatoire sinon votre forum ne sera pas bootstrapé.

..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_SMTP_TLS : vrai #.DISCOURSE_SMTP_ENABLE_STARTexampleMAINSE : true # (facultatif, discours par défaut true) com # (requis par certains fournisseurs)DISCOURSE_NOTIFICATION_EMAIL :[email protected] # (adresse à partir de laquelle envoyer les notifications)

Paramètres de mémoire (facultatif)

Si votre serveur a peu de RAM, vous pouvez configurer les variables suivantes en conséquence pour réduire l'empreinte mémoire de Discourse.

db_shared_buffers :'128MB'UNICORN_WORKERS :2

La variable db_shared_buffers est généralement défini sur 25 % de la mémoire disponible.

Paramètres GeoLite2 (facultatif)

Si vous voulez la fonction de recherche IP sur Discourse, inscrivez-vous au compte gratuit Maxmind Geolite2 et obtenez une clé de licence. Collez cette clé de licence comme valeur pour la variable suivante.

DISCOURSE_MAXMIND_LICENSE_KEY :votre_maxmind_license_key

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Étape 6 - Installer Discourse

Exécutez la commande suivante pour amorcer votre conteneur Discourse.

$ sudo ./application d'amorçage du lanceur

Démarrer l'application Discourse.

$ sudo ./lanceur démarrer l'application

Vous pouvez accéder au forum en visitant les URL http://yourserver_IP:8080 ou http://discourse.example.com:8080 dans votre navigateur. Vous obtiendrez l'écran suivant.

Cliquez sur S'inscrire bouton pour continuer. L'identifiant de messagerie défini dans app.yml le fichier sera pré-rempli pour vous.

Cliquez sur S'inscrire bouton pour enregistrer le compte administrateur. Vous passerez à l'écran de confirmation par e-mail.

Si vos paramètres SMTP sont corrects, vous recevrez un e-mail pour activer le compte. Cliquez sur le lien de votre e-mail pour terminer la configuration du compte.

Cliquez sur Activer bouton pour terminer l'installation.

Vous arriverez à l'écran de l'assistant de configuration de Discourse. Vous pouvez soit l'ignorer pour accéder directement au forum, soit parcourir l'intégralité de l'assistant.

Votre forum Discourse est prêt. La prochaine étape consiste à installer SSL et à placer le forum derrière le serveur Nginx.

Étape 7 - Installer SSL

Pour installer un certificat SSL avec Let's Encrypt, nous devons installer l'outil Certbot.

Nous utiliserons le programme d'installation du package Snapd pour cela. Comme la plupart des serveurs Debian ne sont pas livrés avec, installez le programme d'installation de Snapd.

$ sudo apt install snapd

Assurez-vous que votre version de Snapd est à jour.

$ sudo snap install core &&sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers /usr/bin répertoire.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Vérifiez l'installation.

$ certbot --versioncertbot 1.22.0

Générez le certificat SSL.

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

La commande ci-dessus téléchargera un certificat sur /etc/letsencrypt/live/discourse.example.com répertoire sur votre serveur.

Générer un groupe Diffie-Hellman certificat.

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

Créez un répertoire racine Web de défi pour le renouvellement automatique de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Créez une tâche Cron pour renouveler le SSL. Il s'exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, créez d'abord le fichier /etc/cron.daily/certbot-renew et ouvrez-le pour le modifier.

$ sudo nano /etc/cron.daily/certbot-renew

Collez le code suivant.

#!/bin/shcertbot renouveler --cert-name discourse.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl recharger nginx"

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Modifiez les autorisations sur le fichier de tâche pour le rendre exécutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Étape 8 - Installer et configurer Nginx

Debian est livré avec une ancienne version de Nginx. Vous devez télécharger le dépôt officiel Nginx pour installer la dernière version.

Importez la clé de signature officielle Nginx.

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

Ajoutez le référentiel pour la version stable de Nginx.

$ 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

Mettez à jour les dépôts Debian.

Mise à jour $ sudo apt

Installez Nginx.

$ sudo apt install nginx

Vérifiez l'installation. Assurez-vous d'utiliser sudo chaque fois que vous exécutez la commande Nginx sur Debian. Sinon, cela ne fonctionnera pas.

$ sudo nginx -vnginx version :nginx/1.20.2

Créez et ouvrez le fichier /etc/nginx/conf.d/discourse.conf pour l'édition.

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

Collez-y le code suivant.

# appliquer le serveur HTTPS { écouter 80 ; écouter [::]:80 ; nom_serveur discours.exemple.com ; renvoie 301 https://$host$request_uri;}serveur { écoute 443 ssl http2; écouter [::]:443 ssl http2 ; nom_serveur discours.exemple.com ; access_log /var/log/nginx/discourse.access.log ; error_log /var/log/nginx/discourse.error.log; # SSL certificat_ssl /etc/letsencrypt/live/discourse.example.com/fullchain.pem ; clé_certificat_ssl /etc/letsencrypt/live/discourse.example.com/privkey.pem ; ssl_trusted_certificate /etc/letsencrypt/live/discourse.example.com/chain.pem ; SSL_session_timeout 5 m ; ssl_session_cache partagé :MozSSL :10 m ; ssl_session_tickets désactivé ; ssl_protocols TLSv1.2 TLSv1.3 ; ssl_prefer_server_ciphers activé ; chiffrements_ssl -RSA-CHACHA20-POLY1305 :DHE-RSA-AES128-GCM-SHA256 :DHE-RSA-AES256-GCM-SHA384 ; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling activé ; ssl_stapling_verify activé ; ssl_dhparam /etc/ssl/certs/dhparam.pem ; résolveur 8.8.8.8 ; client_max_body_size 100 m ; emplacement / { proxy_pass http://discourse.example.com:8080/; proxy_set_header Hôte $http_host ; proxy_http_version 1.1 ; proxy_set_header X-Forwarded-Proto $scheme ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Real-IP $remote_addr ; } }

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.

Ouvrez le fichier /etc/nginx/nginx.conf pour l'édition.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size 64 ;

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Vérifiez la syntaxe du fichier de configuration Nginx.

$ sudo nginx -tnginx :la syntaxe du fichier de configuration /etc/nginx/nginx.conf est oknginx :le test du fichier de configuration /etc/nginx/nginx.conf est réussi

Démarrez le service Nginx pour activer la nouvelle configuration.

$ sudo systemctl start nginx

Étape 9 - Commandes de discours

Activer Discourse Administrator depuis la ligne de commande

Si vous ne recevez pas l'e-mail d'activation, vous pouvez activer le compte administrateur à partir de la ligne de commande.

Passez au répertoire Discourse.

$ cd /var/discourse

Entrez dans le conteneur Discourse Shell.

$ sudo ./lanceur entrez l'application

Entrez la commande rails c pour accéder à l'invite de commande Rails.

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

Vous verrez l'invite suivante.

[1] pry(main)> 

Entrez la commande pour localiser le compte administrateur.

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

Saisissez q pour revenir à l'invite et entrez les commandes suivantes dans l'ordre.

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

Tapez exit deux fois pour retourner à la coquille. Votre compte administrateur est activé et prêt à être utilisé.

Discours de mise à niveau

Pour mettre à jour le forum, vous pouvez utiliser l'une des deux méthodes. La première consiste à le mettre à niveau via le tableau de bord de l'administrateur. La deuxième méthode consiste à utiliser une ligne de commande.

Passez au répertoire Discourse.

$ cd /var/discourse

Mettez à jour l'installation de Discourse en récupérant les derniers fichiers de Github.

$ git pull

Reconstruire le discours.

$ sudo ./lanceur reconstruire l'application

Vous devez reconstruire Discourse chaque fois que vous apportez des modifications à app.yml dossier. Après avoir apporté les modifications, exécutez la commande ci-dessus. Il détruit l'ancien conteneur, en démarre un nouveau et le démarre.

Arrêter le discours

$ sudo ./arrêt du lanceur

Afficher les journaux de discours

$ sudo ./journaux du lanceur

Conclusion

Ceci conclut le tutoriel. Vous avez installé le forum Discourse à l'aide de Docker derrière le serveur Web Nginx sur un serveur Debian 11. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Debian
  1. Installer Lets Encrypt and Secure Nginx avec SSL/TLS dans Debian 9

  2. Installer Automad CMS avec Nginx et Lets Encrypt SSL sur Debian 10

  3. Comment installer ElkArte Forum avec Apache et Lets Encrypt sur Debian 10

  4. Comment installer OpenCart avec Nginx et Lets Encrypt sur Debian 10

  5. Comment installer Drupal 9 avec Nginx et Lets Encrypt SSL sur Debian 10

Comment installer MyBB Forum avec Nginx et Lets Encrypt sur Debian 10

Comment installer Wekan Kanban avec Nginx et Lets Encrypt SSL sur Debian 10

Comment installer Drupal avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer Joomla avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer WordPress avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer Discourse Forum sur Debian 10 avec Nginx et Let's Encrypt