全体構築プロセスは最初に公式サイトを参考にし、少し複雑だと感じました。その後、以下の 2 人の仲間の経験共有を見つけ、とても役立ちました。感謝します!
構築共有:Docker を使用した Misskey の最小限のデプロイ
本チュートリアルは基本的に上記の構築チュートリアルを~参考に~コピーしたものです XD
使用共有:Fediverse は Mastodon だけではない ——Misskey の紹介
1. 概要#
Misskey は日本の開発者しゅいろ(syuilo)によって設立された分散型ソーシャルネットワークサービスで、その公式インスタンスは misskey.io です。Misskey は Mastodon と同様に ActivityPub プロトコルを採用しているため、連邦宇宙 Fediverse と相互接続できます。
簡単に言えば、それは分散型の微博です!
私たちが作成したのはインスタンスであり、異なるインスタンスは相互にアクセスしてインタラクションできます。
1.1 関連アドレス#
公式インスタンスアドレス:https://misskey.io/ (自分で構築したくない場合は、公式のインスタンスに直接参加できますが、どうやら日本語のようです。)
公式ウェブサイト:https://misskey-hub.net/en/
GitHub アドレス:https://github.com/misskey-dev/misskey (3k スター)
インスタンスリスト:https://join.misskey.page/zh-CN/instances (自分で構築したくない場合は、インスタンスに参加して使用できます)
2. プロジェクト展示#
3. 構築環境#
-
システム:Debian 11
-
Docker、Docker-compose をインストール済み
-
サービス: Unesty 春季プロモーション 高性能ドイツ VDS
4. 構築開始#
sudo -i
mkdir -p /root/data/docker_data/misskey
cd /root/data/docker_data/misskey
docker-compose.yml 内容#
# Misskey最小デプロイ構成
version: "3"
services:
web:
restart: always # 自動再起動。設定に自信がない場合は、このオプションを有効にしないでください。プロセスがクラッシュして繰り返し再起動し、大量のリソースを消費するのを避けるためです!
image: misskey/misskey:latest # ここでは公式イメージを使用して、ローカル構築時のリソース不足の問題を回避します
container_name: misskey_web # コンテナ名、管理が容易で、適切だと思う内容に変更できます
links:
- db
- redis
ports:
- "3001:3001"
networks:
- internal_network
- external_network
volumes:
- ./config:/misskey/.config:ro # 設定ファイルをマッピングするため、実際の設定に基づいてフォルダ名を決定し、読み取り専用に設定してください;
- ./files:/misskey/files # ユーザーがローカルにアップロードしたファイル。最初から外部ストレージ(wasabiやAWS S3など)を接続する場合は、この設定を無視できます
redis:
restart: always
image: redis:latest
container_name: misskey_redis
networks:
- internal_network
volumes:
- ./redis:/data # redisデータベースのデータフォルダマッピング。作成後、デフォルトで./redisフォルダ内にあります
db:
restart: always
image: postgres:12.2-alpine
container_name: misskey_db
networks:
- internal_network
env_file:
- ./config/docker.env # 設定ファイルに設定されたDocker環境変数を使用する必要があります
volumes:
- ./db:/var/lib/postgresql/data # 主データベースのデータフォルダマッピング。作成後、デフォルトで./dbフォルダ内にあります
networks:
internal_network: # 内部ネットワーク
internal: true
external_network: # 外部ネットワーク
mkdir config
cd config
vim default.yml
default.yml 内容#
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Misskey設定
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────
# ユーザーが見る最終的なアクセス可能なURL。
url: # 自分が最終的にリバースプロキシしたいURLに変更してください
# インスタンスを開始したら、その後URL設定を変更しないでください!
# ┌───────────────────────┐
#───┘ ポートとTLS設定 └───────────────────────────────────
#
# MisskeyはHTTPS接続をサポートするためにリバースプロキシを必要とします。
#
# +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+|
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
# +------+ |+-------------+ +----------------+|
# +---------------------------------------+
#
# リバースプロキシを設定する必要があります。(例:nginx)
# HTTPSでの暗号化接続が強く推奨されます
# トークンがGETリクエストで転送される可能性があるためです。
# Misskeyサーバーがリッスンするポート。
port: 3001
# ┌──────────────────────────┐
#───┘ PostgreSQL設定 └────────────────────────────────
db:
host: db
port: 5432
# データベース名
db: misskey
# 認証
user: example-misskey-user
pass: example-misskey-pass
# クエリキャッシュを無効にするかどうか
#disableCache: true
# 追加接続オプション
#extra:
# ssl: true
# ┌─────────────────────┐
#───┘ Redis設定 └─────────────────────────────────────
redis:
host: redis
port: 6379
#family: 0 # 0=両方、4=IPv4、6=IPv6
#pass: example-pass
#prefix: example-prefix
#db: 1
# ┌─────────────────────────────┐
#───┘ Elasticsearch設定 └─────────────────────────────
#elasticsearch:
# host: localhost
# port: 9200
# ssl: false
# user:
# pass:
# ┌───────────────┐
#───┘ ID生成 └───────────────────────────────────────────
# ID生成方法を選択できます。
# 通常、この設定を変更する必要はありませんが、好みに応じて変更できます。
# 利用可能な方法:
# aid ... 短い、ミリ秒精度
# meid ... ObjectIDに似た、ミリ秒精度
# ulid ... ミリ秒精度
# objectid ... これは後方互換性のために残されています
# インスタンスを開始したら、その後ID設定を変更しないでください!
id: 'aid'
# ┌─────────────────────┐
#───┘ その他の設定 └─────────────────────────────────────
# HSTSを無効にするかどうか
#disableHsts: true
# ワーカープロセスの数
#clusterLimit: 1
# ワーカーごとのジョブ同時実行数
# deliverJobConcurrency: 128
# inboxJobConcurrency: 16
# ジョブレートリミッター
# deliverJobPerSec: 128
# inboxJobPerSec: 16
# ジョブの試行回数
# deliverJobMaxAttempts: 12
# inboxJobMaxAttempts: 8
# 外部リクエストに使用されるIPアドレスファミリー(ipv4、ipv6またはデュアル)
#outgoingAddressFamily: ipv4
# Syslogオプション
#syslog:
# host: localhost
# port: 514
# HTTP/HTTPS用プロキシ
#proxy: http://127.0.0.1:3128
#proxyBypassHosts: [
# 'example.com',
# '192.0.2.8'
#]
# SMTP/SMTPS用プロキシ
#proxySmtp: http://127.0.0.1:3128 # HTTP/1.1 CONNECTを使用
#proxySmtp: socks4://127.0.0.1:1080 # SOCKS4を使用
#proxySmtp: socks5://127.0.0.1:1080 # SOCKS5を使用
# メディアプロキシ
#mediaProxy: https://example.com/proxy
# リモートファイルをプロキシする(デフォルト:false)
#proxyRemoteFiles: true
# ActivityPub GETリクエストに署名する(デフォルト:false)
#signToActivityPubGet: true
#allowedPrivateNetworks: [
# '127.0.0.1/32'
#]
# アップロードまたはダウンロードファイルサイズ制限(バイト)
#maxFileSize: 262144000
docker.env 内容
# db設定
POSTGRES_PASSWORD=example-misskey-pass
POSTGRES_USER=example-misskey-user
POSTGRES_DB=misskey
起動
cd .. # docker-composeファイルがあるフォルダに移動
docker-compose run --rm web yarn run init # データベースを初期化
docker-compose up -d
5. 使用チュートリアル#
5.1 インストールと設定#
詳細な使用参考:Fediverse は Mastodon だけではない ——Misskey の紹介
6.BUG 解決#
トラブルシューティング
サーバーを初めてインストールした後、画像をアップロードすると Internal Server Error が発生しました。docker logs でログを確認すると:
原因は権限不足で、misskey インストールディレクトリに入り、権限を変更しました。
sudo chown -R 991:991 files
参考資料#
構築参考:Docker を使用した Misskey の最小限のデプロイ
使用参考:Fediverse は Mastodon だけではない ——Misskey の紹介
公式インスタンスアドレス:https://misskey.io/
公式ウェブサイト:https://misskey-hub.net/en/
GitHub アドレス:https://github.com/misskey-dev/misskey (3k スター)