コンテンツにスキップ

🐧 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. ユーザー設定確認

whoami  # ユーザー名を確認
echo $HOME  # /home/<user> であることを確認

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. リポジトリのクローン

cd ~
git clone https://github.com/KZ55230/MyLab.git
cd MyLab

4-2. Python 仮想環境

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-project.txt

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 が起動しない

# PowerShell で確認
wsl --list --verbose
wsl --status

# WSL2 を再起動
wsl --shutdown
wsl -d Ubuntu-22.04

Python が見つからない

# pyenv の PATH を確認
echo $PATH | tr ':' '\n' | grep pyenv

# 再設定
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

twscrape が認証エラー

# アカウントの状態確認
twscrape accounts

# 再ログイン
twscrape relogin_failed

Windows ファイルシステムのパーミッション問題

# /mnt/c/ 以下のファイルは Windows 側のパーミッションが反映される
# WSL2 内のファイルは ~/.bashrc 等で umask を調整

echo "umask 022" >> ~/.bashrc

📚 関連ドキュメント