Skip to content

Latest commit

 

History

History
257 lines (191 loc) · 8.69 KB

File metadata and controls

257 lines (191 loc) · 8.69 KB

Docker Pulls Docker Image Version Build Status

docker-hexo

Hexo ブログ環境の Docker イメージ — Node.js / npm / Hexo のインストール不要、すぐに使えます。

Docker Hub で公開:bloodstar/hexo

🇬🇧 English · 🇨🇳 简体中文 · 🇭🇰 繁體中文 · 🇯🇵 日本語 · 🇰🇷 한국어 🇪🇸 Español · 🇫🇷 Français · 🇩🇪 Deutsch · 🇵🇹 Português · 🇷🇺 Русский · 🇸🇦 العربية

なぜ自分だけの独立したブログサイトを構築すべきなのか?

  • 自己紹介の名刺代わり!
  • 外部や企業による検閲・削除・アカウント停止のない、最大限の言論の自由!

クイックスタート

docker CLI を使う

docker create --name=hexo \
  -e HEXO_SERVER_PORT=4000 \
  -e GIT_USER="yourname" \
  -e GIT_EMAIL="you@example.com" \
  -v /path/to/blog:/app \
  -p 4000:4000 \
  bloodstar/hexo

docker start hexo

初回起動時、/app が空の場合、コンテナは自動的に hexo init を実行し、ブログを初期化して一般的なプラグインをインストールします。

docker compose を使う

services:
  hexo:
    container_name: hexo
    image: bloodstar/hexo:latest
    hostname: hexo
    ports:
      - "7800:4000"
    volumes:
      - /path/to/blog:/app
    environment:
      - HEXO_SERVER_PORT=4000
      - GIT_USER=yourname
      - GIT_EMAIL=you@example.com
      - TZ=Asia/Shanghai
    restart: always

環境変数

変数 デフォルト 説明
HEXO_SERVER_PORT 4000 Hexo サーバー listen ポート
GIT_USER Git グローバルユーザー名
GIT_EMAIL Git グローバルメールアドレス

SSH 鍵

Docker が自動的に SSH 鍵を生成します(/app/.ssh ディレクトリ)。公開鍵を GitHub などのプラットフォームに追加してデプロイに使用します。

# 公開鍵を表示
docker exec hexo cat /app/.ssh/id_rsa.pub

GitHub SSH 鍵の追加方法

Docker に入る

docker exec -it hexo bash

コンテナ内で hexo コマンドを実行できます。

テーマ設定

好みは人それぞれです。以下はおすすめのテーマです:

テーマをダウンロードしたら、各テーマの指示に従って設定し、hexo g でビルドします。http://[docker IP]:4000 で確認できます。

cd /app
git clone https://github.com/user/hexo-theme-xxx.git themes/xxx

/app/_config.yml を編集して theme: xxx を設定し、hexo g で再生成します。

ユーザーカスタムスクリプト

Docker 起動時に実行する自動設定やプラグインインストールコマンドを追加できます。

/app/userRun.sh を編集:

#!/bin/bash

echo "add User CMD here!"

echo "=====User CMD Start!====="
# GitHub ログインエイリアス
alias github='eval "$(/usr/bin/ssh-agent -s)";/usr/bin/ssh-add ~/.ssh/id_rsa'
# pm2 サーバー再起動
alias repm2='pm2 restart /hexo_run.js'

#### Debian 中国ミラー(ネットワークが速ければコメントアウト)
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

#### npm 設定
npm config ls -l

mkdir -p /app/.cache/npm
npm config set cache "/app/.cache/npm"
npm config set registry https://registry.npmjs.org/

#### history 永続化
rm -rfv ~/.bash_history
ln -s /app/.bash_history ~/.bash_history

#### ssh 設定
chmod 600 /app/.ssh/id_rsa
chmod 644 /app/.ssh/id_rsa.pub
chmod 700 /app/.ssh
rm -rfv ~/.ssh
ln -s /app/.ssh ~/.ssh

#### npm プラグインインストール
npm install --save \
    hexo-admin \
    hexo-include-markdown \
    hexo-douban-card-new \
    hexo-github-card \
    hexo-bilibili-card-new \
    hexo-feed

echo "=====User CMD end!====="

ネットワークが遅い場合は、プロキシを設定してください:

export http_proxy=http://192.168.0.100:1089;export https_proxy=http://192.168.0.100:1089

# Docker ホスト名を使用(推奨)
export http_proxy=http://xray:1089;export https_proxy=http://xray:1089

requirements.txt

ブログボリュームに requirements.txt を追加(1行1パッケージ)。起動時に自動インストールされます:

hexo-generator-json-content
hexo-generator-feed

よく使うコマンド

操作 コマンド
コンテナに入る docker exec -it hexo bash
ログを確認 docker logs --follow hexo
pm2 再起動 docker exec hexo pm2 restart /hexo_run.js
コンテナ再起動 docker restart hexo
静的ファイル生成 docker exec hexo hexo g
リモートデプロイ docker exec hexo hexo d
新規記事作成 docker exec hexo hexo new post "記事タイトル"
新規ページ作成 docker exec hexo hexo new page "music"
キャッシュ削除 docker exec hexo hexo clean

クイックエイリアス

~/.bashrc または ~/.zshrc に以下を追加すると、docker exec を省略できます:

# hexo コンテナショートカット
alias hexo='docker exec -it hexo hexo'
alias hexo-shell='docker exec -it hexo bash'
alias hexo-logs='docker logs --follow hexo'
alias hexo-restart='docker exec hexo pm2 restart /hexo_run.js'
alias hexo-reboot='docker restart hexo'

# hexo new post "タイトル"
# hexo g
# hexo d
# hexo clean

source ~/.bashrc で有効化後、直接使用できます:

hexo new post "新しい記事"
hexo g
hexo d
hexo-shell

ライブプレビュー

Hexo はファイル変更を検出して自動リロードします。記事やテーマを編集後、ブラウザをリフレッシュするだけで反映されます。

反映されない場合は node キャッシュが原因かもしれません。以下の方法で Web サービスを再起動してください:

# pm2 再起動
pm2 restart /hexo_run.js

# Docker 再起動
docker restart hexo

完全なチュートリアル

ドキュメント

文書 内容
AGENTS.md AI 作業約定、コマンド、エンジニアリング標準
docs/ARCHITECTURE.md アーキテクチャ、コンポーネント、データフロー
docs/REQUIREMENTS.md 機能要件と非機能要件
docs/TESTING.md テスト戦略、Docker ビルド検証
docs/CHANGELOG.md バージョン履歴

関連リソース