Mastodon(长毛象)博客的建立


经验分享539 阅8 评

初识

在我当初接触的博客的时候,我就接触到了这个开源项目。但是因为当时口袋囊涩,1H2G的配置实在是消费不起,就没有接触了。

转变

而现在,我对它的规划使我重新对它感了兴趣。当时的第一印象是,一个需要和别人交互的程序。但是现在想想,好像交互也不是必须的,它只是提供了一个优雅地方案。我可以只当做一个个人的小吐槽,如果有其他星球的人来唠嗑,当然也是欢迎的,甚至还可以互相关注。因此,我开始了Mostodon之旅。

安装

官方提供的方案都是实机安装,但是因为我东西比较多,就找了一个第三方大佬封装的Docker镜像。因为并不是参考了一篇文章就成功了,所以我把所有的链接放在最后了。

这里就记录一下,我配置的流程和遇到的问题。

# 创建目录并进入
mkdir -p /opt/app/mastodon && cd /opt/app/mastodon

# 预先拉取镜像 很大需要等一段时间
docker pull mashirozx/mastodon

# 拉取docker-compose配置文件 我将其中的always改为了unless-stopped
wget https://raw.githubusercontent.com/d1258zzz/mastodon/master/docker-compose.yml

# 创建配置文件 用来预先配置服务器
touch .env.production

# 对服务器进行预先配置
docker-compose run --rm web bundle exec rake mastodon:setup

到了这一步,会有很多的配置需要填写,注意不要填错,填错了就需要重新配置,还是比较麻烦的。

Your instance is identified by its domain name. Changing it afterward will break things.
Domain name:
这里输入您准备给mastodon的域名。
Do you want to enable single user mode? (y/N)
一般来说都是N,除非你只是用作仅供自己使用的站点,(这样显然少了很多乐趣
Are you using Docker to run Mastodon? (Y/n)
你在用DOCKER运行Mastodon嘛? Of course!
然后下面关于pgsql和redis的设置直接默认,一路回车就好
PostgreSQL host: db
PostgreSQL port: 5432
Name of PostgreSQL database: postgres
Name of PostgreSQL user: postgres
Password of PostgreSQL user:
Database configuration works! 

Redis host: redis
Redis port: 6379
Redis password:
Redis configuration works! 

Do you want to store uploaded files on the cloud? (y/N)
如果您需要将文件存储在您的对象中,可以Y
Do you want to send e-mails from localhost? (y/N)
默认N,应该也没几个机器能够SMTP发件吧

这里需要准备一个邮箱,支持stmp发件,并还不能有ssl加密/非常迷惑
我这里用的是126邮箱。

Do you want to send e-mails from localhost? No
SMTP server: smtp.126.com
SMTP port: 25
SMTP username: @126.com
SMTP password:
SMTP authentication: plain
SMTP OpenSSL verify mode: none
E-mail address to send e-mails "from": @126.com
Send a test e-mail with this configuration right now? Yes
Send test e-mail to: @qq.com

This configuration will be written to .env.production
Save configuration? Yes
Below is your configuration, save it to an .env.production file outside Docker:

然后再下面你就会看到一段很长的内容,是的,他将被写入.env.production,这里有你的配置信息,将他复制下来备用!!!

Now that configuration is saved, the database schema must be loaded.
If the database already exists, this will erase its contents.
Prepare the database now? Yes
Running RAILS_ENV=production rails db:setup ...

Database 'postgres' already exists
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Switching object-storage-safely from green to red because Redis::CannotConnectError Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Done!

All done! You can now power on the Mastodon server ?

连不上redis正常,因为这时候redis没有运行……

Do you want to create an admin user straight away? (Y/n)
配置管理员账号
Username:
E-mail:
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Switching object-storage-safely from green to red because Redis::CannotConnectError Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
You can login with the password: xxxxxxxxxxxxxxx
You can change your password once you login.
在配置完邮件的时候,系统会询问你是否需要记录配置,记得把配置粘贴出来备用,最后管理员账号可以先不用创建。

然后将上面输出的配置文件粘贴到.env.production中。

# 给文件夹添加权限
chown 991:991 -R ./public

# 启动Mastodon
docker-compose up -d

遇到的问题

邮件配置一直无法通过

我是试过了zoho和网易域名邮箱,不知道为什么一直无法通过。最后,在网易163创建了一个专属账号,并使用25端口才通过。原文中作者说是非SSL才能通过,这个不知道是什么问题。

启动后加上反向代理无法访问

因为docker-compose配置文件是作者根据自己的需求定制的,所以并没有暴露端口服务;将配置文件中web服务的127.0.0.1:3000改为0.0.0.0:3000就可以了。

管理员用户创建失败

我观察日志貌似是执行的命令不存在,于是找了官方的文档看了一下,好像是换了新的脚本。

# 我们需要进入web服务容器内部执行命令 根据自己的实例名称进入
docker exec -it mastodon_web_1 bash

# 指定用户为管理员 这里以用户名为alice的用户为例
RAILS_ENV=production bin/tootctl accounts modify alice --role Admin

# 创建一个全新账户 这里以用户名为alice的用户为例 随机密码会显示在终端 记得更改
RAILS_ENV=production bin/tootctl accounts create \
  alice \
  --email alice@example.com \
  --confirmed \
  --role Admin
如果是创建管理员失败的情况 那么你的密码还没有输入 这个时候就需要自己找回

中文文档中admin为全部小写,但是会报错,搜索了官方的issue后发现 官方权限都是首字母大写

目前就是上面的一些问题,暂时还没有发现新的问题。

参考链接

最后说两句

一直以来,我都是想方设法在博客加一个说说。其实现在想想,完全没有必要。因为显得很突兀,但是这个开源微博的存在,就使得这个方便了起来。数据既存在自己的服务器,又可以和别人交互,还可以通过手机电脑等客户端快速记录新鲜事,这一切看起来是多么的美好。

但是再美好的介绍还是需要亲身体验,我打算先自己用一段时间,如果觉得还行,就放在主站一个链接,有兴趣的朋友,可以建立一下联邦,一起玩耍。

最后更新 2022-08-14
评论 ( 8 )
OωO
隐私评论
  1. 现在的这个博客吗?

    1个月前北京市回复
    1. @TeacherDu

      不是 mastodon可以看成微博开源版,目前先随便发一些,还有一些问题没有解决,等我研究明白了,在安利大家用

      1个月前福建省厦门市回复
  2. 看起来还是不错的,有空了装个玩玩

    3个月前河南省郑州市回复
    1. @老刘

      还是挺有趣的 毕竟我的朋友圈也没啥能放得了

      3个月前福建省厦门市回复
  3. what is this

    3个月前重庆市回复
    1. @牧羊人博客

      可以把它当成是开源的微博 只不过你可以和其他站点之间互动 也可以开放其他人使用。

      3个月前福建省厦门市回复
  4. 可以的。我还是个菜鸟,docker没玩过,哈哈

    3个月前河南省郑州市回复
    1. @Rose

      有时间可以玩一下,还是挺好玩的,教程也比较简单

      3个月前福建省厦门市回复