Discourse là một ứng dụng mã nguồn mở phổ biến để xây dựng diễn đàn thảo luận trực tuyến. Thiết lập vào 2013, Discourse được viết bằng ngôn ngữ lập trình Ruby và JavaScript.

Các tính năng nổi bật của Discourse:

  • Hỗ trợ trên 25 ngôn ngữ.
  • Thiết kế tối ưu SEO cho Google tìm kiếm, hỗ trợ CDN.
  • Thiết kế 100% hỗ trợ điện thoại, giao diện hiển thị và tương thích với mọi trình duyệt/thiết bị. Ứng dụng hỗ trợ Discourse trên cả iOSAndroid.
  • Cho phép đăng nhập qua mạng xã hội Facebook, Twitter, Google, Yahoo, GitHub… và reply qua email.
  • Thảo luận liên tục, không có phân trang, tất cả chỉ có cuộn lện và cuộn xuống. Đảm bảo không ngắt quãng cuộc thảo luận của bạn.
  • Trust System và chống spam: hạn chế quyền hạn thành viên mới (số hình ảnh/link có thể đăng…) và bỏ dần theo thời gian (độ tin cậy gia tăng). Mọi hoạt động spam được phát hiện chính xác và loại bỏ tự động.
  • Backup tự động theo ngày. Nâng cấp dễ dàng qua Docker và Github.
  • Và còn nhiều tính năng khác nữa, bạn có thể tham khảo đầy đủ tại trang Discourse Features

Cho đến nay, Discourse đã được sử dụng rộng rãi bởi rất nhiều tổ chức lớn, như Codeacademy, Udacity, Twitter Developers, Docker Community, Let’s Encrypt Community, Envato Community….

1. Yêu cầu hệ thống

Discourse yêu cầu hệ điều hành Linux 64bit tương thích với Docker, tối thiểu 1GB RAM và 10GB dung lượng ổ đĩa. Một số nhà cung cấp VPS được khuyên dùng: Vultr, Digital OceanLinode

Bên cạnh đó, một yếu tố rất quan trọng cần phải chú ý để Discourse có thể hoạt động ổn định được đó là SMTP Server. SMTP Server được dùng để gửi email thông báo khi có bài viết mới, khi user subscribe, khi admin có post cần duyệt, khi có update mới…, nói chung SMTP Server rất quan trọng đối với Discourse.

Hiện nay có rất nhiều SMTP Server miễn phí các bạn có thể sử dụng, mình thì khuyến khích đăng ký ở SparkPost (Free 15,000 Mail), Elastic Email (150k emails/tháng) hoặc trả phí thì có SendGrid (40k emails trong 30 ngày dùng thử). Hướng dẫn đăng kí và sử dụng mình đều viết bài trên Canh Me hết rồi.

Trong bài viết này, HocVPS sẽ hướng dẫn các bạn cài đặt trên hệ điều hành CentOS7/Ubuntu 16.04 64bit và sử dụng SparkPost làm Mail Server.

2. Cài đặt Docker

– Cài đặt Git
Đối với CentOS

# yum -y install wget git

Đối với Ubuntu

# apt-get update
# apt-get install git

– Cài đặt, khởi động và thiết lập Docker khởi động cùng hệ thống

# wget -qO- https://get.docker.com/ | sh
# systemctl start docker
# systemctl enable docker

Kiểm tra trạng thái Docker

# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2017-12-19 12:03:48 UTC; 8s ago
     Docs: https://docs.docker.com
 Main PID: 13523 (dockerd)
   CGroup: /system.slice/docker.service
           ├─13523 /usr/bin/dockerd
           └─13563 docker-containerd --config /var/run/docker/containerd/containerd.toml

Chú ý: có một số nhà cung cấp VPS/Server không cài đặt được Docker, nguyên nhân thì có rất nhiều. Nếu gặp vấn đề các bạn hãy liên hệ với nhà cung cấp để được hỗ trợ.

3. Cài đặt Discourse

– Tạo và lưu mã nguồn tại thư mục /var/discourse:

# mkdir /var/discourse
# git clone https://github.com/discourse/discourse_docker.git /var/discourse

– Cài đặt Discourse
Lưu ý: Đối với hệ thống 2GB RAM trở xuống và không có Swap, Discourse sẽ tự tạo 2GB swap để đảm bảo hoạt động.

# cd /var/discourse
# ./discourse-setup

– Cung cấp các thông tin cần thiết, đặc biệt thông tin SMTP cần chính xác để gửi được mail xác nhận:

Hostname for your Discourse? [discourse.example.com]: hoidap.hocvps.com
Email address for admin account(s)? [me@example.com,you@example.com]: support@hocvps.com
SMTP server address? [smtp.example.com]: smtp.sparkpostmail.com
SMTP port [587]: 587
SMTP user name? [user@example.com]: hoidap@hocvps.com
SMTP password? []: xxxxxxxxx
Let's Encrypt account email? (ENTER to skip) [me@example.com]:

Quá trình cài đặt mất 2-8 phút và sẽ tự động tạo file cấu hình app.yml.

Lưu ý: Nếu cần thay đổi thông tin, chỉnh sửa file cấu hình /var/discourse/containers/app.yml.
Rồi tiến hành cấu hình lại hệ thống:

# cd /var/discourse
# ./launcher rebuild app

4. Khởi động Discourse

Quá trình cài đặt hoàn tất, bạn có thể truy cập diễn đàn theo IP của VPS hoặc tên miền đã thiết lập.

Việc đầu tiên cần làm là tạo tài khoản admin với email đã thiết lập trước đó. Hệ thống sẽ gửi email xác nhận tài khoản. Nếu không thấy mail xác nhận, nạn kiểm tra lại cấu hình SMTP, log hệ thống /var/discourse/shared/standalone/log/rails/production.logtổng hợp những vấn đề liên quan đến email.

Sau khi xác nhận thành công, bạn có thể bắt đầu cấu hình diễn đàn Discourse của mình.

Nếu mới làm quen với Discourse, bạn nên tham khảo hướng dẫn Admin Quick Start Guide để nắm vững cách quản trị hệ thống.

Trong quá trình hoạt động, sẽ có rất nhiều bản nâng cấp hệ thống, bạn có thể thao tác bằng dòng lệnh để get phiên bản mới nhất từ Git repo:

# cd /var/discourse
# git pull
# ./launcher rebuild app

hoặc update trực tiếp từ trình duyệt bằng cách truy cập đường dẫn: http://discourse.domain.com/admin/upgrade

Chúc các bạn thành công. Hãy cùng đón chờ những phần tiếp theo về cài đặt Nginx làm Reserve Proxy cho Discourse, cài đặt tính năng thêm như SSL, Social Login…

Tagged:

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

22 Comments

  1. Hung 11 comment

    Mình chạy cmd ./discourse-setup để cài discourse thì gặp lỗi port 80 in used.
    VPS mình đã cài hocvps script trước đó.

    Vậy có cách nào chạy song song discourse và nginx không nhỉ?

    Thanks!

    1. Việt Phương Moderator

      Bạn cần phải cấu hình Nginx làm Reserve Proxy cho Discourse thì mới cài đặt được. Nhưng điều đó không áp dụng cho bài viết này nên bạn tham khảo các hướng dẫn khác nhé, ý tưởng sẽ gần như thế này
      https://www.digitalocean.com/community/tutorials/how-to-install-discourse-behind-nginx-on-ubuntu-14-04
      https://www.howtoforge.com/tutorial/how-to-install-and-configure-discourse-forum-with-nginx-on-ubuntu-1604/

  2. trung 8 comment

    anh phương cho e hỏi, e muốn tạo trên subfolder thì cấu hình ở bước nào. Web đang chạy hocvpscript, muốn cài đặt vào doamin.com/diendan/ thì sửa ngay bước nào anh

    1. Việt Phương Moderator

      Bạn cần phải cấu hình Nginx làm Reserve Proxy cho Discourse thì mới cài đặt được. Nhưng điều đó không áp dụng cho bài viết này nên bạn tham khảo các hướng dẫn khác nhé, ý tưởng sẽ gần như thế này
      https://www.digitalocean.com/community/tutorials/how-to-install-discourse-behind-nginx-on-ubuntu-14-04
      https://www.howtoforge.com/tutorial/how-to-install-and-configure-discourse-forum-with-nginx-on-ubuntu-1604/
      …..

  3. TVD 4 comment

    Chào anh, diễn đàn Discourse cấu hình máy chủ như thế nào để hoạt động ổn định khoảng 10.000 user mỗi ngày.

  4. Béo 5 comment

    Tại sao cài đặt xong, trong phần tạo tài khoản quản trị sparkpost có gửi mail mà gmail không nhận được

    1. Việt Phương Moderator

      Bác xác nhận đúng là Sparkpost có gửi mail chứ? Bạn đã thực hiện test mail chưa? Nếu thế bạn check các hòm mail của gmail xem

    1. Bùi Đức Trọng 1 comment

      Mình mới check lại thì Discourse đã hỗ trợ tiếng Việt rồi bạn nha, nhưng tình hình dịch hoàn thiện là 54%, anh em xúm lại dịch cho nốt nha 😀

  5. Trinh Nguyen 38 comment

    Cái này chắc vọc phá được chứ ko cài chung trên HocVPS script được.
    Hy vọng sẽ có bài viết hướng dẫn tích hợp được

  6. Tutorials To Learn 1 comment

    Chào bạn,

    Mã nguồn Discourse phải dùng VPS mới được, không như mấy mã nguồn vBulletin, wordpres… nhỉ?

    Cảm ơn bạn đã chia sẻ!

    1. Việt Phương Moderator

      HocVPS hay cacs LEMP/LAMP stack thì bạn chờ bài viết sau cài Nginx làm Reserve Proxy nhé. Hiện tại bạn chỉ có thể cài độc lập trên VPS trắng