由于以后可能存在内网部署一些小功能的需求,自己试着能不能在内网搭建1panel及相关应用
系统:Debian12.10完整镜像
https://www.debian.org/distrib/
环境:virtualBox
安装全程系统不联网,需要的依赖和包都从外面导
系统安装
这个没什么好说的,虚拟机创建新机器,自己划分就完了,注意要下载完整镜像
如果是第一次安装virtualBox,需要重启电脑,不然可能运行不起来
安装流程全网都有,就不再重复说了,挑几个关键步骤说:
给根目录空间多分配点,我之前自动分配结果就分了10GB差点崩了
中间有一步是选择可选应用安装,把后面两个网络相关的server点上
其它的都是各种桌面,看需求安装
修改用户sudo权限
不知道是不是Debian特色,常规用户不能执行sudo,会提示“xxx 不在sudoers文件中,此事将被报告”
解决办法也有,这里参考: 解决 Linux 系统,出现“不在sudoers文件中,此事将被报告”的问题
su root
chmod u+w /etc/sudoers #让文件可写
vim /etc/sudoers #你也可以切成其它编辑器
#找到 Allow root to run any commands anywhere,在下面添加
xxx ALL=(ALL) ALL
#xxx换成你自己用户名,保存退出
chmod 440 /etc/sudoers #文件权限恢复
完成后普通用户就可以执行速sudo命令了
设置共享文件夹(可选)
为了方便离线安装,设一个共享文件夹给虚拟机拷文件
这里根据需求自己调,我是这么设的
然后还要去系统里挂载目录,参考Debian在VirtualBox中如何共享文件夹
sudo mkdir /mnt/shared
#创建一个文件夹用来挂载
sudo mount -t vboxsf shared_folder_name /mnt/shared
#将shared_folder_name替换为你在VirtualBox中设置的共享文件夹名称
#比如我是virtualFile(看图)
我就到这为止了,需要启动自动挂载的可以去原链接查看方法
1Panel安装
网络设置
由于我想创建一个没有互联网的环境,但又想主机能访问控制,此处虚拟机的网络设置是Host-only
然后在主机里应该可以看到一个对应网卡,此时如果该网卡和你上网的网卡网段不一致,就可以做到隔绝互联网(一样的需要自己改)
安装
到这里系统应该能正常使用,也没有安装额外的东西
去官网下载离线包1panel
后续步骤参考官方文档
cd /tmp
#下面把1panel-v1.10.0-lts-linux-amd64.tar.gz换成你实际下的名称
tar zxvf 1panel-v1.10.0-lts-linux-amd64.tar.gz
cd 1panel-v1.10.0-lts-linux-amd64
sudo /bin/bash install.sh
然后就启动安装引导,内容都有提示后续就不说了,成功后应该可以去浏览器访问对应端口和地址就能访问到
Docker配置
我不知道是不是离线安装的原因,此时我的面板可以进入,但Docker无法启动,查日志后发现报错为iptables not found(我槽这系统竟然默认不装iptables)
sudo journalctl -xeu docker.service
查看日志
iptables安装
由于是离线环境,安装只能从外部复制deb包安装。这里我开始犯了个错误,去搜索引擎随便搜了一下去下了个1.8.11版本的,结果出现了下面的问题
分析得出了两个原因:版本和已经安装的依赖不一致,以及缺少依赖(libip6tc2)
重新去官网搜索,下载了1.8.9-2的版本,同时也看到下面给出了所需其它依赖(libip6tc2)
下载,复制到目录准备安装
这里发生了一个小插曲,提示要求插入xxx盘片,搜了一下就是系统的iso,在虚拟机里挂载上就行了
安装成功,Docker顺利启动
设置root远程登录
1panel里有终端功能,但使用时发现root账户不可连,查询后发现是默认未开启root远程
解决方法是去ssh配置文件修改,ssh在安装系统时已选择安装,如果,没有安装则要自己下载安装包安装
sudo nano /etc/ssh/sshd_config
#修改配置文件,编辑器可以自己换
打开文件找到 #PermitRootLogin
一行(PermitRootLogin后面还跟的有别的关键字,但不用管删了就行)
去掉#改成PermitRootLogin yes
找到#PasswordAuthentication yes
这一行,去掉#(内容不变)改成PasswordAuthentication yes
然后重启ssh服务sudo service ssh restart
参考教程:Debian 12.1安装ssh并开启 root 用户 ssh 登录功能
离线应用安装(方法一,不完整)
这个方法安装的商店应用没法被面板探测到,正在学习其它方法
mysql安装
这里以mysql为例,其它应用可同理参考
首先进入应用商店,选择需要安装的应用应用商店
选择目标应用,点击下载tar.gz包,记住应用的版本号
然后,去docker市场找对应的镜像包,版本要一致,我这里是用docker desktop下载后打包,其它方法也行只要能拿到同版本包。至于怎么去顺利下载镜像,这里不再讲述,自行配置网络
pull完之后打开终端,执行docker images
应该能看到pull的镜像
执行 docker save -o 存储的文件名和路径 要打包的镜像名
如:docker save -o mysql.tar mysql
,后面的镜像名一定要完全一致,像我这样执行打包后的包可以在Windows/System32找到(因为终端运行目录在这)
然后就能得到这两个文件
准备好两个文件后就可以开始操作了,参考教程
-
把镜像文件复制到系统中
这里理论上路径没有限制,我是看教程中创建了一个类似的地址,实际应该没有限制
-
在1panel中导入镜像
导入成功后在列表中应该能看到 -
将应用信息的tar.gz包文件夹放到指定路径
我的1panel安装位置是默认的/opt,所以对应的路径是/opt/1panel/resource/apps/local
注意,放进来的是解压后的文件夹,不是压缩包
-
在应用商店中加载
进入应用商店,勾选显示本地应用,并点右上角更新列表。这个过程可能会有报错,不用管,切到其它页面再切回来,就能看到刚刚导入的应用了
-
安装应用
这里操作和在线基本一致,填自己的信息就行。不一样的是这里不能勾选拉取镜像,不然就还是会在线安装,其它应用不知道有没有类似设置
这里安装后应该就能启动了
(这里我犯了个错误,给根目录空间分配太小了,导致装着装着空间满了,还得扩容,分区调整参考)
如果你跟我一样扩容了建议重装
一切顺利的话应该可以在容器内访问mysql了
目前安装后在1panel内的数据库界面还看不到安装,只能通过添加远程服务器的方式进行管理,后续再研究
当前问题:在应用商店下载的某些应用包,在docker hub找不到完全一致的docker镜像,正在学习研究中
离线应用安装(方法二,研究中)
看到一篇文章,说可以弄一个在线面板,安装好后打包移过来,现在试一试这个方法,教程地址
安装虚拟机
单开了一个新的虚拟机作为联网环境,基本流程一致,只是有几点要注意的
6. 网卡设置
为了能联网,网络选用的是NAT模式。但为了同时能让主机访问到,所以添加了第二张网卡,走host-only模式(和之前的离线机一个网段)
添加网卡要在虚拟机关闭状态才能设置
这里关于网络设置还有一个小注意点,Debian多网卡默认是同一个配置文件,会出现开了一个另一个就自动关的现象,只需要在其中一个网卡下面手动添加一个配置就行了
为了保持一致,1panel还是用离线包安装,步骤和上面一样,包括iptables的安装
在线1panel安装应用
没什么好说的,想要什么装什么,还是拿mysql举例
先在联网的1panel里安装,启动,在线离线两个1panel的账密和端口要保持一致,方便后续操作
替换表数据
在联网1panel加载好商店数据后(商店能看到目录),去/opt/1panel/db
路径把1Panel.db文件拷出来,离线的也拷出来
然后把在线数据库里的这些表复制到离线库中
然后,去https://github.com/1Panel-dev/appstore把项目clone下来,取apps文件夹里的所有文件打成一个包,并复制解压到/1panel/resource/apps/remote
和/opt/1panel/resource/apps/local
两个文件夹里(不包含apps文件夹,复制的是文件夹里的所有子文件夹)
移动完:
然后回到商店,刷新几下,再切下页面,就有了商店信息,刷新会报错不用管,但现在还只是商店信息不能安装
快照覆盖
由于完成上一步后仍然没有显示在线应用,只有本地应用显示,所以这里加了一步,直接去在线1panel里做一个备份镜像,然后拷到离线的里还原(方法很笨但是有用)
备份和还原就不说方法了基本看了就会,完成后应该能在商店里看到信息。注意面板设置会变成快照机的设置,如账密和端口
然后,重复去github下载信息并解压这一步,在上一步写的有,把信息在remote和local
导出镜像
回到1panel,去容器——镜像里,找到需要的应用对应的镜像,导出
把导出的镜像包再复制到离线机中,在同样的页面选择导入
不出意外的话,现在商店一个应用应该有两个信息,一个在线一个本地
先安装本地的,容器名一定要自定义,不能随机,不要勾选拉取镜像,记住各种配置信息,然后完成安装
安装后打开目录,应该是/1panel/apps/local/应用名。然后注意以下操作步骤
1.停止应用(镜像)运行
2.把local里面的应用文件夹拷一份到和local同级位置
3.去已安装里卸载应用
4.从在线安装入口(也就是不带本地标签)进行安装,所有参数保持一致,特别是容器名,不要勾选拉取镜像
5.点击安装后应该会报错,点击重建,等待安装完成
安装完成,现在的安装效果就和在线安装一样,可以在1panel数据库面板看到了
阶段总结
1.分别安装离线和在线1panel,注意debian安装时会缺少iptables组件要单独安装
2.去在线1panel里联网加载商店,加载完成后制作快照,并去离线端恢复(注意参数是随着快照走的)
3.去github下载应用信息,然后解压到local和remote目录里
4.改数据表(我不确定快照恢复会不会连着一起改,如果可以就跳过这步)
5.导入待安装镜像,镜像从在线面板里制作(目前不确定其它渠道能不能一样用)
6.先离线安装,记住安装参数,容器名自定义,不要随机,取消勾选拉取镜像,然后去/1panel/apps/local/
里把应用目录拷到和local同级(也就是/1panel/apps/
)
7.停止安装的应用,卸载离线安装,从在线安装入口进入安装,参数和容器名保持一致,取消勾选拉取镜像,提示安装失败后点击重建
完成安装
目前只试验成功了Mysql,其它应用后续再试
从以上的测试结果来看,1panel做成内网离线版完全是可行的,就是不知道为什么官方没弄,希望官方完善这个用法,哪怕收费也行
(休息,后续待更)