Jayden

Jayden

Docker Compose を使用して Mix Space をデプロイする

はじめに#

以前に Mix Space のデプロイ方法について説明しましたが、今はより便利な方法があるので、共有します。

ここではデプロイに関する内容のみを含みます。詳細については 以前 の記事をご覧ください。

Docker のインストール#

もしあなたのサーバーが国内にある場合、阿里云のミラーを使用することをお勧めします。インストールコマンドは以下の通りです:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

海外では、公式スクリプトを直接使用してインストールできます:

curl -fsSL https://get.docker.com | bash -s docker

Docker と Docker-Compose を正常にインストールできた場合、以下のコマンドでバージョンを確認できます:

docker -v
docker compose version

Mix Space Core のデプロイ#

  1. 設定ファイルを取得
cd && mkdir -p $HOME/mix-space/core && cd $_ # docker-compose.yml ファイルを取得
wget https://fastly.jsdelivr.net/gh/mx-space/core@master/docker-compose.yml
  1. 環境変数を作成
vi .env
  1. 以下の内容を入力した後、ESC キーを押して :wq と入力し、保存して終了します。
JWT_SECRET= #JWT 秘密鍵:16文字以上32文字以下の文字列を入力する必要があります。ユーザーの JWT を暗号化するために使用されます。自分の秘密鍵を必ず保存し、他人に漏らさないでください。
ALLOWED_ORIGINS= #許可されたドメイン:許可されたドメインを入力する必要があります。通常はフロントエンドのドメインです。複数のドメインを許可する場合は、カンマで区切ります。
ENCRYPT_ENABLE= #暗号化を有効にする場合は、false を true に変更します。暗号化を有効にした後、下に暗号化キーを入力する必要があります。
ENCRYPT_KEY= #これが何か分からない場合は、この機能を有効にしないことをお勧めします。具体的な内容は https://mx-space.js.org/usage/security.html を参照してください。
  1. バックエンドを起動
docker compose up -d

フロントエンドのデプロイ#

  1. 設定ファイルを取得
cd && mkdir -p $HOME/mix-space/core && cd $_ # docker-compose.yml ファイルを取得
wget https://raw.githubusercontent.com/Innei/Shiro/main/docker-compose.yml
  1. 環境変数を取得し、内容を変更
wget https://raw.githubusercontent.com/Innei/Shiro/main/.env.template .env
  1. バックエンドを起動
docker compose up -d

Nginx リバースプロキシ#

  1. ドメインをサーバーに解決します。

  2. 証明書を取得

    curl https://get.acme.sh | sh; apt install socat -y || yum install socat -y; ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
    ~/.acme.sh/acme.sh --issue -d xxu.do --standalone -k ec-256 --force --insecure
    mkdir -p /etc/pki/xxu.do
    ~/.acme.sh/acme.sh --installcert -d xxu.do --key-file /etc/pki/xxu.do/server.key --fullchain-file /etc/pki/xxu.do/server.crt
    service postfix reload;service dovecot reload;service nginx reload #サービスをリロード
    
  3. リバースプロキシを設定:

    vi /etc/nginx/nginx.conf
    

    下記の例のドメインと証明書のパスを変更し、設定ファイルに追加します:

クリックして例を取得
server {
    listen 80;
  rewrite ^(.*)$ https://$host$1 permanent;
    server_name xxu.do;
    index index.html; 
    location /socket.io {
        proxy_set_header Upgrade $http_upgrade; 
        proxy_set_header Connection "Upgrade"; 
        proxy_set_header Host $host; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header X-Forwarded-Proto $scheme; 
        proxy_pass http://127.0.0.1:2333/socket.io; 
    }
    location /api/v2 {
        proxy_pass http://127.0.0.1:2333/api/v2; 
    }
    location /render {
        proxy_pass http://127.0.0.1:2333/render; 
    }
    location / {
        proxy_pass http://127.0.0.1:2323; 
    }
    location /qaqdmin {
        proxy_pass http://127.0.0.1:2333/qaqdmin;
    }
    location /proxy {
        proxy_pass http://127.0.0.1:2333/proxy;
    }
    location ~* \/(feed|sitemap|atom.xml) {
        proxy_pass http://127.0.0.1:2333/$1; 
    }
    location /.well-known/ {
           root /var/www/html;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name xxu.do;
    index index.html; 
    ssl_certificate     /etc/pki/xxu.do/server.crt;
    ssl_certificate_key /etc/pki/xxu.do/server.key;
    # *SSL証明書の自動化に関する詳細は「SSL (Certbot)」を参照してください
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Host $server_name; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 

    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 
    ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1; 
    error_page 497 https://$host$request_uri; 
    # limit_conn perserver 300; 
    # limit_conn perip 25; 
    # limit_rate 512k; 

    location /socket.io {
        proxy_set_header Upgrade $http_upgrade; 
        proxy_set_header Connection "Upgrade"; 
        proxy_set_header Host $host; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header X-Forwarded-Proto $scheme; 
        proxy_pass http://127.0.0.1:2333/socket.io; 
    }
    location /api/v2 {
        proxy_pass http://127.0.0.1:2333/api/v2; 
    }
    location /render {
        proxy_pass http://127.0.0.1:2333/render; 
    }
    location / {
        proxy_pass http://127.0.0.1:2323; 
    }
    location /qaqdmin {
        proxy_pass http://127.0.0.1:2333/qaqdmin;
    }
    location /proxy {
        proxy_pass http://127.0.0.1:2333/proxy;
    }
    location ~* \/(feed|sitemap|atom.xml) {
        proxy_pass http://127.0.0.1:2333/$1; 
    }
    location /.well-known/ {
           root /var/www/html;
    }
}

更新#

core またはフロントエンドがあるフォルダに移動し、次のコマンドを実行します。

docker compose pull && docker compose up -d

この記事は Mix Space によって xLog に同期更新されました
元のリンクは https://xxu.do/posts/geek/deploy-Mix-Space-with-Docker-Compose


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。