之前写了一篇普通方法安装 Misskey,并挖了个用宝塔面板安装的坑,现在给坑填满!
通过宝塔面板安装
利用宝塔面板安装 Misskey,相对于要输入很多行命令的手动安装,能省那么一丢丢事,但是图形化的界面对一般用户比较友好。
本教程环境为 Debian 11,利用官方文档内的 docker compose 方法来安装。官方推荐使用 ubuntu,但是debian 也可以。
安装宝塔面板不再赘述,可通过这个链接来获取命令。
登入面板,进入软件商店,我们需要安装 Nginx(默认为1.22),Docker 管理器 和 堡塔 Docker 模块 1.0:
回到命令行,安装 docker compose:
sudo apt install docker-compose -y
将 Missky 克隆到本地:
cd
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
编辑配置文档:
nano .config/default.yml
在 default.yml 中,需要修改如下内容:
# ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────
# Final accessible URL seen by a user.
url: https://example.tld/ #将域名替换为自己的域名
...
# ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────
db:
host: 172.xxx #数据库地址,需要查询 docker 中对应容器的 ip 地址
port: 5432 #数据库端口,若未修改配置则保持默认即可
# Database name
db: misskey #数据库名称
# Auth
user: example-misskey-user #数据库用户名
pass: example-misskey-pass #用户密码
# ┌─────────────────────┐
#───┘ Redis configuration └─────────────────────────────────────
redis:
host: 172.xxx #redis地址,需要查询 docker 中对应容器的 ip 地址
port: 6379 #redis端口,若未修改配置则保持默认即可
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
#pass: example-pass #访问redis的密码,若未设置则保持默认即可
#prefix: example-prefix
#db: 1
保存之后,编辑 docker.env:
nano .config/docker.env
在这里,我们需要修改数据库名,用户及密码:
# db settings
POSTGRES_PASSWORD=example-misskey-pass #数据库密码
POSTGRES_USER=example-misskey-user #数据库用户
POSTGRES_DB=misskey #数据库名称
请务必确保上面两个文档内的数据库名称,用户和密码一致,否则 Misskey 无法连接至数据库。
如果想更改容器的具体docker参数,输入以下命令进行调整,需要与上面两个文档保持一致(一般不用调整):
nano ./docker-compose.yml
确保域名已经解析到服务器上,之后创建 docker 容器:
sudo docker compose build
sudo docker compose run --rm web pnpm run init
运行以下命令来启动容器:
sudo docker compose up -d
接下来打开宝塔面板,点击左侧菜单栏的 Docker,查看三个容器是否正常运行:
如果菜单栏内没有 Docker 一栏的话,回到“软件商店”,点击“已安装”,再点击“堡塔 Docker 模块 1.0”的设置,把“左侧菜单开关”打开即可:
点击左侧菜单栏中的“网站”,点击上方的“添加网站”,输入域名,PHP版本选择“纯静态”,点击“提交”:
接下来申请一个 SSL 证书,点击刚刚添加的域名,选择“SSL“—“Let’s Encrypt”,申请一个证书,确保域名已解析到服务器上。签发证书后,打开“强制 HTTPS”,然后点击“反向代理”—“添加反向代理”,名称自定义,最好填英文,目标URL填写“http://127.0.0.1:3000/”—提交:
需要注意的是,Misskey 必须要使用 SSL,否则图片之类的媒体不能正常显示。
如果已经有了证书,可以不用宝塔申请,导入到服务器后记下公钥和密钥的绝对路径,在网站的“配置文件”修改一下位置即可。如果不想用宝塔自带的“反向代理”功能,可以直接修改一下下面的配置文档覆盖到网站的“配置文件”里(这里 Never. 推荐上述两种情况中的一种或全都有的小伙伴们使用该方法,防止出错):
# 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 你的域名;
# For SSL domain validation
root /var/www/html;
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 你的域名;
ssl_session_timeout 1d;
ssl_session_cache shared:ssl_session_cache:10m;
ssl_session_tickets off;
# To use Let's Encrypt certificate
ssl_certificate 域名申请ssl证书位置;
ssl_certificate_key 域名申请ssl证书密钥位置;
# To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings
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;
# Change to your upload limit
client_max_body_size 80m;
# Proxy to Node
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_redirect off;
# If it's behind another reverse proxy or CDN, remove the following.
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;
# For WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# Cache settings
proxy_cache cache1;
proxy_cache_lock on;
proxy_cache_use_stale updating;
add_header X-Cache $upstream_cache_status;
}
}
需要注意的是,该配置文档可能不会正常工作,需要自己加以修改。
这样,Misskey 就搭建完成了,现在我们应该可以打开网站了:
Misskey 必须要使用 SSL,否则图片之类的媒体不能正常显示。
更新 Misskey 的话,确保更新前查看更新日志,是否有提到某些关于服务器的需求。推荐更新前备份以下。
运行以下命令来更新 Misskey:
git stash
git checkout master
git pull
git submodule update --init
git stash pop
sudo docker compose build
sudo docker compose stop && sudo docker compose up -d
本篇文章可以转载,但须标注来源。
参考文献
syuilo, tamaina, 5yn74x & GNU/LongYap (2023). Create Misskey instance with Docker Compose. Misskey Setup and Installation Guide. Available at: https://misskey-hub.net/en/docs/install/docker.html (Accessed: 19th Apr. 2023).
公爵 (2022). Misskey 部署搭建笔记. Available at: https://cloud.tencent.com/developer/article/2127661 (Accessed: 19th Apr. 2023).
封面图片选自 mocha@新刊委託中 的 LOOK UP (2019). Available at: https://www.pixiv.net/artworks/74433171 .
Copyright secured by Digiprove © 2023 Never.
pgsql和redis数据库地址这里感觉有点怪,你还没有启动容器啊,哪里来的容器内的地址?
试着装了下。12个G都不够用……
misskey 确实还不是很轻量。