利用宝塔面板安装 Misskey

之前写了一篇普通方法安装 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 .

Digiprove sealCopyright secured by Digiprove © 2023 Never.