Misskeyをraspberry pi 4のRocky Linuxにインストールする。

スポンサーリンク
Linux
スポンサーリンク

Misskeyはどの様なことができるかRaspberry Pi 4(Rocky Linux release 9.5 (Blue Onyx) )にインストールしてみた。
サブドメインでは正常に動作しないので、専用のドメインを用意する必要が有る。

スポンサーリンク

前準備(関連パッケージのインストール)

以下のソフトウェアがインストールされて、設定されていることが条件です。

ソフトウェア バージョン 備考
Node.js v22
pnpm v10以上
PostgreSQL v15以上
Redis v6.2.17 別件でインストール済み
FFmpeg v7.1.1 別件でインストール済み

 

PostgreSQLのインストールと設定

有効なバージョンのPostgreSQLをインストールし、必要な設定を行う。

バージョン15をインストールする。

# yum module list postgresql
メタデータの期限切れの最終確認: 3:45:23 前の 2025年05月05日 12時17分53秒 に実施しました。
Rocky Linux 9 - AppStream
Name                      Stream          Profiles               Summary
postgresql                15              client, server [d]     PostgreSQL server and client module
postgresql                16              client, server [d]     PostgreSQL server and client module

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
#
# yum install -y @postgresql:15
メタデータの期限切れの最終確認: 3:45:58 前の 2025年05月05日 12時17分53秒 に実施しました。
依存関係が解決しました。
===============================================================================================================
 パッケージ                   アーキテクチャー  バージョン                              リポジトリー    サイズ
===============================================================================================================
アップグレード:
 postgresql                   aarch64       15.12-1.module+el9.5.0+30637+4391fcca   appstream       1.7 M
 postgresql-contrib           aarch64       15.12-1.module+el9.5.0+30637+4391fcca   appstream       910 k
 postgresql-private-devel     aarch64       15.12-1.module+el9.5.0+30637+4391fcca   appstream       62 k
 postgresql-private-libs      aarch64       15.12-1.module+el9.5.0+30637+4391fcca   appstream       139 k
 postgresql-server            aarch64       15.12-1.module+el9.5.0+30637+4391fcca   appstream       6.1 M
モジュールプロファイルのインストール中:
 postgresql/server
モジュールストリームの有効化中:
 postgresql                                           15
    :
 アップグレード済み:
  postgresql-15.12-1.module+el9.5.0+30637+4391fcca.aarch64
  postgresql-contrib-15.12-1.module+el9.5.0+30637+4391fcca.aarch64
  postgresql-private-devel-15.12-1.module+el9.5.0+30637+4391fcca.aarch64
  postgresql-private-libs-15.12-1.module+el9.5.0+30637+4391fcca.aarch64
  postgresql-server-15.12-1.module+el9.5.0+30637+4391fcca.aarch64

完了しました!
#

 

データベースを初期化する。

DBの領域確保と初期化を行う。

# postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
#

 

PostgreSQLを起動する。

PostgreSQLの自動起動を有効化し起動する。

# systemctl enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
#
# systemctl start postgresql
#
# systemctl status postgresql
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-05-05 16:09:40 JST; 9s ago
    Process: 208039 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
   Main PID: 208041 (postmaster)
      Tasks: 7 (limit: 23846)
        CPU: 159ms
     CGroup: /system.slice/postgresql.service
             ┣208041 /usr/bin/postmaster -D /var/lib/pgsql/data
             ┣208042 "postgres: logger "
             ┣208043 "postgres: checkpointer "
             ┣208044 "postgres: background writer "
             ┣208046 "postgres: walwriter "
             ┣208047 "postgres: autovacuum launcher "
             ┗208048 "postgres: logical replication launcher "

5月 05 16:09:40 raspberrypi systemd[1]: Starting PostgreSQL database server...
5月 05 16:09:40 raspberrypi postmaster[208041]: 2025-05-05 16:09:40.901 JST [208041] LOG: ログ出力をログ収集プロセスにリダイレク>
5月 05 16:09:40 raspberrypi postmaster[208041]: 2025-05-05 16:09:40.901 JST [208041] ヒント: ここからのログ出力はディレクトリ"lo>
5月 05 16:09:40 raspberrypi systemd[1]: Started PostgreSQL database server.
#

 

Misskeyで利用するDBユーザとDBを作成する。

Misskeyで利用するデータベースの利用ユーザとデータベースを作成する。
データベース利用ユーザ: misskey
データベース利用ユーザパスワード: mypassword
データベース名: misskey

合わせて、パスワードの認証の、postgresユーザのパスワード(mypassword)も設定する。

# su - postgres
$
$ psql
psql (13.20)
"help"でヘルプを表示します。

postgres=# CREATE ROLE misskey LOGIN PASSWORD 'mypassword';
CREATE ROLE
postgres=#
postgres=# CREATE DATABASE misskey OWNER misskey;
CREATE DATABASE
postgres=#
postgres=# alter role postgres with password 'mypassword';
ALTER ROLE
postgres=#
postgres=# \q
$

 

DBの定義ファイルのユーザのアクセスをパスワード認証に変更する。

Misskeyでのユーザ認証はパスワード認証のため、認証方法を修正する。

$ cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf_org
$
$ vi /var/lib/pgsql/data/pg_hba.conf
$
$ diff -c /var/lib/pgsql/data/pg_hba.conf_org /var/lib/pgsql/data/pg_hba.conf
*** /var/lib/pgsql/data/pg_hba.conf_org 2025-05-01 15:19:10.579957977 +0900
--- /var/lib/pgsql/data/pg_hba.conf     2025-05-01 15:17:53.620154640 +0900
***************
*** 81,89 ****
  # TYPE  DATABASE        USER            ADDRESS                 METHOD

  # "local" is for Unix domain socket connections only
! local   all             all                                     peer
  # IPv4 local connections:
! host    all             all             127.0.0.1/32            ident
  # IPv6 local connections:
  host    all             all             ::1/128                 ident
  # Allow replication connections from localhost, by a user with the
--- 81,89 ----
  # TYPE  DATABASE        USER            ADDRESS                 METHOD

  # "local" is for Unix domain socket connections only
! local   all             all                                     password
  # IPv4 local connections:
! host    all             all             127.0.0.1/32            password
  # IPv6 local connections:
  host    all             all             ::1/128                 ident
  # Allow replication connections from localhost, by a user with the
$
$ exit
ログアウト
#

 

PostgreSQLを再起動する。

パスワード認証を有効化するためPostgreSQLを再起度する。

# systemctl restart postgresql
#

 

作成したデータベースを確認する。

作成したMisskeyのDBを確認する。

# psql -U misskey -h localhost
ユーザ misskey のパスワード:
psql (13.20)
"help"でヘルプを表示します。

misskey=>
misskey=> \l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序  | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+------------+-------------------+-----------------------
 misskey   | misskey  | UTF8             | ja_JP.utf8 | ja_JP.utf8        |
 postgres  | postgres | UTF8             | ja_JP.utf8 | ja_JP.utf8        |
 template0 | postgres | UTF8             | ja_JP.utf8 | ja_JP.utf8        | =c/postgres          +
           |          |                  |            |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.utf8 | ja_JP.utf8        | =c/postgres          +
           |          |                  |            |                   | postgres=CTc/postgres
(4 行)

misskey=> \q
#

 

Redisのバージョンを確認する。

すでにインストールしているRedisパッケージのバージョンを確認する。

$ redis-cli -v
redis-cli 6.2.17
$

 

FFmpegのバージョンを確認する。

すでにインストールしているFFmpegパッケージのバージョンを確認する。

$ ffmpeg -v
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 11 (GCC)
  configuration:
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
Missing argument for option 'v'.
Error splitting the argument list: Invalid argument
$

 

misskeyユーザを作成する。

Misskeyのプログラムを実行するユーザを作成する。

# adduser misskey
#
# su - misskey
$

 

pnpmの最新バージョンをインストールする。

Node.jsのパッケージマネージャーをインストールする。

$ curl -fsSL https://get.pnpm.io/install.sh | sh -
==> Downloading pnpm binaries 10.10.0
?WARN? using --force I sure hope you know what you are doing
Copying pnpm CLI from /tmp/tmp.BRgXymQoUY/pnpm to /home/misskey/.local/share/pnpm/pnpm
Appended new lines to /home/misskey/.bashrc

Next configuration changes were made:
export PNPM_HOME="/home/misskey/.local/share/pnpm"
case ":$PATH:" in
  *":$PNPM_HOME:"*) ;;
  *) export PATH="$PNPM_HOME:$PATH" ;;
esac

To start using pnpm, run:
source /home/misskey/.bashrc
$
$ source .bashrc
#

 

環境変数を設定する。

$ cp .bashrc .bashrc_org
$
$ vi .bashrc
$
$ diff .bashrc_org .bashrc
28a29,36
> # pnpm
> export PNPM_HOME="/home/misskey/.local/share/pnpm"
> case ":$PATH:" in
>   *":$PNPM_HOME:"*) ;;
>   *) export PATH="$PNPM_HOME:$PATH" ;;
> esac
> # pnpm end
>
$
$ source .bashrc
$

 

.bash_profileファイルが無い場合は、ファイルを作成する。

ログイン時に.bashrcファイルを読み込まれる.bash_profileを作成する。

$ vi .bash_profile
$
$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
$

 

Node.jsの最新バージョンをインストールする。

Node.jsのパッケージマネージャーをインストールしたため、Misskeyで対応するバージョンの22をインストールする。

# yum module list nodejs
メタデータの期限切れの最終確認: 1:00:03 前の 2025年04月29日 12時35分03秒 に実施しました。
Rocky Linux 9 - AppStream
Name                   Stream                Profiles                                             Summary
nodejs                 18                    common [d], development, minimal, s2i                Javascript runtime
nodejs                 20                    common [d], development, minimal, s2i                Javascript runtime
nodejs                 22                    common [d], development, minimal, s2i                Javascript runtime

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
#
# yum module install -y nodejs:22
メタデータの期限切れの最終確認: 1:00:36 前の 2025年04月29日 12時35分03秒 に実施しました。
依存関係が解決しました。
==================================================================================================================
 パッケージ                アーキテクチャー バージョン                                          リポジトリー   サイズ
==================================================================================================================
アップグレード:
 nodejs                    aarch64          1:22.13.1-1.module+el9.5.0+30609+557cb4b3           appstream      1.9 M
 nodejs-docs               noarch           1:22.13.1-1.module+el9.5.0+30609+557cb4b3           appstream      8.6 M
 nodejs-full-i18n          aarch64          1:22.13.1-1.module+el9.5.0+30609+557cb4b3           appstream      8.6 M
 nodejs-libs               aarch64          1:22.13.1-1.module+el9.5.0+30609+557cb4b3           appstream       19 M
 npm                       aarch64          1:10.9.2-1.22.13.1.1.module+el9.5.0+30609+557cb4b3  appstream      2.0 M
モジュールプロファイルのインストール中:
 nodejs/common
モジュールストリームの有効化中:
 nodejs                                     22
   :
  nodejs-1:22.13.1-1.module+el9.5.0+30609+557cb4b3.aarch64
  nodejs-docs-1:22.13.1-1.module+el9.5.0+30609+557cb4b3.noarch
  nodejs-full-i18n-1:22.13.1-1.module+el9.5.0+30609+557cb4b3.aarch64 
 nodejs-libs-1:22.13.1-1.module+el9.5.0+30609+557cb4b3.aarch64
  npm-1:10.9.2-1.22.13.1.1.module+el9.5.0+30609+557cb4b3.aarch64

完了しました!
#

 

Misskeyをインストールして設定する。

 

Misskeyパッケージをインストールする。

# sudo -iu misskey
$
$ git clone --recursive https://github.com/misskey-dev/misskey.git
Cloning into 'misskey'...
remote: Enumerating objects: 264794, done.
remote: Counting objects: 100% (244/244), done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 264794 (delta 182), reused 131 (delta 130), pack-reused 264550 (from 2)
Receiving objects: 100% (264794/264794), 167.86 MiB | 11.00 MiB/s, done.
Resolving deltas: 100% (206920/206920), done.
Updating files: 100% (2771/2771), done.
Submodule 'fluent-emojis' (https://github.com/misskey-dev/emojis.git) registered for path 'fluent-emojis'
Cloning into '/home/misskey/misskey/fluent-emojis'...
remote: Enumerating objects: 1551, done.
remote: Counting objects: 100% (1551/1551), done.
remote: Compressing objects: 100% (1550/1550), done.
remote: Total 1551 (delta 1), reused 1551 (delta 1), pack-reused 0 (from 0)
Receiving objects: 100% (1551/1551), 12.40 MiB | 10.79 MiB/s, done.
Resolving deltas: 100% (1/1), done.
Submodule path 'fluent-emojis': checked out 'cae981eb4c5189ea9ea3230e83b876a5068df7d1'
$
$ cd misskey
$
$ git checkout master
branch 'master' set up to track 'origin/master'.
Switched to a new branch 'master'
$
$ git submodule update --init
$
$ NODE_ENV=production pnpm install --frozen-lockfile
Scope: all 10 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +2210
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Downloading @img/sharp-libvips-linux-arm64@1.1.0: 7.62 MB/7.62 MB, done
Downloading @img/sharp-libvips-linuxmusl-arm64@1.1.0: 7.63 MB/7.63 MB, done
      :
node_modules/.pnpm/v-code-diff@1.13.1_vue@3.5.13_typescript@5.8.3_/node_modules/v-code-diff: Running postinstall script, done in 782ms
node_modules/.pnpm/@tensorflow+tfjs-node@4.22.0_encoding@0.1.13_seedrandom@3.0.5/node_modules/@tensorflow/tfjs-node: Running instalnode_modules/.pnpm/@tensorflow+tfjs-node@4.22.0_encoding@0.1.13_seedrandom@3.0.5/node_modules/@tensorflow/tfjs-node: Running install script, done in 43.1s
node_modules/.pnpm/@nestjs+core@11.1.0_@nestjs+common@11.1.0_reflect-metadata@0.2.2_rxjs@7.8.2__@nestjs+pl_aa3831a022f6328434dff0a5node_modules/.pnpm/@nestjs+core@11.1.0_@nestjs+common@11.1.0_reflect-metadata@0.2.2_rxjs@7.8.2__@nestjs+pl_aa3831a022f6328434dff0a5eb1ab4c9/node_modules/@nestjs/core: Running postinstall script, done in 751ms

dependencies:
+ cssnano 7.0.6
+ esbuild 0.25.3
+ execa 9.5.2
+ fast-glob 3.3.3
+ glob 11.0.2
+ ignore-walk 7.0.0
+ js-yaml 4.1.0
+ postcss 8.5.3
+ tar 7.4.3
+ terser 5.39.0
+ typescript 5.8.3

optionalDependencies:
+ @tensorflow/tfjs-core 4.22.0

devDependencies:
+ @misskey-dev/eslint-plugin 2.1.0
+ @types/node 22.15.2
+ @typescript-eslint/eslint-plugin 8.31.0
+ @typescript-eslint/parser 8.31.0
+ cross-env 7.0.3
+ cypress 14.3.2
+ eslint 9.25.1
+ globals 16.0.0
+ ncp 2.0.0
+ pnpm 10.10.0
+ start-server-and-test 2.0.11

Done in 9m 41.7s using pnpm v10.10.0
$

 

Misskeyを設定する。

ドメイン名とDBサクセスのユーザ名やパスワードを設定する。

$ cp .config/example.yml .config/default.yml
$
$ vi .config/default.yml
$
$ diff -c .config/example.yml .config/default.yml
*** .config/example.yml 2025-05-31 13:49:24.774404986 +0900
--- .config/default.yml 2025-05-31 13:56:24.241140075 +0900
***************
*** 77,83 ****
  #qqqj URL mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

  # Final accessible URL seen by a user.
! url: https://example.tld/

  # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
  # URL SETTINGS AFTER THAT!
--- 77,83 ----
  #qqqj URL mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

  # Final accessible URL seen by a user.
! url: https://ksm.hoge00.jp/

  # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
  # URL SETTINGS AFTER THAT!
***************
*** 116,123 ****
    db: misskey

    # Auth
!   user: example-misskey-user
!   pass: example-misskey-pass

    # Whether disable Caching queries
    #disableCache: true
--- 116,123 ----
    db: misskey

    # Auth
!   user: misskey
!   pass: hoge111

    # Whether disable Caching queries
    #disableCache: true
$

 

Misskeyのビルドと初期化を行う。

$ NODE_ENV=production pnpm run build

> misskey@2025.5.0 build /home/misskey/misskey
> pnpm build-pre && pnpm -r build && pnpm build-assets

> misskey@2025.5.0 build-pre /home/misskey/misskey
> node ./scripts/build-pre.js

Scope: 9 of 10 workspace projects
packages/misskey-bubble-game build$ node ./build.js
x [misskey-bubble-game] start building...
x [misskey-bubble-game] build succeeded.
          :
[7 lines collapsed]
Ⅰ ../../built/_frontend_embed_vite_/Cqq1W_WT.png                   6.29 kB
Ⅰ ../../built/_frontend_embed_vite_/CthQ4-e5.woff2               820.32 kB
Ⅰ ../../built/_frontend_embed_vite_/Cxsed65d.woff              1,203.84 kB
Ⅰ ../../built/_frontend_embed_vite_/FR5pMc0b.ttf               2,382.35 kB
Ⅰ ../../built/_frontend_embed_vite_/Dhs21BEC.css                  22.93 kB
Ⅰ ../../built/_frontend_embed_vite_/Crj5WEiX.css                 244.63 kB
Ⅰ ../../built/_frontend_embed_vite_/app-BKDYMLKy.js               44.62 kB
Ⅰ ../../built/_frontend_embed_vite_/BG1JcAnM.js                   63.82 kB
Ⅰ ../../built/_frontend_embed_vite_/C0ITntOc.js                  110.84 kB
Ⅰ ✓ built in 37.96s
┗ Done in 43.6s

> misskey@2025.5.0 build-assets /home/misskey/misskey
> node ./scripts/build-assets.mjs

$
$ pnpm run init

> misskey@2025.4.0 init /home/misskey/misskey
> pnpm migrate

> misskey@2025.4.0 migrate /home/misskey/misskey
> cd packages/backend && pnpm migrate

> backend@ migrate /home/misskey/misskey/packages/backend
> pnpm typeorm migration:run -d ormconfig.js

query: SELECT * FROM current_schema()
query: SELECT version();
query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'migrations'
query: CREATE TABLE "migrations" ("id" SERIAL NOT NULL, "timestamp" bigint NOT NULL, "name" character varying NOT NULL, CONSTRAINT "PK_8c82d7f526340ab734260ea46be" PRIMARY KEY ("id"))
query: SELECT * FROM "migrations" "migrations" ORDER BY "id" DESC
0 migrations are already loaded in the database.
           :
Migration RoleCopyOnMoveAccount1743558299182 has been  executed successfully.
query: ALTER TABLE "antenna" RENAME COLUMN "hideNotesInSensitiveChannel" TO "excludeNotesInSensitiveChannel"
query: INSERT INTO "migrations"("timestamp", "name") VALUES ($1, $2) -- PARAMETERS: [1744075766000,"ExcludeNotesInSensitiveChannel1744075766000"]
Migration ExcludeNotesInSensitiveChannel1744075766000 has been  executed successfully.
query: COMMIT
$

 

Misskeyの起動(失敗)

起動するとexit code 129で異常終了する。

$ NODE_ENV=production pnpm run start

> misskey@2025.5.0 start /home/misskey/misskey
> pnpm check:connect && cd packages/backend && node ./built/boot/entry.js


> misskey@2025.5.0 check:connect /home/misskey/misskey
> cd packages/backend && pnpm check:connect


> backend@ check:connect /home/misskey/misskey/packages/backend
> node ./scripts/check_connect.js

 ELIFECYCLE  Command failed with exit code 129.
$

 

arm64 CPUの場合エラーが発生する

以下のURLに回答が最近記載された。
2025.5.0 does not run ond Ubuntu 24.04.2 #16080
概要:
@napi-rs/canvasライブラリがarm64 CPUでは動作しない。
packages/backend/src/misc/gen-identicon.tsファイルに記載された、@napi-rs/canvasのimport定義をコメントアウトする。

2025年5月上旬のインストール時に障害に会い、いろいろ調べてが判明せず。
5月下旬にやっと対応方法が判明した。

 

ファイルを修正する。

@napi-rs/canvasのimportをコメントアウトする。

$ cp packages/backend/src/misc/gen-identicon.ts packages/backend/src/misc/gen-identicon.ts_org
$
$ vi packages/backend/src/misc/gen-identicon.ts
$
$ diff -c packages/backend/src/misc/gen-identicon.ts_org packages/backend/src/misc/gen-identicon.ts
*** packages/backend/src/misc/gen-identicon.ts_org      2025-05-31 14:28:48.739349314 +0900
--- packages/backend/src/misc/gen-identicon.ts  2025-05-31 14:29:07.727293024 +0900
***************
*** 8,14 ****
   * https://en.wikipedia.org/wiki/Identicon
   */

! import { createCanvas } from '@napi-rs/canvas';
  import gen from 'random-seed';

  const size = 128; // px
--- 8,14 ----
   * https://en.wikipedia.org/wiki/Identicon
   */

! // import { createCanvas } from '@napi-rs/canvas';
  import gen from 'random-seed';

  const size = 128; // px
$

 

再度ビルドと初期化を行う。

ファイルを修正したので、再度ビルトと、念のため初期化を行う。

$ NODE_ENV=production pnpm run build

> misskey@2025.5.0 build /home/misskey/misskey
> pnpm build-pre && pnpm -r build && pnpm build-assets

> misskey@2025.5.0 build-pre /home/misskey/misskey
> node ./scripts/build-pre.js

Scope: 9 of 10 workspace projects
packages/misskey-bubble-game build$ node ./build.js
Ⅰ [misskey-bubble-game] start building...
Ⅰ [misskey-bubble-game] build succeeded.
Ⅰ [misskey-bubble-game] skip building d.ts because NODE_ENV is production.
Ⅰ[misskey-bubble-game] finish building.
┗ Done in 2.4s
packages/misskey-js build$ node ./build.js
Ⅰ [misskey-js] start building...
Ⅰ [misskey-js] build succeeded.
Ⅰ [misskey-js] skip building d.ts because NODE_ENV is production.
┗ [misskey-js] finish building.
mq Done in 1.9s
packages/misskey-reversi build$ node ./build.js
Ⅰ [misskey-reversi] start building...
Ⅰ [misskey-reversi] build succeeded.
Ⅰ [misskey-reversi] skip building d.ts because NODE_ENV is production.
┗ [misskey-reversi] finish building.
mq Done in 2.4s
packages/backend build$ swc src -d built -D --strip-leading-paths
x Successfully compiled: 886 files, copied 31 files with swc (506.47ms)
mq Done in 5.8s
packages/frontend-shared build$ node ./build.js
Ⅰ [frontend-shared] start building...
Ⅰ [frontend-shared] build succeeded.
Ⅰ [frontend-shared] skip building d.ts because NODE_ENV is production.
┗ [frontend-shared] finish building.
mq Done in 2.4s
packages/sw build$ node build.js
Ⅰ Starting SW building...
┗ done
mq Done in 4s
packages/frontend build$ vite build
[646 lines collapsed]
Ⅰ ../../built/_frontend_vite_/CC5lIlZc.js                  177.16 kB
Ⅰ ../../built/_frontend_vite_/DMDrRND9.js                  192.94 kB
Ⅰ ../../built/_frontend_vite_/CLm82A-F.js                  274.22 kB
Ⅰ ../../built/_frontend_vite_/DHH9kzWJ.js                  350.08 kB
Ⅰ ../../built/_frontend_vite_/app-Dk-rInfu.js              713.10 kB
Ⅰ ✓ built in 2m 46s
Ⅰ (!) Some chunks are larger than 500 kB after minification. Consider:
Ⅰ - Using dynamic import() to code-split the application
Ⅰ - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualch…
Ⅰ - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
┗ Done in 2m 57.8s
packages/frontend-embed build$ vite build
[7 lines collapsed]
Ⅰ ../../built/_frontend_embed_vite_/Cqq1W_WT.png                   6.29 kB
Ⅰ ../../built/_frontend_embed_vite_/CthQ4-e5.woff2               820.32 kB
Ⅰ ../../built/_frontend_embed_vite_/Cxsed65d.woff              1,203.84 kB
Ⅰ ../../built/_frontend_embed_vite_/FR5pMc0b.ttf               2,382.35 kB
Ⅰ ../../built/_frontend_embed_vite_/Dhs21BEC.css                  22.93 kB
Ⅰ ../../built/_frontend_embed_vite_/Crj5WEiX.css                 244.63 kB
Ⅰ ../../built/_frontend_embed_vite_/app-BKDYMLKy.js               44.62 kB
Ⅰ ../../built/_frontend_embed_vite_/BG1JcAnM.js                   63.82 kB
Ⅰ ../../built/_frontend_embed_vite_/C0ITntOc.js                  110.84 kB
Ⅰ ✓ built in 35.09s
┗ Done in 39.6s

> misskey@2025.5.0 build-assets /home/misskey/misskey
> node ./scripts/build-assets.mjs

$
$ pnpm run init

> misskey@2025.5.0 init /home/misskey/misskey
> pnpm migrate

> misskey@2025.5.0 migrate /home/misskey/misskey
> cd packages/backend && pnpm migrate

> backend@ migrate /home/misskey/misskey/packages/backend
> pnpm typeorm migration:run -d ormconfig.js

query: SELECT version()
query: SELECT * FROM current_schema()
query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'migrations'
query: SELECT * FROM "migrations" "migrations" ORDER BY "id" DESC
No migrations are pending
$

 

Misskeyを起動する

$ NODE_ENV=production pnpm run start

> misskey@2025.5.0 start /home/misskey/misskey
> pnpm check:connect && cd packages/backend && node ./built/boot/entry.js

> misskey@2025.5.0 check:connect /home/misskey/misskey
> cd packages/backend && pnpm check:connect

> backend@ check:connect /home/misskey/misskey/packages/backend
> node ./scripts/check_connect.js

INFO *  [core]  Start main process... pid: 208833
  _____ _         _
 |     |_|___ ___| |_ ___ _ _
 | | | | |_ -|_ -| '_| -_| | |
 |_|_|_|_|___|___|_,_|___|_  |
 v2025.5.0               |___|

 Misskey is an open-source decentralized microblogging platform.
 If you like Misskey, please donate to support development. https://www.patreon.com/syuilo

--- raspberrypi (PID: 208833) ---
INFO *  [core boot]     Welcome to Misskey!
INFO *  [core boot]     Misskey v2025.5.0
INFO *  [core boot env] NODE_ENV: production
(node:208833) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
INFO *  [core boot nodejs]      Version v22.13.1 detected.
DONE *  [core boot config]      Loaded
DONE *  [core boot]     Misskey initialized
INFO *  [core boot]     mode: [disableClustering: false, onlyServer: false, onlyQueue: false]
INFO *  [core nest]     NestFactory: Starting Nest application...
INFO *  [core nest]     InstanceLoader: MainModule dependencies initialized
INFO *  [core nest]     InstanceLoader: QueueModule dependencies initialized
IMPORTANT! Eviction policy is allkeys-lru. It should be "noeviction"
IMPORTANT! Eviction policy is allkeys-lru. It should be "noeviction"
           :
CTRL + C
#

 

nginxにアクセスする設定を行う。

Misskeyのポートは3000である。
クライアントからアクセスされると、プロキシとしてMisskeyの3000番ポートに転送する設定を行う。

# cd /etc/nginx/conf.d
#
# vi hogehoge.jp.conf
#
# cat hogehoge.jp.conf
server {
        listen          443 ssl http2;
        server_name     ksm.wjg.jp;
        root            /var/www/hogehoge.jp;
          :
        # Proxy to Node
        location / {
                proxy_pass              http://127.0.0.1:3000;
                proxy_set_header        Host $host;
                proxy_http_version      1.1;
                proxy_redirect          off;

                # If it's behind another reverse proxy or CDN, remove the following.
                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;

                # 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;
                proxy_force_ranges      on;
                add_header              X-Cache $upstream_cache_status;
        }
}
$

 

nginxを再起動する。

 

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#
# systemctl restart nginx
#

 

ブート時にMisskeyを自動起動する設定を行う。

システム再起動時に自動起動する様に設定する。

# vi /etc/systemd/system/misskey.service
#
# cat /etc/systemd/system/misskey.service
[Unit]
Description=Misskey daemon

[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

#
# systemctl enable misskey
Created symlink /etc/systemd/system/multi-user.target.wants/misskey.service → /etc/systemd/system/misskey.service.
#
# systemctl start misskey
#
# systemctl status misskey
● misskey.service - Misskey daemon
     Loaded: loaded (/etc/systemd/system/misskey.service; enabled; preset: disabled)
     Active: active (running) since Sat 2025-05-31 18:49:02 JST; 15s ago
   Main PID: 223594 (npm start)
      Tasks: 18 (limit: 23846)
        CPU: 15.599s
     CGroup: /system.slice/misskey.service
             tq223594 "npm start"
             mq223606 node ./built/boot/entry.js

 5月 31 18:49:02 raspberrypi systemd[1]: Started Misskey daemon.
 5月 31 18:49:03 raspberrypi misskey[223594]: > misskey@2025.5.0 start
 5月 31 18:49:03 raspberrypi misskey[223594]: > pnpm check:connect && cd packages/backend && node ./built/boot/entry.js
 5月 31 18:49:06 raspberrypi misskey[223607]: > misskey@2025.5.0 check:connect /home/misskey/misskey
 5月 31 18:49:06 raspberrypi misskey[223607]: > cd packages/backend && pnpm check:connect
 5月 31 18:49:09 raspberrypi misskey[223624]: > backend@ check:connect /home/misskey/misskey/packages/backend
 5月 31 18:49:09 raspberrypi misskey[223624]: > node ./scripts/check_connect.js
#
# ps -fae | grep misskey
misskey   223594       1  3 18:49 ?        00:00:01 npm start
misskey   223606  223594 76 18:49 ?        00:00:27 node ./built/boot/entry.js
root      223709  187121  0 18:49 pts/0    00:00:00 grep --color=auto misskey
#

 

ブラウザでアクセスする。

画面が表示された。

 

管理者のユーザ名とパスワードを設定する。

初期設定開始用パスワードを無視して、管理用ユーザ名とパスワードを入力して、登録する。