Misskey - 又一个去中心化社交平台

Misskey – 又一个去中心化社交平台

Misskey 与 Mastodon 类似,界面更 “Modern Design”,主题也更 “二次元”

下文将展示 Debian 10 下无域名的 Misskey 搭建方式(使用 IP 访问)

环境

  • Debian 10

参考

步骤

安装依赖

使用 root 用户进行以下步骤,其他用户酌情添加 sudo

Node.js

运行以下指令将安装 Node.js 14

curl -sL https://deb.nodesource.com/setup_14.x | bash -
apt-get install -y nodejs

Postgresql

运行以下指令将安装最新版 postgresql

sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
apt update
apt -y install postgresql

Redis

redis 没有版本要求,所以直接用 apt 安装即可

apt install redis

Yarn

需要先安装 Node.js

npm install -g yarn

FFmpeg

apt install ffmpeg

其他

Debian 10 下默认安装了 python 和 build-essential,如果没有则执行指令

apt install python build-essential

设置数据库

Misskey 需要新建数据库和数据库管理账户

使用 root 用户进行以下步骤

  1. 切换到 postgre 用户
    su - postgres
    
  2. 配置数据库
    • 进入 postgresql
      psql
    • 新建数据库
      CREATE DATABASE misskey;
    • 新建管理账户
      CREATE USER [你的用户名] WITH PASSWORD '[你的密码]';
    • 新建账户获取管理权限
      GRANT ALL PRIVILEGES ON DATABASE misskey TO [你的用户名];

      Misskey - 又一个去中心化社交平台

获取 Misskey

使用 root 用户进行以下步骤

  1. 新建 misskey 用户
    adduser --disabled-password --disabled-login misskey
  2. 切换到 misskey 用户
    su - misskey
  3. 获取 Misskey
    git clone -b master git://github.com/syuilo/misskey.git
  4. 安装 Node 依赖
    cd misskey
    git checkout master
    yarn

配置 Misskey

使用 misskey 用户进行以下步骤

  1. 复制模板配置文件,在 misskey 根目录下运行
    cp .config/example.yml .config/default.yml
  2. 编辑 default.yml
    • 首先更改 URL:如果不使用域名,则将 https 改为 http,并将域名更改为 IP 地址,如果使用域名则只需更改域名Misskey - 又一个去中心化社交平台
    • 选择一个运行方式:Misskey 提供了两种运行模式——Web 服务器反代 + Misskey模式独立运行模式,这里选择第一种,可以避免很多问题,取消注释 port:3000 行Misskey - 又一个去中心化社交平台关于第二种模式:第二种模式需要 root 权限运行才可以绑定端口,使用第一种模式可以避免更多由系统权限产生的问题
    • 配置数据库信息:编辑用户名和密码Misskey - 又一个去中心化社交平台
    • (可选)设置集群数量:这里我设置了 Misskey 最大子进程到 8,默认为 1,值越高占用的系统资源越多Misskey - 又一个去中心化社交平台

生成 Misskey

使用 misskey 用户进行以下步骤

  1. 在 misskey 根目录下执行
    NODE_ENV=production yarn build
  2. 数据库初始化
    • 执行
      yarn run init

运行 Misskey

测试运行

使用 misskey 用户在 misskey 根目录下执行

NODE_ENV=production npm start

如果无误会输出类似下图的信息,这时访问 IP + 端口已经可以使用了Misskey - 又一个去中心化社交平台

设置系统服务

为方便后台运行和管理进程,将 Misskey 设置为系统服务

使用 root 用户在 /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

之后就可以使用 systemctl 或 service 指令启动/停止/查看 Misskey

(可选)Nginx 反向代理

经过以上步骤已经可以通过 IP + 端口使用 Misskey,设置 Nginx 反代是为了反代而反代使用其他端口/模拟域名的配置步骤

使用 root 用户进行以下步骤

  1. 新建配置文件
    • 在 /etc/nginx/sites-available 下新建配置文件 misskey,并写入以下内容(不使用域名)
      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 81;
          listen [::]:81;
          server_name _;
      
          client_max_body_size 80m;
          
          location / {
              proxy_pass http://127.0.0.1:3000;
              proxy_set_header Host $host;
              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;
              proxy_http_version 1.1;
              proxy_redirect off;
      
              # 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 无法在 80 端口下正常使用,所以需要设置为 81 (非 80)端口,80 端口下会无限加载,如下图 Misskey - 又一个去中心化社交平台

    • 如果使用域名并开启了 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 [::]:80;
          server_name example.tld;
      
          # 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 example.tld;
          ssl_session_cache shared:ssl_session_cache:10m;
      
          # To use Let's Encrypt certificate
          ssl_certificate     /etc/letsencrypt/live/example.tld/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
      
          # 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;
          ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
          ssl_prefer_server_ciphers 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_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;
              proxy_http_version 1.1;
              proxy_redirect off;
      
              # 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;
          }
      }
  2. 新建软连接
    ln -s /etc/nginx/sites-available/misskey /etc/nginx/sites-enabled
  3. 测试并运行 nginx
    nginx -t
    nginx -s reload

效果

Misskey - 又一个去中心化社交平台设置管理员账户Misskey - 又一个去中心化社交平台主界面Misskey - 又一个去中心化社交平台发布动态Misskey - 又一个去中心化社交平台新用户注册Misskey - 又一个去中心化社交平台 动态中 @ 用户Misskey - 又一个去中心化社交平台发布 @ 用户的动态Misskey - 又一个去中心化社交平台收到 @ 的用户

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据