去中心化开源社交平台Misskey

本文是应网友 anthony084 的要求写的;

什么是 Misskey ?

Misskey 是一个开源、去中心化的社交媒体平台,发帖方式类似于微博和推特。 去中心化则意味着一个 Misskey 实例可以与其他 Misskey 实例进行相互连接,在 Fediverse (ActivityPub) 上,您可以与 MastodonPixelFedPeerTube 等其他平台上的人互动!

什么是 ActivityPub ?

ActivityPub 是一个去中心社交网络(decentralized social networking)的交互协议,允许软件项目通过添加 ActivityPub 支持,实现拥有完全不同代码库的应用程序之间的可互操作社交网络。

这个协议,老苏之前在写 Funkwhale 时简单介绍过

文章传送门:去中心化开源音乐服务器Funkwhale

安装

docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

这是基于官方的 docker-compose.yml 改出来的,官方原始的的写法需要自己下载代码构建镜像,但是实际上官方已经发布了镜像,而且更新非常频繁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
version: "3"

services:
web:
image: misskey/misskey:13.6.1
container_name: misskey-web
restart: always
links:
- db
- redis
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "3838:3000"
volumes:
- ./files:/misskey/files
- ./.config:/misskey/.config:ro

redis:
image: redis:6.2
container_name: misskey-redis
restart: always
volumes:
- ./rdata:/data
healthcheck:
test: "redis-cli ping"
interval: 5s
retries: 20

db:
image: postgres:14
container_name: misskey-db
restart: always
volumes:
- ./pdata:/var/lib/postgresql/data
healthcheck:
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: 5s
retries: 20
environment:
- POSTGRES_USER=misskey
- POSTGRES_PASSWORD=misskey
- POSTGRES_DB=misskey

另外还需要一个设置文件 ,原始文件在: https://github.com/misskey-dev/misskey/blob/develop/.config/docker_example.yml,里面有很多注释,有助于你理解各参数的含义,为了方便大家,老苏把注释去掉简化了一下

请将下面的内容保存为 docker.yml 文件

因为包含了中文,记得使用 utf-8 编码格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 最终用来访问的 URL
url: http://192.168.0.197:3838/

# Misskey服务器应侦听的端口
port: 3000

# PostgreSQL 设置
db:
host: db
port: 5432

# 数据库名
db: misskey

# 数据库认证,要和 docker-compose.yml 中的设置一致
user: misskey
pass: misskey

# Redis 设置
redis:
host: redis
port: 6379

id: 'aid'

proxyBypassHosts:
- api.deepl.com
- api-free.deepl.com
- www.recaptcha.net
- hcaptcha.com
- challenges.cloudflare.com

# Sign to ActivityPub GET request (default: true)
signToActivityPubGet: true
  • url:请根据自己的情况修改,如果要加入 ActivityPub 肯定是要有公网地址的,建议用域名,有端口也要带上。如果你和老苏一样使用 npm 做反代,这里可以先填局域网 IP + 端口;
  • userpass :要和 docker-compose.yml 中的设置一致;

接下来,在 SSH 客户端中执行下面的命令

1
2
3
4
5
# 新建文件夹 misskey 和 子目录
mkdir -p /volume2/docker/misskey/{.config,files,pdata,rdata}

# 进入 misskey 目录
cd /volume2/docker/misskey

docker-compose.yml 放入 misskey 根目录

docker.yml 放入 .config 目录

接下来需要初始化数据库

1
2
# 初始化数据库
docker-compose run --rm web pnpm run init

运行需要一些时间,没问题的话会看到 Migration成功的提示

现在可以一键启动了

1
2
# 一键启动
docker-compose up -d

运行

当在 misskey-web 容器日志中看到 All workers started

就可以在浏览器中输入 http://群晖IP:3838 开始访问了,默认就支持中文,需要先配置管理账号

登录成功后的主界面

发个帖子

发帖成功

功能就留给大家慢慢摸索吧

反向代理

如果要远程使用,或者加入 ActivityPub,需要做反代处理,还是以 npm 为例

老苏还是习惯全部勾选

只是随便点了点,暂时没发现有什么异常

参考文档

misskey-dev/misskey: 🌎 An interplanetary microblogging platform 🚀
地址:https://github.com/misskey-dev/misskey

Create your own Misskey instance | Misskey Hub
地址:https://misskey-hub.net/en/docs/install.html#using-docker