MkDocs Hub
adin
- Admonition
- 文書内にメモ、ヒント、警告などが目立つようなスタイルで表示する
- material テーマをインストールすると一緒にインストールされる
- footnotes
- 注釈をつける
- つけたい言葉の後ろに[^1]
- 説明は[^1]: 文書を記述するための軽量マークアップ言語のひとつ
memo
- CT(コンテナ)の状態確認 まず、コンテナが適切に動作しているか確認しましょう。
root@hrnpm:~# pct exec 104 -- hostnamectl
Static hostname: mkdocs
Icon name: computer-container
Chassis: container ☐
Machine ID: b289032f916b4d319dba2e3ddc91b12b
Boot ID: 850fe843b9b749408d93107d82bded12
Virtualization: lxc
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.8.12-4-pve
Architecture: x86-64
root@hrnpm:~# pct exec 104 -- ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0@if93: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether bc:24:11:09:9e:7f brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.11.204/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 2001:f76:4840:2600:be24:11ff:fe09:9e7f/64 scope global dynamic mngtmpaddr
valid_lft 7181sec preferred_lft 3581sec
inet6 fe80::be24:11ff:fe09:9e7f/64 scope link
valid_lft forever preferred_lft forever
- Debian 12 CTに必要なパッケージをインストール
コンテナにログインして、必要なパッケージをインストールします。
apt update && apt upgrade -yPython 3 と pip が入っていることを確認。
python3 --version
pip3 --version
- Pythonのアップグレードとpipの導入
apt update
apt install -y python3-venv python3-pip
root@mkdocs:~# python3 --version
Python 3.11.2
root@mkdocs:~# pip3 --version
pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11)
root@mkdocs:~#
- MkDocsの推奨バージョンを確認・インストール MkDocsの公式サイトでは、最新の安定バージョンを pip で管理することが推奨されています。
エラー発生
root@mkdocs:~# pip3 install --upgrade pip
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
このエラーは、Debian 12 が PEP 668 (Externally Managed Python Environments) を採用しており、pip で直接システムのPythonに変更を加えないようにしているために発生しています。
Debian 12 のデフォルト環境(Python 3.11.2 + pip 23.0.1)をそのまま使って MkDocs を構成することは 可能 です。
しかし、DebianのシステムPython環境を直接変更すると、将来的なパッケージの管理が難しくなることがあります。 そのため、長期的には 仮想環境 (venv) を使うのが推奨 されますが、特に問題がなければ そのままpipでMkDocsをインストールしても大丈夫 です。
- そのままpipを使ってMkDocsをインストールする手順
pip3 install mkdocs mkdocs-material
エラー発生。 Debian 12 では PEP 668 によってシステムPython環境が保護されており、pip でシステム全体に直接パッケージをインストールできないようになっています。とのこと 仮想環境使えって。
- pipxを使う pipx を使うと、仮想環境を自動的に作ってくれるので、管理が楽になります。
apt install -y pipx
pipx install mkdocs
⚠️ Note: mkdocs was already on your PATH at /usr/bin/mkdocs
installed package mkdocs 1.6.1, installed using Python 3.11.2
These apps are now globally available
- mkdocs
⚠️ Note: '/root/.local/bin' is not on your PATH environment variable. These apps
will not be globally accessible until your PATH is updated. Run `pipx
ensurepath` to automatically add it, or manually modify your PATH in your
shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
動作確認:
pipx run mkdocs --version
⚠️ mkdocs is already on your PATH and installed at /usr/bin/mkdocs. Downloading
and running anyway.
mkdocs, version 1.6.1 from /root/.local/pipx/.cache/13aefee2ac35dd9/lib/python3.11/site-packages/mkdocs (Python 3.11)
MkDocsを使う
pipx run mkdocs serve
エラー発生
⚠️ mkdocs is already on your PATH and installed at /usr/bin/mkdocs. Downloading
and running anyway.
Error: Config file 'mkdocs.yml' does not exist.
エラーの原因は mkdocs serve を実行するディレクトリに mkdocs.yml が存在しないためです。 これは MkDocsのプロジェクトがまだ作成されていないため に発生しています。
- mkdocs.yml を含むプロジェクトを作成
mkdir ~/my_mkdocs_project
cd ~/my_mkdocs_project
pipx run mkdocs new .
サーバの起動
pipx run mkdocs serve
ブラウザからアクセスできない(ページに到達できない)
⚠️ mkdocs is already on your PATH and installed at /usr/bin/mkdocs. Downloading
and running anyway.
INFO - Building documentation...
INFO - Cleaning site directory
INFO - Documentation built in 0.05 seconds
INFO - [08:05:46] Watching paths for changes: 'docs', 'mkdocs.yml'
INFO - [08:05:46] Serving on http://127.0.0.1:8000/
^CINFO - Shutting down...
root@mkdocs:~/my_mkdocs_project# pipx run mkdocs serve
⚠️ mkdocs is already on your PATH and installed at /usr/bin/mkdocs. Downloading
and running anyway.
INFO - Building documentation...
INFO - Cleaning site directory
INFO - Documentation built in 0.05 seconds
INFO - [08:05:54] Watching paths for changes: 'docs', 'mkdocs.yml'
INFO - [08:05:54] Serving on http://127.0.0.1:8000/
mkdocs serve が 127.0.0.1:8000 でサーバーを起動しているため、コンテナの外からアクセスできない 状況になっています。 mkdocs serve を --dev-addr 0.0.0.0:8000 オプション付きで実行してください。 127.0.0.1 はコンテナ内部のローカルアドレスなので、ホストPCや他の端末からアクセスできない。 0.0.0.0 に変更すると、コンテナの外部(Proxmoxのホストや他のPC)からもアクセス可能 になる。
pipx run mkdocs serve --dev-addr 0.0.0.0:8000
アクセス確認
http://192.168.11.204:8000/
無事アクセスすることができた。
- nohup を使いターミナルセッションを切っても動作するようにする nohup は、ターミナルを閉じてもプロセスが終了しないようにするコマンドです。
nohup pipx run mkdocs serve --dev-addr 0.0.0.0:8000 &
nohup でバックグラウンド実行。 & をつけてプロセスをバックグラウンドに移動させます。 実行後にターミナルを切っても、サーバーは動き続けます。 出力は nohup.out ファイルに保存されます。後で確認できます。
⚠️ mkdocs is already on your PATH and installed at /usr/bin/mkdocs. Downloading
and running anyway.
INFO - Building documentation...
INFO - Cleaning site directory
INFO - Documentation built in 0.05 seconds
INFO - [08:10:16] Watching paths for changes: 'docs', 'mkdocs.yml'
INFO - [08:10:16] Serving on http://0.0.0.0:8000/
INFO - [08:10:23] Browser connected: http://192.168.11.204:8000/
INFO - [08:10:24] Browser connected: http://192.168.11.204:8000/
^CINFO - Shutting down...
root@mkdocs:~/my_mkdocs_project# nohup pipx run mkdocs serve --dev-addr 0.0.0.0:8000 &
[1] 6389
root@mkdocs:~/my_mkdocs_project# nohup: ignoring input and appending output to 'nohup.out'
- コンテナの自動起動設定 手順1: ProxmoxでCTの自動起動を設定 Proxmoxの管理インターフェースを使用して、CTがシステム再起動時に自動的に起動するように設定できます。
Proxmox管理画面にログイン 左側のメニューから 「CT」 を選択し、対象のコンテナをクリック 「オプション」 タブを開き、「自動起動」をクリック 「自動起動」 を 有効にする これで、Proxmoxホストが再起動した際に、CTも自動的に起動します。
手順2: コンテナ内でサービス(MkDocs)の自動起動設定 CT内でMkDocsサーバーを自動的に起動させる方法としては、systemd を使ってサービスを設定するのが一般的です。
- MkDocs用のSystemdサービスファイルを作成 コンテナ内で以下のサービスファイルを作成します。
sudo nano /etc/systemd/system/mkdocs.service
次の内容をサービスファイルに記述します: ini コピーする 編集する [Unit] Description=MkDocs Documentation Server After=network.target
[Service] Type=simple ExecStart=/usr/local/bin/mkdocs serve --dev-addr 0.0.0.0:8000 WorkingDirectory=/home/your_user_name/my_mkdocs_project Restart=always User=your_user_name Group=your_user_name
[Install] WantedBy=multi-user.target ExecStart には、MkDocsを起動するコマンドを記載します。/home/your_user_name/my_mkdocs_project はあなたのプロジェクトディレクトリに合わせて変更してください。 User と Group には、実行ユーザー(例えば、your_user_name)を指定します。 2. サービスを有効化して起動 サービスをリロードして新しいサービスを認識させます。
sudo systemctl daemon-reload
サービスを自動起動に設定します。
sudo systemctl enable mkdocs.service
サービスを開始します。
sudo systemctl start mkdocs.service
- サービスの状態確認 サービスが正しく起動したか確認するために、次のコマンドを実行します。
sudo systemctl status mkdocs.service
手順3: コンテナ再起動後に確認 コンテナを再起動して、MkDocsが自動的に起動するか確認します。
sudo reboot
再起動後に、コンテナ内で以下のコマンドを使ってサービスが正しく起動しているか確認します。
sudo systemctl status mkdocs.service
また、ブラウザでアクセスしてMkDocsのページが表示されることを確認します。
SSHサービスが起動しているか確認
CTのコンソール(ProxmoxのWeb GUI)からCTにログインし、以下のコマンドを実行してください。
systemctl status ssh
もし inactive (dead) または failed になっている場合、起動してください。
sudo systemctl start ssh
自動起動を有効にする場合は、以下も実行します。
sudo systemctl enable ssh
/etc/ssh/sshd_config の Port 22 がコメントアウトされているため、SSHのポートが無効になっている状態です。
以下の手順でポート22を有効にしましょう。
- 設定ファイルを編集 以下のコマンドでSSHの設定ファイルを開きます。
sudo nano /etc/ssh/sshd_config
ファイル内で #Port 22 という行を探し、コメント(#)を削除して有効にします。
- #Port 22
+ Port 22
2. SSHサービスを再起動
編集を保存 (Ctrl + X → Y → Enter) した後、SSHサービスを再起動します。
sudo systemctl restart ssh
再起動後、SSHが正常に動作しているか確認します。
sudo systemctl status ssh
active (running) になっていればOKです。
3. SSHのポート確認
デフォルトではポート22が使用されますが、変更されている可能性があるので、設定を確認します。
sudo cat /etc/ssh/sshd_config | grep "^Port"
もし Port 22 以外のポートが指定されていた場合、SSH接続時に明示的に指定してください。
ssh -p <ポート番号> <ユーザー名>@<CTのIPアドレス>
/etc/ssh/sshd_config
rootでログインを許可+公開鍵認証が必要
PermitRootLogin prohibit-password
rootでログインを許可+パスワードでログイン可能
PermitRootLogin yes
PasswordAuthentication yes
クライアントマシン(接続元のマシン)で、SSH 鍵ペアを作成
ssh-keygen -t rsa -b 4096
SSH エージェントに鍵を追加(設定不要だった)
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
公開鍵をサーバにコピー サーバ側は「PermitRootLogin prohibit-password」ではなく「PermitRootLogin yes」にする必要あり
ssh-copy-id root@192.168.11.204
ufwの設定
sudo apt update
sudo apt install ufw -y
systemctl status ufw
ufw allow 22/tcp
ufw allow 8000
ufw reload
systemctl status ufw
mkdocs を pipx でインストールした場合、Material for MkDocs を安全にセットアップする手順
pip install mkdocs-material
pipx で mkdocs をインストールしていることを確認
pipx list
mkdocs の仮想環境内で必要なパッケージをインストールする
pipx install mkdocs-material --include-deps
--include-deps オプション: 通常、pipx はアプリケーションのインストールのみを行いますが、--include-deps を指定すると、そのアプリケーションが依存しているパッケージも自動的にインストールされます。これにより、mkdocs-material に必要なすべての依存パッケージがまとめてインストールされ、動作に必要な環境が整います。
テーマを変えておかしくなったときは以下。 ただし、mkdocsの自動設定デーモンを作っておく必要アリ。
systemctl restart mkdocs
command
proxmoxでLCXコンテナの立ち上げ SSHキーを登録すると何も設定入れなくてもSSHできるようになる
コンテナにログインして、必要なパッケージをインストールします。
apt update && apt upgrade -y
venvとpipの導入
apt install -y python3-venv python3-pip
仮想環境作成
python3 -m venv ~/mkdocs-venv
MkDocsとMaterialテーマをインストール
pip3 install mkdocs mkdocs-material
任意のディレクトリでMkDocsのプロジェクトを作成
mkdir ~/mkdocs_project && cd ~/mkdocs_project
mkdocs new .
mkdocsの接続テスト
mkdocs serve --dev-addr=0.0.0.0:8000
githubと連携
gitとGitHub CLIをインストール
apt install -y git gh
GitHub CLI で認証
gh auth login
リポジトリの作成
gh repo create RIB9/mkdocs_project --private --source=. --remote=origin
(--private を --public に変えれば公開リポジトリになります。)
--source=. は、現在のディレクトリをリポジトリとして使う 指示
--remote=origin は、Gitリモートを自動設定するオプション
SSHキーを作成
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub
GitHubの「Settings」 → 「SSH and GPG keys」 → 「New SSH Key」 に追加。
https://github.com/settings/keys
SSH接続を設定
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
GitリモートURLを変更
git remote set-url origin git@github.com:RIB9/mkdocs_project.git
接続テスト
ssh -T git@github.com
gitのユーザ登録
git config --global --edit
リポジトリにプッシュ
git remote add origin git@github.com:RIB9/mkdocs_project.git
git add .
git commit -m "Initial commit"
git push -u origin main
コンテナ再起動でMkDocs自動起動
systemd を設定
vi /etc/systemd/system/mkdocs.service
以下を記載 mkdocsのパスは仮想環境であることに注意
[Unit]
Description=MkDocs server
After=network.target
[Service]
ExecStart=/root/mkdocs-venv/bin/mkdocs serve --dev-addr=0.0.0.0:8000
WorkingDirectory=/root/mkdocs_project
Restart=always
User=root
Environment="PATH=/root/mkdocs-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[Install]
WantedBy=multi-user.target
適用
systemctl daemon-reload
systemctl enable mkdocs
systemctl start mkdocs
テーマ適用
いろんなテーマ https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes
マテリアル https://github.com/squidfunk/mkdocs-material
公式 https://www.mkdocs.org/
Cloudflare
https://developers.cloudflare.com/pages/framework-guides/deploy-an-mkdocs-site/
環境変数 (詳細) > 変数の追加 > に移動し、値 が .PYTHON_VERSION3.7 ↑は実際の環境に合わせないとデプロイが失敗する(設定しないほうがうまくいった)