TinaCMS 主要通过 GitHub 和静态托管平台集成实现内容库的自动更新,但像 Vercel、Netlify 和 GitHub Pages 这样的静态托管平台在中国大陆无法访问,且缺乏直接的中国替代方案。
中国用户可以选择将他们的项目部署到阿里云服务器,并结合 GitHub Actions 作为替代解决方案。
以下是 TinaCMS 相关服务在中国大陆无需 VPN 的可访问状态:
npx create-tina-app@latest
命令:✅ 可用上述测试结果截至2025年7月10日
,可访问状态可能会随时间变化
鉴于这些限制,本指南将引导您将 TinaCMS 项目部署到 阿里云。作为中国领先的云服务提供商,阿里云为中国用户提供了可靠的性能。虽然目前没有中国的云服务能够像 Vercel 一样提供无缝的 GitHub 集成,但阿里云仍然是希望在中国大陆内部署网站的开发者的首选。
阿里云提供了多种服务器选项。我们通常建议使用 弹性计算服务 (ECS) 来部署 TinaCMS 项目。有关创建和配置服务器的详细说明,请参阅阿里云官方文档。
创建 ECS 实例后,您需要设置管理 TinaCMS 项目所需的软件。
PM2 是一个用于 Node.js 应用程序的进程管理器,有助于在生产环境中保持应用程序运行。
pnpm install -g pm2
Nginx 将作为 TinaCMS 应用程序的反向代理。
yum install nginx
接下来,启动 Nginx 并设置为系统启动时自动运行:
systemctl start nginx # 启动 Nginx 服务systemctl enable nginx # 配置 Nginx 在系统启动时自动启动systemctl status nginx # 检查 Nginx 服务的状态
为您的 TinaCMS 站点创建一个配置文件:
vim /etc/nginx/conf.d/tinademo.conf
添加以下配置:
server {listen 80;server_name your - domain.com; # 替换为您的实际域名location / {proxy_pass http://localhost:3000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}}
测试您的 Nginx 配置是否有语法错误:
nginx -t
重新加载 Nginx 以应用新配置:
nginx -s reload
首先,在服务器上创建一个目录,用于部署您的 Tina CMS 项目:
mkdir -p /www/tinademocd /www/tinademo
使用模板创建一个基本的 Tina 项目。
npx create-tina-app@latest
在您的阿里云服务器上生成 SSH 密钥对:
ssh -keygen -t ed25519 -C "deploy-key"# 按 Enter 使用默认路径# 按 Enter 留空密码短语
将生成的公钥添加到 authorized_keys 文件中,以允许 GitHub Actions 进行身份验证:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
生成 SSH 密钥后,您需要将几个密钥添加到 GitHub 仓库中,以启用安全部署。
您需要配置以下密钥:
SSH_PRIVATE_KEY
: 在服务器上生成的私钥cat ~/.ssh/id_ed25519
-----BEGIN OPENSSH PRIVATE KEY----
和 -----END OPENSSH PRIVATE KEY-----
SERVER_HOST
: 您的阿里云服务器的 IP 地址SERVER_USERNAME
: 连接到服务器的用户名root
或您在 ECS 实例上创建的用户帐户NEXT_PUBLIC_TINA_BRANCH
: Tina CMS 应该使用的内容分支main
或 master
)NEXT_PUBLIC_TINA_CLIENT_ID
: 您的 TinaCloud 客户端 IDTINA_TOKEN
: 您的 TinaCloud 身份验证令牌在您的仓库中创建一个新文件,路径为 .github/workflows/deploy.yml
,内容如下:
name: Deploy to Alibaba Cloud Serveron:push:branches: [main]jobs:deploy:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Setup Node.jsuses: actions/setup-node@v3with:node-version: "22.14.0"- name: Setup pnpmuses: pnpm/action-setup@v2with:version: 8- name: Install Dependenciesrun: pnpm install- name: Create .env filerun: |cat > .env << EOLNEXT_PUBLIC_TINA_CLIENT_ID=${{ secrets.NEXT_PUBLIC_TINA_CLIENT_ID }}TINA_TOKEN=${{ secrets.TINA_TOKEN }}NEXT_PUBLIC_TINA_BRANCH=${{ secrets.NEXT_PUBLIC_TINA_BRANCH }}EOL- name: Buildenv:NEXT_PUBLIC_TINA_CLIENT_ID: ${{ secrets.NEXT_PUBLIC_TINA_CLIENT_ID }}TINA_TOKEN: ${{ secrets.TINA_TOKEN }}NEXT_PUBLIC_TINA_BRANCH: ${{ secrets.NEXT_PUBLIC_TINA_BRANCH }}run: pnpm build- name: Deploy to Serveruses: appleboy/scp-action@masterwith:host: ${{ secrets.SERVER_HOST }}username: ${{ secrets.SERVER_USERNAME }}key: ${{ secrets.SSH_PRIVATE_KEY }}source: ".next/,public/,package.json,pnpm-lock.yaml,.env,tina/,next.config.js,.tina/"target: "/tina/tinademo/"rm: true- name: Execute Remote SSH Commandsuses: appleboy/ssh-action@masterwith:host: ${{ secrets.SERVER_HOST }}username: ${{ secrets.SERVER_USERNAME }}key: ${{ secrets.SSH_PRIVATE_KEY }}script: |cd /tina/tinademopnpm installpm2 delete tinademo || truepm2 flush tinademoNODE_ENV=production pm2 start "pnpm start" --name tinademo
要在中国使用自定义域名与您的 TinaCMS 项目:
server {listen 80;server_name yourdomain.cn;# 其余配置}
请记住,在中国大陆托管的网站需要进行 ICP 备案。通过您的域名提供商或阿里云开始此过程。
通过上述阿里云和 GitHub Actions 的配置,中国用户现在可以在中国大陆正常使用所有 TinaCMS 功能。此设置保持与 Vercel 相同的自动内容同步,没有功能差异。