1panel搭建Alist

1panel搭建Alist

新建编排alist

version: '3.3'
services:
alist:
restart: always
volumes:
- './alist:/opt/alist/data'
ports:
- '5244:5244'
environment:
- PUID=0
- PGID=0
- UMASK=022
container_name: alist
image: 'xhofe/alist:main'

新建网站设置反向代理

alist的容器地址加端口即可,配置域名和https

设置管理员用户和密码

# Randomly generate a password
docker exec -it alist ./alist admin random
# Manually set a password, `NEW_PASSWORD` refers to the password you need to set
docker exec -it alist ./alist admin set NEW_PASSWORD

获取到初始密码后就可以访问域名登录了。
进入到管理界面可以重新设置用户名和密码。

使用

配置文档

https://alist.nn.ci/guide/drivers

1panel搭建FreeGPT WebUI

1panel搭建FreeGPT WebUI

在容器菜单的编排中新建编排freegpt

写入

version: "3.7"
services:
freegpt:
image: ramonvc/freegpt-webui
container_name: freegpt
ports:
- "127.0.0.1:1338:1338"
restart: unless-stopped

新建反向代理网站后访问就可以使用了

HTTP错误代码大全

HTTP错误代码大全,http网站状态码各代表了什么?

响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。

响应码分五种类型,由它们的第一位数字表示:

1.1xx:信息,请求收到,继续处理

2.2xx:成功,行为被成功地接受、理解和采纳

3.3xx:重定向,为了完成请求,必须进一步执行的动作

4.4xx:客户端错误,请求包含语法错误或者请求无法实现

5.5xx:服务器错误,服务器不能实现一种明显无效的请求

所有 HTTP 状态代码及其定义。

代码 指示

2xx 成功

200 正常;请求已完成。

201 正常;紧接 POST 命令。

202 正常;已接受用于处理,但处理尚未完成。

203 正常;部分信息 — 返回的信息只是一部分。

204 正常;无响应 — 已接收请求,但不存在要回送的信息。

3xx 重定向

301 已移动 — 请求的数据具有新的位置且更改是永久的。

302 已找到 — 请求的数据临时具有不同 URI。

303 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。

304 未修改 — 未按预期修改文档。

305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。

306 未使用 — 不再使用;保留此代码以便将来使用。

4xx 客户机中出现的错误

400 错误请求 — 请求中有语法问题,或不能满足请求。

401 未授权 — 未授权客户机访问数据。

402 需要付款 — 表示计费系统已有效。

403 禁止 — 即使有授权也不需要访问。

404 找不到 — 服务器找不到给定的资源;文档不存在。

407 代理认证请求 — 客户机首先必须使用代理认证自身。

415 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。

5xx 服务器中出现的错误

500 内部错误 — 因为意外情况,服务器不能完成请求。

501 未执行 — 服务器不支持请求的工具。

502 错误网关 — 服务器接收到来自上游服务器的无效响应。

503 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。

HTTP 401.1 – 未授权:登录失败

HTTP 401.2 – 未授权:服务器配置问题导致登录失败

HTTP 401.3 – ACL 禁止访问资源

HTTP 401.4 – 未授权:授权被筛选器拒绝

HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败

HTTP 403.1 禁止访问:禁止可执行访问

HTTP 403.2 – 禁止访问:禁止读访问

HTTP 403.3 – 禁止访问:禁止写访问

HTTP 403.4 – 禁止访问:要求 SSL

HTTP 403.5 – 禁止访问:要求 SSL 128

HTTP 403.6 – 禁止访问:IP 地址被拒绝

HTTP 403.7 – 禁止访问:要求客户证书

HTTP 403.8 – 禁止访问:禁止站点访问

HTTP 403.9 – 禁止访问:连接的用户过多

HTTP 403.10 – 禁止访问:配置无效

HTTP 403.11 – 禁止访问:密码更改

HTTP 403.12 – 禁止访问:映射器拒绝访问

HTTP 403.13 – 禁止访问:客户证书已被吊销

HTTP 403.15 – 禁止访问:客户访问许可过多

HTTP 403.16 – 禁止访问:客户证书不可信或者无效

HTTP 403.17 – 禁止访问:客户证书已经到期或者尚未生效

HTTP 404.1 – 无法找到 Web 站点

HTTP 405 – 资源被禁止

HTTP 406 – 无法接受

HTTP 410 – 永远不可用

HTTP 412 – 先决条件失败

HTTP 414 – 请求 – URI 太长

HTTP 500.100 – 内部服务器错误 – ASP 错误

HTTP 500-11 服务器关闭

HTTP 500-12 应用程序重新启动

HTTP 500-13 – 服务器太忙

HTTP 500-14 – 应用程序无效

HTTP 500-15 – 不允许请求 global.asa

Error 501 – 未实现

HTTP 502 – 网关错误

报错情况比较复杂,以下列出比较常见的几种报错内容。

403 报错:403报错是一个大类,403的报错基本上是权限问题,出现403报错时您需要检测权限配置问题。以下是关于403报错中具体报错的介绍。

403.1错误是由于执行访问被禁止而造成的。若试图从目录中执行CGI、ISAPI或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。

403.2错误是由于读取访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的HTML网页所驻留的目录仅标记为“可执行”或“脚本”权限。

403.3错误是由于写入访问被禁止而造成的。当试图将文件上载到目录或在目录中修改文件,但该目录不允许“写”访问时就会出现此种错误。

403.4错误是由于要求SSL而造成的。您必须在要查看的网页的地址中使用HTTPS。

403.5错误是由于要求使用128位加密算法的Web浏览器而造成的。如果您的浏览器不支持128位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。

403.6错误是由于IP地址被拒绝而造成的。如果服务器中有不能访问该站点的IP地址列表,并且您使用的IP地址在该列表中时您就会返回这条错误信息。

403.7错误是因为要求客户证书。当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层(SSL)客户证书时会返回此种错误。

403.8错误是由于禁止站点访问而造成的。若服务器中有不能访问该站点的DNS名称列表,而您使用的DNS名称在列表中时就会返回此种信息。请注意区别403.6与403.8错误。

403.9错误是由于连接的用户过多而造成的,由于Web服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。

403.10错误是由于无效配置而导致的错误。当试图从目录中执行CGI、ISAPI或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。

403.11错误是由于密码更改而导致无权查看页面。

403.12错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而客户证书映射没有权限访问该Web站点时就会返回映射器拒绝访问的错误。

403.13错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。

403.14错误Web服务器被配置为不列出此目录的内容,拒绝目录列表。

403.15错误是由于客户访问许可过多而造成的。当服务器超出其客户访问许可限制时会返回此条错误。

403.16错误是由于客户证书不可信或者无效而造成的。

403.17错误是由于客户证书已经到期或者尚未生效而造成的。

404 报错:404报错主要是页面显示问题或者页面的链接有问题,意味着链接指向的网页不存在,即原始网页的URL失效。当 Web服务器接到类似请求时,会返回一个404状态码,告诉浏览器已请求的资源并不存在。导致这个错误的原因一般有以下几种情况。

无法在所请求的端口上访问Web站点。

Web服务扩展锁定策略阻止本请求。

MIME映射策略阻止本请求。

网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。

跟踪访问的各类脚码或CSS文件无效但调用代码依然存在。

某个目录被直接删除(导致一段时间该目录的文件在被爬行时全部报“404 Not Found”错误)。

网页URL生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的URL地址无法访问。

502 报错:当测试访问报错为502 Bad Gateway,这是Web程序配置异常导致的。建议结合Web访问日志,检测一下Web程序配置的参数设置是否有异常。

503 报错:503报错是一种HTTP状态码,与404同属一种网页状态出错码。两者的区别是:前者是服务器出错的一种返回状态,后者是网页程序没有相关结果后返回的一种状态。503报错产生的原因有可能是以下几种情况。

网络管理员可能关闭应用程序池以执行维护。

当请求到达时应用程序池队列已满。

# 解决npm安装electron总失败的问题

总述解决办法

先运行

npm install -g cnpm --registry=https://registry.npmmirror.com

再运行

cnpm install --save-dev electron

解决过程

今天在学习electron的quick start教程时到安装electron的步骤npm install --save-dev electron总是不成功.会卡在reify:lodash: timing reifyNode:node_modules/@types/node Completed in 578ms这里。

百度和谷歌搜索,各种换源加代理都没解决。 最后找到了https://npmmirror.com/这个网站,根据指导,安装定制的cnpm管理工具npm install -g cnpm --registry=https://registry.npmmirror.com

然后执行cnpm install --save-dev electron 成功了。

日志如下:

“`text
F:\learn\my-electron-app<!–autointro–>

python快速把列表所有元素分配给不同变量

你可以使用Python的解包操作符*来快速分配列表中的元素。例如,如果你有一个列表lst,你可以使用以下代码将其所有元素分配给不同的变量:

a, b, c = lst

这将把列表中的第一个元素分配给变量a,第二个元素分配给变量b,第三个元素分配给变量c。如果你想要将剩余的元素分配给一个单独的变量,你可以使用解包操作符*。例如:

a, b, *rest = lst

这将把列表中的前两个元素分配给变量ab,并将剩余的元素作为列表分配给变量rest

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--arg1', type=int)
parser.add_argument('--arg2', type=float)
args = parser.parse_args()
print(args.arg1)
print(args.arg2)

使用argparse模块来定义两个参数arg1arg2,并将它们分别分配给整数和浮点数类型的变量。然后,我们使用parse_args()方法从文件中读取这些参数,并将它们分配给各自的变量。

关于traefik日志

traefik日志类型

注意: 在Traefik-2.X的生态里,将可观测性分为了如下几个部分,并提升到了专门的文档说明中**traefik-observability**.

  • 服务日志: Traefik进程本身相关的操作日志
  • 访问日志: 由Traefik接管的代理服务的访问日志(access.log)
  • Metrics: Traefik提供的自身详细的metrics数据
  • Tracing: Traefik也提供了追踪相关的接口,用来可视化分布式或微服务中的调用情况

服务日志

注意:默认的环境中,Traefik会将日志以text格式写入到stdout中,如果使用docker的方式部署的话,想要查看日志需要使用docker logs container_name方式来查看日志。

  • [docker](http://www.qince.net/docker "docker") logs -f [container_name / container_id]:这是Docker最常用的查看容器日志的命令,其中logs表示查看容器日志,-f表示跟踪最新日志,[container_name / container_id]指定要查看的容器名或ID。<!–autointro–>

多因素认证MFA与其标准

什么是 MFA?

Multi-Factor Authentication (MFA) 是一种简单有效的最佳安全实践方法,它能够在用户名和密码之外再额外增加一层安全保护。

启用 MFA 后,用户登录阿里云网站时,系统将要求输入用户名和密码(第一安全要素),然后要求输入来自其 MFA 设备的动态验证码(第二安全要素),双因素的安全认证将为您的账户提供更高的安全保护

MFA 设备可以基于硬件也可以基于软件,目前阿里云官网支持基于软件的虚拟 MFA。

虚拟 MFA 设备

虚拟 MFA 设备是能产生 6 位数字认证码的应用程序,遵循基于时间的一次性密码 (TOTP)标准(RFC 6238)。此类应用程序可在移动硬件设备(包括智能手机)上运行。使用虚拟 MFA 应用非常方便,但您需要理解虚拟 MFA 应用程序所具有的安全水平与硬件 MFA 设备有所差异,因为虚拟 MFA 应用程序可以在安全性较差的设备上运行(例如智能手机)。

1panel报错flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file解决

1panel安装openresty的时候报错

报错内容如下:

mount /opt/1panel/apps/openresty/openresty/conf/fastcgi-php.conf:/usr/local/openresty/nginx/conf/fastcgi-php.conf (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

解决办法

这是1panel的bug,新版已经修复。
1pctl restart重启1panel,卸载openresty后在应用列表界面点击刷新应用列表后重新安装就正常了,新版修复了这个问题。

探索过程

在找到解决办法前,找出错的原因

分析

这种错误一般由于主机上没有相应的文件,docker在创建的时候把文件路径当成文件夹创建导致docker挂在同步数据的时候文件夹和文件类型对应不上而报错。

所以准备修改文件映射方式

改变成我经常用的文件卷映射方式就可以了

services:
openresty:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
hostname: ${CONTAINER_NAME}
image: openresty/openresty:1.21.4.2-0-focal
labels:
createdBy: Apps
network_mode: host
restart: always
volumes:
- openrestyConf:/usr/local/openresty/nginx/conf
- openrestyLog:/var/log/nginx
- openrestyWww:/www
- openrestyHtml:/usr/share/nginx/html
- /etc/localtime:/etc/localtime
volumes:
openrestyConf: null
openrestyHtml: null
openrestyLog: null
openrestyWww: null
version: "3.7"

这种方式docker能正常拷贝文件

这种方式还是有点问题,因为毕竟对默认的方式做了修改,可能影响一些其他功能。

更新之前创建的yml是这样的

version: '3'
services:
openresty:
image: openresty/openresty:1.21.4.2-0-focal
container_name: ${CONTAINER_NAME}
restart: always
network_mode: host
volumes:
- ./conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
- ./conf/fastcgi_params:/usr/local/openresty/nginx/conf/fastcgi_params
- ./conf/fastcgi-php.conf:/usr/local/openresty/nginx/conf/fastcgi-php.conf
- ./log:/var/log/nginx
- ./conf/conf.d:/usr/local/openresty/nginx/conf/conf.d/
- ./www:/www
- ./root:/usr/share/nginx/html
- /etc/localtime:/etc/localtime
labels:
createdBy: "Apps"

更新之后创建的文件是这样的


services:
openresty:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
image: openresty/openresty:1.21.4.2-0-focal
labels:
createdBy: Apps
network_mode: host
restart: always
volumes:
- ./conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
- ./conf/fastcgi_params:/usr/local/openresty/nginx/conf/fastcgi_params
- ./conf/fastcgi-php.conf:/usr/local/openresty/nginx/conf/fastcgi-php.conf
- ./log:/var/log/nginx
- ./conf/conf.d:/usr/local/openresty/nginx/conf/conf.d/
- ./www:/www
<!--autointro-->

k8s部署学习

说明

下面是我学习搭建k8s的记录,并没有成功,应为我的vps配置太低了。
仅供参考学习,真正部署参考官方文档。

官方文档

https://kubernetes.io/zh-cn/docs/home/
https://github.com/guangzhengli/k8s-tutorials

安装三个组件

设置镜像库

vi /etc/yum.repos.d/kubernetes.repo
内容如下

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

会下载失败

kubelet-1.28.2-0.x86_64: Cannot download, all mirrors were already tried without success

修改镜像地址

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

安装k8s的三个工具

sudo dnf install -y kubelet kubeadm kubectl

成功,可能是国外的vps应该用国外的镜像地址
已经安装好了三个组件:kubelet kubeadm kubectl

初始化的时候报错

执行master节点初始化的时候报错,有太多不符合项目,所以用不了k8s。


[root@racknerd-d17e8e volumes]# kubeadm init
[init] Using Kubernetes version: v1.28.2
[preflight] Running pre-flight checks
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
[WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[ERROR Mem]: the system RAM (771 MB) is less than the minimum 1700 MB
[ERROR CRI]: container runtime is not running: output: time="2023-09-17T05:08:55-05:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this <!--autointro-->

yum和dnf区别

两种不同的包管理工具,用于在Linux上安装、更新和卸载软件包。

区别:

依赖关系解决:二者dnf处理依赖关系的能力更强大
性能:dnf速度更快,dnf支持并行操作,可以同时下载多个软件包
配置文件:dnf使用以.repo为后缀的配置文件;yum使用以.repo为后缀的配置文件和/etc/yum.conf的主配置文件
用户界面:dnf输出信息更清晰明了,提供更多终端输出信息。yum输出信息较少,比较简洁