Windows PCをサーバー化してGrowiを動かす方法
はじめに
「社内でWikiを立てたいけど、サーバーやクラウドの予算が下りない。」
そんなとき、OSSのWikiツール「Growi」を手元のWindows PCをサーバー代わりにして運用する方法を紹介します。
WSLやタスクスケジューラーを活用し、PCを再起動しても自動でGrowiが立ち上がるようにするノウハウです。
「とりあえず社内でナレッジを貯める場所がほしい」「サーバーやネットワークの調達が難しい」と感じている方の助けになれば幸いです。
準備するもの
- Windows 10/11 PC(WSL2対応機種)
- 管理者権限
- インターネット接続
- 会社のネットワーク設定が許可されていること
- (必要に応じて)PCのIPアドレスを固定できる権限
手順全体の流れ
- WSL2+Ubuntuの導入
- Docker & docker-composeインストール
- Growi-dockerのセットアップ
- WindowsでIPアドレスを固定
- 起動&自動化スクリプトの配置
- タスクスケジューラーで自動起動設定
1. WSL2とUbuntuの導入
まず、WSL2(Windows Subsystem for Linux)を有効化し、Ubuntuをインストールします。
公式ガイドはこちら:
Microsoft公式:WSLのインストール
手順(管理者PowerShellで実行):
wsl --install
PC再起動後、Ubuntuを初回起動してユーザー名とパスワードを設定します。
この記事では説明の都合上、ユーザー名を「user」としています(例:/home/user/
)。他のユーザー名にした場合は、以降のパスを適宜読み替えてください。
2. Dockerインストール
Ubuntuのターミナルで、Dockerとdocker-composeをインストールします。
sudo apt update
sudo apt install -y docker.io
sudo apt install -y docker-compose
sudo usermod -aG docker $USER
一度WSLを再起動して、docker --version
などで動作確認しましょう。
3. Growi-dockerのセットアップ
cd ~
git clone https://github.com/weseek/growi-docker-compose.git growi
cd growi
# (必要に応じてdocker-compose.ymlを修正)
docker-compose up -d
ブラウザで「http://<PCのIPアドレス>:3000」にアクセスして、Growiの初期画面が出ればOKです。
4. PCのIPアドレスを固定
Growiを他のPCからアクセスできるように、WindowsでIPアドレスを固定します。
手順例:
コントロールパネル
> ネットワークとインターネット
> ネットワークと共有センター
> アダプターの設定
> 使用中のネットワークのプロパティ
> 「インターネット プロトコル バージョン4 (TCP/IPv4)」のプロパティ
以下のような値を設定します(※ネットワーク環境に合わせて変更してください):
IPアドレス:例)192.168.1.100
サブネットマスク:例)255.255.255.0
デフォルトゲートウェイ:例)192.168.1.1
DNSサーバー:例)8.8.8.8, 8.8.4.4
※設定値は会社や自宅ネットワークのアドレス体系に合わせて決めてください。
分からない場合はネットワーク管理者などに確認するのが確実です。
5. 自動起動スクリプトの配置
Growiを自動起動・ポートフォワード自動設定するため、以下のシェルスクリプトを作成し、/home/user/start_growi.sh
に保存します。
※以降の手順では、パスに含まれる「user」の部分は、ご自身のUbuntuユーザー名に読み替えてください。
#!/bin/bash
LOGFILE=/home/user/start_growi.log
# ログファイルを初期化
echo "====== Script Execution Started at $(date) ======" > $LOGFILE
# Dockerサービスの起動
sudo service docker start >> $LOGFILE 2>&1
# Growiを起動
cd /home/user/growi && docker-compose up -d >> $LOGFILE 2>&1
# WSLのIPアドレス取得
WSL_IP=$(hostname -I | awk '{print $1}')
# ポートフォワード再設定
PORT=3000
POWERSHELL_CMD="netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$PORT connectaddress=$WSL_IP connectport=$PORT"
powershell.exe -Command "netsh interface portproxy delete v4tov4 listenport=$PORT"
powershell.exe -Command "$POWERSHELL_CMD" >> $LOGFILE 2>&1
# スリープでWSL維持
sleep infinity
ポイント
- Dockerサービス・Growiの自動起動
- WSLのIP→Windowsポートフォワード
ここでいう「ポートフォワード」とは、Windows側のネットワーク(例:PCの3000番ポート)に来たアクセスを、WSL内で動いているGrowi(同じく3000番ポート)へ転送する設定のことです。
WSL2はネットワーク的には「仮想マシン」なので、外部PCからアクセスするにはWindowsの「netsh」コマンドで、TCPポートの中継(portproxy)を手動設定しています。この処理をスクリプトで自動化しています。 - ログも出力されるので、トラブル時も安心
-
そして特に重要なのが最後の
sleep infinity
。
実はWSL(Windows Subsystem for Linux)は、ユーザーの操作がない状態が続くと、勝手にプロセスを終了してしまう仕様があります。そのため、sleep infinity
でシェルスクリプトを無限に実行し続け、WSLのセッションを維持しています。これに気付かず「しばらくするとGrowiにアクセスできなくなる」といった現象にかなり苦労しました。
6. タスクスケジューラーで自動実行
PCを再起動したときに、上記スクリプトが自動的にWSLで起動するように設定します。
6.1 一般タブの設定
「タスクの作成」から「一般」タブを開き、
- 名前:
WSL_Start_Growi
- 説明:
WSLでGrowiを自動起動する
- 「ユーザーがログオンしているかどうかにかかわらず実行する」を選択
- 「最上位の特権で実行する」にチェック
6.2 トリガータブの設定
「トリガー」タブで
- トリガー:任意のユーザーのログオン時 など
6.3 操作タブの設定
「操作」タブで
- プログラム/スクリプト:
wsl
- 引数の追加(オプション):
-d Ubuntu -e /home/user/start_growi.sh
6.4 条件タブの設定
「条件」タブは、必要に応じてデフォルトのままでOKですが、
「AC電源接続時のみ」や「アイドル時のみ」など、動作環境に合わせて変更できます。
6.5 設定タブの設定
「設定」タブは、基本的にはデフォルトのままで問題ありませんが、
「タスクを要求時に実行する」など、必要なオプションにチェックします。
まとめ
これで、Windows PCが「Growiサーバー」として自動運用できるようになりました。
低コスト&手元のPCだけで手軽に始めたい方には特におすすめです。
トラブル時は、スクリプトのログやタスクスケジューラーの履歴から原因を調べてみてください。
Discussion