Skip to content

Misskeyサーバーを立てる

Posted on:September 2, 2023 at 05:30 PM

Misskeyサーバーを立てる

最近とは言っても最近ではありませんが、Twitter(現在X)をイーロンマスクが買収してから、Twitterには様々な害悪な仕様変更が重ねられ、MisskeyやMastodonといった、分散型の新しいSNSへ移行する人が増えています。
今回紹介するMisskeyは先ほど紹介した通り、分散型SNSなので誰でもサーバーさえあれば立てることができます。

立て方

今回はDockerを使って立ててみます。Dockerを使うと簡単にサーバーを立てられます。
また、ポート開放やDDoS対策は大変なので、Cloudflare Tunnelという便利なサービスを利用することにします。

環境

ホストマシン環境はこちらです。

1. ディレクトリを作る

今回はMisskeyの設定ファイルなどはSSDへ、データなどはHDD (/mnt/externalにマウント済み)に保存するようにします。
*Dockerは仕様上、コンテナ内にデータを残しても、再起動後に消えてしまいます。データを永続化するためには、Volumeを使うか、コンテナ内にホストマシンのディレクトリをマウントします。

$ mkdir misskey
$ cd misskey
$ mkdir config
$ cd /mnt/external
$ mkdir misskey
$ cd misskey
$ mkdir data
$ mkdir db
$ mkdir redis

2. 環境作り

設定ファイルであるdocker-compose.ymlを書いていきます。ネットの記事を参考に適当にいじった程度です。
GitHubからダウンロードしてビルドすると時間かかるので、あらかじめ用意されているイメージを使います。

Misskeyが使用している、ActivityPubの仕様上、一度データベースを失うと、同じドメインでサーバーを立てることができなくなります。くれぐれもお気をつけください。

version: "3"

services:
  web:
    image: misskey/misskey:latest
    restart: always
    links:
      - db
      - redis
    ports:
      - "3000:3000"
    networks:
      - misskey_db
      - external_network
    volumes:
      - /mnt/external/misskey/data:/misskey/files
      - ./config/misskey.yaml:/misskey/.config/default.yml:ro
  redis:
    restart: always
    image: redis:alpine
    networks:
      - misskey_db
    volumes:
      - /mnt/external/misskey/redis:/data
  db:
    restart: always
    image: postgres:15-alpine
    networks:
      - misskey_db
    environment:
      - POSTGRES_PASSWORD=pass
      - POSTGRES_USER=misskey
      - POSTGRES_DB=misskey
    volumes:
      - /mnt/external/misskey/db:/var/lib/postgresql/data
  tunnel:
    image: cloudflare/cloudflared
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=xxxxx
    tty: true
    restart: always

networks:
  misskey_db:
    internal: true
  external_network:

3. Misskey設定

Misskeyの設定ファイルであるmisskey.yamlを書きます。
urlには使用したいドメインを設定してください。

url: https://misskey.example.com
db:
  host: db
  port: 5432
  db: misskey
  user: misskey
  pass: pass
redis:
  host: redis
  port: 6379
id: 'aid'
port: 3000

4. Cloudflareの設定

この設定を忘れるとMisskeyが正常に動きません!

Cloudflareのダッシュボードから、「Speed」→「最適化」と進みます。最適化のページのタブから、「コンテンツの最適化」を選びます。
規定では、「Rocket Loader」と「Auto Minify」が有効になっているので、両方オフにします。

Auto Minifyの注意書きに「この機能は、特定の新しい CSS および JS 言語機能と完全に互換性がない場合があり、サイトの機能に影響を与える可能性がありますので、ご注意ください。」とあるように、Misskeyでは互換性がありません。必ずオフにしましょう。
オンにしたままだと、ログインが出来ません。

5. Misskeyを起動

ここまで出来たら、早速起動してみます。Dockerを使っているので、起動は簡単です。
初回起動は、データベースの設定などを行うので起動に時間がかかります。

$ sudo docker-compose up -d

おつかれさまでした。

さいごに

また次の記事であいましょう。