工具介绍

SpaceSniffer(磁盘空间分析工具)是一款功能强大的磁盘空间分析工具,软件界面简洁,拥有安装、删除、复制、剪切、粘贴、转移、重命名、查看等编辑功能,可以让显示出硬盘中文件和文件夹的分布情况的一款应用程序,通过使用TreeMap的可视化布局,可以直观地看到在硬盘上大的文件和文件夹。

工具下载

扫描磁盘

最近我的电脑系统C盘空间满了,在清理磁盘空间时在系统盘下有两个超G的隐藏文件,一个是pagefile.sys,2G左右,一个是hiberfil.sys,13G左右,前面一个文件虚拟内存。

20250316020213

而“hiberfil.sys”是系统休眠文件,其大小和物理内存一样大,它可以删除掉,但却不能手动删除掉,只要在“控制面板”中打开“电源选项”,之后在电源管理对话框的“休眠”标签下,去掉“启用休眠”前的勾,重新启动计算机后,休眠文件就会自动删除。

通俗的讲,电脑处于休眠状态时,内存中的所有内容将保存到硬盘,并且电脑会被关闭。电脑在返回打开状态之后,关闭电脑时打开的所有程序和文档将全都还原到桌面。也就是说,当你让电脑进入休眠状态时,Windows 在关闭系统前将所有的内存内容写入hiberfil.sys文件。而后,当你重新打开电脑,操作系统使用Hiberfil.sys把所有信息放回内存,电脑恢复到关闭前的状态。然而,Windows 在硬盘上留下了hiberfil.sys文件,即使这个文件不再需要了。

删除操作

在开始的搜索功能中,输入cmd,会出现命令提示符→右键以管理员身份运行(否则可能会出错)。

输入命令,回车

1
powercfg -hibernate off

再到系统盘查看,数G大小的hiberfil.sys文件也没有了(如还有可以自行删除)。

如要再次开启休眠功能,可以在命令提示符中输入:powercfg -hibernate on 按回车(Enter键)执行命令即可打开休眠功能(无需重启电脑)。

1
powercfg -hibernate on

然后可以在控制面板的电源选项中调整启用休眠的等待时间。

20250316022750

注意事项

“pagefile.sys”是页面交换文件,即虚拟内存文件,这个文件不能删除,不过可以改变其大小和存放位置:文法如下:

\1. 右击“我的电脑/属性”,然后在对话框的“高级”标签下单击“性能”下的“设置”按钮,在”性能选项”对话框中切换到“高级”标签下,再单击“虚拟内存”下的“更改”按钮,即可根据需要更改页面文件的大小。

\2. 先选中C盘,然后选“无分页文件”,再点“设置”按钮;之后选中要生成该文件的盘符,在下面点选“自定义大小”并输入合适的数值,此数值通常为物理内存的1.5倍,再单击“设置”,最后单击“确定”就可以了。

简介

Windows 聚集(Windows Spotlight)功能为您的桌面带来了令人惊叹的背景图片,这些图片不仅美观,还常常让人眼前一亮。然而,随着这些绚丽背景而来的“了解此图片”图标有时可能会分散您的注意力,影响您对桌面的整体视觉体验。遗憾的是,直接通过右键菜单删除这个图标并不是一个可行的选择,因为这只会打开更多的选项菜单而不是真正移除它。

接下来有两种有效的方法可以帮助您摆脱这个烦人的图标。

禁用 Windows 聚集功能

如果“了解此图片”图标是由于 Windows 聚集功能引起的,您可以选择禁用该功能:

  1. 右键单击桌面空白处,选择“个性化”。
  2. 在左侧菜单中选择“背景”。
  3. 在“背景”下拉菜单中,选择“图片”、“纯色”或“幻灯片”。
  4. 保存后,Windows 聚集将被禁用,“了解此图片”图标也会随之消失。

使用注册表编辑器删除图标

对于希望继续使用 Windows 聚集功能但不想要“了解此图片”图标的用户,可以尝试修改注册表:

  1. Win + R 键,输入 regedit,然后按回车后打开注册表编辑器。
  2. 导航至指定路径:
  3. 找到并展开 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
  4. 创建新 DWORD 值。在右侧窗格中,右键点击,选择“新建 -> DWORD (32位)值”。
  5. 命名为 {2cc5ca98-6485-489a-920e-b3e88a4ccce3},并将其值设为 1。
  6. 应用更改后刷新桌面后,图标将消失。如需恢复,只需删除这个 DWORD 值即可。

简介

专业版和家庭版对于普通用户来说没有太多感觉,如果是程序员、工程师之类的需要频繁使用电脑、虚拟机,强烈建议升级为Windows专业版。

根据微软的升级机制,Windows系统如果要实现家庭版到专业版,只需要修改产品密钥就可以了。

这里简单介绍一下Windows专业版和家庭版的区别:

  1. 远程桌面:家庭版并非完全不支持远程桌面,而是家庭版只能其他电脑“远程控制”,用以提供系统援助,而Windows 11 专业版才可以远程控制其他电脑。
  2. 组策略:这个功能在家庭版系统中是没有的,该功能可以让你的Windows系统高度定制化。
  3. Hyper-V:Hyper-V虚拟机,了解这个应用的玩家自然不会选择家庭版系统,不了解这个应用的玩家也不会去使用它。家庭版的Windows 11不支持该功能,该功能一般被用于搭建测试用的虚拟机系统,即在系统内再运行一个系统。
  4. 硬件支持:内存方面,家庭版最多支持128G,专业版则可支持2TB。CPU方面,家庭版仅支持单路处理器,而专业版支持双路处理器。家庭版支持最多64核的处理器,专业版支持最多128核的处理器。

Win11专业版比Win11家庭版多了Hype-V虚拟机、Windows沙盒、远程桌面、BitLocker加密、Windows保护、移设备管理、组策略、使用Azure进行企业状态漫游、分配的访问权限、动态配置、适用于企业的Windows更新、自助服务终端模式。

从解决实际问题的角度上,推荐3种实测有效的方法。

手动修改产品密钥

专业版所需要的内容其实已经下载在本地了,我们只需要激活安装即可,专业版和家庭版的区别在于证书不同。

首先断开网络,然后找到:设置-》系统-》系统信息》更改产品密钥或升级Windows

以下密钥随便挑一个就行:

W269N-WFGWX-YVC9B-4J6C9-T83GX

236TW-X778T-8MV9F-937GT-QVKBB

WMN7B-Y7TKF-Y49QB-TMQ8T-GMT6T

FJHWT-KDGHY-K2384-93CT7-323RC

20250314100553

点击 【更改产品密钥】

20250314100614

输入密钥,断网,然后再点击【下一页】,就可以激活了。

20250314101846

这种方法成功激活的概率不高,如果激活失败或者成功后联网却仍显示激活失败,请看第二种方法。

命令行中激活

打开命令行,以管理员身份运行。

20250314213013

输入

1
2
3
slmgr /ipk 236TW-X778T-8MV9F-937GT-QVKBB
slmgr /skms kms.03k.org
slmgr /ato

使用KMS工具激活

这种方法相对于前两种方法成功概率大得多,几乎是100%。如果上面两种方法不行,就用这种方法。

这也是大多数90%程序员会选择这种方式激活,成功激活之后Windows家庭版就会变成专业版。

这里推荐kms激活器神龙版,直接双击打开运行即可,无需安装。

值得注意的这款软件,可能会爆病毒

需要关闭保护或者关闭其他杀毒软件。软件没有病毒,只不过windows防护是会检测这类激活工具。

在【Windows安全中心】关闭【实时保护】

20250314213458

点击exe文件,运行界面,点击激活windows 10 即可。还可以激活office、visio等微软系列软件,非常nice。

KMS软件下载

20250315185022

Bilibili客户端PC版下载

官网下载

首先下载PC版的B站客户端;打开B站首页,点击右上角的下载客户端,下载Windows客户端即可(mac没试过)

缓存视频

打开你想下载的视频;

image-20240514213258485

点击缓存后会弹出窗口让你选择下载的画质,点击下载即可

image-20240514213420675

下载完后在下面的目录里面就能找到下载的文件了

image-20240514213721864

找到两个m4s文件,这两个文件分别是视频和音频

v2-5207e1bbeacd2207ff555d4abe90b781_r

修改m4s视频文件

用二进制编辑器编辑这两个文件,例如用Notepad++或者Sublime Text

二进制打开就删除开头的0

v2-3bb9f220527b03c48ef665e967c8e95c_r

十六进制打开就删除开头的30

image-20240514220710987

注意,不要用文本编辑器去编辑器这个 *.m4s文件,会有问题

拓展:

Notepad++用十六进制方式打开二进制文件

在 Notepad++ 中,转到“插件”菜单并选择“插件管理器”。

image-20240514222028755

找到HEX-Editor,然后单击安装。

image-20240514222249417

打开二进制文件后,在插件中使用HEX插件即可,文件内容既会变成十六进制的内容

image-20240514222435071

合并视频

ffmpeg 下载

下载后建议添加到系统环境变量,使用更方便

使用ffmpeg合并成完整的视频

1
ffmpeg.exe -i 1.m4s -i 2.m4s -codec copy output.mp4

零基础保姆级小白节点搭建教学,目前最安全最稳定的搭建方式,通过x-ui面板实现单端口多用户合租

教程完全零基础手把手教学,只要跟着步骤来一定能成功搭建。
使用X-UI面板搭建vmess+ws+tls+web或者vless+ws+tls+web的节点,这是目前最安全的搭建方式
并且为了更进一步的安全,有些步骤甚至有点繁琐,这都是值得的,只有安全了才能实现省时省心
非常适合想有自己专属稳定的节点又不太愿意折腾的朋友。跳出翻墙出来学翻墙的怪圈。

至于高速稳定只有靠钞能力解决了,作为电信用户的我,刨除高攀不起的专线,个人承受范围内最好的线路是CN2 GIA
本教程使用的是搬瓦工CN2GIA线路,经过了三网优化,电信、移动、联通用户都能获得非常稳定的体验,实现全天稳定丝滑的科学上网体验,告别晚高峰拥堵的情况
考虑到GIA线路比较贵,最后给大家提供一种使用x-ui面板通过WS路径分流实现单端口多用户的合租方案,可以和你的朋友合租来分摊费用

VPS购买

搬瓦工
优惠码: BWHNCXNVXV

系统:Ubuntu22.04

执行unminimize之后,中途如果出现的A new version提示信息,输入数字2,再回车即可

域名购买

namesilo
优惠码:oldtong

SSH工具

FinallShell

方法一:手动搭建

节点搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!!!重要!x-ui不要把xray版本升级到1.7.5以上,否则无法搭建vless节点!
#更新软件源
apt update
#启用 BBR TCP 拥塞控制算法
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

#安装x-ui:
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

#安装nginx
apt install nginx
#安装acme:
curl https://get.acme.sh | sh
#添加软链接:
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
#切换CA机构:
acme.sh --set-default-ca --server letsencrypt
#申请证书:
acme.sh --issue -d 你的域名 -k ec-256 --webroot /var/www/html
#安装证书:
acme.sh --install-cert -d 你的域名 --ecc --key-file /etc/x-ui/server.key --fullchain-file /etc/x-ui/server.crt --reloadcmd "systemctl force-reload nginx"

寻找适合的伪装站

http站点优先,个人网盘符合单节点大流量特征

示例关键字:intext:登录 Cloudreve

配置nginx

配置文件路径:/etc/nginx/nginx.conf

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
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 1024;
}

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;
gzip on;

server {
listen 443 ssl;

server_name nicename.co; #你的域名
ssl_certificate /etc/x-ui/server.crt; #证书位置
ssl_certificate_key /etc/x-ui/server.key; #私钥位置

ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;

location / {
proxy_pass https://bing.com; #伪装网址
proxy_redirect off;
proxy_ssl_server_name on;
sub_filter_once off;
sub_filter "bing.com" $server_name;
proxy_set_header Host "bing.com";
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_set_header Accept-Language "zh-CN";
}


location /ray { #分流路径
proxy_redirect off;
proxy_pass http://127.0.0.1:10000; #Xray端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /xui { #xui路径
proxy_redirect off;
proxy_pass http://127.0.0.1:9999; #xui监听端口
proxy_http_version 1.1;
proxy_set_header Host $host;
}
}

server {
listen 80;
location /.well-known/ {
root /var/www/html;
}
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
}
}

每次修改nginx配置文件后必须使用 systemctl reload nginx 命令重新加载配置文件

多用户合租

通过修改nginx的配置文件实现ws path路径分流

1
2
3
4
5
6
7
8
9
10
location /ray {   #分流路径
proxy_redirect off;
proxy_pass http://127.0.0.1:10000; #Xray端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

MITM节点

服务端配置

1
2
3
4
5
#安装x-ui
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

#无域名,生成自签证书
openssl req -new -x509 -nodes -newkey rsa:2048 -keyout /etc/x-ui/ca.key -out /etc/x-ui/ca.crt -subj "/CN=MITM" -days 36500

image-20230531163823796

x-ui模板

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
{
"log": {
"access": "",
"error": "",
"loglevel": "warning"
},
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "bulianglin"
},
{
"id": "bulianglin-mitm",
"email": "mitm@mitm.com"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/x-ui/ca.crt",
"keyFile": "/etc/x-ui/ca.key"
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
},
{
"tag": "mitm",
"protocol": "freedom",
"streamSettings": {
"security": "tls",
"tlsSettings": {
"alpn": [
"http/1.1"
]
}
}
}
],
"routing": {
"rules": [
{
"user": "mitm@mitm.com",
"outboundTag": "mitm",
"type": "field"
}
]
}
}

客户端配置

xray模板

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
{
"log": {
"access": "",
"error": "",
"loglevel": "warning"
},
"inbounds": [
{
"tag": "socks",
"port": 8888,
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"udp": true
},
"sniffing": {
"enabled": true
}
},
{
"tag": "http",
"port": 9999,
"listen": "127.0.0.1",
"protocol": "http",
"sniffing": {
"enabled": true
}
},
{
"listen": "127.0.0.1",
"port": 11111,
"tag": "in-mitm",
"protocol": "dokodemo-door",
"settings": {
"port": 443,
"followRedirect": true
},
"streamSettings": {
"security": "tls",
"tlsSettings": {
"certificates": [
{
"usage": "issue",
"certificateFile": "ca.crt",
"keyFile": "ca.key"
}
],
"alpn": [
"http/1.1"
]
}
}
}
],
"outbounds": [
{
"tag": "proxy",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "你的服务器ip",
"port": 443,
"users": [
{
"id": "bulianglin",
"encryption": "none",
"flow": ""
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"allowInsecure": true
}
}
},
{
"tag": "out-mitm",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "你的服务器ip",
"port": 443,
"users": [
{
"id": "bulianglin-mitm",
"encryption": "none",
"flow": ""
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"allowInsecure": true
}
}
},
{
"tag": "direct",
"protocol": "freedom"
},
{
"protocol": "freedom",
"settings": {
"redirect": "127.0.0.1:11111"
},
"tag": "re-entry"
}
],
"routing": {
"domainStrategy": "IPOnDemand",
"domainMatcher": "mph",
"rules": [
{
"type": "field",
"outboundTag": "direct",
"domain": [
"geosite:cn"
]
},
{
"type": "field",
"outboundTag": "direct",
"ip": [
"geoip:private",
"geoip:cn"
]
},
{
"type": "field",
"inboundTag": "in-mitm",
"outboundTag": "out-mitm"
},
{
"type": "field",
"port": "443",
"protocol": "tls",
"outboundTag": "re-entry"
}
]
}
}

新建config.json,粘贴模板,打开v2rayN(6.0以下的版本)文件所在目录,Xray内核和程序在同一目录下,将证书文件和私钥复制到过去,然后在v2rayN中添加自定义配置服务器,随便给个别名,将我们刚才创建的配置文件导入进来,内核选择Xray,点击确定,选中刚才创建的节点,在浏览器中设置代理,可以用配置文件中socks的8888,或者HTTP的9999,尝试访问谷歌,可以看到弹出了不安全的警告信息,这是MITM的正常表现,因为我们现在用的是自己签的ca,证书由于我们还没有信任Xray的根证书颁发机构,所以弹出来警告,尝试访问YouTube,也是同样的警告,接下来需要信任我们的CA证书,双击打开,点击安装证书 存储位置按需选择,我选择当前用户,将证书导入到受信任的根证书颁发机构,导入成功后重启浏览器,此时再来访问谷歌就可以正常访问了,并且消除了TIT的特征,可以看到谷歌的证书是由Xray的自签CA颁发的,我给大家的配置分流规则是,国内网站不走代理,所以百度并没有进行MITM,证书还是正常的证书,只是我们走代理的网站会进行MITM,这就是MITM节点的搭建过程,还是很简单的,如果你不想使用了,强烈建议把刚才导入的CA证书移除受信任,在开始菜单中搜索cer,由于刚才我们是将证书导入到当前用户,所以选择管理用户证书,如果你导入的是本地计算机,就选择下面的管理计算机证书,在受信任的根证书颁发机构里面,找到刚才导入的MITM证书,将其删除即可,删除之后,再重新使用MITM节点访问谷歌,又会弹出安全警告了,这就是MITM节点的搭建方法,我个人是不建议平时用这种方式进行科学上网的,因为你无法保证你的VPS绝对安全,当然具体还是得看你自己,毕竟每个人对安全都有自己不同的标准

naive节点

naive服务端配置

编译安装caddy+naive:

1
2
3
4
5
6
7
8
9
10
apt install software-properties-common
add-apt-repository ppa:longsleep/golang-backports
apt update
apt install golang-go

#测试
go version

go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive

Caddyfile配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
:443, naive.buliang0.tk #你的域名
tls example@example.com #你的邮箱
route {
forward_proxy {
basic_auth user pass #用户名和密码
hide_ip
hide_via
probe_resistance
}
#支持多用户
forward_proxy {
basic_auth user2 pass2 #用户名和密码
hide_ip
hide_via
probe_resistance
}
reverse_proxy https://demo.cloudreve.org { #伪装网址
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}

caddy常用指令:

前台运行caddy:./caddy run
后台运行caddy:./caddy start
停止caddy:./caddy stop
重载配置:./caddy reload

caddy配置守护进程(开机自启):https://github.com/klzgrad/naiveproxy/wiki/Run-Caddy-as-a-daemon

自定义端口:

naive如果要用自定义端口,需要使用json的配置方式,新手可以直接跳过

启动方式:./caddy start --config config.json

config.json内容:

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
//需删除注释内容caddy才能加载
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [
":4431" //监听端口
],
"routes": [
{
"handle": [
{
"auth_user_deprecated": "user", //用户名
"auth_pass_deprecated": "pass", //密码
"handler": "forward_proxy",
"hide_ip": true,
"hide_via": true,
"probe_resistance": {}
}
]
},
{
"handle": [
{
"handler": "reverse_proxy",
"headers": {
"request": {
"set": {
"Host": [
"{http.reverse_proxy.upstream.hostport}"
],
"X-Forwarded-Host": [
"{http.request.host}"
]
}
}
},
"transport": {
"protocol": "http",
"tls": {}
},
"upstreams": [
{
"dial": "demo.cloudreve.org:443" //伪装网址
}
]
}
]
}
],
"tls_connection_policies": [
{
"match": {
"sni": [
"naive.buliang0.tk" //域名
]
},
"certificate_selection": {
"any_tag": [
"cert0"
]
}
}
],
"automatic_https": {
"disable": true
}
}
}
},
"tls": {
"certificates": {
"load_files": [
{
"certificate": "/root/a.crt", //公钥路径
"key": "/root/a.key", //私钥路径
"tags": [
"cert0"
]
}
]
}
}
}
}

客户端配置

naive客户端:https://github.com/klzgrad/naiveproxy/releases/latest

客户端配置:

1
2
3
4
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://user:pass@example.com"
}

使用v2rayN加载naive内核需要将配置文件的log行删除,否则会断流

TLS指纹查看

jarm工具:https://github.com/salesforce/jarm

下载jarm:wget https://raw.githubusercontent.com/salesforce/jarm/master/jarm.py
查看网站jarm指纹:python3 jarm.py naive.buliang0.tk

网络空间资产搜索引擎:https://fofa.info

方法二:脚本搭建

更新软件和安装工具

1
2
3
4
5
#系统centos
yum update -y && yum upgrade -y && yum install curl -y && yum -y install wget

#系统debian
apt update && apt upgrade -y && apt install curl -y && apt -y install wget

安装脚本

一直默认回车就好,碰到y or n 也可以回车

1
wget -P /root -N --no-check-certificate "https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh" && chmod 700 /root/install.sh && /root/install.sh

开启BBR加速

选择2 和 11 安装,然后再reboot

1
wget --no-check-certificate -O tcpx.sh https://raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master/tcpx.sh && chmod +x tcpx.sh && ./tcpx.sh

反向面试

大部分翻译自:https://github.com/viraptor/reverse-interview ,亦有其他网友补充。

译者总结的一份适合突击记忆的简洁版 LeetCode 题解和面试问题,也欢迎 Star。https://github.com/yifeikong/interview

下面列表里的问题对于参加技术面试的人来说可能有些用。
列表里的问题并不一定适用于某个特定的职位或者工作类型,也没有排序
最开始的时候这只是我自己的问题列表,但是慢慢地添加了一些我觉得可能让我对这家公司亮红牌的问题。
我也注意到被我面试的人提问我的问题太少了,感觉他们挺浪费机会的。

如果你问过的问题没有被列出来,请提交一个 PR。

翻译:

English
Korean
Portuguese
繁體中文

预期使用方式

  • 检查一下哪些问题你感兴趣
  • 检查一下哪些是你可以自己在网上找到答案的
  • 找不到的话就向面试官提问

绝对不要想把这个列表里的每个问题都问一遍。(尊重面试官的时间,而且你可以通过查找已经发布的答案来显示
你的主动性)

请记住事情总是灵活的,组织的结构调整也会经常发生。拥有一个 bug 追踪系统并不会保证高效处理 bug。
CI/CD (持续集成系统) 也不一定保证交付时间会很短。

职责

  • On-call (电话值班)的计划或者规定是什么?值班或者遇到问题加班时候有加班费吗?
  • 我的日常工作是什么?
  • 有给我设定的特定目标吗?
  • 团队里面初级和高级工程师的比例是多少?(有计划改变吗)
  • 入职培训 (onboarding) 会是什么样的?
  • 每个开发者有多大的自由来做出决定?
  • 在你看来,这个工作做到什么程度算成功?
  • 你期望我在最初的一个月 / 三个月能够完成什么?
  • 试用期结束的时候,你会怎么样衡量我的绩效?
  • 自己单独的开发活动和按部就班工作的比例大概是怎样的?
  • 一个典型的一天或者一周的工作是怎样安排的?
  • 对我的申请你有什么疑虑么?
  • 在这份工作上,我将会和谁紧密合作?
  • 我的直接上级他们的上级都是什么样的管理风格?(事无巨细还是着眼宏观)
  • 我在这个岗位上应该如何发展?会有哪些机会?
  • 每天预期 / 核心工作时间是多少小时?
  • 我入职的岗位是新增还是接替之前离职的同事?(是否有技术债需要还)?(zh)
  • 入职之后在哪个项目组,项目是新成立还是已有的?(zh)

技术

  • 公司常用的技术栈是什么?
  • 你们怎么使用源码控制系统?
  • 你们怎么测试代码?
  • 你们怎么追踪 bug?
  • 你们怎样监控项目?
  • 你们怎么集成和部署代码改动?是使用持续集成和持续部署吗 (CI/CD)?
  • 你们的基础设施搭建在版本管理系统里吗?或者是代码化的吗?
  • 从计划到完成一项任务的工作流是什么样的?
  • 你们如何准备故障恢复?
  • 有标准的开发环境吗?是强制的吗?
  • 你们需要花费多长时间来给产品搭建一个本地测试环境?(分钟 / 小时 / 天)
  • 你们需要花费多长时间来响应代码或者依赖中的安全问题?
  • 所有的开发者都可以使用他们电脑的本地管理员权限吗?
  • 介绍一下你们的技术原则或者展望。
  • 你们的代码有开发文档吗?有没有单独的供消费者阅读的文档?
  • 你们有更高层次的文档吗?比如说 ER 图,数据库范式
  • 你们使用静态代码分析吗?
  • 你们如何管理内部和外部的数字资产?
  • 你们如何管理依赖?
  • 公司是否有技术分享交流活动?有的话,多久一次呢?(zh)
  • 你们的数据库是怎么进行版本控制的?(zh)
  • 业务需求有没有文档记录?是如何记录的?(zh)

团队

  • 工作是怎么组织的?
  • 团队内 / 团队间的交流通常是怎样的?
  • 你们使用什么工具来做项目组织?你的实际体会是什么?
  • 如果遇到不同的意见怎样处理?
  • 谁来设定优先级 / 计划?
  • 如果团队没能赶上预期发布日期怎么办?
  • 每周都会开什么类型的会议?
  • 会有定期的和上级的一对一谈话吗?
  • 产品 / 服务的规划是什么样的?(n 周一发布 / 持续部署 / 多个发布流 / …)
  • 生产环境发生事故了怎么办?是否有不批评人而分析问题的文化?
  • 有没有一些团队正在经历还尚待解决的挑战?
  • 你们如何跟踪进度?
  • 预期和目标是如何设定的?谁来设定?
  • Code Review 如何实施?
  • 给我介绍下团队里一个典型的 sprint
  • 你们如何平衡技术和商业目标?
  • 你们如何共享知识?
  • 团队有多大?
  • 公司技术团队的架构和人员组成?(zh)
  • 团队内开发、产品、运营哪一方是需求的主要提出方?哪一方更强势?(zh)

问未来的同事

  • 开发者倾向于从哪里学习?
  • 你对在这里工作最满意的地方是?
  • 最不满意的呢?
  • 如果可以的话,你想改变哪里?
  • 团队最老的成员在这里多久了?
  • 在小团队中,有没有出现成员性格互相冲突的情况?最后是如何解决的?

公司

  • 公司为什么在招人?(产品发展 / 新产品 / 波动…)
  • 有没有会议 / 旅行预算?使用的规定是什么?
  • 晋升流程是怎样的?要求 / 预期是怎样沟通的?
  • 绩效评估流程是怎样的?
  • 技术和管理两条职业路径是分开的吗?
  • 对于多元化招聘的现状或者观点是什么?
  • 有公司级别的学习资源吗?比如电子书订阅或者在线课程?
  • 有获取证书的预算吗?
  • 公司的成熟度如何?(早期寻找方向 / 有内容的工作 / 维护中 / …)
  • 我可以为开源项目做贡献吗?是否需要审批?
  • 你认为公司未来五年或者十年会发展成什么样子?
  • 公司的大多数员工是如何看待整洁代码的?
  • 你上次注意到有人成长是什么时候?他们在哪方面成长了?
  • 在这里成功的定义是什么?如何衡量成功?
  • 有体育活动或者团建么?
  • 有内部的黑客马拉松活动吗?
  • 公司支持开源项目吗?
  • 有竞业限制或者保密协议需要签吗?
  • 你们认为公司文化中的空白是什么?
  • 能够跟我说一公司处于不良情况,以及如何处理的故事吗?
  • 您在这工作了多久了?您觉得体验如何?(zh)
  • 大家为什么会喜欢这里?(zh)
  • 公司的调薪制度是如何的?(zh)

社会问题

  • 你们关于多元化招聘什么看法?
  • 你们的公司文化如何?你认为有什么空白么?
  • 这里的工作生活平衡地怎么样?
  • 公司对气候变化有什么态度吗?

冲突

  • 不同的意见如何处理?
  • 如果被退回了会怎样?(“这个在预计的时间内做不完”)
  • 当团队有压力并且在超负荷工作的时候怎么处理?
  • 如果有人注意到了在流程或者技术等其他方面又改进的地方,怎么办?
  • 当管理层的预期和工程师的绩效之间有差距的时候如何处理?
  • 能给我讲一个公司深处有毒环境以及如何处理的故事吗?
  • 如果在公司内你的同事因涉嫌性侵犯他人而被调查,请问你会如何处理?
  • 假设我自己很不幸是在公司内被性侵的受害者,在公司内部有没有争取合法权益的渠道?

商业

  • 你们现在盈利吗?
  • 如果没有的话,还需要多久?
  • 公司的资金来源是什么?谁影响或者制定高层计划或方向?
  • 你们如何挣钱?
  • 什么阻止了你们挣更多的钱?
  • 公司未来一年的增长计划怎样?五年呢?
  • 你们认为什么是你们的竞争优势?
  • 你们的竞争优势是什么?
  • 公司未来的商业规划是怎样的?有上市的计划吗?(zh)

远程工作

  • 远程工作和办公室工作的比例是多少?
  • 公司提供硬件吗?更新计划如何?
  • 使用自己的硬件办公可以吗?现在有政策吗?
  • 额外的附件和家具可以通过公司购买吗?这方面是否有预算?
  • 有共享办公或者上网的预算吗?
  • 多久需要去一次办公室?
  • 公司的会议室是否一直是视频会议就绪的?

办公室布局

  • 办公室的布局如何?(开放的 / 小隔间 / 独立办公室)
  • 有没有支持 / 市场 / 或者其他需要大量打电话的团队在我的团队旁边办公?

终极问题

  • 该职位为何会空缺?
  • 公司如何保证人才不流失?
  • 这份工作 / 团队 / 公司最好和最坏的方面是?
  • 你最开始为什么选择了这家公司?
  • 你为什么留在这家公司?

待遇

  • 如果有奖金计划的话,奖金如何分配?
  • 如果有奖金计划的话,过去的几年里通常会发百分之多少的奖金?
  • 有五险一金(zh)/401k(us)或者其他退休养老金等福利吗?
  • 五险一金中,补充公积金一般交多少比例?/401k一般交多少比例?我可以自己选择这一比例吗?
  • 有什么医疗保险吗?如果有的话何时开始?
  • 有额外商业保险吗?例如人寿保险和额外的养老/医疗保险?
  • 更换工作地点,公司付费吗?

休假

  • 带薪休假时间有多久?
  • 病假和事假是分开的还是一起算?
  • 我可以提前使用假期时间吗?也就是说应休假期是负的?
  • 假期的更新策略是什么样的?也就是说未休的假期能否滚入下一周期
  • 照顾小孩的政策如何?
  • 无薪休假政策是什么样的?
  • 学术性休假政策是怎么样的?

NexT version 8.18.2

开启第三方插件

编辑整个博客文件夹下的themes/next/_config.ymlctrl+F搜索pjaxfalse改为true

接下来就可以添加喜欢的第三方插件了

添加看板娘-live2d_widget

项目地址:live2d-widget

加强版的live2d看板娘,可对话,换装互动

常用配置说明

模型的大小、位置、格式和文本内容等配置,需要自行设置一些配置文件waifu-tips.jswaifu-tips.jsonwaifu.css,这里提一些各文件里常用的配置。

waifu-tips.js

这里是模型加载启动/点击工具栏相应按钮时的行为和文本内容定义,具体对应可以对照参考原模型的行为,比如

2183122-20210503112404379-1613061177

这个部分是用来显示用户点回本页面时显示的文本,其余同理。

waifu-tips.json

这里是除了上面js里定义的文本以外的其余文本内容,同样可以对照参考原模型猜测来进行修改。

2183122-20210503112404630-2003319113

值得注意的是,这个文件里分了几大块,架构大概是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"mouseover": [{ // 鼠标悬停在某个特定元素时显示的文本
"selector": "...",
"text": "..."
}],
"click": [{ // 鼠标点击某个特定元素时显示的文本
"selector": "...",
"text": "..."
}],
"seasons": [{ // 在特定日期显示的文本
"date": "01/01",
"text": "..."
}]
}

text这里很显然是填显示的文本。

date是指定的特定日期。

至于selector就类似于CSS里的CSS选择器,是用来指定元素类型的。

值得注意的,使用cdn来引用GitHub仓库的代码,只会记录第一次上传的代码,后续在github仓库上修改代码,是不会刷新jsdelivr缓存的,这个我暂时没办法解决,最后本地配置调整好在push到仓库上

配置

编辑themes/next/ayout/_layout.njk文件

建议把项目克隆到自己的仓库,这样就可以使用自己的cdn加速,也可以根据自己喜欢来修改配置

head头部添加

1
<link rel="stylesheet" type="text/css" href="https://fastly.jsdelivr.net/gh/AienH/blog_plugin/live2d/assets/waifu.css"/>

body添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div class="waifu">
<div class="waifu-tips"></div>
<canvas id="live2d" class="live2d"></canvas>
<div class="waifu-tool">
<span class="fui-home"></span>
<span class="fui-chat"></span>
<span class="fui-eye"></span>
<span class="fui-user"></span>
<span class="fui-photo"></span>
<span class="fui-info-circle"></span>
<span class="fui-cross"></span>
</div>

<script src="https://fastly.jsdelivr.net/gh/AienH/blog_plugin/live2d/assets/waifu-tips.js"></script>
<script src="https://fastly.jsdelivr.net/gh/AienH/blog_plugin/live2d/assets/live2d.js"></script>

<script type="text/javascript">
live2d_settings['modelId'] = 1;
live2d_settings['modelTexturesId'] = 87;
initModel("https://fastly.jsdelivr.net/gh/AienH/blog_plugin/live2d/assets/waifu-tips.json")
</script>

最后再次编辑整个博客文件夹下的themes/next/_config.yml文件

在最下面添加

1
2
live2d:
enable: true

音乐播放器插件-APlayer & MetingJS

项目地址:APlayer MetingJS

介绍

  • APlayer 是一个简洁漂亮、功能强大的 Html5 音乐播放器。
  • MetingJS 是为 APlayer 添加网易云、QQ音乐等支持的插件。

老规矩,最好把项目拉到自己的GitHub仓库,防止作者链接失效

head头部添加

1
2
3
4
5
6
<script src="https://fastly.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css">
<script src=" https://cdn.jsdelivr.net/npm/jquery-ui@1.13.2/dist/jquery-ui.min.js "></script>
<script rel="preload" src="https://fastly.jsdelivr.net/gh/AienH/blog_plugin@master/APlayer/dist/APlayer.min.js"></script>
<script rel="preload" src="https://fastly.jsdelivr.net/gh/AienH/blog_plugin@master/MetingJS/dist/Meting.min.js"></script>
<link rel="stylesheet" href="https://fastly.jsdelivr.net/gh/AienH/blog_plugin@master/APlayer/dist/APlayer.min.css">

body添加

1
2
3
4
5
6
7
8
9
10
11
<meting-js
server="netease"
type="playlist"
id="8269382559"
autoplay="true"
volume="0.7"
fixed="true"
order="list"
preload="metadata"
lrc-type="0">
</meting-js>

参数说明

  • 引用这两个插件的前提是要先引用jquery.min.jsfont-awesome.min.cssjquery-ui.min.js
1
2
3
<script src="https://fastly.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css">
<script src=" https://cdn.jsdelivr.net/npm/jquery-ui@1.13.2/dist/jquery-ui.min.js "></script>

不然音乐插件不会生效

  • MetingJS参数详情
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--
id='外链播放器id',必须参数
type=[song=单曲, playlist=歌单, album=专辑, search=搜索结果, artist=艺术家],必须参数
server=[netease=网易云音乐, tencent=QQ音乐, kugou=酷狗音乐, xiami=虾米音乐, baidu=百度音乐],必须参数
fixed=启用固定模式,固定在左下角,默认false
mini=启用迷你模式,默认false
preload=[none,metadata,auto]
mutex=[互斥锁,默认true],默认false
order=[random=随机播放,list=列表播放]
loop=[all=全部循环, one=循环一次 ,none=不循环]
volume=[音量,默认0.7]
lrc-type=[歌词类型,默认0]
list-folded=[列表是否折叠,默认false]
list-max-height=列表最大高度,默认340px
storage-name=本地存储存储密钥,用于存储播放器设置,默认metingjs
-->

简介

自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败。最重要的原因是我习惯本地编辑,完成以后再一起上传github。看过了几个教程,总结出最适合自己的比较简单的方法。

img

github在线上传文件夹

在线上传也可以上传完整的文件夹结构,直接拖拽到上传文件页面的框中即可。

点击上传文件

img

直接拖拽

直接拖拽即可上传文件夹及文件夹里面的文件。如果点击* choose your files *就只能上传单个文件。

img

通过git工具上传本地文件夹(本地项目)

下载git工具

img

下载完成后安装完成,注意在安装过程中可以选择创建桌面快捷方式

img

绑定用户

打开git-bash.exe(直接在桌面上点击右键,或者点击开始按钮找到Git Bash)

img

在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱)

1
2
$ git config --global user.name "hanyuntao"
$ git config --global user.email "hanyuntaocn@163.com"

img

设置SSH key(git中sshkey有何作用?

生成ssh key

首先检查是否已生成密钥cd ~/.ssh,如果返回的ls有3个文件,则密钥已经生成。

img

如果没有密钥,则通过

1
$ ssh-keygen -t rsa -C "hanyuntaocn@163.com"

生成,生成过程中一路按3次回车键就好了。(默认路径,默认没有密码登录)
生成成功后,去对应目录C:/Users/hyt.ssh里(hyt为电脑用户名,每个人不同)用记事本打开id_rsa.pub,得到ssh key公钥。

img

为github账号配置ssh key

切换到github,展开个人头像的小三角,点击settings,然后打开SSH keys菜单, 点击Add SSH key新增密钥,填上标题(最好跟本地仓库保持一致)。

img

接着将id_rsa.pub文件中key粘贴到此,最后Add key生成密钥.

上传本地项目到github

创建一个本地项目

这是我自己创建的几个文件夹及文件。

img

建立本地仓库

1.首先进入text文件夹

1
cd d:text

img

2.执行指令:

1
git init

![img](git上传方法/执行git init.png)

初始化成功后你会发现项目里多了一个隐藏文件夹.git

img

3.执行指令:

1
git add .

将所有文件添加到仓库

img

4.执行指令:

1
git commit -m "提交文件"

双引号内是提交注释。

img

关联github仓库

1.到github text仓库复制仓库地址

img

2.执行指令:

1
git remote add origin https://github.com/hanyuntao/text.git

img

上传本地代码

执行指令:

1
git push -u origin master

img

完成

可以看到我们的本地项目已经上传到了github上了。

img

注意:git是不能管理空的文件夹的,文件夹里必须有文件才能上传。

前言

对NAS总是抱有好奇?对NAS的价格望而却步?
但是,如果你有树莓派(或者其它arm64架构的开发板也行),或者是Linux服务器,为什么不试试让它们变成自己的小型NAS?

NAS

NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。

大型的NAS,比如:群晖。可以有App,对手机照片进行备份,还可以对数据进行灾变处理,但是价格就比较贵了。而本次搭建NAS,主要满足:

  • 在线访问数据
  • 下载站
  • 挂载到电脑上,作为网络U盘

操作思路

1. 在线访问数据

比如:.flv、.mp4、.jpg等等,我们使用PHP实现网络浏览,这里我们使用_h5ai:

演示网站

官方文档

2. 下载站

DownloadToNAS
下载站,我们使用Aria2这个多线程下载器实现,难点是挂载到电脑上,也就是目录映射。最好能满足:

  • 加密传输,保证安全
  • 支持平台多,速度稳定

3. 挂载到本地磁盘

在Windwos上挂载在Windwos上挂载

其实,本地挂载树莓派、服务器磁盘的选择有很多。比如:SMB、FTP等。但是,考虑安全和利用情况下,我还是选择Webdav。

Windows和macOS都支持挂载Webdav,但是可能会出现无法写的情况。我建议使用第三方免费工具:

以上两款软件也都是免费的。

本文使用Webdav挂载,如果你使用宝塔,或者使用SMB,那么也完全可以选择非Webdav协议挂载磁盘。

(宝塔不可使用Nginx Webdav插件)

总结

综上,我们本次需要安装:

  • Nginx:用来提供Web目录访问
  • PHP:用来映射目录,实现_h5ai
  • Nginx模块:Webdav模块和Fancyindex模块,用来实现Webdav

前排提示

本次教程,适用所有架构的Linux(arm架构和x86都可以)。PHP、Nginx的配置,使用编译安装的方法。

不建议用宝塔安装Nginx和PHP,服务管理起来不方便,其它的懂的都懂

服务器要求

如果是树莓派(或者其它arm64架构的开发板也行),那么没什么具体要求,有个可以刷写SD卡的软件即可

但是,如果是服务器,最好选择高带宽的服务器,内存最好需要2G以上,否则编译PHP时,可能需要SWAP的支持。

我的是香橙派,也是arm64架构的开发板,系统用的Debian11,用其它linux系统的可以根据 命令自行修改一下即可

从下面开始我都是用root用户来进行,不想用root用户的可以在命令前面加上sudo

PHP

PHP官方下载地址

安装依赖

为下面编译参数做准备

1
apt install build-essential pkg-config openssl libssl-dev libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libonig-dev libzip-dev ffmpeg imagemagick -y

下载PHP

1
2
3
wget https://www.php.net/distributions/php-8.2.6.tar.gz -P /usr/local/src
cd /usr/local/src && tar xf php-8.2.6.tar.gz
cd php-8.2.6

配置用户和用户组

orangepi是我开发板自带的用户,不想用自带的用户也可以创建一个别的用户和用户组

如果你在服务器上操作,建议创建一个www用户和www用户组:

1
2
3
4
5
6
7
8
# 创建一个www用户
sudo useradd www

# 创建一个www用户组
sudo groupadd www

# www用户归属于www用户组
sudo usermod -a -G www www

配置编译参数

这是我配置的编译参数,其他PHP版本可能略微不一样,需要自己判断),也可以参考我这篇文章部署LNMP教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
./configure \
--prefix=/usr/local/php \
--with-curl \
--with-mysqli \
--with-openssl \
--with-pdo-mysql \
--with-jpeg \
--enable-gd \
--enable-fpm \
--with-fpm-user=orangepi \
--with-fpm-group=orangepi \
--enable-bcmath \
--enable-xml \
--with-zip \
--enable-mbstring \
--enable-sockets \
--with-zlib \
--enable-fileinfo \
--enable-exif
  • –with-fpm-user:fpm进程属于的用户
  • –with-fpm-group:fpm进程属于的用户组

编译安装

上面的configure配置没有问题,接下来就是编译和安装了,我图方便就一条命令来执行,新手可以把两条命令分开执行,先makemake install

1
make -j$(nproc) && make install -j$(nproc)

复制配置文件

1
2
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

测试运行

1
/usr/local/php7/sbin/php-fpm

查看服务进程和端口

1
2
ps aux | grep php-fpm
lsof -i:9000

Nginx

Nginx官方下载地址

安装依赖

为下面编译参数做准备

1
apt install build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev libxml2-dev libxslt-dev -y

额外模块

如果我们需要进行目录映射,需要更好看的、更实用的目录映射,需要额外的Fancyindex模块支持。

Nginx自带的Webdav支持不完善,需要额外的模块进行支持。

1
2
3
mkdir /usr/local/src/NginxModule/ && cd /usr/local/src/NginxModule
git clone https://github.com/arut/nginx-dav-ext-module.git
git clone https://github.com/aperezdc/ngx-fancyindex.git

下载Nginx

1
2
3
wget http://nginx.org/download/nginx-1.24.0.tar.gz -P /usr/local/src
cd /usr/local/src && tar xf nginx-1.24.0.tar.gz
cd nginx-1.24.0

配置用户和用户组

orangepi是我开发板自带的用户,不想用自带的用户也可以创建一个别的用户和用户组

如果你在服务器上操作,建议创建一个www用户和www用户组:

1
2
3
4
5
6
7
8
# 创建一个www用户
sudo useradd www

# 创建一个www用户组
sudo groupadd www

# www用户归属于www用户组
sudo usermod -a -G www www

配置编译参数

这是我配置的编译参数,其他Nginx版本可能略微不一样,需要自己判断),也可以参考我这篇文章部署LNMP教程

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
./configure \
--prefix=/usr/local/nginx \
--user=orangepi \
--group=orangepi \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--add-module=/usr/local/src/NginxModule/nginx-dav-ext-module \
--add-module=/usr/local/src/NginxModule/ngx-fancyindex
  • –user:nginx进程属于的用户
  • –group:nginx进程属于的用户组

编译安装

上面的configure配置没有问题,接下来就是编译和安装了,我图方便就一条命令来执行,新手可以把两条命令分开执行,先makemake install

1
make -j$(nproc) && make install -j$(nproc)

配置

因为上面配置参数指定缓存文件在/var/cache/nginx,日志文件在/var/log/nginx,所以需要创建

1
2
mkdir /var/cache/nginx
mkdir /var/log/nginx

测试运行

1
/usr/local/nginx/sbin/nginx

查看服务进程和端口

1
2
3
ps aux | grep nginx
lsof -i:80

配置_h5ai

H5AI,其实全称是:HTML5 Apache Index。最初是用来在Apache Web服务器上,完成资源映射,但是后来适配到Nginx等其他平台。配置很简单:下载_h5ai-修改Nginx配置文件-开始使用
注意_h5ai的映射逻辑:

1
2
3
4
网站根目录(需要映射的目录)
├─ _h5ai
├─ 你的其他文件1
└─ 你的其他文件1

下载_h5ai

因为是开源的工具,所以网上有很多修改版本,包含官方的:

  • 官方版本:官方的版本,功能全、稳定。
  • Dplayer版本:基于官方旧版本开发,支持更多格式的在线视频播放。
  • Mintimate’s _h5ai:基于Dplayer版本并合并官方最新版本代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
cd /home/orangepi
mkdir Downloads

cd Downloads
git clone https://github.com/Mintimate/h5ai_M

#将h5ai_M项目里的_h5ai移到Downloads目录下
cd h5ai_M
mv _h5ai ..

#因为是用root用户创建的,需要修改该文件夹的所属用户和组
cd /home/orangepi
chown -R orangpepi:orangepi Downloads

修改Nginx配置

备份原先的nginx配置文件

1
mv /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf.bak

新建一个配置文件

1
vim /usr/local/nginx/nginx.conf

直接添加配置:

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
#所属用户
user orangepi;
worker_processes 1;
events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

gzip on;

server {
listen 80;
server_name localhost;
#映射目录
root /home/orangepi/Downloads;


location / {
index index.html index.htm /_h5ai/public/index.php;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

#webdav配置
location ^~/webdav{
set $dest $http_destination;
if (-d \$request_filename) {
rewrite ^(.*[^/])$ $1/;
set $dest $dest/;
}
if ($request_method ~ MKCOL) {
rewrite ^(.*[^/])$ $1/ break;
}
# 映射目录
alias /home/pi/Downloads/;
autoindex on;
# Webdav设置
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
# 最大上传文件
client_max_body_size 3G;
dav_access user:rw group:rw all:rw;
auth_basic "Authorized Users Only";
# 验证用户
auth_basic_user_file webdavpasswd;
}

# php-fpm配置
location ~ [^/]\.php(/|$){
# try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}
}

使用

如果装了宝塔的,使用前记得开放对应端口,80端口和9000端口

直接用浏览器访问香橙派的IP,就可以访问_h5ai的映射目录

默认:

  • 用户名:admin
  • 密码:admin

然后进入这个地址:http://服务器的IP/_h5ai/public/index.php,这个界面是没有密码的,直接点击login

看到配置全绿就OK了

配置下载器

如果只配置了_h5ai,距离NAS基本算完成一大步了。但是,我认为还需要配置下载器,能把网上资源,直接下载到服务器才算是NAS。
这里我们使用Aria2作为下载器。

配置Aria2

一键脚本搭建:

AutoInstallAria2

因为一键安装脚本会在家目录下创建目录,所以切换到orangepi用户

1
2
su orangepi
wget "https://cdn.jsdelivr.net/gh/Mintimate/AutoInstallAria2@latest/AutoInstallAria2ForLinux.sh" && bash AutoInstallAria2ForLinux.sh

测试使用

这个时候,我们本地就可以使用Aria2的RPC进行下载了,首先Linux服务器上启动Aira2:

如果装了宝塔的,使用前记得开放对应端口,默认6800端口,可在配置中修改

1
2
cd ~
sudo ./aria2.sh

上面修改的Nginx配置,已经设置Webdav参数和目录,还设置了验证用户,所以还需要创建webdavpasswd这个验证文件。如果不需要验证,可以注释这一项,就可以使用本地的Webdav客户端访问了。

设置验证用户

1
2
3
4
cat << EOF > /usr/local/nginx/webdavpasswd
#设置登录用户名和密码
admin:$(openssl passwd 123)
EOF
  • admin是设置的用户名

  • 123是设置的密码

用户名密码可自行修改,之后重新加载配置文件和重启服务:

1
2
3
/usr/local/nginx/sbin/nginx -s reload
killall nginx
/usr/local/nginx/sbin/nginx

客户端登陆

macOS和Windows的文件管理器都可以登录,但是功能不全(无法上传),这里推荐:

以上软件,个人使用免费版本就可以了:

没用过mac,我用windows演示

image-20230607013014512

nginx默认80端口,如果80端口要跑其它服务,也可以修改nginx配置文件把80端口改成其它端口,路径要加/webdav,然后一定要取消勾选地址!!!

添加系统服务

还是可以参考我这篇文章部署LNMP教程

1
vim /usr/lib/systemd/system/nginx.service
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
1
sudo vim /usr/lib/systemd/system/php-fpm.service
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=php-fpm
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/php7/sbin/php-fpm
PrivateTmp=true

[Install]
WantedBy=multi-user.target
1
sudo vim /usr/lib/systemd/system/aria2.service
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Aria2
After=network.target

[Service]
User=pi
Type=simple
ExecStart=/etc/aria2/aria2c --conf-path=/etc/aria2/aria2.conf

[Install]
WantedBy=multi-user.target

建议还是给予执行权限:

1
2
3
chmod +x nginx.service
chmod +x php-fpm.service
chmod +x aria2.service

允许开机启动并激活:

1
2
3
systemctl enable nginx.service
systemctl enable php-fpm.service
systemctl enable aria2.service

连接Aria2进程

  • 使用AriaNG连接Aria2进程

AriaNG Native

个人推荐使用AriaNG Native连接服务器和本地的Aria2进程。

我们下载对应自己电脑版本的AriaNG Native:
之后,我们设置RPC:

设置的RPC要和在linux上aria2.conf配置文件中的RPC一致(rpc-secret:设置Aria2验证远程码)

设置RPC

刷新即可连接:
连接成功

搭建网页前端——AriaNg

这个一般是部署在服务器
项目地址(GitHub): https://github.com/mayswind/AriaNg/releases

浏览器的扩展程序

这是Chrome浏览器的扩展程序:

https://chrome.google.com/webstore/detail/aria2-explorer/mpkodccbngfoacfalldjimigbofkhgjn?utm_source=ext_app_menu

我图方便用的也是这种,用的火狐浏览器

image-20230607021439381

我下载的是第一个扩展

配置

打开管理扩展,点击选项

image-20230607021742222

点击RPC服务器后再点击默认服务器

image-20230607021835467

协议选http,填入服务器IP,密钥要和在linux上aria2.conf配置文件中的RPC一致,然后点保存

image-20230607022037734

使用

固定到工具栏

image-20230607022319769

点详情就可以使用了

image-20230607022411558

image-20230607022456123

连接到Aria2后就可以新建任务,把下载链接复制过去,就能把文件下载到Linux本地上了

0%