Dokploy 托管你的全栈应用

Dokploy 托管你的全栈应用
Photo by Ian Taylor / Unsplash

我是一名开发者,平时会用到以下场景,都可以交由 Dokploy 托管:

  • 反向代理,之前用 Nginx,现在交给 Dokploy ,用 Traefik 托管
  • 常规网站静态部署,比如打包一个 React 项目部署到服务器静态目录
  • Nextjs 项目部署,之前依赖 Vercel,现在改为 Dokploy 托管
  • NestJS 后端项目托管,直接将服务 Docker 化交给 Dokploy,之前我是用 Railway 托管或者直接在服务器进行 Docker 管理,现在也交给 Dokploy,并且用 Docker 替代 PM2
  • 数据库安装与备份,如 Mysql,Postgresql,MongoDB, Redis
  • 其他: 如 Sentry 日志, Plasible 流量监控, Portainer 容器监控管理等
    Dokploy 部署及相关使用细节,后续会持续更新~,大家可以在我的 Dokploy Tag 页面看到。

Dokploy 简介

介绍: Dokploy 是一个基于 Docker 的运维应用管理面板,因为是基于 Docker 的,所以大部分应用都方便安装。
开发者可能相对熟悉的有宝塔面板,1Panel 面板等,每个都有他们的优劣势,我简单总结了一些: 宝塔、1panel、dokploy的对比[插个眼,后面慢慢补]

Dokploy 功能介绍

Dokploy 是免费开源基于容器化的运维面板,特别适合开发者和小团队:

  • 数据库: 支持 Mysql, Postgresql, Redis, Mongodb, MariaDB 等
  • Traefik File System: 基于 Traefik 的反向代理,负载均衡,动态配置,日志和监控等。
  • Monitoring: 服务器监控,如 CPU, Memory, Disk, I/O, Network
  • Remote Servers: 远程服务器管理,可以配置多台远程服务器,然后都通过 Dokploy 来管理
  • SSL 免费证书生成(基于 Let's Encrypt)
  • S3 Destinations: 支持基于 S3 协议的存储,可以用来备份数据库
  • Docker, Swarm
  • 其他

管理面板及功能列表如下图所示:

CleanShot 2025-02-24 at 21.34.06@2x.png

Dokploy 安装

直接参考 Dokploy 官方安装文档 ,我当前的服务器是 Hostinger Ubuntu 24.04。
执行下面的命令,Dokploy 需要依赖 Docker ,如果服务器没有安装 Docker,下面的命令也会自动把 Docker 环境安装到服务器。

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

上述命令实现了一键安装

CleanShot 2025-02-24 at 15.23.40@2x.png

根据命令行里面返回的地址,直接打开访问即可看到 Dokploy 入口界面,默认运行在 3000 端口。(这里注意,需要在服务器上把 3000 端口打开):

CleanShot 2025-02-24 at 15.25.03@2x.png


输入管理员的用户名和密码即可。

Dokploy 功能配置 & 使用

给部署一个 Dokploy 单独的域名访问

在 Cloudflare 里面配置一个 A 记录的域名解析, dokploy.meepo.me

CleanShot 2025-02-24 at 21.57.56@2x.png

在 Web Server 面板,将 dokploy 设置为公网自定义域名 https 访问,在 Settings -> Web Server 里填写自定义域名和 Let's Encrypt 邮箱名(随便填个自己的即可) ,点击 Save。

CleanShot 2025-02-24 at 22.07.27@2x.png

此时直接访问 https://dokploy.meepo.me 就得到了 dokploy 的管理站点,丝滑的狠。

数据库支持

原生直接支持如 PostgreSQL,Mysql,MongoDB,Redis,MariaDB 等

CleanShot 2025-02-24 at 22.08.10@2x.png

而且可以在 Template 里找到 SupaBase 的开源版本!

CleanShot 2025-02-24 at 22.06.37@2x.png

数据库安装与备份

在 Projects 里面选择 Create Service,创建 Database

CleanShot 2025-02-24 at 22.10.28@2x.png

在弹窗里填写对应的信息即可,点击 Create ,丝滑

CleanShot 2025-02-24 at 22.12.36@2x.png

创建完成

CleanShot 2025-02-24 at 22.14.09@2x.png

点击进入,可以在详情面板对数据库进行 Deploy,并且提供了非常方便的配置及密码更改。

CleanShot 2025-02-24 at 22.14.45@2x.png

Dokploy 为数据库都提供了 Backups 选项,需要在 S3 Destinations 中先设置存储位置,后面我给出 Cloudflare R2 的配置示例。

CleanShot 2025-02-24 at 22.16.07@2x.png

配置好之后再回到这个页面即可,点击 Create Backup

CleanShot 2025-02-25 at 08.48.46@2x.png

在弹框页面,填写相应的备份配置即可: 指定 S3 Destination,以及可以设置 Cron 做定时备份

CleanShot 2025-02-25 at 08.49.45@2x.png

备份之后,数据会存放在对应的 S3 的 Bucket 存储里,我是用的 Cloudflare R2,效果如图:

CleanShot 2025-02-25 at 08.51.28@2x.png

S3 Destinations 设置

添加 S3 Destinations 可以用来创建备份,支持如 AWS S3, Cloudflare R2, Wasabi, DigitalOcean Spaces 等支持 S3 协议的服务。

CleanShot 2025-02-25 at 08.40.39@2x.png


我用的 Cloudflare R2 Object Storage,创建一个 db-backup-test 的 bucket

CleanShot 2025-02-25 at 08.42.28@2x.png


填入相关的 Bucket 以及 Access Key, Secret Key 等,然后点击 Test Connect 即可测试配置是否成功。

CleanShot 2025-02-25 at 08.45.12@2x.png

点击 Create 成功创建

CleanShot 2025-02-25 at 08.47.03@2x.png

连接 Github

现在的开发方式,基本上都会配置如 Github, GitLab 的 CI/CD 工作流等,做自动拉取代码,编译,构建,测试,部署等流程。
在 Settings -> Git 选择 Github :

CleanShot 2025-02-24 at 15.32.43@2x.png

注意这里记得把 Organization 勾选上✅,这样才能把 Github 的组织里面的代码读取到,而在 Vecel 的功能里,配置 Github Organization ,就是需要付费的。


Github 允许之后,创建一个标识名称即可

CleanShot 2025-02-24 at 15.36.48@2x.png


创建完毕后,可以看到可用的 Provider 列表,而且可以添加多个

CleanShot 2025-02-24 at 15.40.00@2x.png

参考

本文受 javayhu 的影响,他最早安利用 Dokploy,并且给出了非常好的教程: 👉Dokploy的极简教程 推荐大家关注他,我从他身上学到了非常多的干货。

Read more

从事 SEO 12 年的大佬总结的要点

从事 SEO 12 年的大佬总结的要点

从事 SEO 12 年后,以下是我能想到的所有 SEO 技巧: 1. 在 H1、H2 和 URL 部分中使用主要关键词。 2. 停止追逐虚荣指标。流量固然重要,但转化率才是最重要的。 3. 内部链接可以将“几乎完成”的页面转变为表现最佳的页面。 4. 定期检查你的网站是否有坏链接,这是一个简单的 SEO 胜利。 5. Google Search Console 是您最好的朋友,使用它来重新优化排名在第 3-7 位的页面。 6. 90% 的反向链接应来自相关的高权威网站。 7. 速度决定一切——或许应该说,速度不足会扼杀一切。确保加载时间在 2 秒以内。 8. 持续更新内容将帮助你的页面保持更高的排名。 9. 使用 NLP

Pnpm 构建 Monorepo

Pnpm 构建 Monorepo

最近开始搭建 monorepo 的项目,了解到以下方案: * lerna 有强大完善的依赖管理和构建、打包发布流程,而且 v5 版本将 nx 与 lerna 整合了,提升了性能和速度 * 业界大多使用 lerna + yarn workspace 的方式来管理,yarn 用来管理依赖,lerna 用于管理发布 之前简单使用过 lerna ,不过再加上 yarn workspace , 学习容多、配置多又得折腾,太费劲🤪,暂时搁置。 最终尝试使用单一的 pnpm workspace + changesets 的方式来构建 monorepo,本身我就使用 pnpm 作为包管理工具,目前我的场景简单,pnpm 就已足够。 本文记录自己使用 pnpm workspace 搭建 monorepo

HTTP Web 缓存总结

HTTP Web 缓存总结

友情提示:缓存什么的,是完全依赖相关http header头信息来标记和判断的 缓存读取顺序: 首先读取本地缓存,如果条件满足就取本地缓存,否则往后走代理缓存,同理,条件满足就是从代理缓存取资源(可能存在多级代理缓存) 如果一条链路上的资源都不符合,那么就去源服务器获取 缓存优先级:Cache-Control > Expires > Etag > Last-Modified 缓存的分类和优先级 * 强缓存 状态码 200 (比如 200 (from cache)) * Expires 服务器下发的绝对时间,而判断的时候以浏览器时间为准,客户端和服务器有可能会不一样 * Cache-Control 相对时间,以客户端相对时间为准 * 协商缓存 状态码 304 * Last-Modified If-Modified-Since * Etag If-None-Match 强缓存优先级高于协商缓存,强缓存不会询问服务器,直接使用缓存。协商缓存会询问服务器关于文件的可用性 对于传输过程中的中间节点,本文都称为代理服务器,包括proxy、

关于 Webpack 使用 Babel 与 Vite 使用 ESBuild 的一些思考

关于 Webpack 使用 Babel 与 Vite 使用 ESBuild 的一些思考

虽然 Vite 是基于 esbuild 构建的,并且 esbuild 在构建速度上有显著优势,但 Webpack 目前并没有直接使用 esbuild 构建的原因涉及多个方面,主要是 架构设计差异、功能需求 和 兼容性 等问题。下面是一些关键的原因: 1. Webpack 的复杂性与扩展性 • Webpack 的高度可扩展性:Webpack 的设计目标是一个 高度可配置和可扩展的打包工具。它提供了丰富的插件和 loader 机制,支持各种复杂的构建需求(如代码分割、热更新、各种资源处理等)。这些功能要求 Webpack 必须具备更细粒度的控制能力,而 esbuild 的设计理念相对简化,主要关注高速构建和基本的模块转换功能。 • Loader 和 Plugin 系统:Webpack 的强大之处在于其 loader 和