Mastodon(又称长毛象或万象)是一个免费开源的去中心化的分布式微博客社交网络。它的用户界面和操作方式跟推特和微博类似,但是整个网络并非由单一机构运作,却是由多个由不同营运者独立运作的服务器以联邦方式交换数据而组成的去中心化社交网络。每个Mastodon的营运站点被称为“实例(Instance)”,用户可到任何开放登记的实体登记,任何一个实体上的用户可以与其他实体上的用户沟通。用户在推特中发布的内容称为“推文”,而在Mastodon中发布的内容则称为“嘟文(Toot)”,用户可以调整隐私设置限制嘟文被其他人或实体读取或查看。
由于使用docker便捷,而且迁移方便我更推荐用docker部署mastodon
1.服务器的选购建议
由于长毛象需要的配置较高而且较吃硬件,要想运行长毛象,你必须要有一个较高配置的服务器(1核1G就别想了,老老实实miiskey吧)。我推荐的配置是2核4g加上2GB的swap,和较大的硬盘(80G以上),这里我推荐几个卖服务器的好去处。
1.1 腾讯云香港轻量应用服务器
腾讯云,国内大厂稳定性自然不用说,而且香港的线路也足够好,日常使用完全没有问题。建议购买67块钱的那一款,2核AMD的U,4G内存,80GB硬盘也完全够用。
优点:国内访问优秀,稳定性好,可以和腾讯云其他产品配套使用(例如COS等等,24小时工单,退款迅速(山鸡即可
缺点:国内厂商懂得都懂
1.2 contabo的AMD VPS
这家可谓是德国老厂,性价比超高。几欧元就可以拿到性价比超高AMD的VPS,想买的话建议等他家免设置费再买吧!(设置费都得一个月的钱了,但是直接买半年的土豪请忽略)推荐买图中第二款,性价比比第一款高,而且还带两个快照!
优点:机器便宜,性能超级好,稳定性高
缺点:路由奇怪各种各样的奇葩路由(你套cf当我没说),付款需要paypal,纯英文界面对小白不友好,工单较慢
2.服务器的基础环境配置(以腾讯云centos7.6为例
2.1购买服务器
轻量购买传送门:https://buy.cloud.tencent.com/lighthouse
购买步骤如图(建议选择centos7.6,debian或者ubuntu系统
2.2 重置服务器密码,放行安全组
点击添加规则按钮
点击确定
在这个区域点击重置密码
会弹出来这个页面,输入你的新密码,等待重启即可!
2.3链接服务器SSH
有很多服务器SSH终端:putty,Xshell,termius....等等
我这里以Xshell为例
Xshell安装步骤
2.3.1安装xshell
访问xshell官网 https://www.netsarang.com/zh/free-for-home-school/
填写你的邮箱,姓名(随便写呗,又没人查),选择xshell,下载链接会发送到你的邮箱里,点开下载就行。(下的慢就科学呗)
2.3.2链接服务器ssh
点击如图所示的圈圈,填入服务器ip,用户名填root
后面会弹出来是否接受服务器密钥,点击保存,之后的界面框输入你的重置的密码即可
出现这样的界面即为链接成功!链接成功后运行以下命令
yum install curl git #centos
apt install curl git #ubuntu debian
3.安装docker和docker-compose
命令如下(直接复制粘贴到xshell,注意一个命令一个命令复制
curl -fsSL https://get.docker.com | bash #安装docker
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose #安装docker-compose
chmod +x /usr/local/bin/docker-compose #赋予docker-compose可执行权限
docker -v
docker-compose -v
最后输入docker-v和docker-compose -v后有版本显示即为安装成功
4.拉取mastodon源码
这里我计划把mastodon文件放在 /root/mastodon 文件路径下,你也可以自行修改
git clone https://github.com/tootsuite/mastodon.git #从github克隆源码
cd mastodon
cp .env.production.sample .env.production #复制一份.env.production文件
rm -rf docker-compose.yml #删除源码自带的docker-compose.yml
下面我们自己写一份docker-compose.yml文件
touch docker-compose.yml #创建docker-compose.yml文件
nano docker-compose.yml #编辑文件
写入以下内容
version: '3'
services:
db:
image: postgres:9.6-alpine
shm_size: 256mb
environment:
POSTGRES_DB: mastodon
POSTGRES_USER: mastodon
POSTGRES_PASSWORD: 改成你的密码
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:6.0-alpine
healthcheck:
test: ["CMD", "redis-cli", "ping"]
volumes:
- ./redis:/data
restart: unless-stopped
mastodon-web:
image: tootsuite/mastodon
env_file: .env.production
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000"
depends_on:
- mastodon-db
- mastodon-redis
healthcheck:
test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:3000/health || exit 1"]
ports:
- "127.0.0.1:3000:3000"
volumes:
- ./public/system:/mastodon/public/system
restart: unless-stopped
mastodon-streaming:
image: tootsuite/mastodon
env_file: .env.production
command: node ./streaming
depends_on:
- db
- redis
healthcheck:
test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1"]
ports:
- "127.0.0.1:4000:4000"
restart: unless-stopped
mastodon-sidekiq:
image: tootsuite/mastodon
env_file: .env.production
command: bundle exec sidekiq
depends_on:
- db
- redis
volumes:
- ./public/system:/mastodon/public/system
restart: unless-stopped
使用组合键ctrl+s保存,再使用ctrl+x退出
5.mastodon配置smtp邮件发送(搬运自这位博主)
建议参考这位博主的例子: 传送门(我就懒得重复造轮子)
大致来说配置zoho邮箱----解析域名---配置发件域名-----获取smtp即可
总体来说你需要拿到以下信息:
1.你的smtp server
2.你的邮箱名
3.你的邮箱密码
示例如下
SMTP server: smtp.zoho.eu
port: 587
user: 你设置的邮箱名
password: 你对该邮箱设置的密码
authentication: plain
OpenSSL verify mode: none(这两步可以按两下回车)
from: 你设置的邮箱名
其实QQ邮箱,gmail,outlook都支持,大家具体可以搜索一下配置smtp的方法
6.根据mastodon的引导安装mastodon
cd /root/mastodon
docker-compose run --rm mastodon-web bundle exec rake mastodon:setup #启动mastodon安装向导
Domain name: # 填写你的域名
Do you want to enable single user mode? # Yes
Are you using Docker to run Mastodon? # Yes
PostgreSQL host: # db
PostgreSQL port: # 5432
Name of PostgreSQL database: # mastodon
Name of PostgreSQL user: # mastodon
Password of PostgreSQL user: # 填你在compose内设置的密码
Redis host: # mastodon-redis
Redis port: # 6379
Redis password: # 留空,直接回车
Do you want to store uploaded files on the cloud? # No
Do you want to send e-mails from localhost? # Yes
Send a test e-mail with this configuration right now? # No
Save configuration? Yes
然后会引导你设置管理员账号和密码注意保存哦!
7.正式运行mastodon
这一切都弄好之后就可以运行mastodon啦!
chown -R 991:991 public#赋予public目录权限
docker-compose up -d
运行完后使用命令 docker ps 可以看到如下容器运行
8.使用nginx配置反向代理
yum install nginx #centos
apt install nginx #debian,ubuntu
cd /etc/nginx/conf.d/
nano mastodon.conf
打开 https://github.com/mastodon/mastodon/blob/main/dist/nginx.conf
fork一份nginx.conf并且修改
1.将example.com改为你的域名
2.将/home/mastodon/live/public路径改为/root/mastodon/live/public
3.将SSL证书的注释去掉(如下图),并且把证书目录改为你自己的路径
并且使用命令nginx -t查看是否设置成功
9.域名访问
用你配置的域名访问mastodon吧!enjoy it!
10.我自己搭建遇到的问题----使用cloudflare后CSS下不来
原因:由于mastodon开启了CSS验证,但cloudflare会压缩CSS,导致MD5值不正确,所以会出现白屏。
解决办法:cloudflare关闭CSS压缩即可
特别感谢以下两位大佬文章
LALA https://lala.im/7634.html
更多魔改教程请前往这位大佬的教程 https://pullopen.github.io/查看
Comments | 8 条评论
博主 iVampireSP
我还记得当时我为了搞发送邮件想法设法找支持的服务商,随后后来改了一下OpenSSL设置结果成功了
不得不说,Mastodon的邮件那块设计是真的迷
博主 admin
@iVampireSP 确实,我用微软的stmp一直发不出去,最后实在没办法用了zoho。。。
博主 2257489972
请教一下,在【8.使用nginx配置反向代理】-fork一份nginx.conf并且修改,这一部分我没太懂,我看nginx.conf和sites.available的conf文件是一样的内容,最后运行nginx -t 校验提示出错:
“nginx: [emerg] duplicate upstream "backend" in /etc/nginx/sites-enabled/我的域名:6”
请问大佬这个是啥原因呢?
博主 admin
@2257489972 这个是配置文件的第六行有问题,然后看看你的的报错日志,它具体在/var/log/nginx/error.log中。我估计是你有重复的配置错误,不然然后就启动不了了。
博主 DragonJay
用Docker搭建的实例没法运行机器人吧,我想弄个推特转移mostodon的bot,申请了应用,把账户设置成机器人,结果还是出错,但是在其他用常规方法部署的网站上测试可以
博主 admin
@DragonJay 应该也可以弄bot啊,白猫大佬的小森林就是docker搭的,他在上面有很多机器人啊。是不是那个步骤没做对?
博主 DragonJay
@admin 不知道,我就是用了白猫大佬的推特机器人,结果就出错了,无论搭的是魔改版还是原版,都会出错,其他的使用上没什么问题
博主 DragonJay
@DragonJay 项目地址:https://github.com/mashirozx/tweet2toot