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;
    # *See "With SSL (Certbot)" below for details on automating ssl certificates
    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


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。