宝塔、1panel、dokploy的对比

服务器管理面板,宝塔、1panel、dokploy的对比

宝塔、1panel、dokploy的对比
Photo by Lee Campbell / Unsplash

都是非常方便的服务器管理和运维面板,我主要从我自己的个人感受上去对比这三个工具:

都具备的能力

  • 服务器的系统监控,资源监控
  • 提供数据库层面的安装和备份等选项,非常方便
  • 服务器终端

dokploy

  • 提供开源版本和云版本,开源版本维护更新非常积极,社区影响力逐步扩大,技术群里面也是非常喜爱这个。
  • 基于 Traefik 做反向代理
  • 简洁高效,使用 shadcn/ui,界面最好看
  • 功能设计上,感觉是最方便做 Docker 管理的

Traefik

现代化的反向代理,与容器化与云原生配合比较舒服,我之前是一直用 Nginx,切换到 Traefik 有一定的成本,不过现在有 AI ,并且 dokploy 还会自动检测配置,相对来说简单很多了。

通过动态配置和服务发现(如 Docker,Kubernetes) 来自动化路由配置,简化了配置和部署过程。

内置 Lets Encrypt 支持,对 SSL 来说非常方便。

宝塔

传统服务器管理面板,使用范围和用户最多,直接在阿里云就可以预装宝塔面板,功能也最丰富,付费功能较多,爆出过有安全问题。

世人苦宝塔已久,但是完全能同级替代的,目前好像也没有。

  • 提供免费版本和付费版本,很多功能都是收费功能,而且费用现在比较贵了,网站 UI 不仅原始,而且充斥了非常多的商业化广告。
  • 提供安全模块如 WAF 模块,入侵防御和系统加固等,均是付费功能。
  • 在安装 LNMP,LAMP,JAVA,Nodejs等环境时,还是比较方便的。
  • 提供文件模块,直接管理服务器上的文件。
  • 通过 Nginx 和 Apache 来做代理和应用管理。
  • 提供了比较详细的日志,如面板日志,网站日志,日志审计,SSH登录日志等
  • 计划任务,可以添加多种任务类型,如 Shell 脚本,备份网站,数据库,网站日志切割等
  • Nodejs 层面: 提供 nodejs 应用的便捷入口,也提供了 npm 的镜像切换等,包括 pm2 的配置都在里面,但是使用下来,还是觉得别扭。

1panel

类似宝塔,是基于 Docker 管理应用的,相对轻量,功能设计也比较合理,同样提供了免费版本和付费版本。

  • 通过 openResty 做反向代理,与 nginx 类似
  • SSL 证书也是内置 Lets Encrypt 支持,并且支持自动续签,非常方便
  • 也支持种类丰富的计划任务
  • 提供日志模块,查看操作、访问、系统日志

我的方案

对于不熟悉的项目,用宝塔,相对比较方便。1panel,后面用到再慢慢补充吧。对于需要从零开发的项目,优先使用 dokploy ,拥抱 docker 生态,有时候想想,如果是非常硬的需求,直接沉淀一套自己的代码脚本,啥工具也不用,才是最灵活的。

虽然这些产品相互重叠的多,但都有各自的优缺点,还是得在具体项目中,看情况进行选型,我是喜欢新的技术,所以我站 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 和