首先在Serv00注册一个账号

Serv00搭建halo

部署

首先,在Panel中的Additional services选项卡中找到Run your own applications项目,将其设置为Enabled。

image

notion image

notion image

然后ssh上你的虚拟主机后,使用以下命令安装pm2

1
2
3
bash <(curl -s https://github.com/V-Official-233/halo-PaaS/raw/main/serv00-install-pm2.sh)

bash <(curl -s https://raw.githubusercontent.com/k0baya/alist_repl/main/serv00/install-pm2.sh)

两个测试,第一个不能下载pm2就第二个

创建一个工作目录

1
cd domains && mkdir halo

进入目录并下载编译好的Jar包

可以从本项目直接下载,也可以下载halo官方编译的Jar包

1
2
3
cd halo && wget https://github.com/V-UwU/halo-PaaS/releases/download/v2.17.2/halo.jar

cd halo && wget https://dl.halo.run/release/halo-2.20.15.jar -O halo.jar

或下边的证实有效

然后在Serv00的面板新建一个mysql数据库,并在下载Jar包的目录新建文件夹.halo,创建文件application.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server:
port: #你在面板中放行的端口
# Response data gzip.
compression:
enabled: false
spring:
#sql:
# init.platform: mysql
r2dbc:
url: r2dbc:pool:mysql://数据库地址:3306/数据库名
username: #数据库用户名
password: #数据库密码
halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin
# memory or level
cache: level

然后在Jar所在目录新建文件run.sh

1
2
3
4
#!/bin/bash
export HALO_WORK_DIR="/home/用户名/domains/halo/.halo"
export HALO_EXTERNAL_URL="https://xxxxx.com"
java17 -server -Xms128m -Xmx256m -jar -Duser.timezone=Asia/Shanghai /home/用户名/domains/halo/halo.jar --spring.config.additional-location=/home/用户名/domains/halo/.halo/application.yaml

application.yamlrun.sh可以用vim编译,编译后esc+:wq退出保存,执行下边步骤

然后测试运行:

1
chmod +x run.sh && ./run.sh

确定运行没有问题后,按 Ctrl+c即可停止运行。

使用pm2管理运行:

1
chmod +x run.sh && pm2 start ./run.sh --name halo

注意以上命令需要在halo的目录中运行才可以,不然会提示目录不存在

自动重启

在Panel中找到Cron jobs选项卡,使用Add cron job功能添加任务,Specify time选择After reboot,即为重启后运行。Form type选择Advanced,Command写:

1
2
3
/home/你的用户名/.npm-global/bin/pm2 resurrect >/dev/null 2>&1 && /home/你的用户名/.npm-global/bin/pm2 restart all >/dev/null 2>&1
例如
/home/eric52/.npm-global/bin/pm2 resurrect >/dev/null 2>&1 && /home/eric52/.npm-global/bin/pm2 restart all >/dev/null 2>&1

添加完之后,在SSH窗口保存pm2的当前任务列表快照:

1
pm2 save

参考教程:

https://github.com/VOfficial404/halo-PaaS/blob/main/docs/Serv00.md

https://hugo.126330.xyz/p/9/

https://vstu.net/2024/12/12/206/

https://blog.network.za.org/article/serv00-halo

serv00重置 恢复如初 清理 回到刚注册初始状态

视频教程地址:https://www.youtube.com/watch?v=thOBMf7ygTU

文字教程地址:https://afeinet.blogspot.com/2024/08/17.html

防迷失备份文字教程

本期主要介绍如何将serv00恢复到刚刚注册时的初始状态, 不管你是搭建了节点还是建立了个人博客网站, 使用本期介绍的方法, 都可以将已经写入了内容或者混乱的serv00重置到刚刚注册时的状态.

相关视频:

serv00 注册账号及搭建vpn

https://youtu.be/295wid5YbWI

serv00 答粉丝问 第1辑

https://youtu.be/-p6Cy_j-mXI

finalshell 下载链接:

pan.quark.cn/s/24be457c15df

1 清除PM2进程

列出进程清单

1
pm2 list

恢复已保存列表的进程

1
~/.npm-global/bin/pm2 resurrect

停止所有进程

1
pm2 stop all

删除所有进程

1
pm2 delete all

2 清除虚拟机进程

2.1 列出当前系统所有进程清单

方法一 使用 ps aux:

1
ps aux

“aux”这个选项提供了一个更详细的输出,包括每个进程的所有者、CPU 和内存使用情况、启动时间等。

ps aux 命令的组成

  • ps: 进程状态(process status)的缩写,是一个用于显示系统进程信息的命令。
  • a: 显示所有用户的所有进程(包括没有控制终端的进程)。
  • u: 以用户为中心的格式显示进程信息,包括进程的用户、CPU 和内存使用情况。
  • x: 显示没有控制终端的进程。

方法二 使用 top:

1
top

这个命令提供了一个动态、实时的系统监视器,显示当前所有运行的进程及其资源使用情况。 使用 q 退出 top

2.2 清除指定账户的所有进程

1
2
3
pkill -kill -u ${username}
例如
pkill -kill -u eric52

比如: pkill -kill -u defeisoft

解释

  • pkill: 这个命令用于根据进程名、用户、终端或其他属性来选择进程,并向它们发送信号。
  • -kill: 这个选项实际上是一个信号参数。-kill 等效于 -SIGKILL,表示发送 SIGKILL 信号给目标进程。SIGKILL 信号是一个非捕获、非忽略的信号,用于强制终止进程。
  • -u ${username}: 这个选项用于根据用户名称来选择进程。${username} 是一个变量,表示你要终止的进程所属的用户名称。这个选项会选择所有由指定用户启动的进程。

pkill -kill -u ${username} 这个命令会找到并强制终止所有由指定用户 (${username}) 启动的进程。

3 删除文件夹及文件夹

3.1 更改非隐藏目录的权限

1
chmod -R 755 ~/* 

解释

  • chmod: 这个命令用于更改文件或目录的权限。
  • -R: 这个选项表示递归(recursive)。它会递归地更改指定目录及其子目录中的所有文件和目录的权限。
  • 755: 这是一个权限设置,表示所有者(owner)有读取、写入和执行权限,组(group)和其他人(others)有读取和执行权限,但没有写入权限。具体解释如下:
    • 7 表示所有者权限(rwx):读 (4) + 写 (2) + 执行 (1) = 7
    • 5 表示组权限(r-x):读 (4) + 执行 (1) = 5
    • 5 表示其他人权限(r-x):读 (4) + 执行 (1) = 5
  • ~/: 这个符号表示当前用户的主目录。
  • *: 这个符号表示主目录中的所有文件和目录。

综上,chmod -R 755 ~/* 命令将递归地更改当前用户主目录中的所有文件和目录的权限,使得所有者有读、写和执行权限,组和其他人有读和执行权限,但没有写入权限。

例子

假设你当前用户的主目录中有以下文件和目录结构:

1
2
3
4
5
6
7
/home/username/
├── file1.txt
├── file2.txt
└── dir1
├── file3.txt
└── dir2
└── file4.txt

运行 chmod -R 755 ~/* 后,所有这些文件和目录的权限将变为:

  • /home/username/file1.txt/home/username/file2.txt 权限为 755
  • /home/username/dir1 及其子目录 dir2 和其中的文件 file3.txtfile4.txt 权限也将递归地变为 755

请谨慎使用 -R 选项,因为它会影响到目录及其所有子目录和文件。

3.2 更改隐藏目录的权限

1
chmod -R 755 ~/.*
解释
  • chmod: 这个命令用于更改文件或目录的权限。
  • -R: 这个选项表示递归(recursive)。它会递归地更改指定目录及其子目录中的所有文件和目录的权限。
  • 755: 这是一个权限设置,表示所有者(owner)有读取、写入和执行权限,组(group)和其他人(others)有读取和执行权限,但没有写入权限。具体解释如下:
    • 7 表示所有者权限(rwx):读 (4) + 写 (2) + 执行 (1) = 7
    • 5 表示组权限(r-x):读 (4) + 执行 (1) = 5
    • 5 表示其他人权限(r-x):读 (4) + 执行 (1) = 5
  • ~/: 这个符号表示当前用户的主目录。
  • .*: 这个模式表示所有以 . 开头的文件和目录(包括隐藏文件和目录)。

结果

chmod -R 755 ~/.* 会递归地更改当前用户主目录中所有以 . 开头的文件和目录(包括隐藏文件和目录)的权限。包括像 .bashrc.profile.config 等文件和目录,以及可能的 ... 目录。

示例

假设你的主目录结构如下:

1
2
3
4
5
6
/home/username/
├── file1.txt
├── dir1/
│ └── file2.txt
└── .hidden/
└── hiddenfile.txt

运行 chmod -R 755 ~/.* 后,以下内容的权限可能会被更改:

  • 隐藏目录和文件(如 .hidden/.hidden/hiddenfile.txt
  • 当前目录 /home/username 及其所有内容,包括 file1.txtdir1/dir1/file2.txt
  • 父目录 /home 及其所有内容,这可能会对系统造成严重影响

注意事项

使用 chmod -R 755 ~/.* 时要非常小心,因为它会更改主目录中的所有隐藏文件和目录的权限,并且由于 .* 包括 ...,它还可能递归到主目录的父目录以及根目录,这可能会导致系统权限混乱。更改根目录的权限是不推荐的,因为这可能会影响系统的安全性和功能。

替代方案

如果你确实需要更改某些特定隐藏文件或目录的权限,建议明确指定这些文件或目录,而不是使用通配符 .*

例如:

1
chmod -R 755 ~/.config

这只会更改 .config 目录及其子目录和文件的权限,而不会影响其他文件或目录。

3 删除文件夹及文件

3.1 删除非隐藏文件夹及其文件

1
rm -rf ~/*

解释

rm -rf ~/* 命令用于递归地强制删除当前用户主目录中的所有非隐藏文件和目录。

  • rm: 这个命令用于删除文件或目录。
  • -r: 递归(recursive)选项。它会删除指定目录及其所有子目录和文件。
  • -f: 强制(force)选项。它会强制删除文件或目录,而不会提示用户确认。
  • ~/: 表示当前用户的主目录。
  • *: 通配符,表示主目录中的所有非隐藏文件和目录。

结果

rm -rf ~/* 会递归地强制删除当前用户主目录中所有非隐藏文件和目录。这意味着它会删除所有名称不以 . 开头的文件和目录及其子目录中的所有内容。

示例

假设你的主目录结构如下:

1
2
3
4
5
6
7
/home/username/
├── file1.txt
├── file2.txt
└── dir1/
├── file3.txt
└── dir2/
└── file4.txt

运行 rm -rf ~/* 后,以下内容将被删除:

  • /home/username/file1.txt
  • /home/username/file2.txt
  • /home/username/dir1 及其所有内容,包括 dir1/file3.txtdir1/dir2/file4.txt

注意事项

  • 危险性: 这个命令会删除主目录中的所有非隐藏文件和目录,因此在执行该命令之前一定要确认没有需要保留的数据。如果误删数据,可能无法恢复。
  • 不影响隐藏文件和目录: 这个命令不会删除以 . 开头的隐藏文件和目录。隐藏文件和目录会保留在主目录中。

3.2 删除隐藏文件夹及其文件

1
rm -rf ~/.* 

解释

  • rm: 这是一个用于删除文件或目录的命令。
  • -r: 这个选项表示递归(recursive)。它会删除指定目录及其子目录和文件。
  • -f: 这个选项表示强制(force)。它会强制删除文件或目录,而不提示用户确认。
  • ~/: 这个符号表示当前用户的主目录。
  • .*: 这个模式表示所有以 . 开头的文件和目录(包括隐藏文件和目录)。

结果

rm -rf ~/.* 会递归地强制删除当前用户主目录中所有以 . 开头的文件和目录,包括隐藏文件和目录。

示例

假设你的主目录结构如下:

1
2
3
4
5
6
/home/username/
├── file1.txt
├── dir1/
│ └── file2.txt
└── .hidden/
└── hiddenfile.txt

运行 rm -rf ~/.* 后,以下内容可能会被删除:

  • 隐藏文件和目录(如 .hidden/.hidden/hiddenfile.txt
  • 当前目录 /home/username 及其所有内容,包括 file1.txtdir1/dir1/file2.txt
  • 父目录 /home 及其所有内容,这可能会导致系统崩溃

注意事项

使用 rm -rf ~/.* 时要非常小心,因为它会删除主目录中的所有隐藏文件和目录,包括一些重要的配置文件和目录。更危险的是,由于 .* 包括 .(当前目录)和 ..(父目录),这可能会导致删除主目录及其所有内容,甚至删除主目录的父目录及其内容,这可能会对系统造成严重破坏。

替代方案

为了避免意外删除重要的文件和目录,建议不要直接使用 rm -rf ~/.*。相反,可以明确指定要删除的隐藏文件或目录:

1
2
rm -rf ~/.hidden
rm -f ~/.bashrc

这样可以确保只删除特定的隐藏文件或目录,而不会影响其他目录和文件。

4 初始HTML代码

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<!DOCTYPE html>  
<html>
<head>
<meta charset=utf-8 />
<title>eric52.serv00.net - hosted on Serv00.com</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
border: 0;
}

body {
background-image: linear-gradient(137deg, #2E457B 0%, #237431 100%) !important;
background-attachment: fixed;
color: #333;
font-family: Arial, Verdana, Tahoma;
font-size: 13px;
}

#main {
background: #FFF;
box-shadow: 0 0 40px #00275A;
margin-top: 65px;
padding-top: 20px;
padding-bottom: 20px;
width: 100%;
}

#mainwrapper {
display: table;
text-align: center;
margin: 0 auto;
}

h1 {
color: #EE6628;
font-size: 44px;
font-weight: normal;
text-shadow: 1px 1px 2px #A7A7A7;
}

h2 {
color: #385792;
font-weight: normal;
font-size: 25px;
text-shadow: 1px 1px 2px #D4D4D4;
}

ul {
text-align: left;
margin-top: 20px;
}

p {
margin-top: 20px;
color: #888;
}

a {
color: #4D73BB;
text-decoration: none;
}

a:hover, a:focus {
text-decoration: underline;
}
</style>
</head>

<body>

<div id="main">
<div id="mainwrapper">
<h1>eric52.serv00.net</h1>
<h2>Page successfully added</h2>

<ul>
<li>The page is in the directory <b>/usr/home/eric52/domains/eric52.serv00.net/public_html</b></li>
<li>This file can be deleted (index.html),</li>
<li>Files can be put on the server using the <b>FTP</b>, <b>FTPS</b> or <b>SFTP</b> protocols.</li>
</ul>

<p>If you have any questions <a href="https://www.serv00.com/contact">contact us</a>.</p>
</div>
</div>
</body>

</html>

camelz.dedyn.io备份的文件

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>camelz.dedyn.io - hosted on Serv00.com</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
border: 0;
}

body {
background-image: linear-gradient(137deg, #2E457B 0%, #237431 100%) !important;
background-attachment: fixed;
color: #333;
font-family: Arial, Verdana, Tahoma;
font-size: 13px;
}

#main {
background: #FFF;
box-shadow: 0 0 40px #00275A;
margin-top: 65px;
padding-top: 20px;
padding-bottom: 20px;
width: 100%;
}

#mainwrapper {
display: table;
text-align: center;
margin: 0 auto;
}

h1 {
color: #EE6628;
font-size: 44px;
font-weight: normal;
text-shadow: 1px 1px 2px #A7A7A7;
}

h2 {
color: #385792;
font-weight: normal;
font-size: 25px;
text-shadow: 1px 1px 2px #D4D4D4;
}

ul {
text-align: left;
margin-top: 20px;
}

p {
margin-top: 20px;
color: #888;
}

a {
color: #4D73BB;
text-decoration: none;
}

a:hover, a:focus {
text-decoration: underline;
}
</style>
</head>

<body>

<div id="main">
<div id="mainwrapper">
<h1>camelz.dedyn.io</h1>
<h2>Page successfully added</h2>

<ul>
<li>The page is in the directory <b>/usr/home/eric52/domains/camelz.dedyn.io/public_html</b></li>
<li>This file can be deleted (index.html),</li>
<li>Files can be put on the server using the <b>FTP</b>, <b>FTPS</b> or <b>SFTP</b> protocols.</li>
</ul>

<p>If you have any questions <a href="https://www.serv00.com/contact">contact us</a>.</p>
</div>
</div>
</body>

</html>

方法二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd /usr/home/你的serv名字/domains/域名/public_html && mkdir halo
例如
cd /usr/home/eric52/domains/camelz.dedyn.io/public_html && mkdir halo

然后
cd halo && wget https://dl.halo.run/release/halo-2.20.9.jar -O halo.jar

chmod +x /usr/home/serv00用户名/domains/域名/public_html/halo/run.sh
例如
chmod +x /usr/home/eric52/domains/camelz.dedyn.io/public_html/halo/run.sh

chmod +x /usr/home/eric52/domains/camelz.dedyn.io/public_html/halo/run.sh && ./usr/home/eric52/domains/camelz.dedyn.io/public_html/halo/run.sh

cd domains/camelz.dedyn.io/public_html/halo

chmod +x run.sh && ./run.sh