🐧 WSL2 環境 再構築 Runbook¶
📁 docs/ops/runbook/wsl2.md
[!IMPORTANT] 最終検証日: 2026-07-13 環境変更時(WSL2 初期化・Ubuntu 更新・ツール追加)は必ずこの日付を更新すること。
対象環境¶
| 項目 | 仕様 |
|---|---|
| ホスト OS | Windows 11 |
| ディストリビューション | Ubuntu 22.04 LTS |
| 主な用途 | twscrape(X スクレイピング)・Linux パス固定ツール |
⚡ クイックスタート(全ステップ一覧)¶
Phase 1: WSL2 インストール・初期設定
Phase 2: 開発ツール(Python・Git・pip)
Phase 3: 1Password CLI(op)
Phase 4: MyLab セットアップ
Phase 5: twscrape セットアップ
Phase 6: SSH・認証設定
Phase 7: Credentials シンボリックリンク
Phase 1: WSL2 インストール・初期設定¶
1-1. WSL2 有効化(PowerShell 管理者権限)¶
# Windows PowerShell(管理者)で実行
wsl --install -d Ubuntu-22.04
# 再起動を求められたら再起動
# インストール後の確認
wsl --list --verbose
# WSL 2 が使われていることを確認
1-2. Ubuntu 初期設定¶
# WSL2 を起動後に実行
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
git curl wget unzip jq \
python3 python3-pip python3-venv \
build-essential libssl-dev \
sqlite3
1-3. ユーザー設定確認¶
Phase 2: 開発ツール¶
2-1. pyenv インストール¶
curl https://pyenv.run | bash
# ~/.bashrc に追加
cat >> ~/.bashrc << 'EOF'
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
EOF
source ~/.bashrc
pyenv install 3.12.9
pyenv global 3.12.9
python3 --version # 3.12.9 を確認
2-2. Git 設定¶
git config --global user.name "KZ55230"
git config --global user.email "73998660+KZ55230@users.noreply.github.com"
2-3. GitHub CLI¶
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \
| sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \
| sudo tee /etc/apt/sources.list.d/github-cli.list
sudo apt update && sudo apt install gh -y
gh auth login
Phase 3: 1Password CLI¶
# インストール(x86_64 版)
curl -sS https://downloads.1password.com/linux/keys/1password.asc \
| sudo gpg --dearmor --output /usr/share/keyrings/1password-archive-keyring.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] https://downloads.1password.com/linux/debian/amd64 stable main' \
| sudo tee /etc/apt/sources.list.d/1password.list
sudo apt update && sudo apt install 1password-cli -y
# サービスアカウントトークンの設定
mkdir -p ~/.config/op
# Mac の ~/.config/op/service_account_token をコピー
# または Windows ホストから:
cp /mnt/c/Users/$(cmd.exe /c "echo %USERNAME%" 2>/dev/null | tr -d '\r')/.config/op/service_account_token ~/.config/op/
chmod 600 ~/.config/op/service_account_token
# 動作確認
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.config/op/service_account_token)
op whoami
Phase 4: MyLab セットアップ¶
4-1. リポジトリのクローン¶
4-2. Python 仮想環境¶
4-3. 環境変数設定¶
cat >> ~/.bashrc << 'EOF'
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.config/op/service_account_token)
export MYLAB_DIR="$HOME/MyLab"
EOF
source ~/.bashrc
Phase 5: twscrape セットアップ¶
[!NOTE] twscrape は accounts.db(SQLite)を Linux パス固定で使用するため、WSL2 専用環境となっている。
cd ~/MyLab
source .venv/bin/activate
# twscrape インストール(requirements-project.txt に含まれているはず)
pip install twscrape
# アカウント DB 確認
ls projects/buzz-collector/accounts.db 2>/dev/null || echo "accounts.db が見つかりません"
5-1. アカウントの登録¶
# 既存のバックアップから復元する場合
# accounts.db を Credentials/ や 1Password から取得して配置
# 新規登録の場合
twscrape add_accounts accounts.txt --cookies.file cookies.txt
twscrape relogin
5-2. 動作確認¶
# スクレイピングテスト
cd ~/MyLab
python3 -c "import asyncio; from twscrape import API; async def test(): api = API(); print('ok'); asyncio.run(test())"
Phase 6: SSH・認証設定¶
6-1. SSH キー生成(またはバックアップから復元)¶
# 新規生成
ssh-keygen -t ed25519 -C "73998660+KZ55230@users.noreply.github.com"
# GitHub に公開鍵を登録
cat ~/.ssh/id_ed25519.pub
# → GitHub Settings → SSH keys → New SSH key に貼り付け
6-2. SSH エージェント設定¶
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# ~/.bashrc に追加(自動起動)
cat >> ~/.bashrc << 'EOF'
eval "$(ssh-agent -s)" > /dev/null
ssh-add ~/.ssh/id_ed25519 2>/dev/null
EOF
Phase 7: Credentials シンボリックリンク¶
[!IMPORTANT] MyLab の Credentials/ ディレクトリは Git 管理外。
Windows ホストの Credentials/ を WSL2 からシンボリックリンクで参照する場合は以下を設定。
# Windows ホストのパスを確認
WIN_USER=$(cmd.exe /c "echo %USERNAME%" 2>/dev/null | tr -d '\r')
WIN_CREDS="/mnt/c/Users/${WIN_USER}/MyLab/Credentials"
# Credentials/ が存在する場合はシンボリックリンクを作成
if [ -d "$WIN_CREDS" ]; then
ln -sf "$WIN_CREDS" ~/MyLab/Credentials
echo "✅ シンボリックリンク作成: ~/MyLab/Credentials → $WIN_CREDS"
else
echo "⚠️ Windows の Credentials ディレクトリが見つかりません: $WIN_CREDS"
fi
🔧 トラブルシューティング¶
WSL2 が起動しない¶
Python が見つからない¶
# pyenv の PATH を確認
echo $PATH | tr ':' '\n' | grep pyenv
# 再設定
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
twscrape が認証エラー¶
Windows ファイルシステムのパーミッション問題¶
# /mnt/c/ 以下のファイルは Windows 側のパーミッションが反映される
# WSL2 内のファイルは ~/.bashrc 等で umask を調整
echo "umask 022" >> ~/.bashrc