1
環境構築手順
みてるぞ が 2026-09-06 20:30:14 +09:00 にこのページを編集

サーバー環境構築

概要

nizika_nico はニコニコ関連の共通処理や共通データを提供する repository である。

今回の本番環境では:

/opt/nizika-nico

へ配置する。

この repository 自体を独立した常駐 systemd daemon として起動する構成ではない。

主に以下から利用される。

  • nizika_ai_service
  • nizika_broadcast

1. repository

信頼できる Gitea の最新 main を取得する。

配置:

/opt/nizika-nico

旧サーバーの working tree、Python cache、秘密情報入り設定ファイルをそのままコピーしない。


2. database

database:

nizika_nico

専用 MySQL user を作成する。

例:

CREATE USER 'nizika_nico_app'@'localhost'
IDENTIFIED BY 'NEW_RANDOM_PASSWORD';

GRANT ALL PRIVILEGES
ON nizika_nico.*
TO 'nizika_nico_app'@'localhost';

アプリから MySQL root は使用しない。

DB は信頼できる dump から復元する。

確認:

mysql \
  -u nizika_nico_app \
  -p \
  -e 'USE nizika_nico; SHOW TABLES;'

3. environment variable

利用する variable:

NIZIKA_NICO_MYSQL_USER
NIZIKA_NICO_MYSQL_PASS
NIZIKA_NICO_DIR

本番:

NIZIKA_NICO_DIR=/opt/nizika-nico

例:

NIZIKA_NICO_MYSQL_USER=...
NIZIKA_NICO_MYSQL_PASS=...
NIZIKA_NICO_DIR=/opt/nizika-nico

4. 利用側 env

nizika_ai_service:

/etc/nizika-ai-service.env

nizika_broadcast:

/etc/nizika-broadcast.env

それぞれに:

NIZIKA_NICO_MYSQL_USER=...
NIZIKA_NICO_MYSQL_PASS=...
NIZIKA_NICO_DIR=/opt/nizika-nico

を設定する。


5. Python dependency

この環境では主に以下を使用する。

eloquent==0.5
mysqlclient==2.2.8
requests==2.32.5
simplejson

system Python を使用する場合:

umask 022

を確認してから pip install する。


6. package permission

service user から Python package が読めない場合:

find /usr/local/lib/python3.14/dist-packages \
  -type d ! -perm -005 -o -type f ! -perm -004 \
  -print \
  | head

必要なら:

chmod -R a+rX \
  /usr/local/lib/python3.14/dist-packages

7. repository permission

利用する service user から repository 内を読み取れることを確認する。

例:

namei -l \
  /opt/nizika-nico/get_kiriban_list.py

repository 自体を service user から不要に writable にしない。


8. 動作確認

nizika_ai_service から利用する場合:

cd /opt/nizika-ai-service

set -a
. /etc/nizika-ai-service.env
set +a

その状態で nizika_nico 内 script が正常に実行できることを確認する。

nizika-ai-service.service から:

/opt/nizika-nico/get_kiriban_list.py

等が子プロセスとして起動される場合がある。


9. systemd

nizika_nico 自体の独立した systemd unit は作成しない。

実行主体は利用側 service。

例:

nizika-ai-service.service
nizika_broadcast.service

10. 関連リポジトリ

nizika_ai_service

nizika_nico の共通処理や DB を利用する。

nizika_broadcast

放送処理から nizika_nico のデータや script を利用する。

nizika_ai

AI 関連処理と合わせて利用される。