求助,rebuild后discourse站点无法操作

不知道发生什么了,就是添加了一个template后的一次常规rebuild,然后我的站点打开就只能看不能操作了,已尝试重启电脑、浏览器、服务器,关闭所有浏览器插件,在不同浏览器,都不行 :melting_face:

我的app.yml配置文件

## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  # - "templates/web.china.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.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"
  # - "templates/cloudflare.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:
  - "80:80"   # http
  - "443:443" # https
  - "587:587"

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "128MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  UNICORN_WORKERS: 2

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: forum.beginner.center

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example '[email protected],[email protected]'
  DISCOURSE_DEVELOPER_EMAILS: '[email protected]'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  DISCOURSE_SMTP_ADDRESS: smtpdm.aliyun.com
  DISCOURSE_SMTP_PORT: 80
  DISCOURSE_SMTP_USER_NAME: [email protected]
  DISCOURSE_SMTP_PASSWORD: "**********"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optiaonal, default true)
  DISCOURSE_SMTP_DOMAIN: noreply.beginner.center
  DISCOURSE_NOTIFICATION_EMAIL: [email protected]

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: [email protected]

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/paviliondev/discourse-ratings.git
          - git clone https://github.com/discourse/discourse-topic-voting
          - git clone https://github.com/discourse/discourse-whos-online
          - git clone https://github.com/discourse/discourse-solved
          - git clone https://github.com/paviliondev/discourse-news
          - git clone https://github.com/discourse/discourse-steam-login
          - git clone https://github.com/discourse/discourse-table-builder
          - git clone https://github.com/merefield/discourse-ai-topic-summary
          - git clone https://github.com/discourse/discourse-post-voting
          - git clone https://github.com/discourse/discourse-ai
          - git clone https://github.com/discourse/discourse-follow
          - git clone https://github.com/discourse/discourse-reactions
          - git clone https://github.com/discourse/discourse-gamification
          - git clone https://github.com/discourse/discourse-yearly-review
          - git clone https://github.com/whitewatercn/discourse-embed-bilibili
          - git clone https://github.com/discourse/discourse-automation
          - git clone https://github.com/discourse/discourse-cakeday
          - git clone https://github.com/communiteq/discourse-restrict-pms-to-group
          - git clone https://github.com/discourse/discourse-math
          





## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  - exec: rails r "SiteSetting.notification_email='[email protected]'"
  - exec: echo "End of custom commands"

./launcher logs app的输出

x86_64 arch detected.
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[Wed 06 Mar 2024 01:28:00 PM UTC] Domains not changed.
[Wed 06 Mar 2024 01:28:00 PM UTC] Skip, Next renewal time is: 2024-04-11T00:09:12Z
[Wed 06 Mar 2024 01:28:00 PM UTC] Add '--force' to force to renew.
[Wed 06 Mar 2024 01:28:00 PM UTC] Installing key to: /shared/ssl/forum.beginner.center.key
[Wed 06 Mar 2024 01:28:00 PM UTC] Installing full chain to: /shared/ssl/forum.beginner.center.cer
[Wed 06 Mar 2024 01:28:00 PM UTC] Run reload cmd: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Wed 06 Mar 2024 01:28:00 PM UTC] Reload error for :
[Wed 06 Mar 2024 01:28:01 PM UTC] Domains not changed.
[Wed 06 Mar 2024 01:28:01 PM UTC] Skip, Next renewal time is: 2024-04-11T00:09:17Z
[Wed 06 Mar 2024 01:28:01 PM UTC] Add '--force' to force to renew.
[Wed 06 Mar 2024 01:28:01 PM UTC] Installing key to: /shared/ssl/forum.beginner.center_ecc.key
[Wed 06 Mar 2024 01:28:01 PM UTC] Installing full chain to: /shared/ssl/forum.beginner.center_ecc.cer
[Wed 06 Mar 2024 01:28:01 PM UTC] Run reload cmd: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Wed 06 Mar 2024 01:28:01 PM UTC] Reload error for :
Started runsvdir, PID is 538
ok: run: redis: (pid 547) 0s
ok: run: postgres: (pid 553) 0s
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/discourse.conf:60
supervisor pid: 551 unicorn pid: 578
Shutting Down
run-parts: executing /etc/runit/3.d/01-nginx
ok: down: nginx: 0s, normally up
run-parts: executing /etc/runit/3.d/02-unicorn
(551) exiting
ok: down: unicorn: 1s, normally up
run-parts: executing /etc/runit/3.d/10-redis
ok: down: redis: 0s, normally up
run-parts: executing /etc/runit/3.d/99-postgres
ok: down: postgres: 0s, normally up
ok: down: nginx: 3s, normally up
ok: down: postgres: 1s, normally up
ok: down: redis: 2s, normally up
ok: down: cron: 0s, normally up
ok: down: unicorn: 3s, normally up
ok: down: rsyslog: 0s, normally up
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[Wed 06 Mar 2024 01:51:54 PM UTC] Domains not changed.
[Wed 06 Mar 2024 01:51:54 PM UTC] Skip, Next renewal time is: 2024-04-11T00:09:12Z
[Wed 06 Mar 2024 01:51:54 PM UTC] Add '--force' to force to renew.
[Wed 06 Mar 2024 01:51:54 PM UTC] Installing key to: /shared/ssl/forum.beginner.center.key
[Wed 06 Mar 2024 01:51:54 PM UTC] Installing full chain to: /shared/ssl/forum.beginner.center.cer
[Wed 06 Mar 2024 01:51:54 PM UTC] Run reload cmd: sv reload nginx
fail: nginx: runsv not running
[Wed 06 Mar 2024 01:51:54 PM UTC] Reload error for :
[Wed 06 Mar 2024 01:51:54 PM UTC] Domains not changed.
[Wed 06 Mar 2024 01:51:54 PM UTC] Skip, Next renewal time is: 2024-04-11T00:09:17Z
[Wed 06 Mar 2024 01:51:54 PM UTC] Add '--force' to force to renew.
[Wed 06 Mar 2024 01:51:55 PM UTC] Installing key to: /shared/ssl/forum.beginner.center_ecc.key
[Wed 06 Mar 2024 01:51:55 PM UTC] Installing full chain to: /shared/ssl/forum.beginner.center_ecc.cer
[Wed 06 Mar 2024 01:51:55 PM UTC] Run reload cmd: sv reload nginx
fail: nginx: runsv not running
[Wed 06 Mar 2024 01:51:55 PM UTC] Reload error for :
Started runsvdir, PID is 531
ok: run: redis: (pid 543) 0s
ok: run: postgres: (pid 548) 0s
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/discourse.conf:60
supervisor pid: 541 unicorn pid: 571

现在尝试把app.yml恢复到最早的样子,再rebuild一下

这种情况多是 JS 错误。

我看了下你的站点,有很多 JS 错误

然后看到一些调用有 521 错误。

建议考虑禁用下 CloudFlare 错误试试看?

你在重构之前进行过一些什么操作呢?

同时,我在你的配置文件中看到了很多仓库你添加到平台上的,尝试先注释那些仓库插件,有可能出现一些不兼容的情况。

这个模板应该是没有问题的。

我们一直在用这个模板页重构过,我建议你先删除或者注释掉这个这个模板后再重构一次。

但是以往开着这些插件都能正常用,添加了这个template后rebuild才发生的,我猜可能是Cloudflare的问题,现在启动了CF的开发者模式,同时也关掉所有没必要的插件,再次rebuild试一下

好的。

我不认为这个插件会有什么问题,不过你可以使用上面的方法重构一次看看。

1 Like

rebuild以后还不行,然后清除了浏览器缓存,好了

考虑了一下使用这个模板收获不大,暂时并不需要知道用户的登录IP,先不用了哈哈

感谢帮助!

好的

我刚才看了下你的网站,就算采用无痕模式还是有不少的 JS 错误。

这些 JS 错误也有可能会导致一些冲突的。

不懂该如何处理,尽量关掉所有能关的插件了,下一步我该怎么办?请赐教 :face_with_peeking_eye:

感觉有点像 Google 广告的 JS 错误。

你先停用下 Google 广告的配置,看看有没有错误,然后再打开试试看。

已经停用了,好像并不影响

我发现现在一打开Cloudflare的CDN就会出现这个问题,很奇怪

这个就有点奇怪了。

我们一直用这个插件,并没有发现有什么这个问题,感觉是不是你安装的实力上面和这个有什么配置是冲突的了呢?

唉不知道了,现在先把Cloudflare的CDN关了,也不是不能用,哈哈,就是服务器IP裸奔了,有点膈应

image
建议把这个限制关掉,写了篇文献春节遇到大的流量,这个默认配置会把同一局域网的多人访问拦截

这个配置会配置nginx允许的ip地址,看是否正确,下来就是cloudflare配置是否正确,还有CSP安全策略配置


阿里云邮箱服务的免费额度是多少,你们现在用的vps是哪个供应商的

现在的 VPS 应该是 OVH 的。

我看到阿里云的邮件推送服务价格应该是这个价格。

不知道你们邮件发送的量有多少,通常我们一个月也没几千的邮件发送量。

找一个按发送量计费的可能比资源包方式更节省。

最便宜的应该是 AWS 的 SES 吧。

我看官方推了个brevo,每月9千封免费。数据备份用的什么方案,AWS的S3吗

邮件方面,我们用的是 Mailgun,备份和附件都用的是 S3。

1 Like

最近发现如果不想通过邮件回复论坛话题,可以使用注册的邮箱免费代发

1 Like