お一人様用Misskeyを立てて、お仕事備忘録を実現するマイクロブログSNSを作る – 2. Misskeyインストール編

お一人様用Misskeyを立てて、お仕事備忘録を実現するマイクロブログSNSを作る – 2. Misskeyインストール編

前回(お一人様用Misskeyを立てて、お仕事備忘録を実現するマイクロブログSNSを作る – 1. Docker準備編)の続きです。

Ubuntu 22.04×最新のDocker CE環境が準備できたところに、Misskey(Docker版)をインストールします。

Misskeyのインストール手順について

Misskeyのインストール手順は、以下公式HPを参考に。特に難しいコマンドもなく、数コマンドでサクッと終わります。

公式の手順以外にも、ファイルの置き場など一部変更している所についてはコメント入れながら残していますので、適宜読み替えてください。

リポジトリの設定

一般ユーザ「xxxx」のホームディレクトリ配下に「docker-files」フォルダを作成し、その中にDockerで利用するコンテナ関連のファイルを格納します。

$ mkdir /home/xxxx/docker-files
$ chmod 777 /home/xxxx/docker-files
$ cd docker-files/
$ pwd
/home/xxxx/docker-files

$ git clone -b master https://github.com/misskey-dev/misskey.git
Cloning into 'misskey'...
remote: Enumerating objects: 217043, done.
remote: Counting objects: 100% (1155/1155), done.
remote: Compressing objects: 100% (757/757), done.
remote: Total 217043 (delta 656), reused 693 (delta 391), pack-reused 215888
Receiving objects: 100% (217043/217043), 126.93 MiB | 25.22 MiB/s, done.
Resolving deltas: 100% (166417/166417), done.

$ cd misskey
$ pwd
/home/xxxx/docker-files/misskey

$ git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.

設定ファイルの配置(テンプレートファイルからのコピー)

$ cp .config/docker_example.yml .config/default.yml
$ cp .config/docker_example.env .config/docker.env
$ cp ./docker-compose.yml.example ./docker-compose.yml

一般的な設定変更

設定ファイルをコピーしたあと、default.ymlの以下を変更する。

$ vi .config/default.yml
※アクセスするURLに変更する
url: https://example.tld/
→ url: https://hoge.com/

※nginxをこのあと立てるので、ひとまず3000のままでOK(ただし、nginx立てずに直接アクセスする構成にする場合はここを80とかにするといいと思う。3000のままにしていて、nginxを噛まさない場合、https://hoge.com:3000でアクセス出来るが、画像をアップロードしたときにボケる、サーバが別ものとして認識される?などあっておかしなことになるので、前述のアクセス用URLでそのままアクセスできる環境を作ってあげる必要がある。)
port: 3000
→ port: 3000(必要に応じて変更)

※Database名と、DBのユーザとパスワードを任意に変更する。(変更しなくても構築は出来るものの、公開されている手順に記載されているID/PWなのでセキュリティ面考えると変更しておくほうが推奨。)
db: misskey
user: example-misskey-user
pass: example-misskey-pass

※存在しないプロキシを設定することで、他のインスタンスにデータを流出することを防ぐ(あくまでお一人様用として、データを外に出さない)
#proxy: http://127.0.0.1:3128
→ proxy: http://127.0.0.1:3128

※ローカルで作ったインスタンス同士で連合組むときに使う?(後で試す、とりあえずデフォルトのままでOK)
#allowedPrivateNetworks: [
# '127.0.0.1/32'
#]

※アップロード出来るファイルのサイズを設定する(bytes単位、デフォルト250MB)
#maxFileSize: 262144000

default.ymlで設定した、PostgresのユーザID/PW等に合わせて以下を変更する。

$ vi .config/docker.env
※default.ymlで変更した内容に合わせて修正する
POSTGRES_PASSWORD=example-misskey-pass
POSTGRES_USER=example-misskey-user
POSTGRES_DB=misskey

docker-compose.ymlのポート番号も必要に応じて変更する。

このあと用意するリバースプロキシ(nginx)を利用せず、Misskey直アクセスを想定している場合は、ここを80にすると幸せになれるかもしれない。

$ vi ./docker-compose.yml
※default.ymlで変更した内容に合わせて修正する
 ports:
  - "3000:3000"

変更した箇所を確認する

$ diff .config/docker_example.yml .config/default.yml
$ diff .config/docker_example.env .config/docker.env
$ diff ./docker-compose.yml.example ./docker-compose.yml

※meilisearchを利用する場合(.config/meilisearch.envの作成)

以下手順、実施してみたもののうまく動きませんでした。うーん。。

meilisearch関連の編集を行わない(meilisearchのコンテナ立ち上げない)でも検索はできたので、ここの手順は飛ばしてビルドします。

サンプルファイルが用意されていないため、こちらはイチから作成する。

とはいえ、マスターキーを用意するだけなので、UUIDをマスターキーとして利用する。

$ MEILI_MASTER_KEY=$(uuidgen) && echo "MEILI_MASTER_KEY=\"$MEILI_MASTER_KEY\"" > .config/meilisearch.env
$ cat .config/meilisearch.env
MEILI_MASTER_KEY="07808551-xxxx-xxxx-xxxx-58166ef49845"

追加で、先に編集したファイルに対し追加の変更を加える。

$ vi .config/default.yml
※以下ブロックのコメントアウトを外し、先程作成したapiKeyを入力する。sslは一旦オレオレ証明書使う想定のためfalseに変更、indexはサーバのホスト名(ドットをハイフンに置き換える)が推奨されている。
#meilisearch:
#  host: meilisearch
#  port: 7700
#  apiKey: ''
#  ssl: true
#  index: ''
 ↓
meilisearch:
  host: meilisearch
  port: 7700
  apiKey: '07808551-xxxx-xxxx-xxxx-58166ef49845'
  ssl: false
  index: 'hoge-com'
$ vi ./docker-compose.yml
※meilisearchを有効にする(コメントアウトを外す)
# - meilisearch
 → - meilisearch

※meilisearchを使用する場合、ファイル最下部にある以下ブロックのコメントアウトを外す
# meilisearch:
# restart: always
# image: getmeili/meilisearch:v1.1.1
# environment:
# - MEILI_NO_ANALYTICS=true
# - MEILI_ENV=production
# env_file:
# - .config/meilisearch.env
# networks:
# - internal_network
# volumes:
# - ./meili_data:/meili_data

変更した箇所を確認する

$ cat .config/meilisearch.env
$ diff .config/docker_example.yml .config/default.yml
$ diff ./docker-compose.yml.example ./docker-compose.yml

Misskeyのビルドと初期化

$ pwd
/home/xxxx/docker-files/misskey

$ sudo docker compose build
$ sudo docker compose run --rm web pnpm run init

無事ビルドと初期化が成功すると、こんな感じでプロンプトが戻ってきます。

Misskeyの起動

$ sudo docker compose up -d
[+] Running 4/4
? Container misskey-redis-1 Healthy 0.0s
? Container misskey-meilisearch-1 Running 0.0s
? Container misskey-db-1 Healthy 0.0s
? Container misskey-web-1 Started

 

Misskeyへアクセス

Misskeyへアクセスします。

Webブラウザから、「.config/default.yml」の中で定義したアクセス用URLにアクセスします。

上記例の場合、「https://hoge.com/」にアクセスすれば良いはずです…が、作業を行う端末のhostsまたは参照するDNSサーバに、hoge.comのIPアドレスを設定していないともちろん接続できません。

なお、デフォルトだとポート3000になっているので、nginxをリバースプロキシとして立てていない現状では「https://hoge.com:3000」としないと接続できません。次の手順にあるnginxによるリバースプロキシの構築が面倒であれば、アクセス用URLを「http://hoge.com/」(sを抜く)として、ポートも80番にしてしまえば良いはずです。(実際試してはいない)

うまくいくと、↑こんな感じになります。

接続用ポートを80にしていた場合、「:80」が不要になるため問題ないのですが、現状だとポート番号3000を付与しないとアクセスできません。

このまま利用開始してしまうと、アカウント名が「username@hoge.com:3000」というように、ポート番号含んだ変なものになります。

また、画像などファイルを投稿した際にファイルの参照先が本来設定されている接続先URL(https://hoge.com/)となってしまうにも関わらず、実際のアクセスURLはポート番号付き、とアクセス時のURLがチグハグになってしまうためか、正常にアップロード出来ないバグに当たります。(結構ハマった)

 

立ち上げたMisskeyを落とすときは以下コマンドで。

$ pwd
/home/xxxx/docker-files/misskey

$ sudo docker compose stop
[+] Stopping 4/4
 ? Container misskey-web-1          Stopped                                                                        0.8s
 ? Container misskey-meilisearch-1  Stopped                                                                        0.5s
 ? Container misskey-db-1           Stopped                                                                        0.6s
 ? Container misskey-redis-1        Stopped

…と、いうわけで次回はnginxを使ったリバースプロキシの設定 および 使い始めるまでの設定を行います。

次回、nginxのインストールと、その他設定関連のTips

2023/09/13 追記

書きました。

サーバ関連カテゴリの最新記事