blog/_posts/2024-02-03-1panel.md

4.6 KiB
Raw Blame History

layout title tags
post 如何离线安装1Panel
离线
1Panel

Go写的程序感觉离线使用还挺方便的

起因

为了更好的管理服务器我之前用过几种面板比如宝塔小皮appnode还有1Panel之类的,之所以用面板主要还是觉得这种用起来方便一些。有些脑子不合适的人看不起使用面板的人,他们可能用了比如软件包安装,或者源码编译、容器等等,结果一顿操作猛如虎,结果配置还是安装默认的,连调优都没做🤣
总之最近正好需要在不能连接互联网的地方安装LEMP的环境虽然现在的面板很多但是似乎很少有面板支持离线安装。宝塔好像有付费的离线安装服务但是我首先不信任宝塔另外怎么可能给他们付钱呢😆1Panel虽然官方不支持离线安装但是社区中有离线安装的方法不过好像不能使用网站管理的功能……当然经过我的测试其实是有办法可以使用网站管理的功能所以分享一下方法。

离线安装1Panel的方法

一般想离线安装的话搜到的文章应该就是这篇文章了吧,看起来操作有一点点复杂,不过评论里有个人整了个可以离线安装的项目使用起来非常简单连docker也一起安装了。只是使用的时候稍微有一点点坑就是它的“--install-dir”参数默认是“/opt/1panel”但是安装的时候会在这个目录里再建一个1panel文件夹所以在使用的时候最好手动把参数设置为“--install-dir /opt”。
安装没什么问题不过应用商店是空的什么软件都安装不了我在社区论坛里找了一下好像可以把在互联网端1Panel实例中“/opt/1panel/resource/apps/remote”中的文件拷到离线设备中的“/opt/1panel/resource/apps/local”下然后点更新就可以了我试了一下确实可以把镜像导出来再导入到离线设备直接安装可能会报错但是重建一下容器就能正常启动了。虽然容器是启动了但是面板好像没识别到还是不能管理而且应用的文件被放在了“/opt/1panel/apps/local”目录下就算能识别到文件路径也是错的。看来得让面板认为导入的程序不是本地安装的而是在线安装的。

离线安装1Panel中应用的方法

我在网上怎么搜,都没有找到现成的解决方法,看来只能我自己研究了😂。我找了一下,面板安装目录下有一个“/opt/1panel/db/1Panel.db”文件应该是面板的数据库我用sqlite3客户端打开看了一下里面的apps表中可以看到应用被导入了但是key在前面都被加了local比如openresty变成了localopenresty我对比了一下互联网端的数据库除了这一处外还有resource字段的内容也从remote变成了local。既然是这里有不一样的地方那就把它改成一样的呗另外这里的字段名既然叫resource那么肯定和那个目录也有关系所以就得把“/opt/1panel/resource/apps/local”文件夹下的内容再全部移动到“/opt/1panel/resource/apps/remote”中把数据库上传然后重启离线环境中的1Panel也能正常识别了而且安装后网站标签页也能正常创建网站之类的操作了。
Nginxopenresty和MySQL这样安装都没啥问题但是PHP出现了点问题因为1Panel的PHP会在线下载扩展来构建镜像的不是直接使用镜像创建的容器所以安装会报错。不过既然能看到数据库我发现有个runtimes表记录了PHP的状态那么我把状态改成normal就可以了吧试了一下还真行改完上传然后重新导入容器PHP也正常了。另外需要注意的是从互联网端导出的镜像名字和版本必须和离线端一样不然可能识别不到至于扩展啥的在互联网端选择好就可以了离线端不需要修改。
所有操作完成之后试了试创建网站以及和PHP的连接之类的都可以正常使用了就可以在内网环境下完全发挥1Panel的能力了。

感想

无论是Docker还是1Panel能这么简单的在离线环境下安装我想可能是因为它是Go写的程序吧能无依赖静态编译的程序在没网的情况下还是方便啊……另外就是Docker果然也是离线使用的利器想安什么在互联网准备好直接拿到离线端就能用真是方便啊。