β版の導入:Windows 11
Windows 11(x64)へ、新しいローカルβ環境を作ります。最初に対象・設定・確認項目を確認してください。使用するのはPython 3.12、SQLite、PowerShellです。
到達点:このPCのブラウザーから、パスワード認証でログインし、架空データを保存・再表示できること。 園内の別端末からの利用には追加の構築が必要です。
1. 準備する
- Windowsを更新し、ソフトウェアを導入できるユーザーでサインインします。
- インストール用のインターネット接続、ブラウザー、退避用の空き容量を用意します。容量・性能の正式な最小要件は未測定です。
- スタートメニューから「PowerShell」を開きます。以下は通常権限のPowerShellで行います。
Git for Windows公式ページからx64版をインストールします。Pythonが未導入なら、Python公式のWindows導入方法に従ってPython Install Managerを入れます。
インストール後はPowerShellを開き直します。既に py -3.12 --version が成功する場合、Pythonの追加導入は不要です。未導入ならInstall Managerから次を実行します。
pymanager install 3.12
次の両方が成功することを確認します。
git --version
py -3.12 --version
Pythonは Python 3.12.x と表示されれば次へ進めます。pymanager は旧Python Launcherの py と衝突しにくい管理コマンドです。見つからない場合はInstall Managerの導入とPowerShellの開き直しを確認します。
2. β専用フォルダーへ取得する
ユーザーフォルダー直下の hoikuict-beta を使用します。同名フォルダーが既にある場合は初回導入を続行せず、既存の試用環境か確認します。OneDrive等の同期フォルダーは選びません。
Set-Location $env:USERPROFILE
if (Test-Path -LiteralPath .\hoikuict-beta) { throw 'hoikuict-beta already exists' }
git clone https://github.com/hoikuict/open-hoikuict.git hoikuict-beta
cloneが成功したら、基準コミットへ切り替えます。
Set-Location .\hoikuict-beta
git checkout --detach 7cafb09cad1f1eee972883f2c3fac14673873b35
git rev-parse HEAD
最後の表示が指定した40桁と一致することを確認し、導入記録へ転記します。detached HEAD は版を固定した状態を示す案内で、ここでは正常です。この手順書の作成基準であり、正式βタグではありません。
以降はこのフォルダー内で実行します。新しくPowerShellを開いた場合は、まず次を実行します。
Set-Location (Join-Path $env:USERPROFILE 'hoikuict-beta')
3. Python環境を作る
py -3.12 -m venv venv
.\venv\Scripts\python.exe -m pip install --upgrade pip
.\venv\Scripts\python.exe -m pip install -r requirements.txt
.\venv\Scripts\python.exe -m pip check
各コマンドのエラーがないことを確認します。最後に No broken requirements found. と表示されます。試用の実行に requirements-dev.txt は不要です。
この手順は仮想環境のPythonを直接指定するので、Activate.ps1 やPowerShellの実行ポリシー変更は不要です。
4. β設定と秘密鍵を作る
まず、別環境の設定がPowerShellに残っていないか、変数名だけを確認します。
Get-ChildItem Env: |
Where-Object { $_.Name -match '^(HOIKUICT_|HOIKU_|FORWARDED_ALLOW_IPS$)' } |
Select-Object -ExpandProperty Name
何も表示されなければ続行します。表示された場合は環境設定の担当者とその用途を確認し、β用のシェルへ他環境の値が継承されない状態にします。設定ファイルよりプロセスの環境変数が優先されます。
次のブロックを、@' から最後の行までまとめて実行します。秘密鍵を画面に表示せず、UTF-8の .env.beta.local へ保存します。既存ファイルは上書きしません。
@'
from pathlib import Path
import secrets
source = Path('.env.beta.example').read_text(encoding='utf-8')
keys = {
'HOIKUICT_SECRET_KEY': secrets.token_urlsafe(32),
'HOIKUICT_LOGIN_THROTTLE_HMAC_KEY': secrets.token_urlsafe(32),
}
lines = []
for line in source.splitlines():
name = line.partition('=')[0]
lines.append(name + '=' + keys[name] if name in keys else line)
with Path('.env.beta.local').open('x', encoding='utf-8') as output:
output.write('\n'.join(lines) + '\n')
print('Created .env.beta.local')
'@ | .\venv\Scripts\python.exe -
Created .env.beta.local が表示されたら、初回だけ次の設定検査を実行します。
.\venv\Scripts\python.exe -c "from dotenv import load_dotenv; load_dotenv('.env.beta.local', override=True); from security_config import validate_runtime_security; validate_runtime_security(); print('Settings OK')"
Settings OK を確認します。初期値と保存先は共通の設定表を参照します。.env.beta.local は秘密情報です。チャットやIssueに内容を貼らず、起動のたびに再作成しません。
5. 初期管理者を作る
空のβ専用DBに対して、初回だけ実行します。
.\venv\Scripts\python.exe -c "from dotenv import load_dotenv; load_dotenv('.env.beta.local', override=True); from scripts.auth_user import main; raise SystemExit(main(['bootstrap-admin']))"
入力する6項目の例に沿って回答し、内容を確認して yes と入力します。CLIを読み込む前にβ設定を読み込むことが必要なので、上のコマンドを省略せず使います。
「初期管理者を作成しました」と有効化コードが表示されたら、30分以内に次の章へ進みます。コードは一度だけ表示されます。
6. 起動してログインする
.\venv\Scripts\python.exe -m uvicorn main:app --env-file .env.beta.local --host 127.0.0.1 --port 8001
Application startup complete. が表示されたら、PowerShellを開いたままブラウザーで操作します。
- 起動確認で
{"status":"ok"}を確認します。 - 職員の有効化で有効化コードを入力します。続く画面で対象職員・ログインIDを確認し、自分で決めた8文字以上のパスワードを確認欄にも入力して設定します。
- 職員ログインで、同じログインID・パスワードを使います。
- 初回の動作確認表に沿って、架空データの登録・再表示を確認します。
アクセス先は 127.0.0.1:8001 に揃えます。PC名や localhost と混ぜて操作しません。--reload は付けません。
7. 停止・翌日の起動
停止するときは、アプリを起動したPowerShellで Ctrl+C を押します。Application shutdown complete. が表示され、入力待ちに戻るまで待ちます。
次回はPowerShellを開き、以下だけを実行します。
Set-Location (Join-Path $env:USERPROFILE 'hoikuict-beta')
.\venv\Scripts\python.exe -m uvicorn main:app --env-file .env.beta.local --host 127.0.0.1 --port 8001
管理者や設定を再作成する必要はありません。Windowsの再起動後は手動で起動します。PCがスリープすると利用できなくなります。
既存の scripts/start_beta.ps1 も同じ venv・設定ファイルを使います。上の直接起動なら、そのスクリプトの実行可否に依存しません。
8. 停止して退避する
この標準構成の架空データを保存する方法です。第7章で停止し、同じフォルダーを使うCLI等も終了してから実行します。保存先を変更している場合は共通の退避条件を先に確認します。
$betaRoot = Join-Path $env:USERPROFILE 'hoikuict-beta'
$betaBackupRoot = Join-Path $env:USERPROFILE 'hoikuict-beta-backups'
New-Item -ItemType Directory -Force -Path $betaBackupRoot | Out-Null
$betaBackupPath = Join-Path $betaBackupRoot (Get-Date -Format 'yyyyMMdd-HHmmss-fff')
if (Test-Path -LiteralPath $betaBackupPath) { throw 'Backup destination already exists' }
Copy-Item -LiteralPath $betaRoot -Destination $betaBackupPath -Recurse -Force -ErrorAction Stop
Get-Item -Force -LiteralPath (Join-Path $betaBackupPath '.env.beta.local'), (Join-Path $betaBackupPath 'hoikuict-beta-auth.db')
最後に退避先の設定ファイルとDBが表示されること、エクスプローラーで data・storage 内の使用済みファイルも含まれることを確認します。日時・導入コミットを記録します。フォルダー全体なので、仮想環境も含めた容量が必要です。
同じディスク上の退避だけではPC故障に備えられません。必要な世代は、アクセスを管理した別媒体にもコピーします。稼働中の .db だけをコピーする方法には置き換えません。
復旧を試す
- アプリと、このDBへ書き込む処理をすべて停止します。
- エクスプローラーで現在の
hoikuict-betaを、重複しないhoikuict-beta-before-restore-日時等へ名前変更して残します。 - 退避した日時フォルダーをユーザーフォルダー直下へコピーし、コピー側を
hoikuict-betaに名前変更します。直下にmain.pyと.env.beta.localがある階層へ戻します。 - 元と同じPC・同じパスで第7章の起動コマンドを実行します。仮想環境を再利用できない場合は、復旧した側の
venvを別名に退避し、第3章で作り直します。 - 退避時のログイン、架空データ、添付を確認して結果を記録します。初期管理者・秘密鍵は再作成しません。
これは停止したローカル試用環境を戻す手順です。別PCへの移行や稼働施設の復旧はバックアップ検証手順に従います。
9. つまずいたとき
| 症状 | 確認・対処 |
|---|---|
git / py が見つからない |
導入後にPowerShellを開き直し、第1章の版確認をする |
| Pythonが3.12でない | py -3.12 を指定して venv を作ったか確認する |
No module named ... |
第3章のインストールが成功したか確認し、venv\Scripts\python.exe を使う |
.env.beta.local が既にある |
作り直さず、既存設定と第4章の検査結果を確認する |
productionセキュリティ設定が不正 |
第2章のフォルダーと --env-file、継承された環境変数を確認する |
| 職員を選ぶモック画面になる | 第4章の環境変数と、起動コマンド・ポートを確認する |
WinError 10048 / ポート使用中 |
以前起動したβが残っていないか確認して停止する。別のアプリを無断終了しない |
| ブラウザーが接続できない | 起動完了ログ、http、127.0.0.1、8001、PCのスリープを確認する |
| ログインが維持されない・CSRFエラー | URLを統一し、ローカル設定のCookie Secureが 0 か確認。再ログインしてフォームを開き直す |
| 有効化コードが期限切れ | アプリを停止し、下の再発行コマンドを使う |
| 招待・復旧メールが届かない | 初期の capture は実メールを送らない。SMTP等の追加準備を確認する |
| バックアップ画面の依頼が進まない | この構成ではworkerを起動していない。第8章の停止退避を使う |
既存職員の有効化コードの再発行は、対象を確認して次を使います。
.\venv\Scripts\python.exe -c "from dotenv import load_dotenv; load_dotenv('.env.beta.local', override=True); from scripts.auth_user import main; raise SystemExit(main(['activate-staff']))"
その後、第6章の起動・有効化へ戻ります。DBを削除して解決しないでください。更新は共通の更新手順を使います。