Misskeyインスタンスを立てる

Jul 23, 2018  

背景

UIがリッチでActivityPubに対応してるから

環境

CPU: 1core
RAM: 1GB
Disk: 50GB
OS: Fedora28

立てる

ImageMagickのビルド

MisskeyはImageMagick7系を要求します。
しかしながら、dnfでインストールできるのは6系なのでビルドします。

依存するパッケージをインストール

dnf groupinstall "Development tools"
dnf install libpng libpng-devel libjpeg libjpeg-devel zlib zlib-devel  

公式サイトからソースを落す

cd /usr/local/src
wget https://www.imagemagick.org/download/ImageMagick.tar.gz  
tar zxf ImageMagick.tar.gz  
cd ImageMagick  

ビルド

./configure  
make  
make install  

※ビルド後、このようにjpegとpngのサポートが入ってるか確認してください。

convert --version  
Version: ImageMagick 7.0.8-6 Q16 x86_64 2018-07-11 https://www.imagemagick.org/  
Copyright: © 1999-2018 ImageMagick Studio LLC  
License: https://www.imagemagick.org/script/license.php  
Features: Cipher DPC HDRI OpenMP  
Delegates (built-in): jng jpeg png zlib  

依存するものたちのインストールと設定

RedisやMongoDBのインストールと設定

dnf install redis mongodb-org mongodb-server  
systemctl start mongodb redis

Redisのパス設定はしなくてもOKです。(ローカル内に閉じ込めているし)
MongoDBのデーターベース作成

mongo  
> use admin  
> db.createUser({ user:"misskey", pwd:"hogefuga", roles:[{ role:"userAdminAnyDatabase", db:"misskey" }]})  
> exit  

nodejsのインストール

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -  
dnf install nodejs  

nginx,certbotのインストール

dnf install nginx certbot 

Misskeyのインストール

Misskeyユーザーを作成

adduser misskey  
su - misskey  

Misskeyをインストール

git clone -b master git://github.com/syuilo/misskey.git  
cd misskey  
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)  
npm i  

Misskeyの設定(ここはファイルの内容を読めばすぐ設定できるので説明は省略)

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

ビルド

npm install -g node-gyp  
node-gyp configure  
node-gyp build  
npm run build  

Misskeyの起動

systemdファイルを書く

[Unit]  
Description=Misskey daemon     
  
[Service]  
Type=simple  
User=misskey  
ExecStart=/usr/bin/npm start  
WorkingDirectory=/home/misskey/misskey  
TimeoutSec=60  
StandardOutput=syslog  
StandardError=syslog  
SyslogIdentifier=misskey  
Restart=always    

[Install]  
WantedBy=multi-user.target  

スタート

systemctl start misskey  

Nginxで良い感じにする

let’s encryptからTLS証明書を取得(standalone)

certbot certonly --standalone -d ドメイン  

おすすめnginx.conf

server {
  listen 80;
  server_name ドメイン;
  root /home/misskey/misskey;
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  server_name ドメイン;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate     /etc/letsencrypt/live/ドメイン/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ドメイン/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 8m;

  root /home/misskey/misskey;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    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_set_header Proxy "";
    proxy_pass_header Server;

    proxy_pass http://localhost:待受ポート;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    tcp_nodelay on; 
  }
}

ディレクトリの権限変更

chmod -R 775 /home/misskey/  

起動

systemctl start nginx  

そのほかのオプション機能

公式ドキュメントを見て各自設定してください。

このエントリーをはてなブックマークに追加