在本帖中,我将向您展示如何在 nginx 反向代理后面运行 discourse。同时仍使用受支持的安装方法。
要求:
- 有效的域名。
- 有效的 SSL 证书。
- 指向域名的有效 DNS 条目。
- 有效的电子邮件服务器或 SMTP 提供商。
- 可用的 Nginx 反向代理,并且能够访问实例并创建 SSL 证书以供将来使用。
- 可以运行 docker 的 VM 或 LxC 容器。
在本指南中,我将以我自己的实例为例,所有功能均正常运行,包括备份、升级等。已测试约 2 周。
我的 Discourse VM 配置:
- CPU:4 核
- 内存:6GB
- 交换空间:8GB(SSD 交换文件)
- 存储:50GB(SSD)
- 操作系统:Ubuntu 22.04.3
您可以最低配置,但在测试时。Discourse 很容易消耗 2GB 内存。非活动使用量约为 1.48GB/6GB。
**注意:**此安装使用反向代理来创建 SSL 证书。如果需要,也可以使用 certbot。
步骤 1:
从 Get Ubuntu Server | Download | Ubuntu 下载最新的 Ubuntu 服务器
步骤 2:
- 在 VM/LxC 模板上安装 Ubuntu 服务器
1.1 确保 Ubuntu 已更新所有服务器软件包。 - 使用以下命令安装所有必需的软件包:
apt update -y && apt upgrade -y && apt wget curl zip git docker.io nginx -y && reboot
步骤 3:
安装 Discourse。遵循初学者指南 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
ssh 登录到您的服务器并输入以下命令:
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
完成上述操作后。您可以运行 ./discourse-setup
请遵循所有步骤并正确输入,因为这对于成功安装至关重要。
步骤将询问以下问题;来自设置指南的示例:
让安装运行,它可能需要一些时间,具体取决于您的互联网连接和服务器规格。使用我的 VM 设置,完全安装大约需要 5-8 分钟。
步骤 4:
安装完成后,您将看到 docker 容器正在使用的启动命令和生成的容器 ID(哈希)。
**注意:**由于您通过 WAN 位于代理后面,因此会显示 502 错误,并且由于容器正在使用 docker 的网络。除非您连接到 172.17.0.1/16 网络,否则 WAN 或 LAN 将无法访问它,而我们不需要这样做。
使用以下命令双重检查安装是否已完成并且 docker 容器正在运行:
docker ps
您应该会看到以下输出。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
XXXXXX local_discourse/app “/sbin/boot” 6 days ago Up 7 hours app
步骤 5:
更新 app.yml 文件以适应反向代理配置。
使用您喜欢的文本编辑器打开 /var/discourse/container/app.yml
替换/注释掉以下行:(这将由本地 Nginx 处理)
#- “templates/web.ssl.template.yml”
#- “templates/web.letsencrypt.ssl.template.yml”
紧跟在 #- "templates/web.letsencrypt.ssl.template.yml" 之后添加以下内容:
- "templates/web.socketed.template.yml"
然后注释掉 expose 部分,因为 discourse 现在将使用 websocket,最后 nginx 将能够启动,因为它将释放本地所需的 80 和 443 端口。
#expose:
# - "80:80" # http
# - "443:443" # https
现在强制 Discourse 只提供带有 HTTPS 的链接,请在 env 部分添加以下内容:
# FORCE SSL
DISCOURSE_FORCE_HTTPS: true
现在要最终启动一切,您需要重建应用程序。使用以下命令:
cd /var/discourse
./launcher rebuild app
让它运行并完成。要检查它是否成功,请确保 docker 运行命令正在显示或简单地运行 docker ps,您将看到容器正在运行。
步骤 6:
启用 Nginx 并配置默认站点以指向 docker 容器。允许反向代理使用本地 nginx 访问容器。
运行以下命令:
systemctl enable nginx && systemctl start nginx
要检查它是否正在运行。尝试使用您的浏览器和本地 IP 访问 nginx 的默认登录页面。
例如:
http://10.10.0.4
您应该会看到来自 Nginx 的祝贺页面。
步骤 7:
将默认配置更新为以下内容:
首先清空配置文件:
echo "" > /etc/nginx/sites-available/default
使用您的文本编辑器打开配置文件并添加以下内容:
**注意:**将 server_name 更新为您的域名,将 ssl_certificate、ssl_certificate_key 更新为您的 SSL 证书和密钥文件位置。
可以使用 Certbot,但我只是从我的反向代理 rsync 我的证书和密钥。
server {
listen 80; listen [::]:80;
server_name add.yourdomain.com;
server_tokens off;
return 301 https://$host$request_uri;
}
# Default server configuration
#
server {
# SSL configuration
#
server_tokens off;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name add.yourdomain.com;
ssl_certificate /etc/ssl/certs/your_ssl_cert.bundle;
ssl_certificate_key /etc/ssl/private/your_ssl_cert.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
保存新的默认文件并运行 systemctl restart nginx。
步骤 8:
在浏览器中打开您的论坛域名 https://somedomain.com,您将看到以下页面。
就是这样,全部完成。然后您可以按照步骤注册并开始您的论坛/社区 :)。
附加步骤:
安装后维护
我们强烈建议您为您的操作系统启用自动安全更新。在 Ubuntu 中,使用dpkg-reconfigure -plow unattended-upgrades
您可以直接使用此社区寻求支持,对于本地 Nginx,您可以随时在此帖子中寻求帮助。
