搞测试,本来是内部环境,但discourse有点大病,一定要公网IP服务器,这就扯淡了,用Cloudflare Tunnel试试。
(DIscuz做内网社区有点毛病,真心累)
使用Cloudflare Tunnel为没有公网IP和80/443端口的服务器安装Discourse是个不错的解决方案。下面是具体步骤:
1. 在Cloudflare上创建一个新的隧道(Tunnel):
- 登录Cloudflare控制面板,进入”Zero Trust” -> “Access” -> “Tunnels”
- 点击”Create a tunnel”按钮,给隧道起个名字如discourse-tunnel
- 记下生成的隧道ID和隧道密钥
2. 在服务器上安装cloudflared客户端:
- 根据操作系统从 https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation 下载对应版本
- 例如Ubuntu可以运行:
sudo wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
3. 使用第1步的隧道ID和密钥登录cloudflared:
cloudflared tunnel login <Tunnel-ID>
根据提示粘贴隧道密钥并回车。
4. 创建一个配置文件如 /etc/cloudflared/config.yml,内容如下:
tunnel: <Tunnel-ID>
credentials-file: /root/.cloudflared/<Tunnel-ID>.json
ingress:
- hostname: discourse.example.com
service: http://localhost:8080
- service: http_status:404
将`<Tunnel-ID>`替换为实际的隧道ID。`discourse.example.com`替换为你的Discourse域名。
5. 配置DNS解析:
在Cloudflare上将discourse.example.com的CNAME记录指向 <Tunnel-ID>.cfargotunnel.com
6. 启动cloudflared:
cloudflared tunnel run <Tunnel-ID>
7. 安装Docker和Docker Compose,参考:
8. 使用Docker部署Discourse:
- 参考官方文档 https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md
- 执行bootstrap脚本,设置hostname为 discourse.example.com
- 配置邮件服务器等信息
- 使用`./launcher start app`启动Discourse
9. 此时访问 discourse.example.com 即可通过Cloudflare Tunnel连接到服务器内网的Discourse
以上步骤涉及较多内容,建议仔细阅读Cloudflare Tunnel和Discourse的文档。整个过程需要一定的Linux和网络知识。如果遇到问题,可以查阅文档、搜索或者提问寻求帮助。
没有回复内容