暑假的时候就开始折腾mastodon了,只不过那个时候没有更新博客就没有做记录。mastodon的Docker方式部署,网上教程很多,我这也是东借西借,才形成了适合自己的部署方法。
什么是mastodon,Mastodon 是一款开源软件,它催生了一系列替代性社交媒体网站。Mastodon 是互联网上最大的去中心化社交网络。 它不是一个网站,而是由独立社区节点及其数以百万计的用户组成的网络,所有这些用户都能够无缝地相互交流。 无论你进入哪一个节点,你都可以与所有在 Mastodon 的人之间进行交流。
自建mastodon是很吃资源的,起步需要要求VPS的配置是2C2G,目前我的mastodon是部署在酷鸭数据的香港VPS上,速度还不错。目前我开启了全文搜索的情况下,内存占用达到3.4G。所以如果你的VPS配置不高的情况下,就不要折腾mastodon了,不过有一个很好的轻量级的替代品GoToSocial,内存占用才一百来M。
如果不自建而想体验mastodon的话,可以直接使用官方的mastodon.social或使用长毛象中文网cmx.im,我们俗称“草莓县”!
设置SWAP虚拟内存
mastodon比较吃内存,所以一般情况下,我们都会设置SWAP,SWAP的大小一般和物理内存相等即可。因为我们是在宝塔面板下操作的,所以能直接在面板操作就直接在面板操作,省得用命令了。
在软件商店里安装“Linux工具箱”,数秒安装完成后,打开Linux工具箱,找到“Swap虚拟内存”项,直接填写即可。
创建mastodon目录
在宝塔面板文件管理器里,直接在你想要的位置创建目录。比如我是创建在/www/mastodon/mastodon下的,因为数据盘就是挂载在www的目录下。
拉取镜像、修改docker-compose.yml配置文件
使用ssh工具远程连接到服务器,并进入到刚才创建的目录
cd /www/mastodon/mastodon
拉取镜像
如果需要升级到某指定版本,请将latest改成v4.4.3等版本号。
docker pull ghcr.io/mastodon/mastodon:latest
下载docker-compose.yml文件
wget https://raw.githubusercontent.com/mastodon/mastodon/main/docker-compose.yml
在宝塔面板文件管理器下,进入mastodon目录,打开docker-compose.yml文件,修改web、streaming、sidekiq分类下的image: ghcr.io/mastodon/mastodon后的版本号,可是加:latest”,也可以直接使用指定版本,比如“v4.4.3”。
开启全文搜索
我是直接在部署的时候就开启全文搜索,后期开启也可以。把docker-compose.yml文件里"es"分类的注释#号全删掉。注意这里有个坑,就是删掉es前的#号后,还得要再删除一个空格,前面空两格,否则安装时会报错。同时在web分类下把“- es”前的注释#号也删掉。
注意:开启全文搜索后,内存占用近1G,所以如果配置低的话,建议把这个功能关掉。
初始化PostgreSQL
初始化数据库
注意初始化代码中,一定要把mastodon目录修改为你自己创建的目录。
docker run --name postgres14 -v /www/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=设置数据库管理员密码 --rm -d postgres:14-alpine
进入数据库
docker exec -it postgres14 psql -U postgres
创建mastodon用户
CREATE USER mastodon WITH PASSWORD '数据库密码(最好和数据库管理员密码不一样)' CREATEDB;
退出数据库
\q
停止Docker
docker stop postgres14
配置Mastodon
创建.env.production文件
进行mastodon根文件夹中创建空白.env.production文件,可以用下面命令,也可以直接在宝塔面板下新建。
touch .env.production
运行引导
docker-compose run --rm web bundle exec rake mastodon:setup
引导安装过程就不赘述了,因为看不懂,我是直接用微信截图翻译的,笨人有笨办法。运行到最后,出现下面显示后,把下面的所有数据复制下来,粘贴到.env.production文件里。
Below is your configuration, save it to an .env.production file outside Docker:
注意,因为我开启了全文搜索功能,所以务必在.env.production文件里添加下面代码
ES_ENABLED=true
ES_HOST=es
ES_PORT=9200
启动Mastodon
docker-compose down
docker-compose up -d
文件夹赋权
chown 991:991 -R ./public
chown -R 70:70 ./postgres14
如果目录内也有elasticsearch文件夹后,也对其赋权。这个是全文搜索功能需要的。
chown 1000:1000 -R elasticsearch
再次重启Mastodon
docker-compose down
docker-compose up -d
到目前为止,全部完工。如果不出意外的话,查看下Docker容器,应该是有6个。其中可以看到mastodon-es-1这个容器占用内存就近1G,他就是全文搜索!
配置图片上传至第三方存储
我设置是把图片上传至CF的R2存储中,方法是在.env.production文件里添加以下代码,不懂的可以问AI,不要忘了把XXX换成自己的KEY!配置完后,重启mastodon搞定!
# 文件上传配置
S3_ENABLED=true
S3_PROTOCOL=https
S3_ENDPOINT=https://XXXXXXXXXXXXXX.r2.cloudflarestorage.com/
S3_ALIAS_HOST=img.suo.si
S3_HOSTNAME=img.suo.si
S3_BUCKET=XXXX
S3_REGION=auto
AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXu
新建网站,进行反代
把这个茬给忘了,在蜗牛的提醒下添加一条,可以参考《宝塔面板反向代理,用域名访问Triliu》。不过最新的宝塔面板,“网站”选项里里就有“新建反代”,设置原理是一样的。这样的好处就不会产生网站目录,更为方便易于管理。
全文看下来,宝塔是可有可无的。
缺了宝塔反代的部分。
@大大的小蜗牛: 哈哈,确实。
直接sudo docker-compose up -d 就完了。
@大大的小蜗牛: 哈哈,我是标题党,反代加上了。
看样子我的小水管机怕是不行了
@满心: 对宽带要求不大,对硬盘要求也不大。
@满心: 主要是内存。
memos不好玩,被我卸载了,有机会搭建一个长毛象玩玩。
@邹江: memos我是舍不得,感觉记录“每日动态”真的不错。
中文网域名错了
@西风: 唉,写后不检查的毛病一直有,一直犯,呵。
宝塔的作用就是修改一下文件吗?直接nano不就好了,😅
@老刘: 没用过nano,我都是直接在宝塔里。。。标题党!!
这名字听起来蛮不错的 内存占用达到3.4左右 很多小机子就已经吃不消了
@刘郎: 什么名字?所思?
我决定了,以后要跟着你们一起学习反代,毕竟我也是拥有宝塔主机的人了。
@林三: 你是想把你家里的小主机用来做站?
@老张: 之前确实是这么想的,也这么做了,然后域名就被阿里云永久封禁了
@林三: 那你还得要找个香港的机才行。
@老张: 香港主机和国内主机我都有的
配置图片上传至第三方存储如果就是本地上传不使用CF的,但是想通过子域名,设置了 CDN_HOST,一直是错误, 要么就是css js全部被搞的走了这个cdn域名,整站打不开,要不就是上传还是根目录,这个如何解决啊。 ai给不了方案
@西风: 这个我还没有试呢,我都是直接三方存储,因为本地的话,文件会很在大。20G+
Docker官方要停止运维了吗?