Vercel 替代方案,2025 低成本迁移指南

使用 Vercel 部署项目时,体验确实很顺滑,特别是对前端框架的支持几乎是“开箱即用”。但是很快我就遇到一个现实问题:默认的 100GB 流量额度根本不够用

一旦项目流量稍微上来,就会发现要升级到付费套餐,而 每月 20 美元的价格 对很多个人开发者和小团队来说并不算便宜。

如果你也有同样的困扰,其实完全可以考虑 Vercel 替代方案。通过迁移到合适的平台,不仅能继续保持顺畅的部署体验,还能在费用上节省不少。

这篇文章主要面向三类人:

  • 经常遇到流量额度限制的个人开发者
  • 正在为高昂部署成本发愁的小团队
  • 想寻找更灵活托管方式的独立站长

阅读完之后,你会知道有哪些替代平台适合从 Vercel 迁移过去,它们的优缺点分别是什么,以及如何结合自身需求节省部署成本。

为什么需要寻找 Vercel 替代方案?

很多人一开始选择 Vercel,是因为它足够简单:接入 GitHub,点几下按钮,就能把前端项目跑起来。但是当项目规模逐渐扩大,或者流量稍微上升时,你会发现 Vercel 的限制逐渐显现。

根据 Vercel 官方文档的数据:

  • 免费套餐只有 100GB 流量,一旦超过,必须升级。
  • Pro 套餐需要 20 美元/月,流量才能提升到 1TB。
  • 如果项目需要更高流量或者团队协作,价格还会进一步上涨,企业高达 数百美元每月

当你的网站有一定访问量后,流量消耗很快就会突破免费额度,升级费用并不低。

相比之下,如果你选择 VPS 自行部署,同样的预算完全可以获得更高的带宽和流量,同时还能自由选择地理位置,访问速度上也更有优势。

其他推荐方案

除了直接迁移到 VPS,你也可以考虑一些其他 Vercel 替代方案

  • Netlify:和 Vercel 一样主打前端托管,免费额度稍微宽松一些,但升级后价格依然不低。
  • Cloudflare Pages:和 Cloudflare 自家的 CDN 深度结合,适合需要静态站点加速的用户。
  • Render:支持前后端一体化托管,功能更全面,费用也会比较高。

这些平台在体验上和 Vercel 类似,但从节省成本的角度考虑,VPS 依然是更有性价比的选择。

我推荐的迁移方案

从我个人长期测试和使用的经验来看,VPS + 自部署 是最值得推荐的方案。

因为 VPS 的选择自由度非常高,你可以选择美国、日本、香港甚至欧洲的数据中心,结合实际用户群体,得到更好的访问速度。同时,价格也比 Vercel 便宜很多。

比如,搬瓦工的 Basic 基础套餐,年付只要 49.99 美元,就有 1TB 流量,比 Vercel 的付费方案便宜太多了,访问速度也并不逊色。如果选择日本或香港的 VPS,对中国大陆访问会更加友好。

下面我给大家整理了一些 VPS 商家的推荐列表:

值得推荐的商家

注意:如果你想使用 Dokploy 进行部署,VPS 要求 2GB 内存 30GB 磁盘空间。

下面这些 VPS 提供商,都是我亲自测试过的,既有高品质线路,也有高性价比套餐,能够满足不同用户的需求。

商家方案亮点官网链接
搬瓦工基础款稳定性价比高
高级款支持 CN2 GIA 线路
搬瓦工官网查看介绍
DMIT高品质 VPS,便宜稳定
还提供大陆高级线路优化
DMIT官网查看介绍
野草云便宜的香港 VPS,高性价比
大陆访问流畅
野草云官网查看介绍
OrangeVPS提供美国、香港、新加坡 VPS
优惠套餐价格实惠
OrangeVPS官网查看介绍
HostDare价格便宜的美国、日本 VPS
即使大陆优化线路也很优惠
HostDare官网查看介绍
Evoxt全球更多数据中心,尤其亚洲节点丰富Evoxt官网查看介绍

可以看到,相比 Vercel 的付费方案,这些 VPS 在价格上要划算得多。最重要的是,你还能自由选择服务器位置,比如香港、日本等地,让中国大陆用户访问体验大幅提升。

如果你不想再受限于 Vercel 的高额费用和功能限制,选择 VPS 来部署项目,绝对是一个更自由、更划算的替代方案。

使用 Dokploy 替代 Vercel

前面我们已经对比了 Vercel 和 VPS 的成本差异,现在就进入实操环节。

我最终选择的方案是 使用 Dokploy 来替代 Vercel。Dokploy 是一款自部署的 PaaS 管理面板,能让你用极低的成本,在自己的 VPS 上实现和 Vercel 类似的项目部署与管理。

这种方式的好处很明显:

  • 完全可控:你自己掌握服务器,项目数据不会依赖第三方平台;
  • 节省开销:只需要支付 VPS 的费用,比 Vercel Pro 每月 20 美元便宜太多;
  • 扩展自由:你可以根据项目情况选择不同地区、线路的 VPS

VPS 配置要求

在实际迁移前,需要提醒你一下 VPS 的配置要求。

  • 推荐配置Dokploy 官方给出的建议是要求 VPS 有 2GB 内存 30GB 磁盘空间。
  • 系统:Debian / Ubuntu 系统都可以,我个人更推荐 Ubuntu 22.04。

如果你只是想部署个人博客或中小型项目,基础款 VPS 完全够用。如果是商用项目,建议选择更高配的 VPS,能避免资源不足。

安装 Dokploy

1、执行一键安装脚本

在 VPS 中执行以下命令,进行 Dokploy 的安装:

curl -sSL https://dokploy.com/install.sh | sh

按照引导安装完成后,Dokploy 会自动运行在服务器的 3000 端口

2、防火墙放行端口

如果服务器开启了防火墙,需要手动放行 3000 端口,以我使用 Ubuntu 为例:

ufw allow 3000
ufw reload

当然,如果你安装了 1Panel 和宝塔这类 Linux 控制面板,通过图形化面板管理也是可以的。

3、首次访问 Dokploy

在浏览器中访问:

http://你的服务器IP:3000

即可进入 Dokploy 的安装向导。按照提示设置好管理员账号和密码。

Vercel 替代方案:Dokploy 登录界面

4、绑定域名(可选)

如果不想通过 IP 访问,还可以在 Dokploy 左侧菜单进入 Web Server 设置,为 Dokploy 绑定一个域名。然后,在你的域名 DNS 解析中,新增一条 A 记录 指向服务器 IP。

Dokploy 控制台绑定域名
Dokploy 控制台绑定域名

这样,你就能直接通过「域名」访问 Dokploy 控制台,更加方便管理。

到这里,我们已经把 Dokploy 安装好了,下一步就是进入最关键的环节 —— 项目部署。我强烈优先推荐 GitHub Actions 构建 + Dokploy 部署 的方案,这种方式能极大节省 VPS 的资源消耗。

GitHub Actions 构建 + Dokploy 部署(推荐)

Dokploy 安装好以后,就可以开始部署项目了。这里我强烈推荐使用 GitHub Actions 构建 + Dokploy 部署 的方案,而不是直接在 VPS 上构建镜像。

原因很简单:

  • 省资源:VPS 的 CPU 和内存有限,如果每次都要在本地构建,会吃掉很多资源;
  • 构建更快:GitHub Actions 的构建环境性能更强,通常速度更快;
  • 免费好用:GitHub 每月提供一定的免费构建额度,小型项目完全够用。

换句话说,Dokploy 只需要负责「拉取已经构建好的镜像并运行」,而不用再自己编译打包。

配置 GitHub 关联

在 Dokploy 控制台点击左侧的 Git → 选择 GitHub,在弹出框中点击 Create GitHub App。然后需要在 GitHub 中完成 APP 的创建。

Dokploy 关联 GitHub
Dokploy 关联 GitHub

然后在点击 GitHub APP 的下载/安装图标,就会跳转到 GitHub 去完成授权,可以选择你需要的仓库或者所有仓库。授权完成后,Dokploy 就能获取 Github 的代码仓库了。

Dokploy 授权 GitHub 仓库
Dokploy 授权 GitHub 仓库

这样,Dokploy 就能访问你的代码仓库,可以通过拉取仓库代码进行项目部署。

配置 GitHub Token 和 Registry

为了让 Dokploy 能从 GitHub Packages 拉取镜像,我们还需要配置 Registry。点击链接https://github.com/settings/tokens/new 去 GitHub 创建一个新的 Personal Access Token

创建 GitHub Personal Access Token
创建 GitHub Personal Access Token

创建成功后,会获取到一个 Token,记下来。接着,回到 Dokploy 面板 → 点击 Registry → 点击 Add Registry 新建,填写下方的信息:

  • Username:你的 GitHub 用户名
  • Password:刚才生成的 Token
  • Registry URL:https://ghcr.io
Dokploy 添加 Registry
Dokploy 添加 Registry

项目创建与服务配置

在 Dokploy 控制台中,先点击左侧 Projects 菜单,然后创建一个新的 Project

Dokploy 新建 Project
Dokploy 新建 Project

在该 Project 之下,可以创建一个 Service,每个 Service 对应我们需要迁移的一个 Vercel 项目。
也就是说,Project 是管理单位,而 Service 则是具体的应用或项目实体。

Dokploy 新建 Service
Dokploy 新建 Service

编写 GitHub Actions 构建配置

在你的代码仓库中,创建 .github/workflows/docker-image.yml 文件:

name: Create and publish a Docker image

on:
  push:
    branches: ['main']

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
      attestations: write
      id-token: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Log in to the Container registry
        uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
      - name: Build and push Docker image
        id: push
        uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            NEXT_PUBLIC_WEB_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}
            NEXT_PUBLIC_PROJECT_NAME=${{ secrets.NEXT_PUBLIC_PROJECT_NAME }}

      - name: Trigger dokploy redeploy
        run: |
          curl -X GET https://xxxxxx/api/deploy/ZdYZjoiNxZ5nDIbjO1E2x

重点说明curl 这一行要替换成你在 Dokploy 创建 Service 里生成的 Webhook URL(如下图)。

从 Dokploy 获取 Webhook URL
从 Dokploy 获取 Webhook URL

Dockerfile 配置

在项目根目录新增一个 Dockerfile 文件,这个 Dockerfile 是为上面的 GitHub Action 执行 Docker 镜像打包,示例如下:

FROM node:18-alpine AS base

FROM base AS deps
RUN apk add --no-cache libc6-compat && yarn global add pnpm

WORKDIR /app

COPY package.json pnpm-lock.yaml* ./
RUN pnpm i --frozen-lockfile

FROM deps AS builder

WORKDIR /app

ARG NEXT_PUBLIC_WEB_URL
ARG NEXT_PUBLIC_PROJECT_NAME

ENV NEXT_PUBLIC_WEB_URL=${NEXT_PUBLIC_WEB_URL}
ENV NEXT_PUBLIC_PROJECT_NAME=${NEXT_PUBLIC_PROJECT_NAME}

COPY . .
RUN pnpm build

FROM base AS runner
WORKDIR /app

RUN addgroup --system --gid 1001 nodejs && \
    adduser --system --uid 1001 nextjs && \
    mkdir .next && \
    chown nextjs:nodejs .next

COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs

EXPOSE 3000

ENV NODE_ENV production
ENV PORT 3000
ENV HOSTNAME "0.0.0.0"

CMD ["node", "server.js"]

这样,每次你推送到 main 分支,GitHub Actions 就会自动构建镜像 → 推送到 GitHub Packages → 通过 Webhook 通知 Dokploy → Dokploy 拉取镜像完成自动部署。

拉取镜像并部署

在 GitHub Action 完成镜像打包并推送到你的镜像仓库后,需要在 Dokploy 面板上拉取最新镜像。操作步骤如下:

  1. 打开 Dokploy 控制面板,进入你要部署的项目。
  2. 在 Provider 区域,选择 Docker 并填写 Docker Imageghcr.io/用户名/项目名:版本
  3. 等待 Dokploy 拉取完成,可以在面板中看到镜像状态更新。
  4. 拉取完成后,点击 Deploy 按钮,即可将新镜像部署到 VPS 上。
在 Dokploy 配置 Docker 镜像
在 Dokploy 配置 Docker 镜像

完成镜像拉取和部署后,你的服务就已经运行在 VPS 上,可以进行下一步的 绑定域名 设置。

部署完成与绑定域名

最后,在 Domain 中绑定服务域名,然后到 DNS 提交一条 A 记录解析,就能用域名访问新服务了。

在 Dokploy 绑定域名

到这里,整个 Vercel → Dokploy 迁移流程 就完成了。

Dokploy 也支持直接在服务器上构建代码(Provider 选择 GitHub),不过这样会占用 VPS 资源,整体效率不如「GitHub Actions 构建 + Dokploy 部署」的方式,所以这里就不展开了。

总结

通过本文教程,我们完成了从 Vercel 到 Dokploy 的项目迁移全过程。主要步骤包括:

  1. 在 Dokploy 控制台创建 Project。
  2. 在 Project 下新建 Service,每个 Service 对应一个需要迁移的 Vercel 项目。
  3. 配置 Git 仓库和部署设置,实现自动化部署。
  4. 测试迁移后的项目,确保功能与原 Vercel 项目一致。

整个迁移流程简单明了,适合开发者和团队快速上手。同时,Dokploy 提供灵活的服务管理和多项目支持,能够满足日常开发和部署需求。

常见问题解答(FAQ)

Q1:什么是 Dokploy 的 Project 和 Service?

Project 是 Dokploy 中的顶级组织单元,用于管理一个或多个 Service。Service 对应你要迁移或部署的具体项目,相当于 Vercel 的单个项目。

Q2:一个 Project 下可以创建多少个 Service?

Dokploy 没有严格限制,一个 Project 下可以创建多个 Service,便于团队统一管理相关项目。

Q3:如何将 Vercel 项目迁移到 Dokploy?

先在 Dokploy 创建 Project 和 Service,然后将 Vercel 项目的 Git 仓库地址添加到 Service,配置部署分支和环境变量,即可完成迁移。

Q4:迁移过程中需要修改代码吗?

一般情况下无需修改代码,但需要确保环境变量、构建命令和依赖与 Dokploy 平台兼容。

Q5:迁移完成后如何测试项目?

可以使用 Dokploy 提供的预览 URL 或绑定自定义域名进行访问,检查页面功能和 API 是否正常运行。

Q6:迁移后可以继续使用 Vercel 吗?

可以同时保留 Vercel 项目,但域名的 DNS 已经修改,Vercel 上的遗留已经没有用了,建议清理。

发表评论