Discourse 如何更改默认端口
本菜鸡之前自己也建了一个 Discourse 论坛,但是由于 Discourse 本身官网要求强制 Docker 部署,而且容器内部自带 Nginx,而且绑定了 80 和 443 端口,导致如果我想要在同一台机器上部署其他网站或者同时运行
恰好在论坛看见站长 @anonymous_coward_old 发的技术细节,于是本菜鸡很好奇这个方法是如何实现的:

ぜーんぶ弾けなーい!
其实就是想知道反代是怎么实现的啦~
困扰挺久的其实 😇
ぜーんぶ弾けなーい!
你 ping 的那个账号是公用的匿名账号
Change the container definition
This is where we change how Discourse actually gets set up. We don’t want the container listening on ports - instead, we’ll tell it to listen on a special file.
You need to edit /var/discourse/containers/app.yml to disable ssl and add template to create nginx sock. It should look like this:
# base templates used; can cut down to include less functionality per container templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
# - "templates/web.ssl.template.yml" # remove - https will be handled by outer nginx
# - "templates/web.letsencrypt.ssl.template.yml" # remove -- https will be handled by outer nginx
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.template.yml" # <-- Added
Be sure to remove or comment out the exposed ports by putting a # in front.
# which ports to expose?
# expose: comment out entire section by putting a # in front of each line
# - "80:80" # http
# - "443:443" # https
Now you can
/var/discourse/launcher rebuild app
to rebuild Discourse to make its data available to the socket.
容器里头的 nginx 监听在 unix socket,共享到容器外,用你喜欢的反代代理即可,如 caddy:
reverse_proxy unix//var/discourse/shared/app/nginx.http.sock
谢谢佬 by the way 想知道你服务器是哪里买的
ぜーんぶ弾けなーい!
这个全方位好,除了 CN net
€13.68/m 8C16G+512G, unlimited BW, dedicated CPU
这个香港的有时候网络好
$15/m 4C16G(1 dedicated CPU+3 shared CPU), ~4T BW
感谢分享 我用了某杂牌(狗云) 🫠
有机会换过来
ぜーんぶ弾けなーい!
杂牌厂不能用(尤其是国人商家、one man)
Hetzner Netcup(Anexia) Vultr DO Linode AWS/Lightsail Oracle(如果你的信用卡能注册的上) Azure/GCP(如果你有钱) 正规大厂随便用(这些我都用过)
我原先用的是 Digital Ocean 学生包里面的
但是后来考虑到需要长期维护 学生包的钱只能用一年所以想迁移
现在既然这样考虑去办一张 visa 卡了
其实我昨天买了雨云的香港 CN2 优化机器 但是被恶心了(封了 587 端口 邮箱服务器没法用
ぜーんぶ弾けなーい!
如果业务不重要可以。不靠谱的反代机器会:
- 降低 uptime
- 有数据泄露的风险(man in the middle)
感谢提醒,不过我还想再问一下人在国内你的支付方法是什么:
- 信用卡
- palpay
大学生怎么办卡 🫠
ぜーんぶ弾けなーい!
去 BOC 陕西省分行办理“长城跨境通”借记卡(debit card)(Mastercard)
All right. Thanks a lot.
ぜーんぶ弾けなーい!
不要用国内的外币借记卡,要不停手动购汇,很麻烦,而且外汇管制很恼人
建议是:有条件就去香港开个户,拿 hsbc 的 master card 扣张卡
没条件可以去广发银行办一个 American Express Lucky 借记卡,这张卡是人民币卡,所有境内外交易(对在大陆也可以用)全部以人民币记账。而且如果你在广发没有其他卡的话,本卡可开一类账户。
确实有想去香港开一张卡的想法 国内的各种外汇卡让我很迷 🫠
不知道香港开卡有没有什么要求 准备明年寒假去一趟香港 顺便办一张电话卡
ぜーんぶ弾けなーい!
对了老哥,借记卡、信用卡、储蓄卡这三种卡有啥关系和区别吗
ぜーんぶ弾けなーい!
为什么是 老哥 🥺😢 紫砂了 ![]()
小哥哥 小姐姐 🥹
教教小弟弟 好么 😖
ぜーんぶ弾けなーい!
🚪友 想問問本站的簽名或者説小尾巴是什麼插件或者主題組件 很喜歡
ぜーんぶ弾けなーい!
我平时用工行星座校园卡(信用卡但 0 额度)。是要像 Juicy 说的手动购买外汇。不过我同时在借记卡做美元理财,要用的时候转到信用卡里(由于 0 额度)。
注:如果你也想在境内做(愚蠢的)借记卡汇信用卡。注意把卡开在同银行同地区,否则汇款收费。
我看了下感觉 BOC 比较适合我(虽然还是要买汇 因为我本身没有工行的卡 办 BOC 的话直接可以用国内的一类借记卡买汇
ぜーんぶ弾けなーい!
BOC 莫奈卡
中信和万事达出了一个人民币/美元双币卡,境内扣人民币,境外扣美元。这个卡的好处是可以存人民币,可以直接开一类户,master card 使用范围更广;坏处是不像广发 amex 自动货转,要购汇,然后就是中信的拒付率有点高、而且这个卡新出的,连中信自己的 atm 都不认、
莫奈卡不是要满足:
- 中行存满 20w
- 购入 2w 汇
- 有 world 卡及以上
就想一个人办 不想和爸妈说🤪
感觉就办那种普通的借记 visa 或者 master 卡应该比较容易?
ぜーんぶ弾けなーい!
不清楚,不知道还有没有线上申请渠道,没有的话就到营业厅问一下
准备等开学直接去线下分行去真实一下🥰
或者用银联卡买 paypal?
感觉支付宝用久了这种东西反而用不习惯了
ぜーんぶ弾けなーい!
paypal 收手续费挺高的,一般就希望保护隐私/防盗刷的时候用一下 b
老哥我想问一下关于 Cloudflare Tunnel 相关事项:
Discourse 中的反代是通过 Unix 嵌套字实现的 那么我在 Tunnel 的 config 是不是应该这样写:
tunnel: <tunnel-id>
credentials-file: /root/.cloudflared/<tunnel-id>.json
ingress:
- hostname: tunnel.aicnal.tech
service: unix:/var/discourse/shared/standalone/nginx.http.sock
- service: http_status:404
ぜーんぶ弾けなーい!
tunnel: abcdefg
credentials-file: /abcdefg.json
ingress:
- service: unix:/var/discourse/shared/app/nginx.http.sock
🚪友 想問問本站的簽名或者説小尾巴是什麼插件或者主題組件 很喜歡
see:
添加了 old-school 个性签名功能,可在个人资料里设置。(使用 Discourse Signatures - plugin - Discourse Meta )
想问问能不能分享一下 Caddy 反代源站的配置 之前用 Nginx 成功了 Caddy 死活用不了 ![]()
ぜーんぶ弾けなーい!
cat /etc/caddy/Caddyfile
proxy.xjtu.app:443 {
tls /etc/caddy/ssl/xjtu.app.cer /etc/caddy/ssl/xjtu.app.key
#reverse_proxy * https://xjtu.app {
# or:
reverse_proxy * https://44.44.44.44 {
transport http {
tls_server_name xjtu.app
}
}
}
这个好像是 docker 容器通过 unix 映射到宿主机的 caddy 配置文件
我源站搞定了 现在想通过一台线路较好的机器进行反代
example.com {
reverse_proxy / https://source-server-domain/ {
header_up Host {http.request.host}
header_up X-Real-IP {http.request.remote}
header_up X-Forwarded-For {http.request.remote}
header_up X-Forwarded-Proto {http.request.scheme}
}
}
反代之后
HTTP/1.1 308 Permanent Redirect
Connection: close
Location: https://
Server: Caddy
Date: Sat, 24 Aug 2024 04:25:06 GMT
Content-Length: 0
ぜーんぶ弾けなーい!
有没有遇到过 308 的情况 我感觉我配置是没有问题的 当时访问代理站点后没有内容返回
源站:https://direct.know-cnu.wiki
代理:https://know-cnu.wiki
![]()
ぜーんぶ弾けなーい!
弄了一天了 最终用 Nginx 解决了 贴一下
location ^~ / {
proxy_pass https://direct.know-cnu.wiki;
proxy_set_header Host direct.know-cnu.wiki;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name on;
}
感觉遇到这种问题还挺常见的 在配置 CloudFlare 代理的相关域名的时候经常出现

ぜーんぶ弾けなーい!
想在容器更新的时候自定义一个 502 页面(之前看到门的源站有类似的功能
但是我没有成功实现
direct.know-cnu.wiki {
reverse_proxy unix//var/discourse/shared/standalone/nginx.http.sock {
header_up Host {host}
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
handle_errors {
@502 {
expression {http.error.status_code} == 502
}
file_server {
root /etc/caddy
}
}
route /502.html {
root * /etc/caddy
file_server
}
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
}
}
我看着寻思也妹问题啊,自定义的 502 页面在 caddy 文件夹内
ぜーんぶ弾けなーい!
handle_errors {
@502 {
expression {http.error.status_code} == 502
}
file_server {
root /etc/caddy
}
}
route /502.html {
root * /etc/caddy
file_server
}
曹 忘记 rewrite 了
ぜーんぶ弾けなーい!