手把手教你把一台VPS变成自己的Vercel
我之前写过一篇零基础网页部署的保姆级教程,里面给大家推荐过用 Vercel 来快速把网页放到线上。
零基础网页部署保姆级教程,搞定上线最后一公里
现在很多人不是做不出网页,而是卡在最后一步:AI 已经帮你把页面写好了,你自己电脑上也能打开,但你不知道怎么让别人通过一个链接访问它。 这一步就叫部署,也就是网页上线的最后一公里。…
https://macin.top/posts/c65f747b/
文章发出来之后,很多朋友来跟我交流,反馈说 Vercel 用起来确实简单,但在实际体验中有两个很大的痛点:
第一是国内访问太慢了,经常卡顿抽风甚至直接打不开,别人想试用你的产品还得专门挂梯子。 第二是限制太多,免费额度紧、Serverless 函数冷启动慢,稍微想跑个后台常驻任务、做个带自建数据库的全栈项目,就处处受限,非常不利于长期使用。
所以今天这篇文章,我们就来说一下我个人认为目前最舒服、也最踏实的最佳部署方案: 拥有一台属于自己的 VPS,然后在上面部署一个 Dokploy。
很多人一听到“买服务器”就觉得贵、觉得门槛高。其实现在的花费非常便宜,各大云厂商针对新用户基本都有促销活动,一年算下来也就 100 块左右(像我自己常用的腾讯云国际版海外轻量,2 核 2G 一年大概只要 10 美元)。
花这点小钱,我们就能在自己的 VPS 上搭建出一套跟 Vercel 体验几乎一致、而且功能比它强大得多的私有部署环境。
更爽的是,接上 AI 的 MCP(Model Context Protocol)之后,你甚至连命令都不用敲,直接在对话框里一句话吩咐它:
帮我把这个项目部署上去,配好域名和数据库,再告诉我访问地址。
一. 先弄明白这三个核心东西
动起手来其实非常快,别被一堆技术词给绕晕了,核心就三个东西:
- VPS:其实就是一个云服务器,你也可以把它直接理解为一台 24 小时开机连网的云端电脑,专门用来实际运行你的项目和数据库。
- Dokploy:就是我们用来管理这台电脑的现代部署平台(类似开源自建版的 Vercel)。它比很多人常推荐的宝塔好得多,功能强大,全基于 Docker 容器化隔离,而且对 AI 极度友好。
- MCP:是 AI 操作 Dokploy 的工具接口,让 Codex 等 AI 编程工具能通过对话直接帮你建项目、拉代码、查日志和做部署。
整个协作流程非常直白:你在 Codex 里发一句话 → Codex 调用 Dokploy 的 MCP 接口 → Dokploy 在服务器上自动建应用并拉起 Docker → 你的 VPS 稳稳当当地把网站跑起来。
二. 买 VPS 该怎么选?新手避坑指南
买服务器其实丰俭由人。如果你不知道怎么选配置,最省事的办法就是直接把你的预算和需求丢给 AI,让它帮你挑性价比最高的方案。
如果你习惯用国内云厂商,阿里云、腾讯云、华为云、百度云这些都可以。大家完全可以用新账号去薅各大云厂商的新客特惠活动,新用户一年往往几十到一百块左右就能拿下一台轻量服务器。
但这里有一个非常关键的避坑点:尽量选香港或者海外节点(比如新加坡、东京)!
原因非常现实:绑定自定义域名免备案。
如果你的服务器选在国内大陆节点,到时候绑定自己的个性化域名解析,就必须走国内工信部的 ICP 备案流程,填资料、等审核,对个人折腾小项目来说非常耗时繁琐;而选香港或海外节点,域名解析过去立刻就能生效访问,省掉了一大堆麻烦。
除了国内站,我们也可以直接看各大云厂商的国际站(比如阿里云国际版、腾讯云国际版)。我自己目前用的就是腾讯云国际版(Lighthouse),新用户做活动时大概 10 美元左右就能拿下一整年 2 核 2G、40GB SSD 的海外轻量服务器,不仅便宜,而且网络各方面都很舒服。
三. 购买 VPS,找到服务器入口
这里以我常用的腾讯云轻量应用服务器为例,选择的是新加坡地区、2 核 CPU、2GB 内存、40GB SSD,以及预装 Docker 的镜像。
实例创建完成后,进入服务器列表。记下公网 IPv4,后面访问面板时会用到。
点击实例卡片上的 登录。
本次使用腾讯云网页提供的免密连接,用户名为 ubuntu。点击登录后会进入服务器终端。
四. 安装 Dokploy 面板
在服务器终端执行下面这条官方安装命令:
1 | curl -sSL https://dokploy.com/install.sh | sh |
如果权限不足的话,就用管理员权限运行 Dokploy 的官方安装脚本。示例镜像已经安装 Docker,因此终端会显示 Docker already installed。
安装前应确认 80、443、3000 端口没有被其他服务占用。如果服务器已经承载其他网站,先检查现有服务,再安装。
等待安装完成后,到腾讯云实例的 防火墙 页面添加规则。先放行 TCP 3000,用来访问管理面板。
浏览器打开
http://你的服务器公网IP:3000
出现下面的初始化页面,就可以创建管理员账号。
填写名字、邮箱和密码,点击 Register。这是你自己这台 Dokploy 的账号,与腾讯云账号无关。
如果登录后进入首次使用引导,点击左下角的 SKIP ALL,先进入控制台。
控制台主界面长这样:
进入具体应用后,还会看到环境变量、域名和部署日志等选项。第一次不用把每个菜单研究一遍,先让 AI 连上,再回来看它创建了什么。
顺便提一句大家很关心的域名和 HTTPS:Dokploy 底层自带了 Traefik 反向代理。后面当你把域名解析过来之后,在面板里填上域名,它能一键自动向 Let’s Encrypt 申请并配置免费的 SSL 证书(HTTPS),体验跟 Vercel 完全一样无感。
五. 生成 API Key 并接入 Codex
打开左侧 Profile,向下找到 API / CLI Keys,点击右下角的 Generate New Key。
可以按上面的方式填写,点击 Generate,把生成的完整密钥保存在本地。后面需要把它填入 MCP 配置。
这把密钥就是 AI 访问 Dokploy 的凭证。
接下来用 Codex 操作。Codex 是我们与 AI 对话、让它执行任务的工具;这里让它通过 Dokploy 官方 MCP,连接刚才装好的部署面板。
先打开你电脑上的 Codex,新建一个任务。 我们第一条消息先让它安装并配置 MCP。等配置完成、密钥填好、连接验证通过,再让它创建项目和部署应用。
第一步:打开 Codex,发送安装请求
打开 Codex,新建一个任务,在对话框里粘贴下面这段话。把地址替换为你自己的 Dokploy 地址:
1 | 请帮我安装并配置 Dokploy 官方 MCP,供 Codex 使用。 |
这一步只需要提供面板地址,不用把 API Key 发到聊天里(偷懒的也可以直接发给 AI,但毕竟有泄露风险,本地替换更安全)。密钥先留在本地,等配置生成好后再填写。
第二步:让 Codex 检查环境并完成配置
Dokploy 官方 MCP 的 npm 包名是
@dokploy/mcp
。
此时打开 Codex 的设置界面,在插件列表中可以看到已经安装好了 Dokploy 的 MCP:
不过此时刚写进去的配置里,API Key 还是占位符,所以还算不上连接成功。
第三步:在本地填入 API Key
按 Codex 回复的路径打开配置文件。
找到 config.toml,用文本编辑器打开。在 [mcp_servers.dokploy.env] 下找到这一行:
DOKPLOY_API_KEY = “REPLACE_WITH_YOUR_DOKPLOY_API_KEY”
把双引号里的占位符替换为你在 Dokploy 创建的密钥,保留双引号,然后保存。只替换对应字段即可,不用重新覆盖整个文件。
第四步:重新连接 MCP
打开 Codex 设置 → 插件 → MCP,找到 dokploy,确认右侧开关已开启。需要调整配置时点击这一行的齿轮,按当前界面提供的操作重新加载服务。
如果列表没有更新,退出并重新打开 Codex,再新建一个任务查看工具是否可用。初次启动需要下载依赖,可能比之后启动慢一些。
六. 先用一句话,验证连通性
在 AI 对话里输入:
1 | 请通过 Dokploy MCP 列出当前项目。 |
没有项目时返回空列表是正常结果。关键是 AI 确实调用工具,并收到 Dokploy 的返回,而不是只给你解释操作方法。
到这里就说明已经连通成功了。
再发第二条:
1 | 请通过 Dokploy MCP 创建 personal-stack 项目。 |
回到 Dokploy 的 Projects 页面刷新,检查项目是否出现。
到这里,AI 操作部署平台的链路就连接上了。本次流程已经通过官方 MCP 程序调用验证:可以读取项目列表、查询模板和服务器健康信息,并创建空项目。
七. 以 Supabase 为例,让 Codex 执行部署任务
MCP 添加完成后,就可以回到 Codex 的对话界面,给它一个具体任务。这次以 Supabase 为例。
Supabase 为网站提供数据库、用户登录和文件存储等后台能力。例如做一个个人备忘录,账号由它管理,笔记内容也保存在它的数据库里。
通过 MCP 部署 Supabase,就是让 Codex 调用 Dokploy 的工具,查找模板、创建服务、配置部署,再检查结果。
先发一条指令
将地址和项目名替换为实际值后,再发送:
1 | 请通过 Dokploy MCP,在 personal-stack 项目中部署 Supabase。 |
怎么判断真的部署好了
回到 Dokploy 的 Projects → personal-stack,检查新增的 Supabase 服务及部署记录,再按照返回地址验证:
- 部署记录没有失败或持续重试。
- 数据库、认证、API 网关等关键服务运行正常。
- 管理入口能够登录,API 可以实际请求。
再部署一个连接它的小项目
Supabase 验证通过后,可以做一个带登录的个人备忘录。继续告诉 Codex:
1 | 请帮我制作一个连接这套自托管 Supabase 的个人备忘录网站。 |
这一段真正的完成标准,是网站操作写进了这套数据库,并且用户隔离有效。仅能打开网站首页,还不能证明 Supabase 已经接入成功。
打开你的地址:
http://你的服务器公网IP:3000/notes/
第一次访问时,浏览器会弹出账号密码窗口:
验证通过后,就能看到“我的云端便签”页面:
页面上方是便签输入框,下面有“保存便签”和“刷新列表”。截图中的“已与数据库同步”是读取列表后显示的状态,当前列表为空,因此提示“还没有便签,保存第一条试试”。
八. 把 GitHub 上的项目交给 AI 部署
前面的演示搞定了“网站能运行、数据能保存”。接下来把代码放进 GitHub,让 Dokploy 从仓库自动拉取和构建。以后只要改完代码推送到 GitHub,服务器就能自动发布新版本。
第一步:在 Dokploy 中连接 GitHub
打开 Dokploy 左侧的 Git,点击 GitHub,会出现下面的窗口。
GitHub URL 保持
,这里填的是 GitHub 平台地址,不是项目仓库地址。点击右下角 Create GitHub App,按跳转页面完成创建。
返回 Dokploy 后,列表里出现了一个 GitHub App,但右边仍显示 Action Required。
这时还没有完成仓库授权。点击 Action Required 右边、垃圾桶左边的安装图标,进入 GitHub 的安装页面。
这里建议选择 仅选定的仓库(Only select repositories),再选 personal-memo,最后点击绿色的 安装与授权。上图是在修改选择前截下来的,仍显示“所有仓库”,不能把这张图当作已经限制授权范围的证明
完成后会跳回 Dokploy。此时 Action Required 已经消失。
这一步让服务器获得了读取私有代码仓库的入口。后面的创建服务、填写部署参数和执行部署,就交给 Codex 通过 MCP 完成。
第二步:让 Codex 从 GitHub 部署独立的备忘录服务
回到已经接好 Dokploy MCP 的 Codex,发送:
1 | 请通过 Dokploy 官方 MCP 部署 GitHub 仓库: |
Codex 随后通过官方 MCP,直接把 GitHub 仓库里的项目部署到了 Dokploy 中:
此时打开的仍是原来的地址:
http://你的服务器公网IP:3000/notes/
第三步:修改 GitHub 代码,看看网站会不会自动更新
部署成功后,再给 Codex 一条任务:
1 | 请修改 personal-memo 的界面: |
更新前是深色的“我的云端便签”,里面已经存有一条“测试测试”。
将更新后的代码推送到 GitHub 后,Dokploy 自动出现了这次提交的部署记录,过程中不需要再调用手动部署。
刷新网站后,页面已经变成浅色布局,标题是“我的个人备忘录”,原来的“测试测试”和创建时间都还在:
刷新网页就能看到新版浅色界面,而且之前保存的旧备忘录记录全都在。
整条自动化发布链路非常顺畅:Codex 修改代码 → 提交并推送到 GitHub main 分支 → GitHub Webhook 触发 Dokploy → Dokploy 自动拉取最新代码并构建更新容器 → 刷新 /notes/ 即可看到新界面,原有数据库数据依然完好保留。
九. 日常操作,还能让 AI 帮你做这些事
部署只是第一次操作。之后更常用的是查询状态、更新应用和排查错误。
查看应用状态
通过 Dokploy MCP 检查 my-web 的状态和最近一次部署结果。 先只读取,不重启、不重新部署。 区分已经确认的问题和需要继续检查的地方。
排查部署失败
检查 my-web 最近一次失败的部署。 读取当前工具能获取的日志,指出关键报错并解释可能原因。 先给出建议,不要连续重试部署。 如果 MCP 无法读取日志,告诉我去面板哪里查看。
修改环境变量
将 my-web 的 LOG_LEVEL 设置为 info,保留其他环境变量。 先判断修改是在构建时还是运行时生效, 然后执行必要的重新部署并检查结果。 不要输出其他变量中的密钥。
发布代码更新
重新部署 my-web 配置的 main 分支。 报告部署结果;如果工具能读取提交信息,说明本次对应的提交。 完成后检查服务是否能访问。
重启应用
通过 Dokploy MCP 重启 my-web。 不要修改环境变量或其他服务。 完成后重新检查应用状态;如果无法验证访问情况,请明确说明。
检查资源占用
检查服务器和应用的资源使用情况,只读取信息。 不停止服务、不清理文件。 说明内存统计口径,区分总量、已用量和可用量。
刚开始使用时,把任务对 AI 说清楚:操作哪个项目、修改什么、保留什么、最后怎么验证。例如先让 AI 诊断故障并给出建议,确认没问题后再让它执行修复。
写在最后
以前聊自建服务或买 VPS,总觉得那是专业运维和全栈工程师的专属领域。但配合现在的 AI 工具和 MCP 协议,整个游戏规则彻底变了。
你不需要去死记复杂的 Linux 运维命令,也不用在云厂商后台那些让人眼花缭乱的菜单里迷路。花几十到一百块搞一台海外小 VPS,装上 Dokploy,剩下的事情直接丢给 AI 去对话式搞定。
既能拥有 Vercel 一样丝滑的自动化部署体验,又不受任何第三方平台的额度与网络限制,数据和基础设施全在自己手里。如果你也受够了 Vercel 的网络和限制,赶紧挑一台适合自己的 VPS,把这套流程跑通吧。







