1. 接私活最怕部署环节Dokploy 把这块彻底简化了如果你平时靠接私活赚点外快大概率遇到过这种场景客户催着要一个能公网访问的演示地址你本地npm run dev跑得好好的一到服务器上就各种幺蛾子——Node 版本不对、Nginx 配置写错、HTTPS 证书申请失败、Docker 端口映射冲突。折腾两三个小时代码一行没改全耗在环境上了。Dokploy 就是冲着这个痛点来的。它是一个开源自托管的部署平台GitHub 上已经拿到 16K Star核心能力是原生支持 Docker Compose、基于 Docker Swarm 做集群扩展、内置 Traefik 做反向代理和自动 HTTPS。你可以把它理解成“自托管版的 Heroku 宝塔面板的部署部分”但比宝塔更贴近现代容器化工作流。宝塔面板本质上是帮你管理 LNMP 环境装 PHP、MySQL、Nginx适合传统建站而 Dokploy 从第一天就是围绕 Docker 和 Compose 设计的你丢一个docker-compose.yml进去它帮你拉镜像、起容器、配域名、签证书、做健康检查全程图形界面点几下就行。这篇文章我会带你走完一条完整链路从一台干净的云服务器开始装好 Dokploy接入一个 Docker Compose 项目配好 Traefik 反向代理最后验证公网可访问。全程零成本不需要买任何商业面板授权。适合接私活的前后端开发者、独立开发者、以及想从宝塔迁移到容器化部署的人。2. 为什么接私活场景下 Dokploy 比宝塔更顺手先说清楚两者的定位差异不是宝塔不好而是场景不同。宝塔面板的强项是传统 Web 环境管理一键装 PHP 7.4/8.0、MySQL、Redis、Nginx适合 WordPress、ThinkPHP 这类项目。但接私活现在越来越多是前后端分离、Node 服务、Python API、甚至带数据库的微服务组合。这种项目用宝塔部署你得手动装 Docker、手动写 Nginx 反代、手动配 SSL宝塔的 Docker 管理功能相对基础Compose 编排支持不够直观。Dokploy 的核心优势在这几点原生 Docker Compose 支持。你直接把项目里的docker-compose.yml贴进去或者连 Git 仓库自动读取它解析服务、端口、环境变量一键拉起。多服务依赖比如 web api postgres redis一次搞定。Docker Swarm 集群扩展。单机跑满了加节点组成 Swarm 集群Dokploy 可以在多节点上调度服务。个人接私活一般用不到但项目长大了不用换平台。Traefik 反向代理自动化。这是最省事的部分。你在 Dokploy 里给服务绑定域名它自动生成 Traefik 路由规则自动申请 Lets Encrypt 证书自动续期。宝塔虽然也有 SSL 一键申请但反代规则要自己写容器场景下容易配错。实时监控与自动备份。CPU、内存、容器状态实时看数据库可以配自动备份到本地或 S3 兼容存储。权限管理。如果你和搭档一起接活可以给不同成员分配不同项目权限不用共享 root。一句话总结宝塔适合“我要在这台服务器上建个站”Dokploy 适合“我要把这套容器化项目部署上线并持续迭代”。接私活交付演示、快速上线Dokploy 的路径更短。3. 前置准备服务器、域名与 TaoToken 接入在开始装 Dokploy 之前你需要准备三样东西。一台云服务器。最低配置建议 2 核 4GUbuntu 22.04 或 Debian 12。1 核 2G 也能跑但同时跑几个容器会紧张。国内厂商的轻量应用服务器就够用记得在安全组放行 80、443、3000 端口。一个域名。Dokploy 面板本身和你的项目都需要域名访问。把域名的 A 记录指向服务器公网 IP。比如panel.yourdomain.com给面板app.yourdomain.com给项目。TaoToken 的 API Key。如果你部署的项目里涉及大模型调用比如接私活做 AI 对话应用、代码助手、Agent 工具你需要一个稳定的模型接入端点。TaoToken 提供兼容 OpenAI 格式的 API接入简单不用自己折腾网络环境。先去官网注册然后在控制台创建 API Key。官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 地址https://taotoken.net/api创建 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content拿到 Key 之后在你的项目环境变量里配置OPENAI_API_KEY和OPENAI_BASE_URLhttps://taotoken.net/api代码里用标准 OpenAI SDK 就能调通。这一步和 Dokploy 部署是解耦的但接私活做 AI 类项目时经常一起出现所以提前准备好。4. 一键安装 Dokploy 与 Traefik 反向代理配置骨架SSH 登录你的服务器执行官方一键安装脚本。这个脚本会装 Docker、Docker Swarm、Traefik然后拉起 Dokploy 面板。curl -sSL https://dokploy.com/install.sh | sh安装过程大概 2-5 分钟取决于服务器网络。完成后Dokploy 默认监听 3000 端口。浏览器访问http://你的服务器IP:3000第一次会让你创建管理员账号填邮箱和密码。登录进去后第一件事是配置服务器域名和 Traefik。进入Settings→Server把面板域名填上比如panel.yourdomain.com。Dokploy 会自动为面板本身配置 Traefik 路由和证书。接下来看 Traefik 的配置骨架。Dokploy 内置的 Traefik 默认监听 80 和 443自动做 HTTP 到 HTTPS 跳转。你不需要手写traefik.yml但理解它的工作方式有助于排障。核心逻辑是每个部署的服务在 Dokploy 里绑定域名后Dokploy 通过 Docker Swarm 的 label 给 Traefik 下发路由规则。如果你要手动检查 Traefik 容器状态docker service ls | grep traefik docker service logs dokploy-traefik正常情况下你会看到 Traefik 服务在dokploy-network上运行。所有需要被反向代理的容器都要接入这个网络。Dokploy 在部署项目时会自动处理网络接入你只需要在项目设置里填对域名和容器端口。一个典型的 Traefik 路由 label 长这样Dokploy 自动生成你不用手写labels: - traefik.enabletrue - traefik.http.routers.myapp.ruleHost(app.yourdomain.com) - traefik.http.routers.myapp.entrypointswebsecure - traefik.http.routers.myapp.tls.certresolverletsencrypt - traefik.http.services.myapp.loadbalancer.server.port3000这段配置的含义是把app.yourdomain.com的 HTTPS 请求转发到容器的 3000 端口证书由 Lets Encrypt 自动签发。Dokploy 的图形界面就是帮你生成这些 label你填域名和端口即可。5. 部署一个 Docker Compose 项目并验证公网访问现在用一个实际例子走完部署流程。假设你接了个私活要交付一个带 PostgreSQL 的 Node API 服务。项目结构如下my-api/ ├── docker-compose.yml ├── Dockerfile ├── package.json └── src/ └── index.jsdocker-compose.yml内容version: 3.8 services: api: build: . ports: - 3000 environment: - DATABASE_URLpostgres://user:passdb:5432/mydb - OPENAI_API_KEY${OPENAI_API_KEY} - OPENAI_BASE_URLhttps://taotoken.net/api depends_on: - db db: image: postgres:16 environment: - POSTGRES_USERuser - POSTGRES_PASSWORDpass - POSTGRES_DBmydb volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata:在 Dokploy 里操作步骤第一步进入Projects→Create Project起个名字比如my-api。第二步在项目里Create Service→ 选择Compose。Dokploy 支持三种来源Git 仓库、直接粘贴 Compose 内容、或者从模板创建。接私活常用 Git 仓库填上你的仓库地址和分支。第三步配置环境变量。在Environment标签页里把OPENAI_API_KEY填进去。如果你用 TaoTokenKey 从控制台复制Base URL 保持https://taotoken.net/api。第四步配置域名。在Domains标签页添加app.yourdomain.com容器端口填3000。Dokploy 会自动生成 Traefik 路由和证书申请。第五步点击Deploy。Dokploy 会拉代码、构建镜像、启动容器、配置 Traefik。你可以在Logs里实时看构建和启动日志。部署完成后验证公网访问curl -I https://app.yourdomain.com期望看到HTTP/2 200和有效的 SSL 证书信息。如果返回 502说明 Traefik 找不到后端容器检查容器是否在dokploy-network上、端口是否填对。如果返回 404检查域名拼写和 Traefik 路由规则是否生成。再验证一下 API 是否真的能调通模型curl https://app.yourdomain.com/api/chat \ -H Content-Type: application/json \ -d {message:hello}如果你的 API 内部调用了 TaoToken 的模型接口这一步会返回模型响应。整个链路就通了公网域名 → Traefik → 容器 → TaoToken API。6. 本篇常见错误排查问题一Dokploy 面板打不开3000 端口无响应。先检查服务器安全组是否放行 3000。然后 SSH 上去看容器状态docker ps | grep dokploy如果没有容器在跑重新执行安装脚本。如果容器在跑但访问不了检查防火墙ufw status问题二Traefik 证书申请失败浏览器提示不安全。Lets Encrypt 要求域名能公网解析到你的服务器 IP且 80 端口可访问。检查 DNS 解析dig short app.yourdomain.com返回的 IP 必须是你的服务器公网 IP。如果用了 CDN 或代理先关掉等证书签发成功再开。另外确认 80 和 443 端口在安全组和系统防火墙都放行了。问题三Compose 部署时构建失败日志显示找不到 Dockerfile。Dokploy 默认在仓库根目录找docker-compose.yml。如果你的文件在子目录需要在服务设置里指定Compose Path。比如./backend/docker-compose.yml。同时确认 Dockerfile 里的COPY路径是相对于构建上下文的。问题四容器起来了但 Traefik 返回 502。最常见的原因是端口填错。Dokploy 里填的容器端口必须是容器内部实际监听的端口不是映射到宿主机的端口。比如你的 Node 服务监听 3000Compose 里写ports: - 3000Dokploy 域名配置里就填 3000。另外确认服务接入了dokploy-networkDokploy 一般会自动处理但手动导入的 Compose 可能需要显式声明networks: dokploy-network: external: true services: api: networks: - dokploy-network问题五环境变量没生效容器里读不到 OPENAI_API_KEY。Dokploy 的环境变量在部署时注入。如果你在 Compose 里写了${OPENAI_API_KEY}需要在 Dokploy 的 Environment 标签页里定义同名变量。修改后必须重新部署才生效改完点Redeploy。验证方法docker exec -it 容器名 env | grep OPENAI问题六Docker Swarm 节点加入失败。如果你尝试多节点扩展在 manager 节点执行docker swarm join-token worker拿到 token然后在 worker 节点执行返回的命令。常见失败原因是节点之间 2377 和 7946 端口不通检查安全组。7. 接私活部署链路的下一步Dokploy 把部署这件事从“折腾环境”变成了“填几个表单”。你可以在面板里看到每个服务的实时 CPU、内存、网络流量数据库可以配自动备份项目可以配 Webhook 实现 Git push 自动部署。接私活交付时给客户一个app.yourdomain.com的 HTTPS 地址比丢一个 IP 加端口体面得多。如果你的项目涉及模型调用TaoToken 的 API Key 和接入文档在这里创建 API Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content模型对话测试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content如果你长期做编码类项目或者 Agent 工具可以看看 Coding Plan把模型调用和部署流程串起来Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content部署完成后建议做两件事一是给 Dokploy 面板本身配好域名和 HTTPS别一直用 IP 加端口访问二是把数据库的自动备份打开接私活最怕数据丢了客户找上门。这两步在 Dokploy 里都是点几下的事但能省掉后面很多麻烦。
阅读完成 · 觉得有帮助?