Mix Space はシンプルでありながらも簡単ではない個人ブログシステムで、速くて現代的です。これを利用して、自分だけの個人空間を構築し、生活を記録し、知識を共有することができます。
Step.0 開始#
実は、Mix-Space に切り替える前は、Hexo を個人の主要なブログシステムとして使用していました。しかし、Hexo は軽量で速く、完全に静的ですが、設定が統一されていないことや、記事を書くのがやや面倒な問題がずっと悩みの種でした。考えた末に、別のブログシステムに切り替えることに決めました。
最初の選択肢は VanBlog で、バックエンドは使いやすく、フロントエンドは基本的に静的で、フロントとバックの分離設計は見た目が良かったのですが、実際に使ってみると、私の使用に影響を与えるさまざまな小さな問題があることに気づきました。例えば:
- コメントシステムは内蔵の Waline を使用していますが、その設定は不完全で、内部の iFrame が管理ページを反映する際にしばしば不可解な問題が発生します。
- 友達リンクや寄付情報に使用される変数テーブルの編集性が低いです。
- ページがやや古く見え、一部のページ(友達リンクなど)の応答性が一般的です。
これは開発段階にあることとも多少関係があるかもしれませんが、私はやはり自分に合ったブログシステムを探し続けることにしました。
その後、Shiro を見つけました(実は以前に少し見たことがありましたが、その時は Hexo でも良いと思い、深く研究しませんでした)。Shiro とそのバックエンドである Mix-Space を詳しく調べてみると、私のニーズに合っているようです。
さらに、Shiro を Vercel や Netlify のようなサーバーレスプラットフォームにデプロイできるため、一定の速度を保証しつつサーバーの負担を軽減できるのはかなり良い感じです。
Step.1 バックエンドのデプロイ#
タイトルにあるように、私が使用しているサーバー管理パネルは 1Panel です。これはオープンソースで高速なサーバー管理パネルで、宝塔に比べて私の使用習慣により合っています。オープンソースであるため、監視やバックドアの問題が埋め込まれることをあまり心配する必要がなく、そのコンテナ化特性により、サーバーアプリケーションの実行がより安全になります。
1Panel では、一般的にアプリケーションは Docker コンテナ化デプロイを使用することが推奨されており、管理が容易で、インストールやアンインストールも簡単です。
私は Mix-Space の公式に推奨された Docker Compose デプロイ方式を使用しましたが、私のニーズにより合うように少し変更を加えました。
私が使用している Docker Compose ファイルは以下の通りで、1Panel の使用により適しており、参考までに提供します。
version: '3.8'
services:
app:
container_name: Mx-Space
image: innei/mx-server:5
command: bash ./docker-run.sh
environment:
- TZ=Asia/Shanghai
- NODE_ENV=production
- ALLOWED_ORIGINS
- JWT_SECRET
- ENCRYPT_KEY
- ENCRYPT_ENABLE
volumes:
- ./data/mx-space:/root/.mx-space
ports:
- '127.0.0.1:2333:2333'
depends_on:
- mongo
- redis
links:
- mongo
- redis
networks:
- 1panel-network
restart: always
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:2333/api/v2/ping']
interval: 1m30s
timeout: 30s
retries: 5
start_period: 30s
mongo:
container_name: mongo
image: mongo
volumes:
- ./data/db:/data/db
ports:
- "127.0.0.1:27017:27017"
networks:
- 1panel-network
restart: always
redis:
container_name: redis
image: docker.dragonflydb.io/dragonflydb/dragonfly
networks:
- 1panel-network
ulimits:
memlock: -1
ports:
- "127.0.0.1:6379:6379"
volumes:
- ./data/redis:/data
networks:
1panel-network:
external: true
私が Mix-Space の公式 Compose ファイルに対して行った変更は以下の通りです:
- Docker ネットワークを 1Panel の
1panel-network
Docker ネットワークに変更し、リバースプロキシや 1Panel の他のサービスとの連携がより便利になりました。 - Core バックエンドアドレスを
0.0.0.0:2333
から127.0.0.1:2333
に変更し、サーバー内ネットワークでのみブロードキャストされるようにし、より安全です。 - Redis データベースサービスを DragonflyDB に置き換えました。これは Redis 互換のデータベースサービスで、公式文書によると読み書き効率は Redis の 20 倍であり、同時処理能力も高いです。この機能が気に入らない場合は、Mix-Space の公式文書を参照して標準の Redis サービスに置き換えることもできます。
サービスの起動#
サービスの起動は簡単です。Docker と Docker Compose サービスを別途インストールする必要はありません。なぜなら、1Panel パネルのインストール時にこれらのサービスがすでにプリセットされているからです。私たちは Mix-Space の公式文書に記載されている新しいディレクトリを作成するだけです:
cd && mkdir -p mx-space/core && cd $_
# 私が修正したdocker-compose.ymlファイルを取得
wget https://fastly.jsdelivr.net/gh/yzsong06/File@main/Mix-Space/docker-compose.yml
.env
ファイル#
# JWT秘密鍵:16文字以上32文字以下の文字列を入力する必要があります。ユーザーのJWTを暗号化するために使用されます。自分の秘密鍵を必ず保存し、他人に漏らさないでください。
JWT_SECRET=
# 許可されたドメイン:許可されたドメインを入力する必要があります。通常はフロントエンドのドメインです。複数のドメインを許可する場合は、英語のカンマで区切ります。
ALLOWED_ORIGINS=
# 暗号化を有効にするか:暗号化を有効にする場合は、falseをtrueに変更し、暗号化を有効にした後、下に暗号化鍵を入力する必要があります。
ENCRYPT_ENABLE=
# 暗号化鍵:これが何か分からない場合は、この機能を有効にすることをお勧めしません。具体的な内容はhttps://mx-space.js.org/usage/security.htmlを参照してください。
ENCRYPT_KEY=
# 暗号化を有効にする場合、鍵の長さは64ビットでなければならず、そうでないと初期化時にエラーが発生します。これは不可逆的であり、自分の鍵を必ず保存してください。非常に必要でない限り、使用をお勧めしません。
次に、docker-compose.yml
を置いたディレクトリ(通常はサーバーの /root/mx-space/core)を開き、.env
ファイルを新規作成し、上記のパラメータを貼り付けて、必要に応じて変更したい値を修正します。値は等号の後に直接書き込むだけで、スペースは必要ありません。
その後、ターミナルに戻り、以下のコマンドを入力します(以下のコマンドを実行する際は、サーバーの root ディレクトリにいることに注意してください。コマンドを分けて実行することもできます)。
cd mx-space/core && docker compose up -d
これにより、Docker コンテナの取得と新規作成が開始され、新しい取得と作成が完了するとサービスが自動的に起動します。これでバックエンドの起動設定が完了しました。
Step.2 リバースプロキシの設定#
非強制設定で、個人テストではリバースプロキシプログラムを設定しなくても正常に動作しました
1Panel でのリバースプロキシの設定は宝塔とほぼ同じで、視覚的な管理パネルがあるため、比較的便利です。
1Panel のウェブサイト
に入り(Openresty を先にインストールする必要があります)、新しいウェブサイト
を選択し、リバースプロキシ
を選択します。ドメインには希望するバックエンドのドメインを入力し、リバースプロキシアドレスには127.0.0.1:2333
を入力します。新しいウェブサイト
を作成するとリバースプロキシサービスが起動します。この時、より良く機能させるために少し設定が必要です。
対応するウェブサイトサービスの設定
に入り、設定ファイル
を見つけ、設定ファイルに Mix-Space の公式文書に記載されているリバースプロキシ設定を追加します。すでに Server ヘッダーがあるはずなので、以下の内容を追加します:
location /socket.io {
proxy_pass http://127.0.0.1:2333/socket.io;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_http_version 1.1;
add_header Cache-Control no-cache;
}
location / {
proxy_pass http://127.0.0.1:2333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
}
完了したら保存して再読み込み
を選択し、パネルでHttps
を設定した後、あなたのバックエンドドメイン({ドメイン}/proxy/qaqdmin)にアクセスすると管理パネルが表示されます。
Step.3 テーマの設定#
ここではフロントエンドテーマの設定プロセスについて詳述しません。具体的には公式文書を参照してください。