Misskey去中心化社区搭建文档(宝塔版)
前言
微博、推特(X)等中心化社交平台,我们早已习惯。但在这些平台上,我们无法真正掌控自己的数据——平台一旦倒闭、被收购或改变规则,用户只能被动接受。如果你追求数据自托管、去中心化、隐私自由,或者只是想为朋友搭建一个私密的小社区,那么 Misskey 或许是一个理想的选择。
Misskey 是一个基于 ActivityPub 协议的去中心化开源社交平台。与推特不同,Misskey 不是一个单一的网站,而是一个由无数个独立实例(服务器)组成的分布式网络。每个实例都可以高度自定义,最重要的是——你可以随时删除、导出或迁移自己的数据,真正掌握数据主权。
项目地址:https://github.com/misskey-dev/misskey
这个日本团队开发的联邦式社交平台,支持:
• 图文/视频动态发布
• 跨平台内容互通(Mastodon/Pixelfed等)
• 个性化UI自定义
• 云端文件存储
四大核心
- 去中心化架构:数据不再被大厂垄断,想删帖就删帖
- 表情包核弹库:内置上千个魔性颜文字,聊天自带弹幕效果
- 隐私保护模式:支持端到端加密私聊,告别偷窥狂
- 二次元友好:日系界面设计,还能给帖子打上专属标签
💡 小提示:使用 Misskey 不一定需要自建。你可以先访问 Misskey 服务器列表 加入一个喜欢的实例。但如果你有自建需求,并且愿意投入精力维护,那就继续往下看吧!
准备工作
在开始之前,请确保你已准备好以下资源:
必须项
- 一台服务器:至少 2 核 CPU、1.5GB 空余内存,推荐使用海外或港澳台服务器(网络更稳定)。
- 一个域名:选定后请勿更换,因为 Misskey 实例的 URL 是固定的。
- Docker 环境:Misskey 官方推荐使用 Docker 部署,方便快捷。
非必须但推荐
- 对象存储 OSS:用于存储用户上传的图片、文件,减轻服务器压力。
- SMTP 发件服务器:用于发送注册验证、通知邮件。
- 人机验证服务(如 Cloudflare Turnstile、reCAPTCHA):防止机器人注册。
如果你还没有服务器,可以考虑一些口碑较好的 VPS 服务商,例如小兔互联。
准备工作
- 一台 VPS 服务器(建议至少 2 核 CPU、2GB 内存)
- 一个已经解析到服务器的域名
- 宝塔面板
- 基本的 Linux 操作知识
第一步:安装必要软件
登录宝塔面板,进入 软件商店,搜索并安装以下软件:
- Nginx(默认版本 1.22 即可)
- Docker 管理器(用于管理 Docker 容器)
- 堡塔 Docker 模块 1.0(增强 Docker 管理功能,安装后需在左侧菜单栏开启显示)
安装完成后,打开宝塔的 终端(或通过 SSH 登录服务器),执行以下命令安装 Docker Compose:
sudo apt update
sudo apt install docker-compose -y第二步:克隆 Misskey 仓库
在服务器上选择一个合适的目录(例如 /home),克隆 Misskey 的官方仓库:
cd /home
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master第三步:复制配置文件
将示例配置文件复制为实际使用的文件:
cp .config/docker_example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env
cp ./docker-compose.yml.example ./docker-compose.yml第四步:修改配置文件
1. 编辑 default.yml
nano .config/default.yml需要重点关注以下几项:
URL:将
url: https://example.tld/修改为你的域名,例如:url: https://misskey.yourdomain.com数据库配置:找到
db部分,修改数据库名称、用户和密码。注意,这里的host不能写localhost或127.0.0.1,而需要填写 Docker 容器的 IP 地址。我们先留空,稍后获取。db: host: 172.xx.xx.xx # 稍后填写 PostgreSQL 容器的 IP port: 5432 db: misskey user: misskeyuser pass: your_strong_passwordRedis 配置:类似地,
host需要填写 Redis 容器的 IP。redis: host: 172.xx.xx.xx # 稍后填写 Redis 容器的 IP port: 6379
如何获取容器 IP?
可以先启动一次容器(docker-compose up -d),然后执行docker inspect misskey_db_1查看 PostgreSQL 容器的 IPAddress,Redis 同理。获取到 IP 后,再编辑default.yml填入,然后重启容器。
2. 编辑 docker.env
nano .config/docker.env设置与 default.yml 一致的数据库信息:
POSTGRES_PASSWORD=your_strong_password
POSTGRES_USER=misskeyuser
POSTGRES_DB=misskey3. 可选:修改 docker-compose.yml
如果需要调整端口映射或其他参数,可以编辑 docker-compose.yml。默认情况下,Misskey Web 服务会映射到宿主机的 3000 端口,无需修改。
第五步:构建并初始化容器
首先,确保你的域名已经解析到服务器 IP。然后执行以下命令构建 Docker 镜像(此过程可能需要 5-10 分钟,取决于服务器性能):
docker-compose build构建完成后,初始化数据库:
docker-compose run --rm web pnpm run init此命令会创建数据库表结构,并提示你输入管理员信息(稍后在 Web 界面完成亦可)。
最后,启动所有容器:
docker-compose up -d此时,Misskey 应该已经在后台运行,监听本地的 3000 端口。
第六步:配置 Nginx 反向代理
回到宝塔面板,点击左侧 网站,然后点击 添加站点:
- 域名:填写你的 Misskey 域名(如
misskey.yourdomain.com) - PHP版本:选择 纯静态
- 其他保持默认,点击 提交
接下来为该站点申请 SSL 证书:
- 点击新添加的站点,进入 SSL 选项卡。
- 选择 Let's Encrypt,勾选域名,点击 申请。确保域名已正确解析。
- 申请成功后,打开 强制 HTTPS。
然后配置反向代理:
- 在站点设置中,点击 反向代理 → 添加反向代理。
- 名称:随意填写,如
misskey。 - 目标URL:填写
http://127.0.0.1:3000(因为 Misskey 运行在本地的 3000 端口)。 - 点击 提交。
此时,访问你的域名应该就能看到 Misskey 的初始化页面了。
备用方案:手动修改 Nginx 配置
如果宝塔自带的反向代理功能无法正常工作(例如 WebSocket 连接失败),可以手动修改 Nginx 配置文件。点击站点设置中的 配置文件,将内容替换为以下示例(记得修改域名和 SSL 证书路径):
# For WebSocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
server {
listen 80;
listen [::]:80;
server_name misskey.yourdomain.com;
# For SSL domain validation
location /.well-known/acme-challenge/ { allow all; }
location /.well-known/pki-validation/ { allow all; }
location / { return 301 https://$server_name$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name misskey.yourdomain.com;
# SSL 证书路径(根据实际情况修改)
ssl_certificate /www/server/panel/vhost/cert/misskey.yourdomain.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/misskey.yourdomain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:ssl_session_cache:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
client_max_body_size 80m;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
# WebSocket support
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# Cache
proxy_cache cache1;
proxy_cache_lock on;
proxy_cache_use_stale updating;
add_header X-Cache $upstream_cache_status;
}
}保存配置后,重载 Nginx 服务即可。
第七步:初始化 Misskey 实例
在浏览器中访问你的域名,你应该会看到 Misskey 的初始化向导。按照提示填写:
- 管理员信息:邮箱、密码等
- 实例设置:实例名称、简介、是否开放注册等
完成后,点击 开始,即可进入你的 Misskey 实例!
日常管理与更新
启动/停止容器
cd /home/misskey
docker-compose stop # 停止
docker-compose start # 启动
docker-compose restart # 重启更新 Misskey 版本
git stash
git checkout master
git pull
git submodule update --init
git stash pop
docker-compose build
docker-compose stop && docker-compose up -d查看日志
docker-compose logs -f web常见问题
1. 数据库连接失败
检查 default.yml 中的数据库主机 IP 是否正确,以及 docker.env 中的密码是否匹配。如果使用容器 IP,确保容器已启动并获取了正确 IP。
2. 图片无法上传或显示
确保 Nginx 配置中 client_max_body_size 足够大(例如 80m),并且 Misskey 的对象存储设置正确。如果未配置对象存储,默认使用本地存储,需确保磁盘空间充足。
3. 联合(Federation)失败
检查域名是否可以公开访问,SSL 证书是否有效,以及 /.well-known 路径是否被正确代理。确保 Nginx 配置中包含对 /.well-known 的特殊处理(如证书验证)。
基本管理操作
作为管理员,你可以通过“控制面板”对实例进行各种设置。
- 生成邀请码:适用于不开放注册的实例,只有持邀请码的用户才能注册。
- 上传自定义表情符号:支持在帖子、聊天甚至昵称中使用。
- 常规设置:修改实例名称、描述、图标等。
- SMTP 设置:配置邮件服务器,用于发送验证和通知邮件。
- 对象存储:配置 OSS(如 S3、MinIO),将用户文件存储到云端,减轻服务器负担。
- 人机验证:推荐使用 Turnstile 或 reCAPTCHA,防止恶意注册。
结语
至此,你已经成功搭建了一个属于自己的 Misskey 实例!它不仅是一个社交平台,更是一个去中心化网络中的节点。你可以尝试关注其他实例的用户——例如,访问 https://你的域名/@用户名@其他实例域名,即使对方不在你的服务器注册,也能轻松互动。
Misskey 的可玩性远不止于此:主题定制、插件扩展、机器人开发……等待你去探索。
通过宝塔面板,我们成功搭建了一个属于自己的 Misskey 实例。现在你可以邀请朋友加入,或者将其作为一个私密的社交空间。Misskey 的魅力不仅在于去中心化,还在于极高的自定义性——表情符号、主题、插件等都可以随心调整。享受 DIY 的乐趣吧!
最后提醒一下:如果计划开放注册,请务必量力而行,确保服务器资源充足,并制定清晰的社区规则,善用管理工具维护社区秩序。
如果在搭建过程中遇到任何问题,欢迎在评论区留言交流。