Misskey的其他安装方法

Shell脚本注意事项

如果您所做的只是复制和粘贴,那么 shell 脚本就可以了,单击此处了解有关 shell 脚本及其使用方法的更多信息!

关于本文

在本文中,我们按照Misskey 构建指南(手册)中的介绍使用 systemd 运行 Misskey。

使用docker-compose,您应该能够更轻松地手动完成它。

警告

一旦开始使用数据库,请勿使用服务器的域名/主机名重新创建数据库!

介绍

在这篇文章中,我们将根据Misskey搭建手册,一步步讲解如何在通用的Ubuntu服务器上安装并发布Misskey 。

只需输入Bash命令,编辑一些配置文件,操作浏览器即可完成设置。对于要安装的软件有简单的说明,不过不用担心。

本文重点关注特殊性,重点关注特定环境。

由于操作系统差异、Misskey 本身或依赖软件的版本更新等原因,可能会出现一些变化,敬请谅解。

当遇到不懂的单词时,我希望你可以在“看起来有道理的IT词汇表”中查找它们,这样即使你不明白,你也能感觉自己明白了。

环境和条件

  • 操作系统使用Ubuntu 22.04.1 LTS 。
  • 至于硬件要求,如果CPU是最新的,则可以在最低限度上运行。该架构假定 amd64 和 arm64。
  • 您只需要大约 1.5GB 内存。(随着Vite等的引入,现在可以用1.5GB左右来构建)
  • 购买您自己的域名并使用 CloudFlare。
  • 使用Google Domains等提前准备域名。
  • 此处,我们将使用域名 example.tld 进行说明,因此请根据需要将其替换为您购买的域名来阅读。开发环境中,读取为localhost(配置文件部分单独说明)

警告

一旦开始使用服务器,切勿更改服务器的域名/主机名!

Nano的使用方法

这次我将使用nano作为文本编辑器。像这样开始:

nano /path/to/file

您可以使用标准箭头按钮、Home/End 等移动光标。

要退出,请按 Ctrl+X,当询问是否要保存更改时,输入 Y(是)并按 Enter 保存。

底部将显示命令列表,因此将 ^ 视为 Ctrl,将 M- 视为 Alt 以供参考。

创建用户

最好不要以 root 身份运行 Misskey,因此创建一个专用用户。

sudo adduser --disabled-password --disabled-login misskey

尖端

在开发环境的情况下,不需要隔离用户。

基本软件安装和配置

执行基本软件安装。

Node.js

Node.js 是服务器端 JavaScript 环境,是 Misskey 的基础执行环境。

sudo rm /usr/share/keyrings/nodesource.gpg;
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg;
NODE_MAJOR=20; echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list;
sudo apt update;
sudo apt install -y nodejs;

# Node.jsがインストールされたので、バージョンを確認する。
node -v

# corepack enable
sudo corepack enable

如果显示v20.xx等就OK了。如果显示v8.xx等较低版本,则说明安装未正确,请尝试重新启动服务器并重新安装。

PostgreSQL

PostgreSQL是一个对象关系数据库管理系统,是Misskey中存储各类数据的必备软件。

安装

运行 shell 脚本并安装最新版本 (v15)。

sudo apt install -y postgresql-common

sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -i -v 15;

# systemctlでデーモンの状態を確認。
systemctl status postgresql

如果是活跃的就OK了。

创建用户和数据库

启动 psql。

sudo -u postgres psql

创建一个与 Misskey 一起使用的用户。
如果用户名是misskey,密码是hoge,则如下所示:
(Linux用户和PostgreSQL用户是不同的,所以要小心不要混淆。)

CREATE ROLE misskey LOGIN PASSWORD 'hoge';

创建数据库。数据库名称为 mk1。

CREATE DATABASE mk1 OWNER misskey;
¥q

Redis

Redis 是 NoSQL 内存数据库软件,是管理数据库和与联盟通信所必需的。根据redis.io文档进行安装。https://redis.io/docs/getting-started/installation/install-redis-on-linux/

sudo apt install -y curl ca-certificates gnupg2 lsb-release

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt update

sudo apt install -y redis

使用 systemctl 检查守护进程状态。

systemctl status redis-server

如果是活跃的就OK了。

nginx

Nginx 是主要用于反向代理的 Web 服务器软件。虽然Misskey不是必需的,但还是建议安装它,通过缓存等方式提高性能,以及从http转https。尖端

对于开发环境,不需要设置nginx

根据nginx.org 文档http://nginx.org/en/linux_packages.html#Ubuntu进行安装。

sudo apt install ubuntu-keyring

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

此时查看输出是否显示573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx

sudo apt update

sudo apt install -y nginx

使用 systemctl 检查守护进程状态。

systemctl status nginx

如果是活跃的就OK了。否则,运行以下命令。

sudo systemctl start nginx

sudo systemctl enable nginx

访问http://localhost ,出现*Welcome to nginx!*就OK了。
您还可以使用curl 检查。

curl http://localhost

其他的

安装Git(版本控制软件)和build-essential(构建Misskey时需要)。

sudo apt update

sudo apt install -y git build-essential

附加配置和安装

准备您的服务器以暴露在 Internet 上。尖端

在开发环境中,不需要防火墙、CloudFlare 和 Certbot 设置。

防火墙

这次,我们将使用ufw作为防火墙。

接下来,我们以白名单的形式设置连接权限,开放SSH 22端口并限制连接数,并开放HTTP 80端口和HTTPS 443端口。

sudo ufw enable

sudo ufw default deny

sudo ufw limit 22

sudo ufw allow 80

sudo ufw allow 443

检查ufw的状态。

sudo ufw status

使用 systemctl 使其持久化。

sudo systemctl enable ufw

尖端

ufw是一个使人类更容易操作netfilter(iptables)的应用程序。安装脚本直接在OCI环境中运行netfilter。

Cloudfare

CloudFlare 是一项非常方便的服务,可以同时为您的域提供 DNS 服务器、反向代理和 CDN。
尽管无需通过 CloudFlare 即可发布服务器,但我们建议您实施它,因为它非常方便。 → CDN 设置

注册 CloudFlare并按照说明注册您购买的域名。

最好在 DNS 注册屏幕上输入服务器的 IP 地址。

根据您购买域名的位置,应用最多可能需要 3 天的时间。

配置 Certbot(Let's Encrypt)

从 Let's Encrypt using CloudFlare 获取用于 HTTPS/WSS 通信的证书。

安装 certbot 和 CloudFlare 插件

sudo apt install -y certbot python3-certbot-dns-cloudflare

获取您的 Cloudflare API 密钥。请按照以下步骤获取。

  1. 访问https://dash.cloudflare.com/profile/api-tokens
  2. 选择全局 API 密钥的视图
  3. 输入密码取消 hCaptcha,然后选择查看

创建包含 CloudFlare 信息的配置文件 /etc/cloudflare/cloudflare.ini。

mkdir /etc/cloudflare
nano /etc/cloudflare/cloudflare.ini

将在 CloudFlare 中注册的电子邮件地址设置为dns_cloudflare_email(在下面的示例中为[email protected] )。

dns_cloudflare_email = [email protected]
dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx

保存并将权限设置为 600。

sudo chmod 600 /etc/cloudflare/cloudflare.ini

现在您已准备就绪,请运行命令。将中间的 example.tld 替换为您自己的

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory -d example.tld -d *.example.tld

当显示 *Congratulations!* 时确定。请记录生成的 .pem 文件的路径,以便稍后使用。

自动更新设置不是必需的,因为它们在安装的同时完成。

安装 Misskey

现在前期的准备工作已经大致完成了,让我们来准备Miskey吧。

更改为 misskey 用户。

sudo su - misskey

使用 Git 提取文件。

git clone -b master https://github.com/misskey-dev/misskey.git --recurse-submodules

cd misskey

git checkout master

安装必要的 npm 包。

NODE_ENV=production pnpm install --frozen-lockfile

设置密匙

default.yml

创建配置文件.config/default.yml。

nano .config/default.yml

粘贴以下内容并根据需要进行替换。需要更改设置值的地方用●标记,使用上一流程中设置的值的地方用○标记。

这个配置文件是用YAML格式编写的,如果一行开头的空格数出错,Misskey将不起作用,所以要特别小心。

可以设置的值以及怎么写都写在.config/example.yml中。尖端

在开发环境中,指定urlurl: http://localhost:3000为。

# ● Misskeyを公開するURL
url: https://example.tld/
# ポートを3000とする。
port: 3000

# ● PostgreSQLの設定。
db:
  host: localhost
  port: 5432
  db  : mk1 # 〇 PostgreSQLのデータベース名
  user: misskey # 〇 PostgreSQLのユーザー名
  pass: hoge # ● PostgreSQLのパスワード

#   Redisの設定。
redis:
  host: localhost
  port: 6379

#   IDタイプの設定。
id: 'aid'

#   syslog
syslog:
  host: localhost
  port: 514

指定后,保存。

设置 nginx

配置 Nginx。

以 root 权限执行。

exit

创建/etc/nginx/conf.d/misskey.conf。

sudo nano /etc/nginx/conf.d/misskey.conf

将Misskey Hub配置示例复制并粘贴到 nano,并将以下部分替换为您自己的部分。

  • 第 18 行和第 30 行的域名
  • 将第34-35行的证书路径更改为Certbot获取的路径(基本上只需替换example.tld)
  • 从第 56 行删除 4 行(如果它位于另一个反向代理或 CDN 之后,请删除以下内容。)

保存更改。

检查配置文件是否正常工作。

sudo nginx -t

如果正常,重新启动 nginx 守护进程。

sudo systemctl restart nginx

检查状态。

sudo systemctl status nginx

如果是活跃的就OK了。

Misskey构建

重新登录到 misskey 用户。

sudo su - misskey

建造。我们可以…

cd misskey
NODE_ENV=production pnpm run build

尖端

在开发环境中NODE_ENV=production不需要。后续命令以同样的方式删除。

如果您无法在服务器上构建

可能缺少 RAM。

构建 Misskey 和迁移数据库(包括初始化)至少需要 2GB RAM。
如果您没有足够的 RAM,可以考虑以下解决方案。

  • 将交换添加到服务器
  • 使用 sftp 传输本地构建的材料(构建的目录)

初始化数据库

pnpm run init

启动密匙

NODE_ENV=production pnpm run start

当显示Now Listening on port 3000 on http://example.tld时,访问您设置的 URL。

您应该会看到 Misskey 的欢迎页面。

检查您是否可以正确执行所有操作,例如创建帐户、创建笔记、上传文件等。

如果您无权访问

检查 CloudFlare 的 DNS

再次检查 CloudFlare 的 DNS 设置是否设置为正确的 IP 地址。

检查您的路由器设置

如果您使用的是家庭服务器,请检查您的路由器是否设置为允许服务器与外界通过端口 80 和 443 进行通信。

即使在云的情况下,通常也需要在网络设置中打开端口。

创建 Misskey 守护进程

尖端

对于开发环境,不需要创建守护程序。

让我们使用 Ctrl+C 终止该进程,并将 Misskey 设置为守护进程启动。

以 root 权限执行。

exit

创建/etc/systemd/system/misskey.service。

sudo nano /etc/systemd/system/misskey.service

粘贴以下内容并保存。

[Unit]
Description=Misskey daemon

[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

配置 systemd 并启动 misskey 守护进程。

sudo systemctl daemon-reload

sudo systemctl enable misskey

sudo systemctl start misskey

使用 systemctl 检查守护进程状态。启动需要一段时间,所以最好等待15秒左右。

sudo systemctl status misskey

如果是活跃的就OK了。

Misskey 的安装现在已基本完成。

在 Misskey 服务器上注册并登录您的帐户以继续进行设置。

继续设置 Misskey

Misskey更新

如何更新Miskey

工作时不能使用 Misskey。

sudo systemctl stop misskey

su - misskey

git pull;
NODE_ENV=production pnpm install --frozen-lockfile
pnpm run clean;
NODE_ENV=production pnpm run build;
pnpm run migrate;

exit

情况1:执行apt升级时

sudo apt update -y
sudo apt full-upgrade -y
sudo reboot

重新启动后,Misskey 将自动启动。

情况 2:按原样启动

sudo systemctl start misskey

#网站配置文件配置参照(必须)有关misskey网站配置文件的设置(必须) - 云野 (miksz.cc)