GNU/Linux >> Belajar Linux >  >> Debian

Cara Memasang Forum Wacana dengan Nginx dan Lets Encrypt SSL Gratis di Debian 11

Wacana adalah platform diskusi komunitas sumber terbuka yang dibangun menggunakan bahasa Ruby. Ini dirancang untuk berfungsi sebagai forum, perangkat lunak obrolan, atau milis. Ini terintegrasi dengan mudah dengan platform lain, dan fungsinya dapat diperluas dengan plugin.

Dalam tutorial ini, Anda akan mempelajari cara menginstal Forum Wacana dengan server Nginx di server berbasis Debian 11.

Prasyarat

  • Server yang menjalankan Debian 11 dengan minimal 1GB RAM dan 1 Core CPU. Pengaturan wacana akan secara otomatis membuat partisi swap pada sistem dengan RAM 1GB atau kurang. Oleh karena itu, disarankan untuk menginstalnya pada sistem dengan RAM minimal 2 GB.

  • Pengguna non-root dengan hak istimewa sudo.

  • Nama domain (discourse.example.com ) menunjuk ke server.

  • Semuanya diperbarui.

    $ sudo apt update &&sudo apt upgrade
  • Beberapa paket yang dibutuhkan sistem Anda.

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

    Beberapa paket ini mungkin sudah diinstal pada sistem Anda.

Langkah 1 - Konfigurasi Firewall

Langkah pertama adalah mengkonfigurasi firewall. Debian hadir dengan ufw (Firewall Tidak Kompleks).

Periksa apakah firewall sedang berjalan.

$ sudo ufw status

Anda akan mendapatkan output berikut.

Status:tidak aktif

Izinkan port SSH agar firewall tidak memutus koneksi saat ini saat mengaktifkannya.

$ sudo ufw izinkan OpenSSH

Izinkan port HTTP dan HTTPS juga.

$ sudo ufw izinkan 80/tcp$ sudo ufw izinkan 443/tcp

Aktifkan Firewall

$ sudo ufw enableCommand dapat mengganggu koneksi ssh yang ada. Lanjutkan dengan operasi (y|n)? yFirewall aktif dan diaktifkan pada startup sistem

Periksa kembali status firewall.

$ sudo ufw status

Anda akan melihat keluaran serupa.

Status:activeTo Action From-- ------ ----OpenSSH ALLOW Anywhere80/tcp ALLOW Anywhere443/tcp ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) Izinkan Di Mana Saja (v6)

Langkah 2 - Instal Git

Instal Git menggunakan Appstream default.

$ sudo dnf install git

Konfirmasi pemasangan.

$ git --versiongit versi 2.30.2

Jalankan perintah berikut untuk mengonfigurasi instalasi Git.

$ git config --global user.name "Nama Anda"$ git config --global user.email "[email protected]"

Langkah 3 - Instal Docker

Untuk menginstal versi terbaru Docker, tambahkan kunci GPG resmi Docker.

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

Instal repositori Docker resmi.

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

Perbarui repositori sistem Debian.

$ sudo apt update

Instal Docker versi terbaru.

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

Verifikasi bahwa Docker sedang berjalan.

$ Sudo systemctl status buruh pelabuhan? docker.service - Mesin Kontainer Aplikasi Docker Dimuat:dimuat (/lib/systemd/system/docker.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Sabtu 2022-02-05 13:32:54 UTC; 1 jam yang laluDipicu Oleh:? docker.socket Dokumen:https://docs.docker.com PID Utama:5818 (dockerd) Tugas:26 Memori:1.4G CPU:5 menit 34.561 detik 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>
 

Secara default, Docker membutuhkan hak akses root. Jika Anda ingin menghindari penggunaan sudo setiap kali Anda menjalankan docker perintah, tambahkan nama pengguna Anda ke docker grup.

$ sudo usermod -aG docker $(whoami)

Untuk mengaktifkan perubahan ini, Anda harus keluar dari server dan kembali sebagai pengguna yang sama.

Langkah 4 - Unduh Wacana

Buat direktori root untuk Wacana.

$ sudo mkdir /var/discourse

Kloning repositori resmi Discourse Docker Github.

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

Langkah 5 - Konfigurasi Wacana

Buat file konfigurasi app.yml dengan menyalin contoh standalone.yml berkas.

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

Buka app.yml untuk diedit.

$ sudo nano containers/app.yml

Setel Domain

Setel variabel DISCOURSE_HOSTNAME ke nama domain, Anda memilih untuk forum Anda. Jika Anda tidak memiliki nama domain, Anda dapat menggunakan alamat IP di sini.

DISCOURSE_HOSTNAME:'discourse.example.com'

Konfigurasikan port yang Terkena

Ubah baris "80:80 ke "8080:80" . Ini akan mengubah port HTTP eksternal untuk Discourse menjadi 8080 karena kita akan menggunakan Nginx pada port 80. Beri komentar pada "443:443" baris karena kita akan menginstal SSL secara eksternal.

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

Konfigurasikan Pengaturan SMTP

Isi variabel berikut tergantung pada layanan email transaksional yang Anda gunakan. Setel email untuk akun administrator Anda menggunakan variabel DISCOURSE_DEVELOPER_EMAILS . Langkah ini wajib jika tidak, forum Anda tidak akan di-bootstrap.

..DISCOURSE_DEVELOPER_EMAILS:'[email protected]'..DISCOURSE_SMTP_ADDRESS:smtp.example.comDISCOURSE_SMTP_PORT:587DISCOURSE_SMTP_USER_NAME:[email protected]DISCOURSE_SMTP_SESMTP_SMTP_PASSWORD Anda_PASSWORD:com # (diperlukan oleh beberapa penyedia)DISCOURSE_NOTIFICATION_EMAIL:[email protected] # (alamat untuk mengirim notifikasi)

Pengaturan Memori (Opsional)

Jika server Anda memiliki RAM yang rendah, Anda dapat mengonfigurasi variabel berikut untuk mengurangi jejak memori Discourse.

db_shared_buffers:'128MB'UNICORN_WORKERS:2

Variabel db_shared_buffers biasanya diatur ke 25% dari memori yang tersedia.

Setelan GeoLite2 (Opsional)

Jika Anda menginginkan fitur pencarian IP di Discourse, daftar akun Maxmind Geolite2 gratis dan dapatkan kunci lisensi. Rekatkan kunci lisensi itu sebagai nilai untuk variabel berikut.

DISCOURSE_MAXMIND_LICENSE_KEY:your_maxmind_license_key

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Langkah 6 - Instal Wacana

Jalankan perintah berikut untuk mem-bootstrap wadah Wacana Anda.

$ Sudo ./launcher bootstrap app

Mulai aplikasi Wacana.

$ Sudo ./launcher memulai aplikasi

Anda dapat mengakses forum dengan mengunjungi URL http://yourserver_IP:8080 atau http://discourse.example.com:8080 di peramban Anda. Anda akan mendapatkan layar berikut.

Klik Daftar tombol untuk melanjutkan. Id email disetel di app.yml file akan diisi sebelumnya untuk Anda.

Klik Daftar tombol untuk mendaftarkan akun administrator. Anda akan melanjutkan ke layar konfirmasi email.

Jika pengaturan SMTP Anda benar, Anda akan menerima email untuk mengaktifkan akun. Klik tautan dari email Anda untuk menyelesaikan penyiapan akun.

Klik tombol Aktifkan tombol untuk menyelesaikan penginstalan.

Anda akan masuk ke layar Wisaya Pengaturan Wacana. Anda dapat melewatinya untuk melanjutkan langsung ke forum atau melalui seluruh wizard.

Forum Wacana Anda sudah siap. Langkah selanjutnya adalah menginstal SSL dan meletakkan forum di belakang server Nginx.

Langkah 7 - Instal SSL

Untuk menginstal sertifikat SSL menggunakan Let's Encrypt, kita perlu menginstal alat Certbot.

Kami akan menggunakan penginstal paket Snapd untuk itu. Karena sebagian besar server Debian tidak disertakan bersamanya, instal penginstal Snapd.

$ sudo apt install snapd

Pastikan versi Snapd Anda terbaru.

$ sudo snap install core &&sudo snap refresh core

Instal Certbot.

$ sudo snap install --classic certbot

Gunakan perintah berikut untuk memastikan bahwa perintah Certbot dapat dijalankan dengan membuat tautan simbolis ke /usr/bin direktori.

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

Verifikasi penginstalan.

$ certbot --versioncertbot 1.22.0

Buat sertifikat SSL.

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

Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/discourse.example.com direktori di server Anda.

Buat grup Diffie-Hellman sertifikat.

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

Buat direktori webroot tantangan untuk pembaruan otomatis Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew dan buka untuk diedit.

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

Tempelkan kode berikut.

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

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Ubah izin pada file tugas agar dapat dieksekusi.

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

Langkah 8 - Instal dan Konfigurasi Nginx

Debian dikirimkan dengan versi Nginx yang lebih lama. Anda perlu mengunduh repositori Nginx resmi untuk menginstal versi terbaru.

Impor kunci penandatanganan Nginx resmi.

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

Tambahkan repositori untuk versi stabil 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

Perbarui repositori Debian.

$ sudo apt update

Instal Nginx.

$ sudo apt install nginx

Verifikasi instalasi. Pastikan Anda menggunakan sudo setiap kali Anda menjalankan perintah Nginx di Debian. Jika tidak, itu tidak akan berhasil.

$ sudo nginx -vnginx versi:nginx/1.20.2

Buat dan buka file /etc/nginx/conf.d/discourse.conf untuk diedit.

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

Tempelkan kode berikut di dalamnya.

# menegakkan HTTPSserver { mendengarkan 80; dengarkan [::]:80; wacana nama_server.contoh.com; return 301 https://$host$request_uri;}server { dengarkan 443 ssl http2; dengarkan [::]:443 ssl http2; wacana nama_server.contoh.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 dibagikan:MozSSL:10m; ssl_session_tickets mati; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers aktif; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDALY -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapel aktif; ssl_stapling_verifikasi aktif; ssl_dhparam /etc/ssl/certs/dhparam.pem; penyelesai 8.8.8.8; client_max_body_size 100m; lokasi / { proxy_pass http://discourse.example.com:8080/; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header X-Forwarded-Proto $skema; proxy_set_header X-Diteruskan-Untuk $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } }

Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.

Buka file /etc/nginx/nginx.conf untuk diedit.

$ sudo nano /etc/nginx/nginx.conf

Tambahkan baris berikut sebelum baris include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size 64;

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Verifikasi sintaks file konfigurasi Nginx.

$ sudo nginx -tnginx:file konfigurasi /etc/nginx/nginx.conf sintaksnya oknginx:file konfigurasi /etc/nginx/nginx.conf tes berhasil

Mulai layanan Nginx untuk mengaktifkan konfigurasi baru.

$ sudo systemctl start nginx

Langkah 9 - Perintah Wacana

Aktifkan Administrator Wacana dari baris perintah

Jika Anda tidak menerima email aktivasi, Anda dapat mengaktifkan akun administrator dari baris perintah.

Beralih ke direktori Wacana.

$ cd /var/discourse

Masuk ke Wadah Wadah Wacana.

$ sudo ./launcher masuk ke aplikasi

Masukkan perintah rails c untuk mengakses prompt perintah Rails.

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

Anda akan melihat perintah berikut.

[1] cungkil(utama)> 

Masukkan perintah untuk mencari akun administrator.

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

Masukkan q untuk kembali ke prompt dan masukkan perintah berikut secara berurutan.

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

Ketik exit dua kali untuk kembali ke cangkang. Akun administrator Anda telah diaktifkan dan siap digunakan.

Tingkatkan Wacana

Untuk mengupgrade forum, Anda dapat menggunakan salah satu dari dua cara. Cara pertama adalah dengan mengupgradenya melalui dashboard administrator. Metode kedua adalah dengan menggunakan baris perintah.

Beralih ke direktori Wacana.

$ cd /var/discourse

Perbarui instalasi Wacana dengan mengambil file terbaru dari Github.

$ git tarik

Bangun Kembali Wacana.

$ Sudo ./launcher membangun kembali aplikasi

Anda perlu membangun kembali Wacana setiap kali Anda membuat perubahan apa pun di app.yml mengajukan. Setelah melakukan perubahan, jalankan perintah di atas. Itu menghancurkan wadah lama, mem-bootstrap yang baru dan memulainya.

Hentikan Wacana

$ sudo ./launcher stop

Lihat Log Wacana

$ Sudo ./launcher logs

Kesimpulan

Ini menyimpulkan tutorial. Anda telah menginstal forum Wacana menggunakan Docker di belakang server web Nginx di server Debian 11. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Debian
  1. Instal Lets Encrypt dan Secure Nginx dengan SSL/TLS di Debian 9

  2. Instal Automad CMS dengan Nginx dan Mari Enkripsi SSL di Debian 10

  3. Cara Menginstal Forum ElkArte dengan Apache dan Mengenkripsi di Debian 10

  1. Cara Instal OpenCart dengan Nginx dan Lets Encrypt di Debian 10

  2. Cara Menginstal Drupal 9 dengan Nginx dan Mengenkripsi SSL di Debian 10

  3. Cara menginstal Forum NodeBB dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  1. Cara Menginstal Joomla dengan Apache dan Mengenkripsi SSL di Debian 10

  2. Cara Menginstal Drupal dengan Apache dan Mengenkripsi SSL di Debian 11

  3. Cara Menginstal SuiteCRM dengan Apache dan Lets Encrypt SSL gratis di Debian 11