Misskey12.108.1搭建的几个坑以及几个注意点

本人尝试通过Fediverse的一员——Misskey成功构建了一个实例。之前是想建Mastodon来着,但是每换一个机子就报一个不一样的错误,于是就用了轻量级的Misskey。由于入坑比较晚,赶上了Misskey12.108.1版本,在构建与和大佬交谈的过程中算是也对一部分坑有了了解,结合自己的经验,发布这篇文章。如果有错误,欢迎大佬指点。话不多说,现在开始!

请注意:本文全程采用源码编译,Docker部署还没有摸过

先按照官网文档摸一遍

(请注意,本文系统为Ubuntu18.04 LTS
首先你需要安装(Nginx之类的就不说了)……

  1. NodeJS(16.x)&Yarn
  2. PostgreSQL(10+)
  3. Redis
  4. FFmpeg

你可以采用apt等方法一股脑解决,如果你使用了宝塔面板,那你除了FFmpeg外都可以在"软件商店"解决并有效管理了,这也是个好方法。
好的,现在假设你已经办完了,先执行一条指令,开始你的Misskey之旅吧!

NODE_ENV=production

创建用户(此处有注意项)

Misskey最好不要在root用户上面运行,所以你需要创建一个用户。

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

然后……

安装Misskey

su - misskey
git clone --recursive -b master https://github.com/misskey-dev/misskey.git
git submodule update --init
cd misskey
git checkout master
yarn install

如果GitHub响应过慢,未来会考虑搭建自己的Git平台(等到Misskey支持Oauth2后动手),到时可以直接从那里进行clone。

设置

cp .config/example.yml .config/default.yml

然后你需要先编辑default.yml再继续操作,否则会报错。(此处留坑)

接下来就是构建和初始化了

这里和官方文档不一样,直接把两个命令合并在一起(也许可以趁这段时间喝杯咖啡?)

yarn build && yarn run init

(此处留坑)

如果构建使用的是 Debian,则需要安装build-essential。(apt即可)
如果某些模块出现错误,请使用以下命令:

npx node-gyp configure
npx node-gyp build
yarn build

启动!

这里有两个启动方式~

如果你想实时查看运行状态,输出日志……

screen是最佳选择!

apt install -y screen
screen -S (随便一个名字)
yarn start

然后Ctrl+A加上Ctrl+D就可以挂起在后台运行啦!需要查看可以screen -r恢复窗口。

如果你想挂在后台,并且开机自启动……

你需要执行下面的命令哦~

vi /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=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

此处注意:

如果要在 CentOS 中使用小于或等于 1024 的端口使用Misskey,则必须更改它。(所有涉及目录的地方均需按照实际目录调整)ExecStart=/usr/bin/sudo /usr/bin/npm start

然后执行下面的指令:

systemctl daemon-reload; systemctl enable misskey
systemctl start misskey

使用systemctl status misskey检查运行状态。
是不是成功了?

失败了对吧?走到某一步无法执行,报错了对吧?
恭喜你中坑了!

避坑指南

先说说刚一开始的注意项,实际上root跑全程是完全没有问题的,就是后面会留坑。

别忘了一定在配置文件里面将这一个注释去掉~

#signToActivityPubGet: true
#修改成
signToActivityPubGet: true

安装Misskey这里需要注意一下,Misskey12.108.1留了一个bug 特性就是个bug,如果你一路跑下来,你会最终发现无法在个人资料里面设置邮箱信息。

解决方法

在你的Misskey程序根目录下执行下方的命令:

vi packages/backend/src/services/validate-email-for-account.ts

然后删除第一行,换成下面的信息:

import { validate as validateEmail } from 'deep-email-validator';

别忘了保存~

重点:运行yarn build && yarn run init时出现错误,退出代码1

别急,看看是不是漏掉了什么东西……
还记得其中有一个要求是PostgreSQL吗?就是这个的问题。
你可以看看配置文件是否正确,数据库信息是否正确,以及数据库程序是否在运行,检查无误再运行就完美解决了!
systemctl运行时无法启动大概率也是这里的锅。

root专属坑

如果你选择在root下执行全称,在最后的系统服务配置文件里面,一定把User=misskey替换成User=root,否则你将无法上传文件。

最后……神秘的坑
至少我是遇到了这个问题,先是在测试机上面使用npm运行有部分功能无法使用,后来搬迁后直接报错。
还记得screen上面的语句吗?使用yarn解决问题!
ExecStart=/usr/bin/npm start替换成ExecStart=(你的yarn绝对目录)yarn start,大功告成!

Nginx配置官网文档已经讲的很详细了,但是可能会出现无法运行的情况,这里贴出实测可以正常运行的配置文件做一个示例。

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
        listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name (你的域名);
    ssl_certificate    (自定义);
    ssl_certificate_key    (自定义);
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri/;
    client_max_body_size 80m;

      # Proxy to Node
        location /.well-known/acme-challenge {
        alias /home/misskey/misskey/.well-known/acme-challenge/;
    }
       location /.well-known/pki-validation {
        alias /home/misskey/misskey/.well-known/pki-validation/;
    }
    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

            proxy_connect_timeout 86400s;
            proxy_read_timeout 86400s;
            proxy_send_timeout 86400s;
            send_timeout 86400s;
    }
 }

彩蛋!

你在成功运行后会发现右上角左上角(左右不分+1)一直闪烁着一个黄色的DEV BUILD。
既然不影响就不用管它了!(开始摆烂)
你可以在packages/client/src/ui/_common_/common.vue里面见到这样的一句:

<div v-if="dev" id="devTicker"><span>DEV BUILD</span></div>

还有下面的部分……

<style lang="scss">
@keyframes dev-ticker-blink {
	0% { opacity: 1; }
	50% { opacity: 0; }
	100% { opacity: 1; }
}
@keyframes progress-spinner {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(360deg);
	}
}
#wait {
	display: block;
	position: fixed;
	z-index: 4000000;
	top: 15px;
	right: 15px;
	&:before {
		content: "";
		display: block;
		width: 18px;
		height: 18px;
		box-sizing: border-box;
		border: solid 2px transparent;
		border-top-color: var(--accent);
		border-left-color: var(--accent);
		border-radius: 50%;
		animation: progress-spinner 400ms linear infinite;
	}
}
#devTicker {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 2147483647;
	color: #ff0;
	background: rgba(0, 0, 0, 0.5);
	padding: 4px 5px;
	font-size: 14px;
	pointer-events: none;
	user-select: none;
	> span {
		animation: dev-ticker-blink 2s infinite;
	}
}
</style>

话不多说,懂得都懂~

放在最后

基于源码的Misskey搭建就结束了,如果有什么问题欢迎探讨,有什么错误欢迎各位大佬前来指教,提前欢迎你加入联邦宇宙大家庭,为想要的世界投一张真正属于自己的票!

本文已发布在随笔园,原文链接:https://www.yateam.cc/archives/206,此文系作者本人略作修改后搬运,遵循CC4.0国际协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七夜草

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值