Discourse 修改端口
Search
Found 57 results for 'Discourse 端口 修改 order:latest'
Read topic
Reading: 如何让 Discourse 在其他端口运行
要点先说在前面
- 不推荐直接把 Discourse 本体改到非 80/443 端口;更稳的是让容器内部保持默认,外部用反向代理换端口。
- 如果一定要改,也可以,但要同时改容器暴露端口和容器内 Nginx 的监听端口,并自己处理证书。
推荐方案(外部反代,内部只跑 80)
-
适合:你想让外部用任意端口/多个站点共存,证书也由外部 Nginx/Caddy/Traefik 管。
-
做法:
-
编辑 /var/discourse/containers/app.yml,注释掉内部 SSL 和 socket 模板,只暴露一个 http 端口:
yaml
templates:- “templates/web.socketed.template.yml”
- “templates/web.ssl.template.yml”
…
expose:- “8888:80” # 宿主机 8888 → 容器 80
同时确认 DISCOURSE_HOSTNAME 设置为你的域名。
-
重建容器:./launcher rebuild app
-
外部 Nginx/Caddy 监听你想对外提供的端口(比如 10443 或 443),反代到 127.0.0.1:8888,并加好头:
nginx
server {
listen 10443 ssl http2;
server_name your.domain.com;ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
-
-
好处:Discourse 不再强依赖 80/443;证书和端口都在外部灵活管理;避免内部重定向到 443 的坑。
可选方案(让容器内 Nginx 直接监听自定义 HTTPS 端口)
- 适合:你坚持让容器自己做 SSL,而且要用非 443。
- 做法:
- app.yml 暴露同端口:
yaml
expose:- “8080:80” # 可选
- “8443:8443” # 外部 8443 → 容器 8443
- 修改 templates/web.ssl.template.yml,把所有的 listen 443 ssl; 改成 listen 8443 ssl;(含 IPv6)
例如:- listen 8443 ssl; http2 on;
- listen [::]:8443 ssl; http2 on;
- 准备好证书路径(或外部下发后挂载进容器),然后 ./launcher rebuild app
- 之后用 https://你的域名:8443 访问
- app.yml 暴露同端口:
- 注意:Let’s Encrypt 在容器内签证一般要求 80/443,改端口后通常要在外部签好证书再挂载使用。并且 Discourse 对非标准端口的“规范化重定向/链接”支持不如 443 稳定。
跳过 setup 强占 80/443 的方法
- 不用运行 ./discourse-setup。直接把你编辑好的 app.yml 放到 /var/discourse/containers/,然后执行 ./launcher rebuild app 即可。
- 这是论坛里大家验证可行的做法。
常见坑
- 重建时报 ember build 被杀、assets 编译失败,多半是内存/Swap 不足。给机器加 2G+ Swap 再重建更稳。
- 多实例同机:给每个容器设置不同的 expose 端口,用前置 Nginx 按域名分流到各自的 http 端口即可。
站内参考
- 如何让 Discourse 在其他端口运行(含实操与坑位):如何让 Discourse 在其他端口运行
- 请问如何修改 Discourse 端口?请问如何修改 Discourse 端口?
- 服务器安装俩个 discourse,可行?服务器安装俩个discourse,可行?
你现在打算用哪种方式?我可以按你的环境(是否有外部 Nginx/是否要用非 443 SSL/是否要多实例)给你一份可直接用的 app.yml 和反代配置。