吐槽

Misskey相对于Mastodon来说UI比较好看好操作,但是Mastodon有好看的Android客户端但Misskey没有。

而且可以关闭中继带来的远程用户缓存,原先用Mastodon的时候,开了中继几天不到20G的空间分配就用完了。。

象群的用户多(虽然一样都很少,但比Misskey用户多了不知道几十倍),但是Misskey的中继是和Mastodon是一样的,所以其实没啥差别。

Mastodon用的Ruby来写的,Misskey用的TypeScript(JS)来写的,运行上来说Misskey的速度和运存占用相对占优势。

Misskey的话可以上传任意大小文件并引用此文件发笔记,Mastodon如果不魔改的话是只能上传图片和视频的并且有文件和分辨率大小限制。而且Misskey可以随时在自己的网盘删除自己不用了的文件,而且如果上传但是忘记写文了,可以从网盘中再次选取,并不会像Mastodon那样必须再次上传。Misskey有网盘大小限制可以避免用户炸对象储存空间。

总结:Misskey什么都好,就是安卓客户端是个硬伤。

部署

懒得写,看底下的参考吧!

官方安装文档参考(含ubuntu,raspberry pi和aws的安装方法)

Docker搭建,來自糖喵大佬的教程—— 搭建一只Misskey实例

普通方式搭建,來自Dogcraft的教程—— 搭建Misskey——去中心化的社交网络

適合新手的教程—— 零基础搭建Misskey

适合面板用户和非面板用户,來自小意_的教程—— 就是本文啦!

接下的图片教程适合面板和非面板用户参考。 。

misskeynodejs.png
反正就是nodejs版本在v15.x.x及以上就行了。

misskeypostgresql.png

这时候为了发挥最大的Postgresql的效益和减少服务器负担,你需要打开这份文档PostgreSQLのチューニング,我相信即使是没有日语基础也能看得懂。

好的,现在Postgresql不会出什么叉子了的。

S102132242089111.png
这个要nodejs,postgresql,nginx,redis等等完全搞好了之后才进行。

其它部分有些省略的走官方的那个就都可以了,好了,接下来是nginx和redis,非面板用户按官网的来就行了,接下来的是给面板用户

redis的话直接用宝塔面板那个就OK了。

S10213-230511581

下好了就行。。。无需去配置

在Nginx那里如果你用的是宝塔(小皮)面板请删除和Nginx和SSL有关的任何操作

这里Nginx作反代,宝塔(小皮)面板用户请复制以下配置,不然会出现ssl无法开启或强制跳转ssl等错误,并将`neko.ci`换成你自己的域名,并且提前把ssl开启了,不然会提示错误的。

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 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name sk.wos.la;
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
        }
    ssl_certificate    /www/server/panel/vhost/cert/sk.wos.la/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/sk.wos.la/privkey.pem;
    ssl_protocols TLSv1.1 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 / {
        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;
        
        #超时设置
        proxy_connect_timeout 5400s;
            proxy_read_timeout 5400s;
            proxy_send_timeout 5400s;
            send_timeout 5400s;
    }
}

请注意,Misskey只能使用Websocks与服务器连接,而很多CDN商,并不支持Websocks,最终会导致Misskey前端一直提示服务器已断开

.config/default.yml的配置请参考以下,直接`mv`一下,把`example.yml`重命名为`default.yml` 然后在`default.yml`中改域名和Postgresql的信息即可

#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Misskey configuration
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#   ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────

# Final accessible URL seen by a user.
url: https://neko.ci/

# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# URL SETTINGS AFTER THAT!

#   ┌───────────────────────┐
#───┘ Port and TLS settings └───────────────────────────────────

#
# Misskey supports two deployment options for public.
#

# Option 1: With Reverse Proxy
#
#                 +----- https://example.tld/ ------------+
#   +------+      |+-------------+      +----------------+|
#   | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
#   +------+      |+-------------+      +----------------+|
#                 +---------------------------------------+
#
#   You need to setup reverse proxy. (eg. nginx)
#   You do not define 'https' section.

# Option 2: Standalone
#
#                 +- https://example.tld/ -+
#   +------+      |   +---------------+    |
#   | User | ---> |   | Misskey (443) |    |
#   +------+      |   +---------------+    |
#                 +------------------------+
#
#   You need to run Misskey as root.
#   You need to set Certificate in 'https' section.

# To use option 1, uncomment below line.
port: 5210    # A port that your Misskey server should listen.

# To use option 2, uncomment below lines.
#port: 443

#https:
#  # path for certification
#  key: /etc/letsencrypt/live/example.tld/privkey.pem
#  cert: /etc/letsencrypt/live/example.tld/fullchain.pem

#   ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────

db:
  host: localhost
  port: 5432

  # Database name
  db: mk1

  # Auth
  user: postgres
  pass: 23333333333333333333333333

  # Whether disable Caching queries
  #disableCache: true

  # Extra Connection options
  #extra:
  #  ssl: true

#   ┌─────────────────────┐
#───┘ Redis configuration └─────────────────────────────────────

redis:
  host: localhost
  port: 6379
  #pass: example-pass
  #prefix: example-prefix
  #db: 1

#   ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────

#elasticsearch:
#  host: localhost
#  port: 9200
#  ssl: false
#  user: 
#  pass: 

#   ┌───────────────┐
#───┘ ID generation └───────────────────────────────────────────

# You can select the ID generation method.
# You don't usually need to change this setting, but you can
# change it according to your preferences.

# Available methods:
# aid ... Short, Millisecond accuracy
# meid ... Similar to ObjectID, Millisecond accuracy
# ulid ... Millisecond accuracy
# objectid ... This is left for backward compatibility

# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# ID SETTINGS AFTER THAT!

id: 'aid'

#   ┌─────────────────────┐
#───┘ Other configuration └─────────────────────────────────────

# Whether disable HSTS
#disableHsts: true

# Number of worker processes
clusterLimit: 10

# Job concurrency per worker
# deliverJobConcurrency: 512
# inboxJobConcurrency: 128

# Job rate limiter
# deliverJobPerSec: 512
# inboxJobPerSec: 128

# Job attempts
# deliverJobMaxAttempts: 512
# inboxJobMaxAttempts: 128

# IP address family used for outgoing request (ipv4, ipv6 or dual)
#outgoingAddressFamily: ipv4

# Syslog option
#syslog:
#  host: localhost
#  port: 514

# Proxy for HTTP/HTTPS
#proxy: http://127.0.0.1:3128

#proxyBypassHosts: [
#  'example.com',
#  '192.0.2.8'
#]

# Proxy for SMTP/SMTPS
#proxySmtp: http://127.0.0.1:3128   # use HTTP/1.1 CONNECT
#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4
#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5

# Media Proxy
#mediaProxy: https://example.com/proxy

# Sign to ActivityPub GET request (default: false)
signToActivityPubGet: true

其他就按操作来就行了!

运营

你问我答,站长遇到的问题几乎没有,所以各位有任何问题请在评论区里说明,我会看到的。(不要用chromium内核和Chrome浏览器留言,Halo的老问题了)

  1. 我如何让更多人能够了解Misskey并使用它

分享这个出去

  1. 我遇到有人一直恶意批量注册小号,来占用用户名资源,如何解决。

进入数据库,\c来切换到你的Misskey的数据库。

delete from used_username where used_username = '**';
  1. 数据库的数据太大了。。

类似于mastodon的tootctl statuses remove的脚本,由dogcraft大大写的一键删库脚本{},Github

  1. 中继那里有?

我的中继 https://neko-relay.com
糖喵大佬的中继 https://relay.nya.one

  1. 我该如何备份?

第一步,备份数据库:
首先,备份指令为

pg_dump -C misskey > misskey_$(date +%Y%m%d_%H_%M_%S).sql

但是你很快就会发现Postgresql的psql没办法用宝塔面板的定时任务。

解决之道,把Postgresql的超级权限给root,并设置为可登录。

CREATE ROLE root superuser PASSWORD '密码建议用随机密码生成' login;

你再添加定时任务你会发现没有任何输出只有一个成功的提示,但并没有备份,也就是无法执行这个,好的,现在写个bash脚本吧

#!/bin/bash
# 备份指定的位置
BACKUP_DIR=/home/misskey/backup/
# 如果不存在就创建
if [ ! -d "$BACKUP_DIR" ]; then
    mkdir -p "$BACKUP_DIR"
fi
cd $BACKUP_DIR
#备份指定的日期
dateDIR=$(date --date='1 day ago' +%Y-%m-%d_%H-%M-%S)
# 备份指定的数据库
backupDB=(mk1)
backupDBArr=$(echo ${backupDB[@]})
# 开始备份
for i in $backupDBArr; do
    pg_dump -C mk1 > mk1_${dateDIR}.sql
done

数据库的备份完成

现在你去设置备份把redis的持久化文件存储路径的文件夹备份下来

然后将Misskey的用户下的文件夹也备份下来,这样可以方便出现问题时回滚。


这里要感谢dogcraft大大给我讲解misskey有关的内容

mashiro大大给我讲解Mastodon相关的内容

mashiro的b站空间:https://b23.tv/OUoPkj;

dogcraft的b站空间https://b23.tv/OS8zxe

Q.E.D.