⚠ 注意!
この記事は**Misskey v10(nighthike)**向けの記事です。
v11以降の記事やっと書きました(汗): https://qiita.com/YuzuRyo61/items/aecdc6ddf2de40679c89
syuiloさんが開発している分散型SNS、Misskeyを入れるための備忘録兼ガイド。
公式にも載ってるけど、うち流の導入方法です。ご参考程度までに。
※環境はUbuntu Server 18.04 LTSです。前にCentOS使ってたけどもうほぼ忘れた((
Step 0. 既存パッケージのアップグレード
最初にこれやっとかないとね。インストールホヤホヤのときはaptのリポジトリミラー変更を忘れずに。
sudo apt update
sudo apt upgrade -y
アップグレードが終わったら一回再起動するのが望ましいよ。
Step 1. 必要パッケージのインストール
MisskeyにはNode.js、MongoDBが必須、Redisも実質必要です。Elasticsearchはスペックに余裕があれば。
ただしElasticsearchの導入はこの記事では割愛。他を当たってくださいませ。
リバースプロキシとしてnginxを使います。
Node.js
最新バージョンのNode.jsだったら多分安定すると思うよ。NodeSourceでリポジトリを追加っ
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash - sudo apt-get install -y nodejs
https://github.com/nodesource/distributions#installation-instructions
MongoDB
4世代でも問題なっしん。このままmongodb公式リポジトリからインストールしましょう。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list sudo apt-get update sudo apt-get install mongodb-org
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
Redis
これはこのままUbuntuのリポジトリから引っ張っておk。
sudo apt install redis-server
nginx
nginx公式のリポジトリから。特にこだわりはないので安定版を入れます。
sudo apt install curl gnupg2 ca-certificates lsb-release echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add - sudo apt-key fingerprint ABF5BD827BD9BF62 #これは確認用。 sudo apt update sudo apt install nginx
その他
これらの他に必要なものとか。
sudo apt install build-essential git
仕上げ
一通り入れ終わったらサービス起動しておきます。
sudo systemctl start nginx mongod redis-server
sudo systemctl enable nginx mongod redis-server
Step 2. 運用ユーザーの作成
ここは公式通りに。
sudo adduser --disabled-password --disabled-login misskey
sudo su - misskey
Step 3. リポジトリクローン
misskeyのユーザーに切り替わったら次のコマンドを入力し、リポジトリをクローンして最新リリースにチェックアウトするよ。
git clone -b master https://github.com/syuilo/misskey
cd misskey
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
Step 4. nodeパッケージをインストール
npm install
そして気長に待つっ
Step 5. データベースの設定
mongo
でmongoDBのコンソールに入るよ。入った直後なんか出てるけどあまりキニシナーイ。
んで、以下のコマンドを1行づつ。pwdとかuserとかデータベース名は適宜変えておk。
use misskey
db.users.save({dummy: "dummy"})
db.createUser({ user: "misskey", pwd: "aiChanIsMisskeyCharacter!", roles: [ { role: "readWrite", db: "misskey" } ] })
終わったらexit
で抜けまーす。
Step 6. 設定ファイル
以下のコマンドを打って編集するよ
cp .config/example.yml .config/default.yml
nano .config/default.yml
url
運用するアドレスを入力。自分の持ってるドメインでね。
url: https://yuzulia.xyz/
port
nginx経由でmisskeyにアクセスする、portは3000あたりで。
port: 3000
mongodb
MongoDBの設定。さっき作ったユーザーとデータベース名をいれればおk
mongodb:
host: localhost
port: 27017
db: misskey
user: misskey
pass: aiChanIsMisskeyCharacter!
redis
redisの設定。何も弄ってないのでpassはなしで問題ないはず
redis:
host: localhost
port: 6379
pass: null
設定が終わったら保存してエディタを終わらせます。
Step 7. Build Time!
ついにビルドです。他のステップの中で一番負荷がかかる作業ですのでご注意を。
NODE_ENV=production npm run build
お茶でものんで気長に待ちましょう。スペックによりますが。
Step 8. 起動チェック
Misskeyの動作チェックをします。
npm start
うまく起動すればアドレスが表示されます。問題なさそうであればCtrl-Cで一回止めます。そしてsudoが使えるユーザーに戻しておきます。
Step 9. nginxのリバースプロキシ設定
misskeyに接続するためのnginx設定をします。今回はmisskey公式リポジトリの設定を引用。変更箇所があるので適宜変えてくださいね。
# Sample nginx configuration for Misskey
#
# 1. Replace example.tld to your domain
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-enabled/
# or copy to /etc/nginx/conf.d/
# For WebSocket
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 http2;
listen [::]:443 http2;
server_name example.tld;
ssl on;
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 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256: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;
}
}
設定したらnginx -t
で設定チェックして問題なければnginxをリロードします。
Step 10. systemdに登録
Misskeyが自動起動するようにsystemdに登録します。
[Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
Environment="NODE_ENV=production"
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
を忘れずにっ
Step 11. 起動
sudo systemctl start misskey
sudo systemctl enable misskey
Step 12. アカウント登録・インスタンス設定
ウェブにアクセスしてアカウントを登録します。そうすると管理者権限が付与されているはずです。
あとは管理画面で適宜設定してください。
Step 13. 仕上げ
mongoコンソールにアクセスし、以下のコマンドを入れます。Misskeyのデータベース名を入れてくださいね。
use misskey
db.users.find({dummy: "dummy"})
db.users.find
で先ほど設定したダミーを探します。あったら以下のコマンドを入力して削除しておきます。
db.users.remove({dummy: "dummy"})
exit
ちなみにこれをしていないと管理画面のユーザーリストの最後尾にundefinedという謎のユーザーが残ったままになるので、それを削除するためのものです。
これで終わりです🎉
アップグレードするには?
Misskeyは不定期でリリースが入ります。その際は以下のコマンドを打てば最新版にアップグレードできます。
git fetch
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
npm install
NODE_ENV=production npm run build
アップグレードが終わったらsudo systemctl restart misskey
でmisskeyを再起動します。
+α : 藍ちゃんを入れてみよう
オマケとしてMisskey公式キャラクター、うちの子藍ちゃんを導入してみましょう。
Step 0. MeCab導入(任意)
キーワードを覚える機能を使う場合は導入します。
予めファイルをダウンロードしておきます。
MeCab本体
tar zxfv mecab-X.X.tar.gz cd mecab-X.X ./configure make make check sudo make install
MeCab用辞書(IPA)
tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz mecab-ipadic-2.7.0-XXXX ./configure make sudo make install
インストールが終わったらwhich mecab
でコマンドのフルパスを控えておきます。
Step 1. アカウント作成
アカウントを作成します。ユーザーIDは特に問いませんが、@ai
が望ましいです。
Step 2. リポジトリクローン
リポジトリをクローンします。
git clone https://github.com/syuilo/ai
Step 3. 設定
設定を行います。適宜変更してくださいね。
{
"host": "https://example.com",
"i": "!********",
"keywordEnabled": true,
"reversiEnabled": true,
"serverMonitoring": true,
"mecab": "/usr/local/bin/mecab"
}
iはAPIキーを入力するのですが、これは先程作成したアカウントの設定からAPIにあるTokenをコピーすることにします。
本来ならば望ましくありませんが・・・
Step 4. ビルド・起動チェック
以下のコマンドで依存パッケージのダウンロードとビルドを行います。
npm install
npm run build
ビルドが終わったら起動チェックをします。
npm start
Misskeyのトークから「ping」って送り「PONG!」が返ってくれれば成功です!Ctrl-Cで一回止めます。
Step 5. 仕上げ
これもSystemdに登録します。
[Unit]
Description=Misskey ai-chan daemon
[Service]
Type=simple
User=misskey
Environment="NODE_ENV=production"
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/ai
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
からのsudo systemctl start aimisskey
して、sudo systemctl enable aimisskey
とすればおkです。
これで藍ちゃんの導入は完了です🎉
最後に
Misskeyの機能は様々です。APIも実装されていますからアプリを作ることだってできますし、リバーシで遊んだりすることだってできちゃいます。自分好みのインスタンスを作っていってくださいね。
GLHF!
2019/04/15 追記
ついにMisskey v11がリリースされました🎉
この記事書き換える予定です。新しく記事を作り直しますっ。