# 北沢さん向けMisskey Docker移行手順 :::info この手順を実行する前にmisskeyのリポジトリをクローンしたディレクトリに移動してください。 以下のコマンドの実行結果のようになればOKです。 ```sh $ git remote -v origin https://github.com/misskey-dev/misskey.git (fetch) origin https://github.com/misskey-dev/misskey.git (push) ``` ::: ## 1. DBデータのダンプ DBのデータをダンプします。 ここで`[DB接続に使用するユーザ名]`の部分は自身の環境に合わせて変更してください。 `.config/default.yml`の47行目あたりにある`user: [DB接続に使用するユーザ名]`の項目に合わせてください。 この操作のあとにカレントディレクトリに`backup.sql`が作成されてあり、適切にダンプされていることを確認してください。 ```sh pg_dumpall -U [DB接続に使用するユーザ名] > backup.sql ``` 例) ```sh pg_dumpall -U example-misskey-user > backup.sql ``` ## 2. Dockerの導入 ### 前提条件 この手順を実行する前に以下の条件を満たしていることを確認してください。 - Debian系/CentOS系Linuxディストリビューション ### 検証環境 この手順は以下の環境で検証しています。 - Debian GNU/Linux 12 (bookworm) (x86_64) ### 手順 #### 1. Dockerのインストール 以下のコマンドを実行してください。 ```bash sudo apt update sudo apt install -y uidmap iptables ``` 以下のコマンドを実行してDockerをインストールしてください。 ```bash curl -fsSL https://get.docker.com | sh ``` インストールが完了したら以下のコマンドを実行してShellを再起動してください。 ```bash exec $SHELL -l ``` 次に以下のコマンドを実行してRootless Dockerをセットアップしてください。 ```bash dockerd-rootless-setuptool.sh install ``` セットアップが完了したら以下のコマンドを実行してShellを再起動してください。 ```bash exec $SHELL -l ``` #### 2. Dockerの動作確認 以下のコマンドを実行してDockerが正常に動作していることを確認します。 ```bash docker info ``` 出力例は以下のようになります ```bash Client: Docker Engine - Community Version: 27.3.1 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.17.1 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.29.7 Path: /usr/libexec/docker/cli-plugins/docker-compose Server: Containers: 38 Running: 21 Paused: 0 Stopped: 17 Images: 194 Server Version: 27.3.1 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 2 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog Swarm: inactive Runtimes: runc runsc io.containerd.runc.v2 Default Runtime: runc Init Binary: docker-init containerd version: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c runc version: v1.1.14-0-g2c9f560 init version: de40ad0 Security Options: apparmor seccomp Profile: builtin cgroupns Kernel Version: 6.1.0-23-amd64 Operating System: Debian GNU/Linux 12 (bookworm) OSType: linux Architecture: x86_64 CPUs: 20 Total Memory: 62.44GiB Name: cpwr-dev0 ID: c3f4c45b-1c16-45f6-a823-6a26cf6bfbd0 Docker Root Dir: /var/lib/docker Debug Mode: false Username: cffnpwr Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Default Address Pools: Base: 10.0.0.0/8, Size: 24 ``` ## 3. taiy forkのリポジトリのクローン 以下のコマンドを実行して`taiyme/misskey`をクローンします。 ```sh git remote add taiyme https://github.com/taiyme/misskey.git ``` `git remote -v`コマンドの実行結果が以下のようになればOKです。 ```sh $ git remote -v origin https://github.com/misskey-dev/misskey.git (fetch) origin https://github.com/misskey-dev/misskey.git (push) taiyme https://github.com/taiyme/misskey.git (fetch) taiyme https://github.com/taiyme/misskey.git (push) ``` ## 4. taiy fork最新版の取得 以下のコマンドを実行してGithubと同期を行ないます。 ```sh git fetch taiyme ``` 以下のコマンドを実行して最新のリリースに移動します。 ```sh git checkout 2024.10.1-taiyme.1 ``` ## 5. Dockerを利用したmisskeyの初期起動 ### 5.1 `compose.yaml`の作成 以下のコマンドを実行して`compose.yaml`を作成します。 ```sh cp compose_example.yml compose.yaml ``` ### 5.4 `.config/docker.env`の作成 以下のコマンドを実行して`.config/docker.env`を作成します。 ```sh cp .config/docker_example.env .config/docker.env ``` `.config/docker.env`にはDBのユーザ名・パスワード・DB名の情報が書かれています。 `.config/default.yml`に記載してあるものと同じものを書いてください。 以下に例を示します。 `.config/default.yml`の例 ```yaml=34 # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── db: host: localhost port: 5432 # Database name # You can set db from an environment variable instead. db: misskey # Auth # You can set user and pass from environment variables instead. user: example-misskey-user pass: example-misskey-pass ``` `.config/docker.env`の例 ``` # db settings POSTGRES_PASSWORD=example-misskey-pass POSTGRES_USER=example-misskey-user POSTGRES_DB=misskey ``` ### 5.4 `.config/default.yml`の変更 テキストエディタで`.config/default.yml`を開き、DBとRedisの接続情報を書き換えます。 以下のように`host`をそれぞれ`db`・`redis`と指定してください。 ```yaml=34 # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── db: host: db port: 5432 ``` ```yaml=74 # ┌─────────────────────┐ #───┘ Redis configuration └───────────────────────────────────── redis: host: redis port: 6379 ``` ### 5.5 DBのデータ移行 DBのみ起動します ```sh docker compose up db -d ``` ダンプしたデータを流し込みます。 ここで`[DB接続に使用するユーザ名]`および`[データベース名]`の部分は自身の環境に合わせて変更してください。 それぞれ`.config/docker.env`の中の`POSTGRES_USER=[DB接続に使用するユーザ名]`と`POSTGRES_DB=[データベース名]`の項目に合わせてください。 ```sh cat backup.sql | docker compose exec -T db psql -U [DB接続に使用するユーザ名] -d [データベース名] ``` 例) ```sh cat backup.sql | docker compose exec -T db psql -U example-misskey-user -d misskey ``` ### 5.6 Misskeyの起動 Misskeyを起動します ```sh docker compose up -d ``` このあと少し待ちます。 ブラウザからMisskeyにアクセスして起動が確認できれば成功です。 お疲れ様でした。 ## アップデート手順 アップデート方法と手順はtaiyが公開している手順書を見てください [taiy fork: 暫定的な更新手順について](https://gist.github.com/taiyme/47c4e4ec7c3abd81aa1ce0b7973800ef)