宝塔面板国际版aaPanel私有化部署Dify配置域名并启用SSL

最近看到Dify升级到v1.0.0版本,看来是有重大更新,于是我决定在自己的VPS上私有化部署一套,方便后续各种折腾。

先说下我为什么要用类似宝塔这种面板来部署Dify,因为我搞了一台高配置的VPS,后续还会装其他服务,使用面板的话管理起来比较方面。至于为啥我用的是国际版宝塔也就是aaPanel而不用国内版宝塔,主要是不想绑定手机号。

1 准备好一台VPS

Dify官方推荐私有化部署的机器配置,至少需要2C4G,按照料敌从宽的原则,往高了配置肯定是不会错的,尤其是内存,最好再多一些。

一般来说,多核大内存的VPS价格很高,不过多找找总会有廉价的商家,尤其是国人商家。我研究了挺久,目标锁定以下两款美国VPS(最终我买了第二款):

1)RackNerd 4.5 GB KVM VPS (Black Friday 2024)

RN是咱们熟悉的老面孔啦,不用担心跑路问题,机器也很稳定。这款2024年黑色星期五优惠套餐,3核CPU加4.5Gb内存年付只要39.88美金,这个价格和配置在整个VPS行业都算是很能打的。

2)YVGS/NetJett LA VPS Starter 4C6G

YVGS是国人新商家,主营美国VPS,一般来说新商家我都是建议谨慎购买,不过他们家支持PayPal所以大家也不用怕,有问题可以发起争议退款。从各大论坛的用户反馈来看,服务算稳定,老板回复消息也很及时。新商家大家也懂的,促销赚口碑嘛,所以他们近期推出的一系列套餐性价比都非常高,我就买了一款4C6G的,用完优惠券后,年付约30美金:

  • LA85% → 85折(限量50个!)
  • LA20%OFF → 8折(限时)

另外老板还承诺:7天无理由退款,30天按比例退。看起来风险还是比较低的,大家自行判断。

以下是我在这台4C6G机器上安装宝塔国际版+Dify后的资源使用情况,供大家参考:

可能有人会问,买国内服务器不好么?是这样的,一来国内VPS很贵,二来,网络问题,不方便Dify连接使用类似OpenAI这样的服务(请注意,香港服务器默认也是无法使用OpenAI的),以及下载各种安装包有时候很麻烦。以这次Dify v1.0.0升级为例,很多人用国内服务器部署发现,最新的Dify插件无法安装,其实都是网络问题造成的。解决方案当然是有的,会用VPS的人自然都知道,但是,咱直接买个国外服务器不是更方便么?

VPS操作系统我比较喜欢Debian,目前最新版是Debian 12。如果VPS商家不提供这个版本的话,可以自行DD系统解决(使用此脚本)。

修改SSH默认端口、设置高强度密码、安装fail2ban之类的,都是老生常谈了,这里就不展开了。

2 安装宝塔面板国际版aaPanel

参考官方教程即可(注意是那个Free edition),此处也不赘述。

注意:由于默认宝塔国际版的安装,初始化启用了自签名的SSL证书,浏览器会提示不安全,且不允许访问面板入口,所以需要SSH去VPS后台,先关闭面板登录入口的SSL(输入bt之后,即可找到Turn on/off panel SSL选项)。

3 为宝塔国际版aaPanel安装Docker

在aaPanel后台,左侧导航菜单找到Docker,点击进去会提示还没装Docker,按提示安装即可(One-Click Install)。

4 在宝塔国际版面板内使用Docker Compose部署Dify

Dify官方部署教程在此,不过官方教程预设场景是你在一台啥都没有的全新VPS上直接开干,没有面板这回事,所以咱们需要稍微调整下操作步骤。

4.1 去宝塔后台文件根目录打开SSH窗口

4.2 clone dify源码

在上一个步骤打开的SSH窗口中,输入以下指令,下载Dify源码到这台服务器:

git clone https://github.com/langgenius/dify.git

4.3 切换到Dify源代码下的docker目录

依然是在上面的这个SSH窗口中,通过CD命令切换到已经下载完源码并自动创建的Dify docker文件夹内:

cd dify docker

请注意观察上图的文件路径。

4.4 复制Dify环境配置文件.env

cp .env.example .env

这一步的意思是,将Dify预置的配置文件复制一份作为本地正式使用的版本,也就是说后面这个.env才是这台服务器上Dify会用到的配置文件。

4.5 【非常重要】修改Dify默认占用的80和443端口

去宝塔后台“文件”入口,找到本地配置文件.env:

双击文件名即可进入编辑界面,把Dify默认占用的80和443端口改成其他,然后点击保存:

如上图所示,这两个端口我分别改成6060和6443,你也可以改成别的。

为什么要这么做?因为如果不这样做,后续这台装了宝塔的VPS,如果你要基于nginx做一些网站的解析操作之类的,你会发现,80和443端口已经被Dify占据了,处理起来非常麻烦。例如,默认给网站申请免费的SSL证书后,你会发现网站无法打开,提示重定向次数过多,或者是400 Bad Request – Request Header Or Cookie Too Large。

你也可以考虑修改宝塔本身的nginx配置,让nginx使用80和443以外的其他端口。不过,由于这台服务器我还会安装其他应用,我不想因为改了宝塔底层的配置而影响到其他服务,所以最终还是选择调整Dify本身的端口。

4.6 启动 Docker 容器

在前面提过的那个宝塔SSH窗口中,通过CD命令切换到Dify docker文件夹内,输入以下指令:

docker compose up -d

4.7 检查Dify所有容器是否正常启动

执行完上一个步骤后,你会在黑乎乎的SSH窗口中看到有很多Dify容器陆续启动并运行中,一共有9个还是10个容器吧,我不太记得了。只要没报错,基本上就是启动成功了。

4.8 登录并初始化配置Dify

浏览器输入:

http://这台服务器的IP地址:在.env文件中自定义的端口(如上面的6060)

即可注册一个管理员账号密码,首次登入Dify管理后台。

5 解析域名到宝塔面板所在IP

到上面的步骤为止,其实你已经可以正常使用这台VPS上的Dify服务了。

只不过,我们为了方便,可以解析一个域名到这台服务器的IP上,后续就可以使用域名来访问Dify了,不用每次还要去记住IP和端口。

前往你的域名注册商,找到DNS管理入口,添加一个A记录,创建一个二级域名并绑定到这台服务器的IP地址。

6 宝塔为Dify创建反向代理网站

在宝塔后台,从“网站”菜单进入,会提示需要安装nginx,按提示装即可,注意选quick install(快速安装),不然会耗时非常久且有可能失败。

装完nginx后,进入“网站>反向代理”,添加一个代理:

如上图所示,最主要就填写两个字段:

  • 域名:你在域名服务商那里DNS解析到这台VPS的Dify专用域名
  • 目标:选URL地址,后面填写本机的IP:自定义的Dify访问端口

7 为Dify网站添加SSL证书

正常来说,做完以上步骤,你已经可以用自定义的域名去访问Dify服务了,不过此时你只能用http协议访问,为了更安全一些,建议还是为这个网站启用https,也就是装个SSL证书。

使用面板管理的好处就是,为网站添加SSL证书的操作是非常方便的,找到网站配置入口,有个SSL配置项,按提示申请一个Let’s Encrypt证书并保存即可,另外记得启用Force HTTPS。而且,宝塔面板会自动给这类证书续期,不用担心证书过期问题。

8 补充说明

  • Dify官方其实有提供关于如何给Dify解析域名和支持SSL的方案,但我们既然用宝塔面板,就是为了更加方便地实现类似操作,减少手动修改Dify配置文件的麻烦。
  • 一开始我直接一把梭装完了Dify,结果死活无法通过宝塔面板来实现SSL访问Dify,研究了好久才意识到是因为80和443端口占用的问题,导致宝塔本身的nginx无法正常工作。所以奉劝大家,部署Dify时,务必把Dify默认的80和443端口改掉。
  • 宝塔国内版的App商店是有现成的Dify安装包的,国际版没有。不过这不是问题,因为我也不推荐使用这些商店来安装应用,因为他们的版本经常落后于官方的。所以直接用Docker编排的方式是最高效的,可以取到最新版的镜像,也能在镜像更新时决定是否要手动更新。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注