阿里云Ubuntu上1Panel和Halo vs宝塔

最近不是折腾了用Ubuntu做服务端,用Deepin做客户端来部署Hexo博客嘛。发现真的折腾呀,折腾了三天才调通。在刷B站的时候发现了使用1Panel部署Halo非常简单,白嫖的1个月阿里云还有很多时间,就试试了。

1Panel

部署1Panel

在线安装教程:https://1panel.cn/docs/

图片

用root用户,Ubuntu执行这个语句进行安装 官方在线安装教程
图片

1
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

图片
有这个返回值就证明安装好,可以用外网链接去试试登录。阿里云安全组端口记得开放。
如果执行期间断开了服务器链接,重新执行这条语句就可以找回登录信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
root@iZuf62d45asvfbnolo730fZ:~# curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
安装包已存在,跳过下载
1panel-v1.10.10-lts-linux-amd64/
1panel-v1.10.10-lts-linux-amd64/1pctl
1panel-v1.10.10-lts-linux-amd64/README.md
1panel-v1.10.10-lts-linux-amd64/1panel.service
1panel-v1.10.10-lts-linux-amd64/1panel
1panel-v1.10.10-lts-linux-amd64/LICENSE
1panel-v1.10.10-lts-linux-amd64/install.sh

██╗ ██████╗ █████╗ ███╗ ██╗███████╗██╗
███║ ██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
╚██║ ██████╔╝███████║██╔██╗ ██║█████╗ ██║
██║ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║
██║ ██║ ██║ ██║██║ ╚████║███████╗███████╗
╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝

[1Panel Log]: ======================= 开始安装 =======================
设置 1Panel 安装目录(默认为/opt):
[1Panel Log]: 您选择的安装路径为 /opt
[1Panel Log]: 检测到 Docker 已安装,跳过安装步骤
[1Panel Log]: 启动 Docker
[1Panel Log]: 检测到 Docker Compose 已安装,跳过安装步骤
设置 1Panel 端口(默认为37374):
[1Panel Log]: 您设置的端口为:37374
[1Panel Log]: 防火墙开放 37374 端口
Rules updated
Rules updated (v6)
Firewall not enabled (skipping reload)
设置 1Panel 安全入口(默认为<你的入口ID>):
[1Panel Log]: 您设置的面板安全入口为:<你的入口ID>
设置 1Panel 面板用户(默认为<你的用户名>):
[1Panel Log]: 您设置的面板用户为:<你的用户名>
设置 1Panel 面板密码(默认为<你的密码>):
[1Panel Log]: 配置 1Panel Service
Created symlink /etc/systemd/system/multi-user.target.wants/1panel.service → /etc/systemd/system/1panel.service.
[1Panel Log]: 启动 1Panel 服务
[1Panel Log]: 1Panel 服务启动成功!
[1Panel Log]:
[1Panel Log]: =================感谢您的耐心等待,安装已经完成==================
[1Panel Log]:
[1Panel Log]: 请用浏览器访问面板:
[1Panel Log]: 外网地址: http://120.55.168.254:37374/<你的入口ID>
[1Panel Log]: 内网地址: http://172.19.30.239:37374/<你的入口ID>
[1Panel Log]: 面板用户: <你的用户名>
[1Panel Log]: 面板密码: <你的密码>
[1Panel Log]:
[1Panel Log]: 项目官网: https://1panel.cn
[1Panel Log]: 项目文档: https://1panel.cn/docs
[1Panel Log]: 代码仓库: https://github.com/1Panel-dev/1Panel
[1Panel Log]:
[1Panel Log]: 如果使用的是云服务器,请至安全组开放 37374 端口
[1Panel Log]:
[1Panel Log]: 为了您的服务器安全,在您离开此界面后您将无法再看到您的密码,请务必牢记您的密码。
[1Panel Log]:
[1Panel Log]: ================================================================

配置阿里云的安全组,开放 37374 端口
图片
通过你的外网地址尝试登入:http://120.55.168.254:37374/<你的入口ID>
成功安装
图片
登录成功
图片

部署MySQL

在安装Halo的时候,发现要首先部署MySQL才行
图片
转到去部署MySQL,因为是用Docker的方式,一切都是自动的。
确认好用户名、密码、端口就能开始了。这三个参数记得记好,除了端口号,其他建议都改成自己容易记的。
图片
等到安装完成就行了。
图片

部署失败-拉取镜像失败解决方法

最近Docker Hub的仓库废了,影响到1Panel也废了。
图片
用这个方法可以解决
图片

部署Halo

有MySQL了就能部署Halo了
图片

安装完后,用那个http://<外网你的IP>:8090的地址去访问,就能进入Halo,先做初始化,再登录就行。端口是8080还是8090,具体要看默认配置。
图片

部署OpenResty 用域名登录halo

HTTP(80端口)配置

OpenResty用默认安装方式就好
图片
注册(购买)一个域名,这里以阿里云为例。如果域名和服务器都在阿里云,是可以自动配置DNS、服务器、域名之间的配置的。如果分开买的就要手工配置一下DNS把域名指向服务器IP。详细参考我下面的DNS配置即可。
图片
去到【网站】-【创建网站】-【一键部署】,填写如下:
如果使用HTTP的话,这样配置就能用http://halo.brian-zzh.cn/登录了,如果使用HTTPS就要继续下一步:
图片
PS:购买域名前是需要实名认证的
还有域名需要去域名ICP备案网络安全备案,其中域名ICP备案后这个域名才能被访问到,不然还是只能用IP访问。
具体备案方法看我的另外一篇文章:
在阿里云上部署 hexo + next主题 基于CentOS超明细操作方法
备案成功分别会得到下面两个备案号,粤ICP备XXXX号粤公网安备XXXX号,记得要公示在你的号码在网站首页,halo有配置这个两个号码的地方。
图片

HTTPS(443端口)配置

因为要使用HTTPS,即SSL加密访问(443端口),需要申请SSL证书。继续以阿里云为例。
图片
证书认证,在购买域名的地方做DNS的认证。如果域名和证书都在阿里云购买的话,认证会比较简单。分开购买申请的话,需要手动配置一下DNS认证,需要10~30分钟完成认证。
图片
如果DNS认证完后,就可以下载Nginx的文件
图片
把key和pem文件粘贴到【网站】-【证书】中新建一个证书。
图片
继续对刚刚新建的网站进行配置
图片
配置HTTPS和选择刚刚上传的证书
图片
通过配置代码可以看到反向代理去到http://127.0.0.1:8090

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
server {
listen 80 ;
listen 443 ssl http2 ;
server_name halo.brian-zzh.cn;
index index.php index.html index.htm default.php default.htm default.html;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
access_log /www/sites/halo.brian-zzh.cn/log/access.log main;
error_log /www/sites/halo.brian-zzh.cn/log/error.log;
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
location / {
proxy_pass http://127.0.0.1:8090;
}
if ($scheme = http) {
return 301 https://$host$request_uri;
}
ssl_certificate /www/sites/halo.brian-zzh.cn/ssl/fullchain.pem;
ssl_certificate_key /www/sites/halo.brian-zzh.cn/ssl/privkey.pem;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
ssl_stapling on;
ssl_stapling_verify on;
}

这样就能用https://halo.brian-zzh.cn/来访问了
图片

从我们的电脑,直到访问我们博客服务器,然后返回浏览器显示的过程是一个超级复杂的网络通信过程。
图片

1Panel优点

(1)小白容易上手,就安装1Panel的时候需要命令。如果是云厂商自带1Panel镜像的,是开箱即用。
(2)里面的应用是基于Docker的,界面管理Docker,非常简单。

1Panel缺点

(1)内存占用高,常驻有1G左右的内存。
(2)迁移的成本、出问题修复、升级的成本会更加高。

Halo的优点

(1)简单易用,上手比Hexo快,安装和写作都很简单。
(2)有服务器后端,不用本地客户端也部署一套来用于上传。
(3)备份还原是一键式的。

Halo的缺点

(1)有前端能力的大神改起来会麻烦很多。
(2)很多好看的主题都是收费的,而且不是开源,无法自己改。
(3)所有东西都保存在服务端,如果服务端挂了,没有备份就很难恢复。
(4)编写文章还需要有网,能上服务端后台才行。

1Panel命令行工具1pctl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Usage:
1pctl [COMMAND] [ARGS...]
1pctl --help

Commands:
status 查看 1Panel 服务运行状态
start 启动 1Panel 服务
stop 停止 1Panel 服务
restart 重启 1Panel 服务
uninstall 卸载 1Panel 服务
user-info 获取 1Panel 用户信息
listen-ip 切换 1Panel 监听 IP
version 查看 1Panel 版本信息
update 修改 1Panel 系统信息
reset 重置 1Panel 系统信息
restore 恢复 1Panel 服务及数据

1pctl status

图片

1pctl user-info

图片

1
2
3
4
5
6
7
8
Usage:
1pctl update [COMMAND] [ARGS...]
1pctl update --help

Commands:
username 修改面板用户
password 修改面板密码
port 修改面板端口

宝塔

最近不是把我的hexo从阿里云迁移到腾讯云了嘛,闲置下来的阿里云还有一个多月,就玩一下宝塔试试。发现宝塔不太适合新手。
图片

宝塔优点

(1)应用商店的东西比较多

宝塔缺点

(1)界面没有1Panel简单易用,也不好看
(2)收费的东西更多,而且引导性消费强,安装部署也不方便,时间久。

frp内网穿透基于1Panel和腾讯云(测试)

设备准备

  • 服务器:腾讯云-轻量云主机CentOS-Stream 2C2G40G+200G月流量,有公网IP,首年38元,续费400+元。
  • 客户端:VMBOX虚拟机OpenEuler 4C8G100G。只要能安装1Panel的系统都行,我这里只是刚好有一个OpenEuler的虚拟机。

服务器(服务端 = 公网主机)配置-腾讯轻量云主机

(1)购买配置轻量云主机,CentOS-Stream系统,这里不做介绍,关键配置会在后面讲到。切记必须要有公网IP
(2)在购买的轻量云主机上安装1panel,这里请看上面的介绍。
(3)安装frp服务端(Docker版),其中的参数后面还可以改,但是还是建议提前设置好。
图片
如果安装成功后,【进入安装目录】看看配置是否正确。如下图操作。
图片
目标文件是:/opt/1panel/apps/frps/frps/data下的frps.toml文件。
图片
点击打开这个frps.toml文件就是安装frps服务端(Docker版)的具体配置
图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#这是服务端frps.toml的配置,别跟客户端的搞混了
bindAddr = "0.0.0.0" # 默认值不用改
bindPort = 7000 # 默认是7000端口,是跟客户端通信端口,要跟客户端保持一致

auth.method = "token" # token模式验证,默认值不用改
auth.token = "token123456" # token值,建议修改成一个别的值,但是这里继续用token123456做演示

webServer.addr = "0.0.0.0" # 默认值不用改
webServer.port = 7500 # 默认值不用改,这是登录服务端看板的端口
webServer.user = "admin" # 建议修改成自己的登录名,是登录服务端看板的登录用户名
webServer.password = "123456" # 建议修改成自己的密码,是登录服务端看板的登录密码

# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"

这个文件被修改了,记得去重启这个frp服务端(Docker版)
图片
使用前记得要在腾讯云上开通7000端口和7500端口。
图片
这是服务端的看板,我们可以先登录看看是否正常,后面会经常查看。登录方式是:<服务端公网IP:webServer.port>,如我的是:http://124.222.51.211:7500,用户名是上面frps.toml文件配置的admin123456
图片

客户端(内网主机)配置-VMBOX虚拟机OpenEuler

(1)安装OpenEuler,这里不做介绍。用其他系统Windows、MacOS、其他发行版Linux都可以。
(2)安装1panel,这里请看上面的介绍。
(3)安装frp客户端(Docker版),安装参数的配置,建议尽量第一次就配置好,后面也是能改的。
图片
同样道理,我们也要看看客户端的配置是否正确。同样是进入frpc(Docker)的【进入安装目录】
图片
进入到/opt/1panel/1panel/apps/frpc/frpc/data这个目录,找到frpc.toml文件
图片
点击打开frpc.toml文件进行配置修改。
图片
服务端的frps.toml和客户端frpc.toml文件必须要区分清楚,别搞乱了。
图片
示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#这是客户端frpc.toml的配置,别跟服务端的搞混了
serverAddr = "124.222.51.211" # 腾讯云的公网IP
serverPort = 7000 # 默认端口就7000不用改

auth.method = "token" # 默认值token不用改
auth.token = "token123456" # token值,建议改掉,就是服务端和客户端的-相互认证码(对暗号)

webServer.addr = "0.0.0.0" # 0.0.0.0是默认值不用改
webServer.port = 7400 # 默认端口就7400不用改,是登录客户端看板的端口
webServer.user = "admin" # 登录客户端看板的用户名
webServer.password = "123456" # 登录客户端看板的密码
webServer.pprofEnable = false # 默认值,不用管

# tls
#transport.tls.certFile = "/etc/frp/ssl/client.crt"
#transport.tls.keyFile = "/etc/frp/ssl/client.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"

# 客户端ssh的配置,连接成功了
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

# 客户端1panel的配置,也连接成功了
[[proxies]]
name = "1panel"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8090
remotePort = 18090

# 客户端halo博客的配置,也也成功了
[[proxies]]
name = "halo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8011
remotePort = 18011

# WordPress没有跑通
[[proxies]]
name = "WordPress"
type = "tcp"
localIP = "localhost"
localPort = 8099
remotePort = 18099

SSH配置

官网有配置的例子:https://gofrp.org/zh-cn/docs/examples/ssh/
(1)配置/opt/1panel/1panel/apps/frpc/frpc/data目录中的frpc.toml文件。添加如下代码到最后。

1
2
3
4
5
6
[[proxies]]
name = "ssh" # 起个好记的名字
type = "tcp" # 类型选tcp
localIP = "127.0.0.1" # 本地IP默认就是127.0.0.1,一般不用改。
localPort = 22 # SSH的默认端口就是22,不用改
remotePort = 6000 # 这是腾讯云服务器的接受SSH命令的端口,不能用22了,这里用了6000

图片
加完这段代码,记得重启一下frpc(Docker)。
图片
记得要在腾讯云上面开放frps.toml文件的端口70007500,还有frpc.toml文件的6000远程端口。
图片
如果顺利的话,就能在服务端的frp看板上,看到这个tcp链接,如下图。
使用<服务端公网IP:webServer.port>,输入frps.toml配置的webServer.user(用户名)和webServer.password(密码)就能登录。
如我这次演示的是:http://124.222.51.211:7500
图片

1
2
# 使用这个语句测试是否能用过公网IP+6000端口来登录内网服务器(客户端)的SSH
ssh -o Port=6000 <用户名>@<公网IP>

图片

1panel配置

跟上面的SSH同理,配置frpc.toml的代码如下,还是添加到最后就行。切莫忘在腾讯云开放frpc.toml中的remotePort端口

1
2
3
4
5
6
7
# 1panel也成功了
[[proxies]]
name = "1panel"
type = "tcp"
localIP = "127.0.0.1" # 1panel的本地IP地址
localPort = 8090 # 1panel的内网端口
remotePort = 18090 # 在腾讯云上进行反向代理的进入端口

图片

halo博客配置

跟上面的SSH同理,配置frpc.toml的代码如下,还是添加到最后就行。切莫忘在腾讯云开放frpc.toml中的remotePort端口

1
2
3
4
5
6
[[proxies]]
name = "halo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8011
remotePort = 18011

图片

frp生效原理,以halo博客为例子:
图片

WordPress配置失败了,还没有找到原因。

图片

FnOS飞牛系统NAS

飞牛OS是自带1Panel的,可以说是开箱即用了,安装frp也方便了,这里只需要安装frpc(客户端)即可。
图片
跟上面的SSH同理,配置frpc.toml的代码如下,还是添加到最后就行。切莫忘在腾讯云开放frpc.toml中的remotePort端口

1
2
3
4
5
6
[[proxies]]
name = "fnos"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8000
remotePort = 18000
  • PC端能登录
  • APP能登录
    图片
    就是网速应该是受到腾讯云服务器的影响,下载速度约300+KB/S(=3Mbps),用相册是没有多少问题,看视频就肯定不够。查了一下,这台腾讯轻量云主机就是流量包 - 200GB/月(带宽:3Mbps)。
    图片
    图片
    看高清视频怎么也要10Mbps才够用,看了一下,如果要10Mbps网速的2C2G腾讯云,就要每个月316元的费用了(按一次买5年算),这样看Passnat或cpolar的收费还算合理了。
  • Passnat的每月50G流量就有20Mbps了,6月每月,一年才72元。
  • cpolar的NAS版10Mbps不限流量,需要600元一年。
  • 百度云SIVP有5T空间,应该是不限速的,包年172元。
  • 阿里云盘超级会员有8T空间,应该是不限速的,首年148元,续费168元。
  • 夸克云盘SVIP是6T,限速是50MB/s,连续包年是148元。