还在为搭建mastodon而烦恼嘛?手把手的新手教程!

发布于 2021-11-12  1280 次阅读


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硬盘也完全够用。

屏幕截图 2021-11-12 211130.png

优点:国内访问优秀,稳定性好,可以和腾讯云其他产品配套使用(例如COS等等,24小时工单,退款迅速(山鸡即可

缺点:国内厂商懂得都懂

1.2 contabo的AMD VPS

这家可谓是德国老厂,性价比超高。几欧元就可以拿到性价比超高AMD的VPS,想买的话建议等他家免设置费再买吧!(设置费都得一个月的钱了,但是直接买半年的土豪请忽略)推荐买图中第二款,性价比比第一款高,而且还带两个快照!

屏幕截图 2021-11-12 211756.png

优点:机器便宜,性能超级好,稳定性高

缺点:路由奇怪各种各样的奇葩路由(你套cf当我没说),付款需要paypal,纯英文界面对小白不友好,工单较慢

2.服务器的基础环境配置(以腾讯云centos7.6为例

2.1购买服务器

轻量购买传送门:https://buy.cloud.tencent.com/lighthouse

购买步骤如图(建议选择centos7.6,debian或者ubuntu系统

屏幕截图 2021-11-12 213507.png

2.2 重置服务器密码,放行安全组

点击添加规则按钮

屏幕截图 2021-11-12 214909.png

点击确定

屏幕截图 2021-11-12 215407.png

在这个区域点击重置密码

屏幕截图 2021-11-12 215428.png

会弹出来这个页面,输入你的新密码,等待重启即可!

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

屏幕截图 2021-11-12 221321.png

后面会弹出来是否接受服务器密钥,点击保存,之后的界面框输入你的重置的密码即可

屏幕截图 2021-11-12 221951.png

出现这样的界面即为链接成功!链接成功后运行以下命令

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后有版本显示即为安装成功

屏幕截图 2021-11-12 223219.png

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 可以看到如下容器运行

屏幕截图 2021-11-12 231638.png

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证书的注释去掉(如下图),并且把证书目录改为你自己的路径

屏幕截图 2021-11-12 233421.png

并且使用命令nginx -t查看是否设置成功

9.域名访问

用你配置的域名访问mastodon吧!enjoy it!

10.我自己搭建遇到的问题----使用cloudflare后CSS下不来

原因:由于mastodon开启了CSS验证,但cloudflare会压缩CSS,导致MD5值不正确,所以会出现白屏。

解决办法:cloudflare关闭CSS压缩即可

屏幕截图 2021-11-12 234811.png

特别感谢以下两位大佬文章

LALA https://lala.im/7634.html

https://pullopen.github.io/

更多魔改教程请前往这位大佬的教程 https://pullopen.github.io/查看