環境構築手順 を追加

2026-09-06 20:31:59 +09:00
コミット 6fec39964c
+127
@@ -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 を行う。