前言

在国内安装 Discourse 论坛其实是一件挺困难的事情,因为网络不太好,而且 Github 访问经常会抽风,导致安装非常容易失败。所以,想要尝试在国内 VPS 安装 Discourse 的同学,一定要准备好梯子,并且掌握 Linux 命令行代理配置技巧,否则不建议你尝试,基本是浪费时间。

搭建步骤

申请 VPS

如果你是新用户,那么申请腾讯云的活动机器是非常划算的,一年只需要 90 元,非常适合用来搭建论坛和个人博客。

申请域名

申请域名各个托管平台都可以,一般哪家便宜就用哪家呗。我看腾讯的域名首年只要 1 块钱,真是白菜价啊。

备案

有了 VPS 如果要使用国内的云服务器,你需要备好案,这样域名才可以绑定云主机并开始你的业务。备案过程比较复杂,这里就不细说了,一般按照云服务商的指引去弄即可。按照我以前的经验,备案需要准备很多资料,而且通常要 1-2 个月,还是非常折磨人的,好歹这个过程一般只需要做一次。

配置国内源

有了 vps 之后,第一步就是设置国内源,使用 vim 打开 /etc/apt/sources.list,然后粘贴以下代码:

1
2
3
4
5
6
7
    deb http://mirrors.tencentyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.tencentyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.tencentyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.tencentyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.tencentyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.tencentyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

如果购买的是腾讯云,这些设置是自动 ok 的,也可以忽略不管,只不过你需要验证下。备案好源以后,执行一下 apt-get update 更新一下。

安装 Docker

安装 docker 的过程也还算比较简单,可以参考知乎1这个文章。注意安装完以后,需要设置一下,主要是代理和 MTU. 代理主要是修改 /etc/default/docker/:

1
2
3
   DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
  # If you need Docker to use an HTTP proxy, it can also be specified here.
  export http_proxy="http://127.0.0.1:7890/"

接下来是修改 MTU 设备:打开文件 /lib/systemd/system/docker.service: 找到这个文件里面的 ExecStart=/usr/bin/dockerd -H fd:// 把它修改为: ExecStart=/usr/bin/dockerd --mtu=1400 -H fd://

当然,还需要配置下 Docker 的国内源2

修改完成以后,运行一下 service docker restart 重启一下就生效了。

安装 Discourse

具体的安装步骤网上一搜一大把,大家可以优先选择更新日期比较近的文章来参考。我一般喜欢参考 DigitalOcean 网站的指引,非常的详细,这里有一份翻译版本3。安装 Discourse 的过程比较简单,网络好,梯子给力的话,基本一次就能成功。如果失败,看看失败原因,去 Google 一下基本也都能找到解决方案。按照本文介绍的踩坑指南来弄,基本是不会失败。

注意在 contaienrs/app.yml 中添加 templates/web.china.template.yml 来添加 ruby 国内镜像,否则在后面的 ./launcher rebuild app 的时候容易失败或者速度极慢。

最关键的步骤:

1
./launcher rebuild app --docker-args "--net=host --env https_proxy=http://127.0.0.1:7890"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.china.template.yml"
#- "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "25653:80"
#- "80:80"   # http
#- "443:443" # https

如果要在 vps 上同时安装 Disourse 和个人博客等多个论坛,需要安装 nginx ,同时配置一下网站转发规则,具体参考这两篇文章4, 5

配置邮件系统

邮件系统我选择的是 MailGun ,这个邮件提供商配置简单,并且收费比较便宜,对于用户量不大的论坛足够用了,可以限制一个用户每天接收的邮件数量,一般我是设置为 2 封。像之前 emacs-china 有 4k 的用户,一个月不到 2 美元,还算是比较实惠的。

总结

本人最近在搭建一个游戏开发者学习论坛,虽然之前已经有 Emacs-China6 的安装经验了,但是还是折腾了特别久。主要就是 Git 不是 openssl 导致的问题,一直拉取 github 仓库失败,希望本文能够帮到有需要的人。