GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat diskusní fórum s Nginx a zdarma umožňuje šifrovat SSL na Debian 11

Diskurz je otevřená komunitní diskusní platforma vytvořená pomocí jazyka Ruby. Je navržen tak, aby fungoval jako fórum, chatovací software nebo mailing list. Snadno se integruje s jinými platformami a jeho funkčnost lze rozšířit pomocí pluginů.

V tomto tutoriálu se naučíte, jak nainstalovat Discourse Forum se serverem Nginx na server založený na Debianu 11.

Předpoklady

  • Server s Debianem 11 s minimálně 1 GB RAM a 1 Core CPU. Nastavení diskursu automaticky vytvoří swapovací oddíl na systémech s 1 GB nebo méně RAM. Proto se doporučuje nainstalovat jej na systém s alespoň 2 GB RAM.

  • Uživatel bez oprávnění root s právy sudo.

  • Název domény (discourse.example.com ) ukazující na server.

  • Vše je aktualizováno.

    $ aktualizace sudo apt &&upgrade sudo apt
  • Několik balíčků, které váš systém potřebuje.

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

    Některé z těchto balíčků již mohou být ve vašem systému nainstalovány.

Krok 1 – Konfigurace brány firewall

Prvním krokem je konfigurace firewallu. Debian je dodáván s ufw (Uncomplicated Firewall).

Zkontrolujte, zda je spuštěna brána firewall.

Stav $ sudo ufw

Měli byste získat následující výstup.

Stav:neaktivní

Povolte port SSH, aby firewall při jeho povolení nepřerušil aktuální připojení.

$ sudo ufw povolit OpenSSH

Povolit také porty HTTP a HTTPS.

$ sudo ufw povolit 80/tcp$ sudo ufw povolit 443/tcp

Povolte bránu firewall

$ sudo ufw enableCommand může narušit stávající připojení ssh. Pokračovat v operaci (y|n)? yFirewall je aktivní a povolený při spuštění systému

Znovu zkontrolujte stav brány firewall.

Stav $ sudo ufw

Měli byste vidět podobný výstup.

Stav:aktivníDo akce Od-- ------ ----OpenSSH POVOLI kdekoli80/tcp POVOLEJTE kdekoli 443/tcp (v6) ALLOW Anywhere (v6)

Krok 2 – Instalace Git

Nainstalujte Git pomocí výchozího Appstreamu.

$ sudo dnf nainstalovat git

Potvrďte instalaci.

$ git --versiongit verze 2.30.2

Spuštěním následujících příkazů nakonfigurujte instalaci Git.

$ git config --global user.name "Vaše jméno"$ git config --global user.email "[email protected]"

Krok 3 – Instalace Docker

Chcete-li nainstalovat nejnovější verzi Dockeru, přidejte oficiální klíč GPG Dockeru.

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

Nainstalujte oficiální úložiště Docker.

$ echo \ "deb [arch=$(dpkg --print-architecture) sign-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

Aktualizujte systémové repozitáře Debianu.

Aktualizace $ sudo apt

Nainstalujte nejnovější verzi Dockeru.

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

Ověřte, že Docker běží.

$ sudo systemctl status docker? docker.service – Docker Application Container Engine Načteno:načteno (/lib/systemd/system/docker.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od So 2022-02-05 13:32:54 UTC; Před 1 hodinouTriggeredBy:? docker.socket Dokumenty:https://docs.docker.com Hlavní PID:5818 (dockerd) Úkoly:26 Paměť: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>
 

Ve výchozím nastavení vyžaduje Docker oprávnění root. Pokud se chcete vyhnout použití sudo pokaždé, když spustíte docker přidejte své uživatelské jméno do docker skupina.

$ sudo usermod -aG docker $(whoami)

Chcete-li povolit tuto změnu, budete se muset odhlásit ze serveru a znovu se přihlásit jako stejný uživatel.

Krok 4 – Stáhnout diskurz

Vytvořte kořenový adresář pro diskurz.

$ sudo mkdir /var/discourse

Naklonujte oficiální úložiště Discourse Docker Github.

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

Krok 5 – Konfigurace diskursu

Vytvořte konfigurační soubor app.yml zkopírováním ukázkového standalone.yml soubor.

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

Otevřete app.yml pro úpravy.

$ sudo nano container/app.yml

Nastavit doménu

Nastavte proměnnou DISCOURSE_HOSTNAME na název domény, který jste zvolili pro své fórum. Pokud nemáte název domény, můžete použít IP adresu zde.

DISCOURSE_HOSTNAME:'discourse.example.com'

Konfigurace vystavených portů

Změňte řádek "80:80 na "8080:80" . Tím se změní externí HTTP port pro Diskurs na 8080, protože budeme používat Nginx na portu 80. Zakomentujte "443:443" linku, protože SSL nainstalujeme externě.

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

Konfigurovat nastavení SMTP

Vyplňte následující proměnné v závislosti na transakční e-mailové službě, kterou používáte. Nastavte e-mail pro svůj administrátorský účet pomocí proměnné DISCOURSE_DEVELOPER_EMAILS . Tento krok je povinný, jinak nebude vaše fórum spuštěno.

 .. Discripse_Developer_emails:'[E -mail chráněn]' .. Discurse_smtp_address:smtp.example.comDiscourse_smtp_port:587discourse_smtp_user_name:[e -mailem] debacsmtp_password:##################################DIVSTOPT_PRASSONT_PRASSONT_PODET_POSP_POST_PAST_PAST_PRASSONTOND. com # (vyžadováno některými poskytovateli)DISCOURSE_NOTIFICATION_EMAIL:[e-mail chráněn] # (adresa, ze které se mají odesílat upozornění)

Nastavení paměti (volitelné)

Pokud má váš server nízkou RAM, můžete odpovídajícím způsobem nakonfigurovat následující proměnné, abyste snížili paměťovou stopu diskursu.

db_shared_buffers:'128MB'UNICORN_WORKERS:2

Proměnná db_shared_buffers je obvykle nastaveno na 25 % dostupné paměti.

Nastavení GeoLite2 (volitelné)

Pokud chcete funkci vyhledávání IP na diskursu, zaregistrujte si bezplatný účet Maxmind Geolite2 a získejte licenční klíč. Vložte tento licenční klíč jako hodnotu pro následující proměnnou.

DISCOURSE_MAXMIND_LICENSE_KEY:your_maxmind_license_key

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Krok 6 – Instalace diskurzu

Spuštěním následujícího příkazu zaveďte svůj kontejner diskursu.

$ sudo ./launcher bootstrap app

Spusťte aplikaci Diskurz.

$ sudo ./launcher start app

Do fóra se můžete dostat tak, že navštívíte adresy URL http://yourserver_IP:8080 nebo http://discourse.example.com:8080 ve vašem prohlížeči. Zobrazí se následující obrazovka.

Klikněte na tlačítko Registrovat tlačítko pro pokračování. E-mailové ID nastavené v app.yml soubor bude předvyplněn.

Klikněte na tlačítko Registrovat tlačítko pro registraci účtu správce. Budete pokračovat na potvrzovací obrazovku e-mailu.

Pokud jsou vaše nastavení SMTP správná, obdržíte e-mail pro aktivaci účtu. Kliknutím na odkaz ve vašem e-mailu dokončíte nastavení účtu.

Klikněte na tlačítko Aktivovat dokončete instalaci.

Dostanete se na obrazovku Průvodce nastavením diskurzu. Můžete jej přeskočit a pokračovat přímo do fóra nebo projít celým průvodcem.

Vaše diskusní fórum je připraveno. Dalším krokem je instalace SSL a umístění fóra za server Nginx.

Krok 7 – Instalace protokolu SSL

Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme nainstalovat nástroj Certbot.

Použijeme k tomu instalační program balíčku Snapd. Protože s ním většina serverů Debianu není dodávána, nainstalujte si instalační program Snapd.

$ sudo apt install snapd

Ujistěte se, že vaše verze Snapd je aktuální.

$ instalační jádro sudo snap &&obnovovací jádro sudo snap

Nainstalujte Certbot.

$ instalace sudo snap --classic certbot

Pomocí následujícího příkazu zajistěte, aby bylo možné spustit příkaz Certbot vytvořením symbolického odkazu na /usr/bin adresář.

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

Ověřte instalaci.

$ certbot --versioncertbot 1.22.0

Vygenerujte certifikát SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [e-mail chráněný] -d diskurz.example.com

Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/discourse.example.com adresář na vašem serveru.

Vytvořte skupinu Diffie-Hellman certifikát.

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

Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew a otevřete jej pro úpravy.

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

Vložte následující kód.

#!/bin/shcertbot renew --cert-name diskurz.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Změňte oprávnění k souboru úlohy, aby byl spustitelný.

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

Krok 8 – Instalace a konfigurace Nginx

Debian se dodává se starší verzí Nginx. Chcete-li nainstalovat nejnovější verzi, musíte si stáhnout oficiální úložiště Nginx.

Importujte oficiální podpisový klíč Nginx.

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

Přidejte úložiště pro stabilní verzi 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

Aktualizujte repozitáře Debianu.

Aktualizace $ sudo apt

Nainstalujte Nginx.

$ sudo apt install nginx

Ověřte instalaci. Ujistěte se, že používáte sudo pokaždé, když spustíte příkaz Nginx v Debianu. Jinak to nebude fungovat.

$ sudo nginx -vnginx verze:nginx/1.20.2

Vytvořte a otevřete soubor /etc/nginx/conf.d/discourse.conf pro úpravy.

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

Vložte do něj následující kód.

# vynucovat HTTPSserver { poslouchat 80; poslouchej [::]:80; název_serveru diskurz.example.com; return 301 https://$host$request_uri;}server { listen 443 ssl http2; poslouchej [::]:443 ssl http2; název_serveru diskurz.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 shared:MozSSL:10m; ssl_session_tickets off; 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-POLSHA13HEDCHA25050 -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; client_max_body_size 100m; umístění / { proxy_pass http://discourse.example.com:8080/; proxy_set_header Host $http_host; proxy_http_verze 1.1; proxy_set_header X-Forwarded-Proto $schéma; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } }

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.

Otevřete soubor /etc/nginx/nginx.conf pro úpravy.

$ sudo nano /etc/nginx/nginx.conf

Přidejte následující řádek před řádek include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size 64;

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Ověřte syntaxi konfiguračního souboru Nginx.

$ sudo nginx -tnginx:syntaxe konfiguračního souboru /etc/nginx/nginx.conf je oknginx:konfigurační soubor /etc/nginx/nginx.conf test byl úspěšný

Spusťte službu Nginx a povolte novou konfiguraci.

$ sudo systemctl spustí nginx

Krok 9 – Příkazy diskursu

Aktivovat Správce diskurzu z příkazového řádku

Pokud neobdržíte aktivační e-mail, můžete účet správce aktivovat z příkazového řádku.

Přepněte se do adresáře Diskuse.

$ cd /var/discourse

Vstupte do Shell kontejneru diskursu.

$ sudo ./launcher enter app

Zadejte příkaz rails c pro přístup k příkazovému řádku Rails.

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

Zobrazí se následující výzva.

[1] pry(main)> 

Zadejte příkaz k vyhledání účtu správce.

[1] pry(main)> User.find_by_email("[e-mail chráněný]")=> #, moderátor:false, title:nil, uploaded_avatar_id:3,:

Zadejte q se vraťte na výzvu a zadejte postupně následující příkazy.

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

Zadejte exit dvakrát pro návrat do skořápky. Váš administrátorský účet je aktivován a připraven k použití.

Upgrade diskursu

Pro upgrade fóra můžete použít jeden ze dvou způsobů. Prvním způsobem je upgradovat jej prostřednictvím řídicího panelu správce. Druhou metodou je použití příkazového řádku.

Přepněte se do adresáře Diskuse.

$ cd /var/discourse

Aktualizujte instalaci diskursu stažením nejnovějších souborů z Github.

$ git pull

Přestavte diskurz.

$ sudo ./launcher rebuild app

Pokaždé, když provedete jakékoli změny v app.yml, musíte diskurs znovu sestavit soubor. Po provedení změn spusťte výše uvedený příkaz. Zničí starý kontejner, zavede nový a spustí jej.

Zastavit diskurz

$ sudo ./launcher stop

Zobrazit protokoly diskursu

$ sudo ./launcher logs

Závěr

Tím je tutoriál uzavřen. Nainstalovali jste diskusní fórum pomocí Dockeru za webovým serverem Nginx na serveru Debian 11. Pokud máte nějaké dotazy, napište je do komentářů níže.


Debian
  1. Nainstalujte Lets Encrypt and Secure Nginx pomocí SSL/TLS v Debianu 9

  2. Nainstalujte Automad CMS s Nginx a Lets Encrypt SSL na Debian 10

  3. Jak nainstalovat ElkArte Forum s Apache a Lets Encrypt na Debian 10

  1. Jak nainstalovat OpenCart s Nginx a Lets Encrypt na Debian 10

  2. Jak nainstalovat Drupal 9 s Nginx a nechat šifrovat SSL na Debian 10

  3. Jak nainstalovat fórum NodeBB s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  1. Jak nainstalovat Joomla s Apache a nechat šifrovat SSL na Debian 10

  2. Jak nainstalovat Drupal s Apache a nechat šifrovat SSL na Debian 11

  3. Jak nainstalovat SuiteCRM s Apache a zdarma Lets Encrypt SSL na Debian 11