commit 6fec39964c09b188765c5938f4c4051069939618 Author: みてるぞ Date: Sun Sep 6 20:31:59 2026 +0900 環境構築手順 を追加 diff --git a/%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86.md b/%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86.md new file mode 100644 index 0000000..a94d4b4 --- /dev/null +++ b/%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86.md @@ -0,0 +1,127 @@ +# サーバー環境構築 + +## 概要 + +`nicolib` は共通 library として利用する repository である。 + +今回の Ubuntu 26.04 LTS 環境では、`nicolib` 自体を独立した daemon として起動する構成ではない。 + +専用 systemd unit や専用 database は作成しない。 + +--- + +# 1. repository + +信頼できる Gitea の最新 `main` を使用する。 + +旧サーバーから以下をそのまま持ち込まない。 + +- Python cache +- compiled artifact +- credential +- 秘密情報入り設定 +- 信頼できない binary + +--- + +# 2. Python environment + +本番環境: + +```text +Ubuntu 26.04 LTS +Python 3.14 +``` + +system-wide pip を使用する場合: + +```bash +umask 022 +``` + +を確認する。 + +--- + +# 3. package permission + +`umask 077` の状態で pip install すると、 + +```text +drwx------ +-rw------- +``` + +のような権限で package が配置される場合がある。 + +service user から import できなくなるため注意する。 + +確認: + +```bash +find /usr/local/lib/python3.14/dist-packages \ + -type d ! -perm -005 -o -type f ! -perm -004 \ + -print \ + | head +``` + +必要な場合: + +```bash +chmod -R a+rX \ + /usr/local/lib/python3.14/dist-packages +``` + +--- + +# 4. 動作確認 + +実際に利用する service user から import する。 + +利用主体が `nizika` の場合: + +```bash +runuser -u nizika -- \ + python3 -c \ + 'import nicolib; print(nicolib.__file__)' +``` + +利用主体が `nizika-ai` の場合: + +```bash +runuser -u nizika-ai -- \ + python3 -c \ + 'import nicolib; print(nicolib.__file__)' +``` + +--- + +# 5. 秘密情報 + +library repository 内へ秘密情報を保存しない。 + +DB password、API key 等が必要な場合は利用側 service の: + +```text +/etc/*.env +``` + +から environment variable として渡す。 + +--- + +# 6. systemd + +`nicolib` 自体には systemd service を作成しない。 + +常駐 process の管理は、実際に `nicolib` を使用する上位 application が担当する。 + +--- + +# 7. 再構築時の原則 + +1. Gitea の信頼できる最新 `main` を取得する。 +2. service user から読み取り可能にする。 +3. secrets を repository に保存しない。 +4. system Python の package permission を確認する。 +5. 実際の利用 user から import test を行う。 \ No newline at end of file