PowerShell製のローカルWebサーバーとWebブラウザーを使い、Windows PC内でMarkdownページを閲覧・編集する個人用Wikiです。
外部のWebサーバーやデータベースは不要です。Wikiの本文はdocフォルダー内の.mdファイルとして保存されるため、通常のテキストファイルとしてバックアップや検索ができます。
このリポジトリは、Internet Explorer/HTAに依存するMarkdownLocalWikiを、Edge、Chrome、Firefoxなどのブラウザーから使える構成へ移したものです。
Important
個人PCのローカル利用を想定しています。待受先はhttp://localhost:8000/に限定していますが、Markdown内のリンクからローカルファイルやフォルダーを開く機能があります。内容を確認できないWikiデータを読み込んだり、インターネットへ公開したりしないでください。
- Markdownページの表示と編集
- 新規ページ作成、名前変更、削除
- ページ一覧
- Wiki全体の文字列検索
- 表示履歴
- 文字サイズの拡大・縮小
- HTTP/HTTPSリンクを既定ブラウザーで表示
- WindowsのファイルパスやUNCパスをエクスプローラー等で開く機能
- Wikiデータを
doc\*.mdとして保存
- Windows 10/11
- Windows PowerShell 5.1、またはWindows上のPowerShell 7
- Edge、Chrome、Firefoxなどの現在サポートされているブラウザー
localhost:8000を使用できること
- リポジトリをダウンロードまたはクローンします。
startWiki.batをダブルクリックします。- PowerShellウィンドウを閉じずに待ちます。
- ブラウザーで
http://localhost:8000/index.htmlが開きます。
Set-Location .\MarkDownPSLocalServerWiki
.\StartWiki.ps1従来のスペルミスを含むSrartWiki.ps1は、既存ショートカットとの互換性のため残しています。新しい手順ではStartWiki.ps1を使用してください。
起動時のPowerShellウィンドウを閉じます。ブラウザーのタブを閉じるだけでは、ローカルWebサーバーは終了しません。
| 場所 | 内容 |
|---|---|
doc\トップページ.md |
最初に表示するページ |
doc\*.md |
作成したWikiページ |
index.html |
ブラウザー側の画面と処理 |
WebSV.ps1 |
ローカルWebサーバーとファイル操作 |
core\marked.js |
MarkdownからHTMLへの変換 |
core\github-markdown.css |
Markdown表示用CSS |
バックアップする場合は、最低限docフォルダーをコピーしてください。更新前にはdocフォルダー全体を別の場所へバックアップすることを推奨します。
ページ名はdocフォルダー内の.mdファイル名として使われます。サーバー側では、次の条件を満たさないパスを拒否します。
docフォルダーの内側であること- 拡張子が
.mdであること ..などを使ってWikiフォルダー外へ移動しないこと
これにより、ブラウザーから送られたページ名でWiki外のファイルを保存・変更・削除しないようにしています。
- 待受先を
localhost以外へ変更しないでください。 - ルーターのポート転送や外部公開用リバースプロキシを設定しないでください。
- 信頼できないMarkdownや、第三者から受け取ったWikiフォルダーをそのまま開かないでください。
- ファイル/UNCリンクをクリックすると、Windowsの関連付けに従って外部アプリが起動する場合があります。
core内のJavaScriptライブラリはリポジトリへ同梱されています。更新時は互換性とライセンスを確認してください。
ブラウザーとPowerShellサーバーはJSONを使って非同期通信します。
ブラウザー操作
↓ XMLHttpRequest / JSON
PowerShell HttpListener(localhost:8000)
↓ パス検証
docフォルダー内のMarkdownファイル
HttpListener.BeginGetContextで次のリクエスト受付を登録し、ブラウザー側はXMLHttpRequestのコールバックで画面を更新します。
- 個人利用向けのサンプルであり、複数利用者、ログイン、権限管理には非対応
- HTTPS、認証、CSRF対策など、公開Webサービス向けの機能はなし
- ページの同時編集や競合解決はなし
- Markdown変換は同梱版
marked.jsの仕様に依存 - 自動バックアップ、世代管理、ごみ箱はなし
- Windowsの
Shell.Applicationを使うため、Windows以外では動作しない
PowerShellウィンドウにエラーがないか確認し、手動で次を開きます。
http://localhost:8000/index.html
別のアプリがポート8000を使っている可能性があります。
Get-NetTCPConnection -LocalPort 8000 -ErrorAction SilentlyContinueGet-ExecutionPolicy -List組織管理のPCでは管理者の方針に従ってください。startWiki.batのRemoteSigned指定は、そのPowerShellプロセス内だけに適用されます。
リポジトリのフォルダーとdocフォルダーに書き込み権限があるか確認してください。OneDriveやネットワークドライブ上では、同期・権限設定の影響を受ける場合があります。
- HttpListener class
- HttpListener.BeginGetContext
- Using XMLHttpRequest
- marked
- github-markdown-css
- Polaris
A Windows-only personal Markdown wiki backed by plain .md files and served through a localhost-only PowerShell HttpListener. It is not designed for internet exposure or multi-user hosting.