pullopen / pullopen.github.io

技术小白建站指南
https://pullopen.github.io/
8 stars 1 forks source link

如何利用Docker搭建Mastodon实例(一):基础搭建篇 - 技术小白搭建Mastodon站点指南 #3

Open pullopen opened 3 years ago

pullopen commented 3 years ago

https://pullopen.github.io/%E5%9F%BA%E7%A1%80%E6%90%AD%E5%BB%BA/2020/10/19/Mastodon-on-Docker.html

orani-admin commented 3 years ago

写的很赞!半小白从头跟到尾成功搭建!谢谢blog主!

我个人觉得几个可以让instructions更清晰的地方:

pullopen commented 3 years ago

@orani-admin 写的很赞!半小白从头跟到尾成功搭建!谢谢blog主!

我个人觉得几个可以让instructions更清晰的地方:

  • 数据库备份上 scaleway 和 媒体库上 scaleway 是两个相互独立的设置(虽然过程很相似),现在的写法粗粗看过来会以为这是同一件事只是本文是docker版但是连文是普通版
  • (其实应该写在另一篇文下面不过就一起说了) 是按照官方文档设定的非docker设定方式;和本文里介绍的docker设定有些细节上的不同:
    • docker 版本 mastodon 存数据所使用的根目录是 /home/mastodon/mastodon; 按照官方文档设定的根目录是 /home/mastodon/live 因此在使用docker版的时候 所有cd live 需要替换成 cd mastodon
    • 结尾处重启mastodon 如果是 docker 版应该使用 docker-compose 系列命令
  • 本文最结尾处 没有写运行 /backup.sh 的命令行( bash /backup.sh )对于不知道如何运行 .sh 文件的同学而言,会以为试运行的命令是 crontab -e 但这个是定时用的。

谢谢!我一会儿就修改一下。

orani-admin commented 3 years ago

活捉更新的博主!

修改数据库密码那里可以注明一下 请先将数据库升级到 12.5版本 (不然会在进psql 那一步报错) 不打算升级的话也许可能改一下版本号就好?没试过不知道

pullopen commented 3 years ago

@orani-admin 活捉更新的博主!

修改数据库密码那里可以注明一下 请先将数据库升级到 12.5版本 (不然会在进psql 那一步报错) 不打算升级的话也许可能改一下版本号就好?没试过不知道

我估计还是要升级的,好像是早期数据库版本和后期的语法就不太一样。 我升级数据库也是因为mastodon在v3.3.0之后,数据库版本太老的话,升级迁移数据库会出现报错。(虽然影响不大。)

orani-admin commented 3 years ago

说一下关于备份的script:

我最开始生成mastodon instance 的时候(mastodon 版本号3.2.1),有一段是一路回车下来的;那时候生成了一些默认值,包括在我的 .env.production 里面的DB_NAME=postgres。 这种情况下,

/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc mastodon_production > ${origin}/backup.dump &&

应该改成

/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc postgres > ${origin}/backup.dump &&

我是在scaleway上偶然间发现我的所有备份文件全部小于1kb的时候意识到这个问题的。手动跑 /backup.sh 的时候系统其实报了一行错:database "mastodon_production" does not exist 但平时都半夜自动备份了所以我也没得看到。(所以这段时间都备份了个寂寞,细思极恐,这要是我以为自己有备份了放心大胆炸了什么东西最后才是欲哭无泪。) 后来我又通过

/usr/bin/docker exec -it mastodon_db_1 psql -U postgres

进入了数据库交互界面,这个界面下按 \l 可以看见所有的database names,其中我这里唯一一个有可能和mastodon有关的数据库名字叫postgres,进去看了一眼table names 基本确认是了。没看data因为用root权限看数据库内容是不好的,但是大体能确定就是这个表

当然现在搞清楚了什么是什么的时候也想吐槽postgres这个默认database名称实在是太糟糕了 我估计你参考的那位站长也是看不过眼把它给改了;或者也有可能早期mastodon版本没默认名,然后选了一个比较有信息量的。

pullopen commented 3 years ago

@orani-admin 说一下关于备份的script:

我最开始生成mastodon instance 的时候(mastodon 版本号3.2.1),有一段是一路回车下来的;那时候生成了一些默认值,包括在我的 .env.production 里面的DB_NAME=postgres。 这种情况下,

/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc mastodon_production > ${origin}/backup.dump &&

应该改成

/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc postgres > ${origin}/backup.dump &&

我是在scaleway上偶然间发现我的所有备份文件全部小于1kb的时候意识到这个问题的。手动跑 /backup.sh 的时候系统其实报了一行错:database "mastodon_production" does not exist 但平时都半夜自动备份了所以我也没得看到。(所以这段时间都备份了个寂寞,细思极恐,这要是我以为自己有备份了放心大胆炸了什么东西最后才是欲哭无泪。) 后来我又通过

/usr/bin/docker exec -it mastodon_db_1 psql -U postgres

进入了数据库交互界面,这个界面下按 \l 可以看见所有的database names,其中我这里唯一一个有可能和mastodon有关的数据库名字叫postgres,进去看了一眼table names 基本确认是了。没看data因为用root权限看数据库内容是不好的,但是大体能确定就是这个表

当然现在搞清楚了什么是什么的时候也想吐槽postgres这个默认database名称实在是太糟糕了 我估计你参考的那位站长也是看不过眼把它给改了;或者也有可能早期mastodon版本没默认名,然后选了一个比较有信息量的。

回头看了眼,这个应该是写在你的.env.production里的,可能是初始设置的时候直接回车了?

orani-admin commented 3 years ago

@pullopen

@orani-admin 说一下关于备份的script:

我最开始生成mastodon instance 的时候(mastodon 版本号3.2.1),有一段是一路回车下来的;那时候生成了一些默认值,包括在我的 .env.production 里面的DB_NAME=postgres。 这种情况下,

/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc mastodon_production > ${origin}/backup.dump &&

应该改成

/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc postgres > ${origin}/backup.dump &&

我是在scaleway上偶然间发现我的所有备份文件全部小于1kb的时候意识到这个问题的。手动跑 /backup.sh 的时候系统其实报了一行错:database "mastodon_production" does not exist 但平时都半夜自动备份了所以我也没得看到。(所以这段时间都备份了个寂寞,细思极恐,这要是我以为自己有备份了放心大胆炸了什么东西最后才是欲哭无泪。) 后来我又通过

/usr/bin/docker exec -it mastodon_db_1 psql -U postgres

进入了数据库交互界面,这个界面下按 \l 可以看见所有的database names,其中我这里唯一一个有可能和mastodon有关的数据库名字叫postgres,进去看了一眼table names 基本确认是了。没看data因为用root权限看数据库内容是不好的,但是大体能确定就是这个表

当然现在搞清楚了什么是什么的时候也想吐槽postgres这个默认database名称实在是太糟糕了 我估计你参考的那位站长也是看不过眼把它给改了;或者也有可能早期mastodon版本没默认名,然后选了一个比较有信息量的。

回头看了眼,这个应该是写在你的.env.production里的,可能是初始设置的时候直接回车了?

对。应该就是初始无脑回车的结果,回车的话就是生成默认值,我想了一下如果有一个思考的过程,我自己不会取这么没信息量的用户名。

也就是说应该不止我一个人会把db_name设置成postgres

不过 我刚又去看了一下他们doc 在 Database connections - PostgreSQL 那里竟然 DB_HOST, DB_USER, DB_NAME 这三项都是有官方默认值的,但神奇的是这三个默认值都和一路回车生成的默认值不一样……就,非常之神奇了。

onmpen commented 3 years ago

感觉博主! 在开启全文搜索 docker-compose run --rm web bin/tootctl search deploy 建立索引时,提示:

warning: 299 Elasticsearch-6.8.10-537cb22 "the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template"

不知道有没有影响?

pullopen commented 3 years ago

感觉博主! 在开启全文搜索 docker-compose run --rm web bin/tootctl search deploy 建立索引时,提示:

warning: 299 Elasticsearch-6.8.10-537cb22 "the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template"

不知道有没有影响?

好像没有,我看日志也看到了……

bj2020 commented 3 years ago

更新一下,昨天又修改了.env.production里的 LOCAL_DOMAIN=yourdomain:3343 加了端口号就可以了,有点怪怪的,不过有效。 “感谢博主的教程,已经成功搭建了私人家用的mastodon, 因为中国电信封锁了80和443端口,我尝试使用3443端口代替443端口,发现上传的视频和图片无法显示, 查看视频及图片的链接发现还是使用的默认443端口,并未使用期望的3443端口,复制链接并手动添加3443端口能成功打开视频和图片, 已经修改端口文件有 docker-compose.yml 以及 nginx的default.conf 请教还要修改哪里,谢谢!”

maolog commented 3 years ago

你好博主,按照步骤已经完成搭建,yys.ink 这篇博文我想转载留存,怕哪天无法访问github了 请问可以吗?

pullopen commented 3 years ago

你好博主,按照步骤已经完成搭建,yys.ink 这篇博文我想转载留存,怕哪天无法访问github了 请问可以吗?

注明原地址即可。

Ikun886-cxk commented 2 years ago

大大,我照着你的方法部署后发现运行不了bot,无论用的是原版镜像还是魔改后的 bot项目地址:https://github.com/mashirozx/tweet2toot

HelIwalker commented 2 years ago

手里只有个黑群辉,配置够用,但是网上找不到群晖部署mastodon的实例,请问博主有相关经验吗?

pullopen commented 2 years ago

大大,我照着你的方法部署后发现运行不了bot,无论用的是原版镜像还是魔改后的 bot项目地址:https://github.com/mashirozx/tweet2toot

我现在自己使用的bot项目地址是 https://github.com/pullopen/RSS2toot,用的是python3.7,您看是不是能用

pullopen commented 2 years ago

手里只有个黑群辉,配置够用,但是网上找不到群晖部署mastodon的实例,请问博主有相关经验吗?

NAS我不懂,但既然可以用docker安装,我猜是不是可以寻找一下群辉系统穿透内网以及安装docker的教程?(本人水平很小白哈)

DocWho22 commented 2 years ago

大佬,小白之前手动跟着官方教程来了,但是没成功,然后想着用docker布置一次。但是出现了问题。 首先docker ps出来的容器名是mastodon-db-1,所以我是这样填的

PostgreSQL host: mastodon-db-1 (这个地方我换过/var/run/postgresql和db和mastodon_db_1都不行)
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon_production
Name of PostgreSQL user: mastodon
Password of PostgreSQL user: (这里我写的是mastodon的密码)
Database connection could not be established with this configuration, try again.
could not connect to server: No route to host
        Is the server running on host "172.18.0.3" and accepting
        TCP/IP connections on port 5432?

我的机器是Oracle的arm机,系统是RHEL8.5aarch64docker inspect mastodon-db-1出来的东西比较多,摘录了一点:

"Networks": {
                "mastodon_internal_network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "mastodon-db-1",
                        "db",
                        "bb2326251f1b"
                    ],
                    "NetworkID": "897a0b8b1419467840a2d820df85afdee54c853e54293938564f7348d67e9b56",
                    "EndpointID": "7198020c54c13e40316c06263c73e3295ab6306503b26f3df2fccb3275374134",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:03",
                    "DriverOpts": null
                }
            }

因为之前手动配置过,我已经yum remove redis postgresql14,但不知道是不是这样影响呢?

DocWho22 commented 2 years ago

解决啦(虽然觉得不太安全),我是在docker-compose.yml里的postgres和redis下面的networks都加入了- external_network,就可以了

DocWho22 commented 2 years ago

谢谢博主的教程,非常棒!

AkiGoat commented 2 years ago

开启全文搜索部分,编辑好docker-compose.yml.env.production后,docker报错显示"elasticsearch-oss:7.17.4 not found",将es中image地址改做最新版本image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 后解决了。不确定是不是只有我出现了这个问题。

AkiGoat commented 2 years ago

Cloudflare设置SSL/TSL为Full真的很重要!血的教训我哭了。兜兜转转好几次结果问题出在这……

pullopen commented 2 years ago

@AkiGoat 开启全文搜索部分,编辑好docker-compose.yml.env.production后,docker报错显示"elasticsearch-oss:7.17.4 not found",将es中image地址改做最新版本image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 后解决了。不确定是不是只有我出现了这个问题。

感觉仿佛是官方main线超前设置了……

heganyuliang commented 1 year ago

初始化数据库的时候,执行 docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e 报错 flag needs an argument: 'e' in -e See 'docker run --help'.,执行下一步又报错 -bash: --rm: command not found,奇怪…

pullopen commented 1 year ago

@heganyuliang 初始化数据库的时候,执行 docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e 报错 flag needs an argument: 'e' in -e See 'docker run --help'.,执行下一步又报错 -bash: --rm: command not found,奇怪…

你理解错啦,那段docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=你自己设置的数据库管理员密码 --rm -d postgres:14-alpine 整个一块都是完整的一步命令,要一起输入的。

heganyuliang commented 1 year ago

@pullopen

@heganyuliang 初始化数据库的时候,执行 docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e 报错 flag needs an argument: 'e' in -e See 'docker run --help'.,执行下一步又报错 -bash: --rm: command not found,奇怪…

你理解错啦,那段docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=你自己设置的数据库管理员密码 --rm -d postgres:14-alpine 整个一块都是完整的一步命令,要一起输入的。

是的我也发现了,不过改过之后按步骤做完,打开网页只有一个 logo,让人迷惑

jeff21chan commented 1 year ago

@heganyuliang

@pullopen

@heganyuliang 初始化数据库的时候,执行 docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e 报错 flag needs an argument: 'e' in -e See 'docker run --help'.,执行下一步又报错 -bash: --rm: command not found,奇怪…

你理解错啦,那段docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=你自己设置的数据库管理员密码 --rm -d postgres:14-alpine 整个一块都是完整的一步命令,要一起输入的。

是的我也发现了,不过改过之后按步骤做完,打开网页只有一个 logo,让人迷惑

@heganyuliang

@pullopen

@heganyuliang 初始化数据库的时候,执行 docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e 报错 flag needs an argument: 'e' in -e See 'docker run --help'.,执行下一步又报错 -bash: --rm: command not found,奇怪…

你理解错啦,那段docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=你自己设置的数据库管理员密码 --rm -d postgres:14-alpine 整个一块都是完整的一步命令,要一起输入的。

是的我也发现了,不过改过之后按步骤做完,打开网页只有一个 logo,让人迷惑

和你一样,setup最后一步建立数据库以后一堆报错,不显示admin密码,打开网站网页上缺少静态资源,重置密码后登录,就只看到大象,没了

pullopen commented 1 year ago

@jeff21chan

@heganyuliang

和你一样,setup最后一步建立数据库以后一堆报错,不显示admin密码,打开网站网页上缺少静态资源,重置密码后登录,就只看到大象,没了

我怀疑是不是4.0.2版本改动过了,有空我找个机器再试试……

pullopen commented 1 year ago

@jeff21chan

和你一样,setup最后一步建立数据库以后一堆报错,不显示admin密码,打开网站网页上缺少静态资源,重置密码后登录,就只看到大象,没了

如果有可能,是否可以把具体的报错内容告知一下呢?

jeff21chan commented 1 year ago

@pullopen

@jeff21chan

和你一样,setup最后一步建立数据库以后一堆报错,不显示admin密码,打开网站网页上缺少静态资源,重置密码后登录,就只看到大象,没了

如果有可能,是否可以把具体的报错内容告知一下呢?

报错太多了我自己是没指望解决就没记录,不好意思哈 后来换了debian,Mastodon用的3.5.3,没报错了,可以看到admin密码,但是网站没有加载css和图片这些,登陆后后台空白,像是nginx配置有问题

heganyuliang commented 1 year ago

@pullopen

@jeff21chan

和你一样,setup最后一步建立数据库以后一堆报错,不显示admin密码,打开网站网页上缺少静态资源,重置密码后登录,就只看到大象,没了

如果有可能,是否可以把具体的报错内容告知一下呢?

输入管理员邮箱之后的报错信息如下:

rake aborted!
Redis::CannotConnectError: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:398:in `rescue in establish_connection'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:379:in `establish_connection'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:117:in `block in connect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:344:in `with_reconnect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:116:in `connect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:417:in `ensure_connected'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:269:in `block in process'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:356:in `logging'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:268:in `process'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:234:in `call_pipelined'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:201:in `block in call_pipeline'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:344:in `with_reconnect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:199:in `call_pipeline'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:2671:in `block in pipelined'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:72:in `block in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:72:in `synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:2667:in `pipelined'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/client.rb:201:in `block in raw_push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:65:in `block (2 levels) in with'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:64:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:64:in `block in with'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:61:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:61:in `with'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/client.rb:198:in `raw_push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/client.rb:79:in `push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/worker.rb:360:in `client_push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/worker.rb:198:in `perform_async'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/worker.rb:289:in `perform_async'
/opt/mastodon/app/models/user.rb:519:in `trigger_webhooks'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:427:in `block in make_lambda'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:260:in `block in conditional'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:516:in `block in invoke_after'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:516:in `each'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:516:in `invoke_after'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:107:in `run_callbacks'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:824:in `_run_commit_callbacks'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/transactions.rb:321:in `committed!'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:155:in `commit_records'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:304:in `block in commit_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:294:in `commit_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:351:in `block in within_new_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/transactions.rb:298:in `save'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/suppressor.rb:44:in `save'
/opt/mastodon/lib/tasks/mastodon.rake:489:in `block (2 levels) in <top (required)>'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/ruby/bin/bundle:23:in `load'
/opt/ruby/bin/bundle:23:in `<main>'

Caused by:
Errno::ECONNREFUSED: Connection refused
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/connection/hiredis.rb:20:in `connect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/connection/hiredis.rb:20:in `connect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:385:in `establish_connection'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:117:in `block in connect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:344:in `with_reconnect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:116:in `connect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:417:in `ensure_connected'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:269:in `block in process'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:356:in `logging'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:268:in `process'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:234:in `call_pipelined'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:201:in `block in call_pipeline'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:344:in `with_reconnect'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:199:in `call_pipeline'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:2671:in `block in pipelined'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:72:in `block in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:72:in `synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis.rb:2667:in `pipelined'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/client.rb:201:in `block in raw_push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:65:in `block (2 levels) in with'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:64:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:64:in `block in with'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:61:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/connection_pool-2.3.0/lib/connection_pool.rb:61:in `with'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/client.rb:198:in `raw_push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/client.rb:79:in `push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/worker.rb:360:in `client_push'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/worker.rb:198:in `perform_async'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/sidekiq-6.5.7/lib/sidekiq/worker.rb:289:in `perform_async'
/opt/mastodon/app/models/user.rb:519:in `trigger_webhooks'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:427:in `block in make_lambda'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:260:in `block in conditional'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:516:in `block in invoke_after'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:516:in `each'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:516:in `invoke_after'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:107:in `run_callbacks'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:824:in `_run_commit_callbacks'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/transactions.rb:321:in `committed!'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:155:in `commit_records'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:304:in `block in commit_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:294:in `commit_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:351:in `block in within_new_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/transactions.rb:298:in `save'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.7/lib/active_record/suppressor.rb:44:in `save'
/opt/mastodon/lib/tasks/mastodon.rake:489:in `block (2 levels) in <top (required)>'
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/ruby/bin/bundle:23:in `load'
/opt/ruby/bin/bundle:23:in `<main>'
Tasks: TOP => mastodon:setup
(See full trace by running task with --trace)
pullopen commented 1 year ago

@heganyuliang @jeff21chan

输入管理员邮箱之后的报错信息如下:

rake aborted!
Redis::CannotConnectError: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:398:in `rescue in establish_connection'

我自己找了个机器试了一下确实如此。查了下,也有别人报告了这条issue

估计是4.0.2版本的bug,目前解决方式是先不要创建admin帐号,并在.env.production文件中加一行:

REDIS_URL=redis://@mastodon_redis_1:6379

然后docker-compose down && docker-compose up -d重启。

随后通过tootctl命令创建管理员用户(如果刚才已经失败创建过一次,则需要用 tootctl accounts modify 命令修改密码。)

另外4.0.2版本下载的nginx文件也需要修改,要将所有 try_files $uri =404;修改为 try_files $uri @proxy;

jeff21chan commented 1 year ago

我自己找了个机器试了一下确实如此。查了下,也有别人报告了这条issue

估计是4.0.2版本的bug,目前解决方式是先不要创建admin帐号,并在.env.production文件中加一行:

REDIS_URL=redis://@mastodon_redis_1:6379

然后docker-compose down && docker-compose up -d重启。

随后通过tootctl命令创建管理员用户(如果刚才已经失败创建过一次,则需要用 tootctl accounts modify 命令修改密码。)

另外4.0.2版本下载的nginx文件也需要修改,要将所有 try_files $uri =404;修改为 try_files $uri @proxy; 多谢 修改nginx配置文件后正常了

jeff21chan commented 1 year ago

@pullopen

@heganyuliang @jeff21chan

输入管理员邮箱之后的报错信息如下:

rake aborted!
Redis::CannotConnectError: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:398:in `rescue in establish_connection'

我自己找了个机器试了一下确实如此。查了下,也有别人报告了这条issue

估计是4.0.2版本的bug,目前解决方式是先不要创建admin帐号,并在.env.production文件中加一行:

REDIS_URL=redis://@mastodon_redis_1:6379

然后docker-compose down && docker-compose up -d重启。

随后通过tootctl命令创建管理员用户(如果刚才已经失败创建过一次,则需要用 tootctl accounts modify 命令修改密码。)

另外4.0.2版本下载的nginx文件也需要修改,要将所有 try_files $uri =404;修改为 try_files $uri @proxy;

admin是保留字段,tootctl命令好像不能创建用户名是admin的用户,想用这个用户名的还得在安装过程创建,然后改密码或者用邮箱重置密码。 大佬的教程更新太快

pullopen commented 1 year ago

@heganyuliang @jeff21chan

admin是保留字段,tootctl命令好像不能创建用户名是admin的用户,想用这个用户名的还得在安装过程创建,然后改密码或者用邮箱重置密码。 大佬的教程更新太快

原来如此。我也是setup里创建admin用户失败,然后用tootctl改了密码。就以为tootctl可以创建了。

总之通过改.env.production的方法可以解决redis连接不上的问题。

heganyuliang commented 1 year ago

@pullopen

@heganyuliang @jeff21chan

输入管理员邮箱之后的报错信息如下:

rake aborted!
Redis::CannotConnectError: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
/opt/mastodon/vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/client.rb:398:in `rescue in establish_connection'

我自己找了个机器试了一下确实如此。查了下,也有别人报告了这条issue

估计是4.0.2版本的bug,目前解决方式是先不要创建admin帐号,并在.env.production文件中加一行:

REDIS_URL=redis://@mastodon_redis_1:6379

然后docker-compose down && docker-compose up -d重启。

随后通过tootctl命令创建管理员用户(如果刚才已经失败创建过一次,则需要用 tootctl accounts modify 命令修改密码。)

另外4.0.2版本下载的nginx文件也需要修改,要将所有 try_files $uri =404;修改为 try_files $uri @proxy;

感谢!已经成功建起来啦

FM7077 commented 1 year ago

大佬你好, 我按照你的步骤成功地在群晖地 docker 上部署了 mastodon 地各个实力. 但由于群晖地 nginx 比较奇特, 我对 linux 的操作也不熟悉, 所以卡在了这一步, 请问我现在 docker 上部署了不通过 nginx 反代能直接访问到mastodon 吗? 另外我发现部署后 mastodon/public 下只有一个空的 system 文件夹, 请问这是正常的吗? 感谢大佬.

qinyj12 commented 1 year ago

家庭网封禁80、443端口,而网上又找不到把mastodon部署在非80、443端口上的教程。终极解决办法在这里:https://blog.vyvojari.dev/mastodon-behind-a-reverse-proxy-without-ssl-https/ 。但是考虑到这个办法依然没法解决80、443端口被封的问题,所以要做一点改进: 1、首先决定用example.com来访问mastodon。 2、家庭网服务器mastodon依然监听80/443端口,即example.com:80/443。 3、用一个公网服务器来转发(我用了frp内网穿透服务),ssl证书配置在公网服务器上。访问http://example.com:80,即穿透到内网服务器。 4、最终实现访问。

我看评论中有人成功通过非80/443端口访问的,请问具体如何做到的?我完全做不通。frps内网穿透有网速损失,所以我希望能够通过直连家庭网的形式(哪怕是非80\443)来访问,这样我就能做到满速。但网上根本没有教程

=================================== (更新20230916) 找到问题了,是nginx.conf中

location @proxy{
    proxy_set_header Host $host;
}

要改为

    proxy_set_header Host $host:$server_port;
rogitech commented 1 year ago

@FM7077 大佬你好, 我按照你的步骤成功地在群晖地 docker 上部署了 mastodon 地各个实力. 但由于群晖地 nginx 比较奇特, 我对 linux 的操作也不熟悉, 所以卡在了这一步, 请问我现在 docker 上部署了不通过 nginx 反代能直接访问到mastodon 吗? 另外我发现部署后 mastodon/public 下只有一个空的 system 文件夹, 请问这是正常的吗? 感谢大佬.

git clone https://github.com/mastodon/mastodon

@FM7077 大佬你好, 我按照你的步骤成功地在群晖地 docker 上部署了 mastodon 地各个实力. 但由于群晖地 nginx 比较奇特, 我对 linux 的操作也不熟悉, 所以卡在了这一步, 请问我现在 docker 上部署了不通过 nginx 反代能直接访问到mastodon 吗? 另外我发现部署后 mastodon/public 下只有一个空的 system 文件夹, 请问这是正常的吗? 感谢大佬.

也遇到了这个问题, 我是这么解决的:

cd /home/mastodon git clone https://github.com/mastodon/mastodon

如果已经有/home/mastodon/mastodon目录的话,先docker-compose down停用所有服务,然后用mv mastodon tmp改现有目录名,再clone官方的mastodon下来。然后再把tmp的目录覆盖掉/home/mastodon/mastodon下的同名目录。 记得搬回.env.production到mastodon,然后再docker-compose up -d启动服务就可以了。

misaka-10201 commented 7 months ago

大佬,我按着步骤搭建到用tootctl创建管理员了,中间也没报错啥的

但是站点能打开却无法注册,登上管理员账号后又提示说工作人员正在审核你的申请,申请被批准后,你将收到一封电子邮件.

我只能收到更改密码和新设备登陆的邮件,批准邮件一直都没影,而且到了这个auth/edit界面后就跳转不到其他页面了,找了好久也不知道问题出在哪(没报错我也不知道上哪找QAQ,基本就是重装了好几遍,还是没改变).

zoho 我就直接用的管理员发送邮件,注册完加完解析就没再动它.现在就感觉是一个卡死进度的状态...

请问这是 zoho 的配置问题还是要改些其他的东西啊.

misaka-10201 commented 7 months ago

大佬,我按着步骤搭建到用tootctl创建管理员了,中间也没报错啥的

但是站点能打开却无法注册,登上管理员账号后又提示说工作人员正在审核你的申请,申请被批准后,你将收到一封电子邮件.

我只能收到更改密码和新设备登陆的邮件,批准邮件一直都没影,而且到了这个auth/edit界面后就跳转不到其他页面了,找了好久也不知道问题出在哪(没报错我也不知道上哪找QAQ,基本就是重装了好几遍,还是没改变).

zoho 我就直接用的管理员发送邮件,注册完加完解析就没再动它.现在就感觉是一个卡死进度的状态...

请问这是 zoho 的配置问题还是要改些其他的东西啊.

换了mastodon老版本就可以了,可能是新版改了些什么

mazilong-lam commented 4 months ago

@misaka-10201

大佬,我按着步骤搭建到用tootctl创建管理员了,中间也没报错啥的

但是站点能打开却无法注册,登上管理员账号后又提示说工作人员正在审核你的申请,申请被批准后,你将收到一封电子邮件.

我只能收到更改密码和新设备登陆的邮件,批准邮件一直都没影,而且到了这个auth/edit界面后就跳转不到其他页面了,找了好久也不知道问题出在哪(没报错我也不知道上哪找QAQ,基本就是重装了好几遍,还是没改变).

zoho 我就直接用的管理员发送邮件,注册完加完解析就没再动它.现在就感觉是一个卡死进度的状态...

请问这是 zoho 的配置问题还是要改些其他的东西啊.

换了mastodon老版本就可以了,可能是新版改了些什么

這個創建完帳戶後,還要批准帳戶 可以使用下面命令批准 首先登陸web容器內部 docker-compose exec web bash 然後通過tootctl命令批准用戶 tootctl accounts approve 用户名

@misaka-10201

大佬,我按着步骤搭建到用tootctl创建管理员了,中间也没报错啥的

但是站点能打开却无法注册,登上管理员账号后又提示说工作人员正在审核你的申请,申请被批准后,你将收到一封电子邮件.

我只能收到更改密码和新设备登陆的邮件,批准邮件一直都没影,而且到了这个auth/edit界面后就跳转不到其他页面了,找了好久也不知道问题出在哪(没报错我也不知道上哪找QAQ,基本就是重装了好几遍,还是没改变).

zoho 我就直接用的管理员发送邮件,注册完加完解析就没再动它.现在就感觉是一个卡死进度的状态...

请问这是 zoho 的配置问题还是要改些其他的东西啊.

换了mastodon老版本就可以了,可能是新版改了些什么

mazilong-lam commented 4 months ago

搭建完,無法上傳頭像,發嘟文圖片和視頻也都是失敗的,大佬這個是什麼導致?

pullopen commented 2 months ago

搭建完,無法上傳頭像,發嘟文圖片和視頻也都是失敗的,大佬這個是什麼導致?

是不是媒体文件夹权限问题?看看报错呢?