vps交流

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku


前言

Vercel, Netlify 以及 Heroku都是知名的PaaS(Platform as a Service|平台即服务)服务商,利用这些平台我们可以方便快捷的进行项目部署。尤其是各家生态完善,是很多独立开发者的首选之地。

但是随之而来的就是另外的隐患了:因为各种问题导致项目使用额度超标导致的天价账单

PaaS作为服务商基本上都是属于没有访问限制的说法,用户激增、代码错误、恶意CC攻击都有可能在极短的时间内产生巨额的账单。比如

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

该用户首次部署服务,却因为一个小小的程序错误导致6个小时内产生三千刀的账单。如果不是发现的及时,可能还会造成更大的损失。虽然经过来回的协商,最终Vercel还是免除了这个账单,但是这名用户已经决定放弃继续使用Vercel了,因为如果再来一次这种事件,很难说是否还会被免单。

一般常见的云厂商的实例只要做好服务器的安全防范措施,最大的危险也只是停机、流量超额罢了,流量方面可以通过限制访问速率等措施避免,或者监控服务器流量异常,都是很容易实现的。但是使用VPS/云服务器之类的相对于PaaS平台来说CI/CD之类的相对麻烦很多。
所以在VPS/云服务器上部署一个开源的PaaS服务相较而言就能较好的结合这两者之间的优点了。

Dokploy简介

> 引用自官网:
> Dokploy是一个免费的可自托管平台即服务(PaaS),简化了应用程序和数据库的部署和管理。
> 特点
> Dokploy包括多种功能,让您的生活更轻松。
>
> 应用程序:部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby等)。
> 数据库:创建并管理支持MySQL、PostgreSQL、MongoDB、MariaDB和Redis的数据库。
> 备份:自动将数据库备份到外部存储目标。
> Docker Compose:原生支持Docker Compose来管理复杂应用程序。
> 多节点:使用docker swarm将应用程序扩展到多个节点以管理集群。
> 模板:一键部署开源模板(Plausible,Pocketbase,Calcom等)。
> Traefik集成:自动与Traefik集成进行路由和负载均衡。
> 实时监控:监视每个资源的CPU、内存、存储和网络使用情况。
> Docker管理: 轻松部署和管理Docker容器.
> CLI (即将推出⌛) : 使用命令行管理您的应用程序和数据库.
> 自托管: 在您的VPS上自托管 Dokploy。

Github: https://github.com/Dokploy/dokploy/tree/canary

官网:https://dokploy.com/
目前该项目还在快速迭代之中,基本上每周都会有一两个小版本更新

部署

要求:

服务器硬件:2C2GB起步 硬盘30GB以上

支持系统:

– Ubuntu 24.04 LTS
– Ubuntu 23.10
– Ubuntu 22.04 LTS
– Ubuntu 20.04 LTS
– Ubuntu 18.04 LTS
– Debian 12
– Debian 11
– Fedora 40
– Centos 9
– Centos 8

安装会安装docker,如果服务器内原先没有docker,则会自动启动安装。由于国内docker服务的公开镜像都没有了,所以如果要在国内服务器上安装可以先自己安装docker,然后再运行安装脚本。海外服务器正常步骤即可。

演示服务器为腾讯云的轻量服务器2C4G80GB,同款服务器购买:https://curl.qcloud.com/dxJI3GDO

如果是国内服务器请选择系统镜像时选择使用容器镜像–然后选择Debian或者Ubuntu系统
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

这样docker就会默认配置使用腾讯云的内网镜像
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

非常方便,海外服务器随便。

运行脚本

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

复制代码

由于是内网镜像所以拉取速度很快,一分钟左右就会出现完成提示,趁着15秒系统启动时间,我们先去打开服务器的3000端口以便后续访问。
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku
**配置防火墙规则**

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku
## 平台设置

这个没啥好说的,直接设置就行。首次完成后就默认是管理员了。

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

进入管理面板后是这样的:

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

这是系统监控:
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

这是Traefik:
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku
这是docker管理;
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

图中的docker是我之前玩幻兽帕鲁安装的服务器镜像。

设置页面

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

设置页面其他的可以自己探索,这里简单推荐一下优先考虑设置的。
Server Domain内的域名,证书申请邮箱,证书提供商这三个建议都填上。

Profile内的账户也可以考虑开启2fa

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

避免账户被盗

最后一个集群,需要的可以自己尝试一下,也很简单,只需要加一个自己的registry即可。

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

个人建议直接开一个自托管的。

项目创建及部署

这个也很简单。

创建项目——创建服务即可

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

数据库支持5种:PostgreSQL、MongoDB 、MariaDB、 MySQL、 Redis
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku
Compose支持docker Compose和Stack
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

官方提供的模板目前只有三个:

Pocketbase 是 Firebase 的自托管替代方案,允许您构建和托管自己的后端服务。
Plausible是一个开源的、自托管的网络分析平台,可以让您跟踪网站流量和用户行为。
Calcom是Calendly的开源替代品,允许创建日程安排和预订服务。

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

创建自己的第一个应用

示例:https://github.com/Dokploy/next-todo-app

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

由于这是一个公开的git项目所以我们只需要在Provider选择Git即可,自己的私有项目可以设置好个人设置内的Github相关项创建APP——授权APP

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

设置完成后点击deploy即可

你可以进入Deployments——view查看项目部署进展
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku
项目右上角显示黄色的点表示运行中,可以用来判断是否完成

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

项目部署完成后可以点击logs查看log输出,
想要更改项目的资源占用可以点击Advanced——Resources设置|
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

域名设置也是按照要求设置即可
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

不过由于没有对接DNF解析商,所以我们需要自己添加解析,证书是自动申请的。

应用部署完成后会显示:
一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

之后直接访问前面解析的地址即可。

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku


注意事项:

国内的服务器要注意一下应用是不是会大量拉取海外的资源。推荐是在项目中先设置好npm,pnpm,yarn之类的镜像源。这样部署会快很多。不然可能受网速影响,首次部署要耗费大量时间。

总结

如果是成熟的项目,且不对外开放或者使用人数很少的项目还是可以放在Vercel的,免费的层级已经能够覆盖大部分小项目了。

能够承担起vercel之类的月费以及超额费用的也可以继续使用,毕竟生态完善,开发起来配套设施齐全。

价格敏感型用户或者害怕天价账单或者本身就有VPS的可以考虑部署一个Dokploy尝试尝试的。部署难度低,适配性较好。

这还需要自己的VPS?
那为什么不直接部署呢?

何教授 发表于 2024-6-22 22:09
这还需要自己的VPS?
那为什么不直接部署呢?

结尾说了啊,适合自己有VPS的,方便CI/CD。你说wordpress之类的那只要搭建了不用提交代码更新的就明显不适合

这个管理端和项目可以部署在不同服务器上吗?都在一台服务器上和直接部署项目有啥区别

mylove1 发表于 2024-6-22 23:12
这个管理端和项目可以部署在不同服务器上吗?都在一台服务器上和直接部署项目有啥区别

区别就是如果在github上更新了代码,用这个会自动拉取更新后的代码部署。

看起来不错,但好像还不太成熟

yrj 发表于 2024-6-22 23:26
看起来不错,但好像还不太成熟

目前开源的基本上都不是特别成熟,但是这个应该是最简洁方便的。大型项目要是必须得serverless还是建议上大厂的。CI/CD倒是解决方案很多

2life.top 发表于 2024-6-23 00:00
目前开源的基本上都不是特别成熟,但是这个应该是最简洁方便的。大型项目要是必须得serverless还是建议上 …

我看他ui完全仿的vercel,用docker作为容器,但好像vercel内部不是用的docker,不过项目挺有意思。

yrj 发表于 2024-6-23 00:27
我看他ui完全仿的vercel,用docker作为容器,但好像vercel内部不是用的docker,不过项目挺有意思。 …

vercel肯定不是docker,docker其实比较笨重的。我也觉得比较方便简洁。

2life.top 发表于 2024-6-23 00:40
vercel肯定不是docker,docker其实比较笨重的。我也觉得比较方便简洁。

podman