اوبنتوداکرسرور

نصب Discourse روی Ubuntu 24.04 LTS با Docker

مقدمه

Discourse یکی از محبوب‌ترین نرم‌افزارهای متن‌باز برای ایجاد انجمن‌های گفتگو (Forum) است که توسط تیم توسعه Ruby on Rails طراحی شده است. این پلتفرم امکانات متنوعی مانند مدیریت کاربران، دسته‌بندی موضوعات، سیستم اعلان‌ها، ارسال ایمیل، پشتیبانی از Markdown، API، افزونه‌ها و قالب‌های متنوع را در اختیار شما قرار می‌دهد.

برخلاف بسیاری از نرم‌افزارهای قدیمی انجمن، Discourse به‌صورت پیش‌فرض برای اجرا داخل Docker طراحی شده است. همین موضوع باعث می‌شود فرآیند نصب، بروزرسانی و نگهداری آن ساده‌تر و مطمئن‌تر باشد.

در این آموزش، آخرین نسخه Discourse را روی Ubuntu 24.04 LTS نصب می‌کنیم. همچنین برای نصب Docker از میرور پارمین کلود استفاده خواهیم کرد تا سرعت دانلود بسته‌ها افزایش یافته و وابستگی به مخازن خارجی کاهش یابد.


پیش‌نیازها

قبل از شروع، موارد زیر را آماده کنید:

  • یک سرور Ubuntu 24.04 LTS
  • حداقل ۲ گیگابایت RAM (برای محیط Production پیشنهاد می‌شود حداقل ۴ گیگابایت)
  • یک کاربر دارای دسترسی sudo
  • یک دامنه یا زیردامنه که به IP سرور اشاره کند
  • یک SMTP Server برای ارسال ایمیل‌های Discourse

اگر از پارمین کلود استفاده می‌کنید، ابتدا یک سرور Ubuntu 24.04 ایجاد کرده و DNS دامنه خود را به IP سرور متصل کنید.


مرحله اول — بروزرسانی سیستم

ابتدا سیستم را بروزرسانی کنید.

sudo apt update
sudo apt upgrade -y

در صورت نصب کرنل جدید، بهتر است سیستم را ریبوت کنید.

sudo reboot

مرحله دوم — نصب Docker با استفاده از میرور پارمین کلود

از آنجایی که Discourse داخل Docker اجرا می‌شود، ابتدا باید Docker را نصب کنیم.

ابتدا بسته‌های موردنیاز را نصب کنید.

sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release -y

اضافه کردن کلید GPG

دایرکتوری مربوط به کلیدها را ایجاد کنید.

sudo install -m 0755 -d /etc/apt/keyrings

سپس کلید GPG پارمین کلود را دریافت کنید.

curl -fsSL https://docker-ce.parmincloud.ir/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

مجوز فایل را اصلاح کنید.

sudo chmod a+r /etc/apt/keyrings/docker.gpg

اضافه کردن Repository پارمین کلود

فایل مخزن Docker را ایجاد کنید.

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://docker-ce.parmincloud.ir $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

نصب Docker

ابتدا لیست بسته‌ها را بروزرسانی کنید.

sudo apt update

سپس Docker را نصب نمایید.

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

بررسی نصب

docker --version

نمونه خروجی:

Docker version 28.x.x

فعال کردن سرویس Docker

sudo systemctl enable --now docker

و وضعیت آن را بررسی کنید.

systemctl status docker

اگر خروجی مشابه زیر بود، نصب با موفقیت انجام شده است.

Active: active (running)

مرحله سوم — ایجاد دایرکتوری Discourse

تمام فایل‌های مربوط به Discourse داخل مسیر زیر نگهداری خواهند شد.

sudo mkdir -p /var/discourse

سپس وارد این مسیر شوید.

cd /var/discourse

مرحله چهارم — دریافت فایل‌های نصب Discourse

اکنون آخرین نسخه Docker Installer مربوط به Discourse را دریافت کنید.

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

پس از پایان دانلود، وارد پوشه شوید.

cd /var/discourse

برای اطمینان از دریافت فایل‌ها، دستور زیر را اجرا کنید.

ls

باید فایل‌هایی مشابه زیر مشاهده کنید.

containers
launcher
discourse-setup
templates
samples
image

مرحله پنجم — اجرای اسکریپت نصب و پیکربندی Discourse

اکنون که Docker و فایل‌های موردنیاز Discourse آماده هستند، می‌توانیم فرآیند نصب را آغاز کنیم.

ابتدا وارد پوشه نصب شوید.

cd /var/discourse

سپس اسکریپت نصب را اجرا کنید.

sudo ./discourse-setup

این اسکریپت به‌صورت خودکار فایل تنظیمات را ایجاد کرده، ایمیج Docker را دانلود می‌کند و کانتینر Discourse را راه‌اندازی خواهد کرد.


وارد کردن نام دامنه

اولین سؤال مربوط به دامنه است.

Hostname for your Discourse?

برای مثال:

forum.example.com

یا

community.example.com

این دامنه باید از قبل به IP سرور اشاره کند.


ایمیل مدیر سایت

سپس ایمیل مدیر سیستم پرسیده می‌شود.

Email address for admin account?

برای مثال:

admin@example.com

این ایمیل بعداً برای ساخت اولین حساب مدیر نیز استفاده خواهد شد.


تنظیم SMTP

در ادامه اطلاعات SMTP را وارد کنید.

SMTP server address?

مثال:

smtp.gmail.com

یا

smtp.mailgun.org

یا

smtp.sendgrid.net

سپس نام کاربری SMTP:

SMTP user name?

پورت SMTP

SMTP port?

معمولاً یکی از مقادیر زیر است.

587

یا

465

در نهایت رمز عبور SMTP

SMTP password?

اگر از سرویس‌هایی مانند Gmail استفاده می‌کنید، بهتر است از App Password به جای رمز عبور اصلی استفاده کنید.


بررسی اطلاعات

در انتهای نصب، تمام اطلاعات نمایش داده می‌شود.

در صورت صحیح بودن، گزینه زیر را انتخاب کنید.

Y

ساخت فایل app.yml

پس از تأیید اطلاعات، فایل زیر ایجاد خواهد شد.

/var/discourse/containers/app.yml

این فایل مهم‌ترین فایل تنظیمات Discourse است.

در آینده اگر نیاز به تغییر دامنه، ایمیل یا سایر تنظیمات داشتید، کافی است همین فایل را ویرایش کنید.


شروع نصب

پس از ایجاد فایل تنظیمات، Docker شروع به دانلود Imageهای موردنیاز خواهد کرد.

در اولین نصب ممکن است چند دقیقه زمان ببرد.

در طول نصب خروجی‌هایی مشابه زیر مشاهده خواهید کرد.

Downloading Docker image...
Installing dependencies...
Bootstrapping...
Starting containers...

بسته به سرعت اینترنت و منابع سرور، این مرحله معمولاً بین ۵ تا ۱۵ دقیقه زمان می‌برد.


بررسی وضعیت کانتینر

پس از پایان نصب، وضعیت کانتینر را بررسی کنید.

docker ps

نمونه خروجی:

CONTAINER ID   IMAGE
xxxxxxxx       local_discourse/app
STATUS         Up

اگر وضعیت Up نمایش داده شود، یعنی Discourse با موفقیت اجرا شده است.


اگر نصب با خطا متوقف شد

رایج‌ترین دلایل عبارت‌اند از:

  • تنظیم نبودن DNS دامنه
  • وارد کردن اطلاعات اشتباه SMTP
  • کمبود RAM (کمتر از ۲ گیگابایت)
  • فضای ناکافی دیسک
  • فعال نبودن سرویس Docker

برای مشاهده لاگ نصب می‌توانید دستور زیر را اجرا کنید:

cd /var/discourse

sudo ./launcher logs app

یا وضعیت کانتینر را بررسی کنید:

docker ps -a

ویرایش تنظیمات پس از نصب

اگر بعداً نیاز داشتید اطلاعات SMTP یا دامنه را تغییر دهید، فایل زیر را ویرایش کنید.

sudo nano /var/discourse/containers/app.yml

پس از ذخیره تغییرات، کانتینر را مجدداً Build کنید.

cd /var/discourse

sudo ./launcher rebuild app

نکته: دستور rebuild ممکن است چند دقیقه زمان ببرد، زیرا کانتینر با تنظیمات جدید دوباره ساخته و راه‌اندازی می‌شود.


مرحله ششم — ساخت حساب مدیر و راه‌اندازی اولیه Discourse

پس از اتمام نصب، سرویس Discourse به‌صورت خودکار اجرا می‌شود و انجمن شما آماده استفاده خواهد بود.

اکنون مرورگر خود را باز کرده و دامنه‌ای که هنگام نصب وارد کرده‌اید را باز کنید.

برای مثال:

https://forum.example.com

اگر همه چیز به‌درستی انجام شده باشد، صفحه خوش‌آمدگویی Discourse را مشاهده خواهید کرد.

نکته: اگر با خطای 502 Bad Gateway مواجه شدید، معمولاً نصب هنوز کامل نشده است. چند دقیقه صبر کرده و صفحه را مجدداً Refresh کنید.


ایجاد اولین حساب مدیر

در صفحه اصلی روی دکمه Register کلیک کنید.

فرم ثبت‌نام نمایش داده می‌شود.


انتخاب ایمیل

در قسمت Email همان ایمیلی را انتخاب کنید که هنگام اجرای discourse-setup وارد کرده بودید.

برای مثال:

admin@example.com

انتخاب نام کاربری

در قسمت Username یک نام کاربری برای مدیر سایت انتخاب کنید.

برای مثال:

admin

انتخاب رمز عبور

یک رمز عبور قوی شامل موارد زیر انتخاب کنید:

  • حداقل ۱۲ کاراکتر
  • حروف بزرگ و کوچک
  • اعداد
  • نمادهای ویژه

پس از تکمیل فرم روی Register کلیک کنید.


فعال‌سازی حساب

Discourse یک ایمیل فعال‌سازی برای شما ارسال می‌کند.

وارد صندوق ایمیل شوید و روی لینک فعال‌سازی کلیک کنید.

پس از فعال‌سازی، حساب شما به‌عنوان Administrator ثبت خواهد شد.

اگر ایمیل را دریافت نکردید:

  • پوشه Spam را بررسی کنید.
  • تنظیمات SMTP را مجدداً بررسی کنید.
  • در صورت نیاز روی Resend Activation Email کلیک کنید.

اجرای Setup Wizard

پس از اولین ورود، Discourse به‌صورت خودکار Wizard اولیه را اجرا می‌کند.

این بخش به شما کمک می‌کند تنظیمات اولیه انجمن را انجام دهید.


نام انجمن

برای مثال:

Parmin Cloud Community

توضیحات سایت

برای مثال:

انجمن تخصصی گفت‌وگو و آموزش‌های زیرساخت، لینوکس، DevOps و رایانش ابری

لوگوی سایت

در این مرحله می‌توانید:

  • لوگوی اصلی
  • لوگوی حالت تاریک
  • Favicon

را بارگذاری کنید.

اگر هنوز لوگو آماده نیست، می‌توانید این مرحله را رد کرده و بعداً از پنل مدیریت انجام دهید.


انتخاب رنگ‌بندی

یکی از قالب‌های آماده را انتخاب کنید.

در آینده نیز امکان نصب Themeهای جدید وجود دارد.


ایجاد دسته‌بندی‌ها

بهتر است از همان ابتدا دسته‌بندی‌های اصلی را ایجاد کنید.

برای نمونه:

  • اخبار
  • آموزش‌ها
  • پرسش و پاسخ
  • معرفی پروژه‌ها
  • DevOps
  • لینوکس
  • Docker
  • Kubernetes

ورود به پنل مدیریت

برای دسترسی به پنل مدیریت، آدرس زیر را باز کنید:

https://forum.example.com/admin

از این بخش می‌توانید:

  • کاربران را مدیریت کنید.
  • دسته‌بندی‌ها را ایجاد کنید.
  • تنظیمات ایمیل را تغییر دهید.
  • افزونه‌ها را نصب کنید.
  • قالب سایت را شخصی‌سازی کنید.
  • نسخه Discourse را بروزرسانی کنید.

بررسی سلامت سیستم

از منوی:

Admin → Dashboard

وضعیت کلی سیستم را بررسی کنید.

در این قسمت اطلاعاتی مانند:

  • مصرف RAM
  • مصرف CPU
  • وضعیت ارسال ایمیل
  • وضعیت Sidekiq
  • نسخه Discourse

نمایش داده می‌شود.

اگر همه بخش‌ها سبز باشند، نصب با موفقیت انجام شده است.


اولین موضوع (Topic)

برای اطمینان از عملکرد صحیح انجمن، یک موضوع آزمایشی ایجاد کنید.

برای مثال:

عنوان:

به انجمن پارمین کلود خوش آمدید

متن:

این اولین موضوع آزمایشی انجمن است و نشان می‌دهد که Discourse با موفقیت نصب و راه‌اندازی شده است.

پس از انتشار، عملکرد ایجاد Topic و نمایش آن را بررسی کنید.


مرحله هفتم — بروزرسانی، تهیه نسخه پشتیبان و نکات امنیتی Discourse

اکنون که انجمن شما آماده استفاده است، بهتر است با روش‌های نگهداری و مدیریت آن نیز آشنا شوید. در این بخش نحوه بروزرسانی Discourse، تهیه نسخه پشتیبان و افزایش امنیت سرور را بررسی می‌کنیم.


بروزرسانی Discourse

توسعه‌دهندگان Discourse به‌صورت مرتب نسخه‌های جدیدی منتشر می‌کنند که شامل رفع باگ‌ها، بهبود عملکرد و وصله‌های امنیتی هستند.

برای بروزرسانی، ابتدا وارد پوشه نصب شوید.

cd /var/discourse

آخرین تغییرات را دریافت کنید.

sudo git pull

سپس کانتینر را مجدداً Build کنید.

sudo ./launcher rebuild app

در این مرحله آخرین نسخه Discourse دانلود شده و با حفظ اطلاعات و تنظیمات، کانتینر مجدداً ساخته می‌شود.


بروزرسانی از پنل مدیریت

اگر ترجیح می‌دهید از رابط گرافیکی استفاده کنید، به آدرس زیر بروید:

https://forum.example.com/admin/upgrade

در صورت وجود نسخه جدید، کافی است روی Upgrade کلیک کنید تا فرآیند بروزرسانی آغاز شود.


تهیه نسخه پشتیبان (Backup)

یکی از مهم‌ترین کارهایی که باید به‌صورت منظم انجام دهید، تهیه نسخه پشتیبان از انجمن است.

از پنل مدیریت وارد مسیر زیر شوید:

Admin → Backups

در این بخش می‌توانید:

  • نسخه پشتیبان کامل تهیه کنید.
  • فایل‌های Backup را دانلود کنید.
  • زمان‌بندی تهیه نسخه پشتیبان را تنظیم کنید.

پیشنهاد می‌شود حداقل هفته‌ای یک نسخه پشتیبان تهیه و آن را در محلی خارج از سرور ذخیره کنید.


تهیه نسخه پشتیبان از طریق خط فرمان

در صورت نیاز می‌توانید از کل دایرکتوری نصب نیز نسخه پشتیبان تهیه کنید.

sudo tar -czf discourse-backup.tar.gz /var/discourse

اگر از Snapshotهای ماشین مجازی در پارمین کلود استفاده می‌کنید، می‌توانید قبل از هر بروزرسانی یک Snapshot تهیه کنید تا در صورت بروز مشکل، سرور را به وضعیت قبل بازگردانید.


بررسی وضعیت کانتینر

برای مشاهده کانتینرهای در حال اجرا:

docker ps

برای مشاهده تمام کانتینرها:

docker ps -a

مشاهده لاگ‌ها

در صورت بروز مشکل، لاگ‌های کانتینر را بررسی کنید.

cd /var/discourse

sudo ./launcher logs app

همچنین می‌توانید لاگ Docker را نیز مشاهده کنید.

docker logs app

ریستارت Discourse

در صورت نیاز:

cd /var/discourse

sudo ./launcher restart app

توقف Discourse

cd /var/discourse

sudo ./launcher stop app

اجرای مجدد

cd /var/discourse

sudo ./launcher start app

نکات امنیتی

برای استفاده در محیط Production پیشنهاد می‌شود اقدامات زیر را انجام دهید:

  • ورود با SSH Key را جایگزین رمز عبور کنید.
  • ورود مستقیم کاربر Root را غیرفعال کنید.
  • سرویس SSH را با ابزارهایی مانند Fail2Ban محافظت کنید.
  • سیستم‌عامل Ubuntu را همواره به‌روز نگه دارید.
  • Docker و Discourse را به آخرین نسخه پایدار بروزرسانی کنید.
  • از رمز عبور قوی برای حساب مدیر استفاده کنید.
  • احراز هویت دومرحله‌ای (2FA) را برای مدیران فعال کنید.
  • از تهیه منظم نسخه‌های پشتیبان غافل نشوید.

حداقل منابع پیشنهادی

اگر انجمن شما کاربران کمی دارد:

  • ۲ هسته پردازشی
  • ۴ گیگابایت RAM
  • ۴۰ گیگابایت SSD

برای انجمن‌های متوسط:

  • ۴ هسته پردازشی
  • ۸ گیگابایت RAM
  • ۸۰ گیگابایت SSD یا NVMe

برای انجمن‌های پرترافیک:

  • ۸ هسته پردازشی یا بیشتر
  • ۱۶ گیگابایت RAM یا بیشتر
  • دیسک NVMe
  • استفاده از Reverse Proxy و CDN مانند Cloudflare

جمع‌بندی

در این آموزش، نحوه نصب و راه‌اندازی Discourse روی Ubuntu 24.04 LTS با استفاده از Docker را بررسی کردیم. همچنین Docker را با استفاده از میرور پارمین کلود نصب کردیم و مراحل پیکربندی اولیه، ایجاد حساب مدیر، تنظیم SMTP، بروزرسانی و نگهداری سیستم را مرور کردیم.

در پایان شما با موارد زیر آشنا شدید:

  • نصب Docker با میرور پارمین کلود
  • نصب و راه‌اندازی Discourse
  • تنظیم دامنه و SMTP
  • ساخت اولین حساب مدیر
  • انجام تنظیمات اولیه انجمن
  • بروزرسانی Discourse
  • تهیه نسخه پشتیبان
  • افزایش امنیت و نگهداری در محیط Production

Discourse یکی از قدرتمندترین پلتفرم‌های متن‌باز برای ایجاد انجمن‌های گفتگو است و به لطف معماری مبتنی بر Docker، مدیریت و بروزرسانی آن بسیار ساده و قابل اطمینان خواهد بود.

از همراهی شما با پارمین کلود سپاسگزاریم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا