Q's blog

一些个人文档笔记

alist

https://github.com/sbwml/luci-app-alist/releases

openwrt-22.03-aarch64_generic.tar.gz

https://mirror.ghproxy.com/https://github.com/sbwml/luci-app-alist/releases/download/v3.32.0/openwrt-22.03-aarch64_generic.tar.gz

解压后

1
2
3
opkg install alist_3.29.1-2_aarch64_generic.ipk
opkg install luci-app-alist_1.0.11_all.ipk
opkg install luci-i18n-alist-zh-cn_git-23.223.34172-ff70952_all.ipk

安装后退出重新登录

ntfs

1
2
3
需要安装这几个包
ntfs-3g
ntfs-3g-utils

qbittorrent

1
docker run -d --name=qbittorrent -e PUID=1000 -e PGID=1000 -e TZ=Etc/UTC -e WEBUI_PORT=8080 -e TORRENTING_PORT=6881 --net host -v /data/appdata/config:/config -v /data/downloads:/downloads -v /mnt:/mnt --restart unless-stopped linuxserver/qbittorrent:latest

密码在日志里

v2raya

1
2
3
4
5
6
7
8
9
10
11

docker run -d \
--restart=always \
--privileged \
--network=host \
--name v2raya \
-e V2RAYA_LOG_FILE=/tmp/v2raya.log \
-v /lib/modules:/lib/modules:ro \
-v /etc/resolv.conf:/etc/resolv.conf \
-v /etc/v2raya:/etc/v2raya \
mzz2017/v2raya:2.2.4

按版本安装

1
export NETBIRD_RELEASE=v0.24.1;bash install.sh

可行,但是国内的https无法代理(阿里云国际站的国内https可行,暂不确定是什么问题)

https://hugozhu.wordpress.com/2011/07/17/opwrt%E8%AE%BE%E7%BD%AEopenvpn%E5%B9%B6%E8%87%AA%E5%8A%A8%E7%BF%BB%E5%A2%99/

1
2
3
4
# 设置iptable
iptables -I FORWARD -o br-lan -j ACCEPT #允许br-lan端口流量被转发
iptables -I FORWARD -o wt0 -j ACCEPT #允许wt0端口流量被转发
iptables -t nat -I POSTROUTING -o wt0 -j MASQUERADE #wt0出口的流量SNAT出去

同理openvpn

1
2
3
4
# 设置iptable
iptables -I FORWARD -o br-lan -j ACCEPT #允许br-lan端口流量被转发
iptables -I FORWARD -o tap0 -j ACCEPT #允许tap0端口流量被转发
iptables -t nat -I POSTROUTING -o tap0 -j MASQUERADE #tap0出口的流量SNAT出去

如果openwrt接口页面没有显示wt0接口

需要添加一个名为wt0的接口,并且选择设备为wt0,并且在防火墙设置中分配给lan区域

自建

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
apiVersion: apps/v1
kind: Deployment
metadata:
name: vaultwarden
namespace: devops
spec:
replicas: 1
selector:
matchLabels:
app: vaultwarden
template:
metadata:
creationTimestamp: null
labels:
app: vaultwarden
spec:
volumes:
- name: data
persistentVolumeClaim:
claimName: vaultwarden-data
containers:
- name: vaultwarden
image: harbor-core.suosihulian.com/dockerhub/vaultwarden/server:1.29.2
ports:
- name: web
containerPort: 80
protocol: TCP
env:
- name: I_REALLY_WANT_VOLATILE_STORAGE
value: 'true'
- name: SIGNUPS_ALLOWED
value: 'true'
volumeMounts:
- name: data
mountPath: /data
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 10
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
strategy:
type: Recreate
revisionHistoryLimit: 10
progressDeadlineSeconds: 600

一些启动参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- SIGNUPS_ALLOWED=false #开启注册,自己注册后改成false
- SIGNUPS_DOMAINS_WHITELIST=gmail.com,qq.com #将注册限制为某些电子邮件域名
- SIGNUPS_VERIFY=true #要求新注册的用户在成功登录前进行电子邮件验证
- INVITATIONS_ALLOWED=false #禁止邀请用户
- SHOW_PASSWORD_HINT=false #关闭密码提示
- DOMAIN=https://bitwarden.xxx.com # 用于访问 Vaultwarden 实例的 URL
- SMTP_FROM=xxxx@qq.com
- SMTP_HOST=smtp.qq.com
- SMTP_PORT=465
- SMTP_SECURITY=force_tls
- SMTP_USERNAME=xxxx@qq.com
- SMTP_PASSWORD=xxxxxxxx
- ROCKET_WORKERS=10 #当 Vaultwarden 运行时,默认它会产生 2 * <cpu 核心数> 个 worker 来处理请求。在某些系统上,这可能会由于 worker 数量太少,从而导致性能降低
- LOG_FILE=/data/vaultwarden.log

备份路径为 /data

https://zhuanlan.zhihu.com/p/608118515

https://blog.csdn.net/qq_35583325/article/details/132410819

https://blog.51cto.com/kaliarch/4919159

https://blog.csdn.net/sanhewuyang/article/details/128959394

minio

创建velero凭证

1
2
3
4
5
cat > credentials-velero << EOF
[default]
aws_access_key_id = admin
aws_secret_access_key = admin123456
EOF

安装 velero

1
2
3
4
5
6
7
8
9
10
11
12
#bucket要填写在minio控制台创建的名字:data
#secret-file要指向前面创建的秘钥文件:/root/credentials-velero
#安装时velero需加上--use-restic参数表示使用restic备份pv数据
velero install \
--provider aws \
--kubeconfig ~/.kube/config \
--namespace velero-system \
--plugins velero/velero-plugin-for-aws:v1.4.1 \
--bucket data \
--secret-file /root/credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.100.225:9000

阿里云

创建velero凭证

1
2
3
4
5
cat > credentials-velero << EOF
[default]
ALIBABA_CLOUD_ACCESS_KEY_ID=xxxx
ALIBABA_CLOUD_ACCESS_KEY_SECRET=xxxxx
EOF

Policy策略

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
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:ListBuckets",
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetBucketAcl"
],
"Resource": [
"acs:oss:*:*:k8s-file-backup"
]
},
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:GetObjectAcl",
"oss:PutObject",
"oss:DeleteObject"
],
"Resource": [
"acs:oss:*:*:k8s-file-backup/*"
]
}
]
}

安装 velero

1
2
3
4
5
6
7
8
9
10
11
12
BUCKET=k8s-file-backup
REGION=cn-hangzhou
velero install \
--provider alibabacloud \
--image registry.$REGION.aliyuncs.com/acs/velero:1.4.2-2b9dce65-aliyun \
--bucket $BUCKET \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=$REGION,network=internal \
--use-restic \
--plugins registry.$REGION.aliyuncs.com/acs/velero-plugin-alibabacloud:v1.0.0-2d33b89 \
--wait

操作系统初始化配置

1
2
3
4
5
6
7
8
9
10
# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 关闭SeLinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# 设置主机名
hostnamectl set-hostname <hostname>

离线部署

下载 K3s 资源包
1
2
3
wget http://rancher-mirror.rancher.cn/k3s/v1.24.17-k3s1/k3s-airgap-images-amd64.tar.gz # 依赖包
wget http://rancher-mirror.rancher.cn/k3s/v1.24.17-k3s1/k3s # 二进制文件
wget http://rancher-mirror.rancher.cn/k3s/k3s-install.sh # 安装脚本

部署(Docker方式)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mkdir -p /var/lib/rancher/k3s/agent/images/
chmod +x k3s
chmod +x k3s-install.sh
mv k3s /usr/local/bin
mv k3s-airgap-images-amd64.tar.gz /var/lib/rancher/k3s/agent/images/
docker load -i /var/lib/rancher/k3s/agent/images/k3s-airgap-images-amd64.tar.gz

INSTALL_K3S_SKIP_START=true \
INSTALL_K3S_SKIP_ENABLE=true \
INSTALL_K3S_SKIP_DOWNLOAD=true \
K3S_NODE_NAME=k3s-node-01 \
K3S_TOKEN=vDABBTHmy2xMdkjP \
INSTALL_K3S_EXEC='server --write-kubeconfig ~/.kube/config \
--write-kubeconfig-mode 644 \
--cluster-cidr 10.20.0.0/16 \
--service-cidr 10.21.0.0/16 \
--tls-san k3s-local.suosihulian.cn \
--docker \
--node-ip 172.12.1.150' ./k3s-install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
安装时的一些参数解释
-–datastore-endpoint value:指定 etcd、Mysql、Postgres 或 Sqlite(默认)数据源名称
-–docker:用docker代替containerd
-–no-deploy value:不需要部署的组件 (有效选项: coredns, servicelb, traefik, local-storage, metrics-server)
-–write-kubeconfig value:将管理客户端的kubeconfig写入这个文件
-–write-kubeconfig-mode value:用这种模式编写kubeconfig,例如:644
-–tls-san value:在 TLS 证书中添加其他主机名或 IP 作为主题备用名称
-–node-ip value:为节点发布的 IP 地址
-–node-taint value:用一组污点注册kubelet(默认情况下,k3s 启动 master 节点也同时具有 worker 角色,是可调度的,因此可以在它们上启动工作,可以采用此方式解决)
--cluster-cidr 10.20.0.0/16
--service-cidr 10.21.0.0/16
--service-node-port-range 80-32767
--disable-helm-controller
1
2
3
4
5
6
7
8
9
10
参数对应使用示例:

export INSTALL_K3S_EXEC="server --datastore-endpoint mysql://root:root@tcp(k3s-mysql-server:3306)/k3s \
--docker \
--no-deploy traefik \
--write-kubeconfig ~/.kube/config \
--write-kubeconfig-mode 644 \
--tls-san 152.136.181.95 \
--node-ip 152.136.181.95 \
--node-taint k3s-controlplane=true:NoExecute

加入 Node 节点

下载资源

二进制文件

安装脚本

参考

https://blog.csdn.net/qq_42889280/article/details/123994851

需求:

国内机器连接时在本地或局域网实现pac策略

实现

现有国外节点,开启代理服务且需要用户名密码认证

linux 配置代理方法: https://eternalcenter.com/proxy/

1
2
3
4
5
export http_proxy=http://8.8.8.8:80
export https_proxy=http://8.8.8.8:8080
export no_proxy=”localhost,127.0.0.1,::1″

或者export http_proxy=http://admin:123@8.8.8.8:80
客户端 服务端
v2rayA Shadowsocks
privoxy v2ray
goproxy

privoxy相对简单且容易配置

v2rayA功能强大但占用资源比privoxy多

使用privoxy

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
1. 服务器安装privoxy
apt install -y privoxy
2. Privoxy 的配置文件路径为 /usr/privoxy/config,我们需要修改里面的 listen-address 选项和pac选型
actionsfile pac.action
listen-address 0.0.0.0:8118
3. 添加pac规则文件
cat /etc/privoxy/pac.action
{{alias}}
default=+forward-override{forward .}
#pac=+forward-override{forward-socks5 admin:admin@192.168.28.67:10810 .} 支持用户名密码验证
pac=+forward-override{forward-socks5 192.168.28.67:10810 .}
{default}
/
{pac} # 这个里面是走代理
.cip.cc
.baidu.com
.google.com

4. 重启 Privoxy 服务
systemctl restart privoxy.service
5. 设置代理
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy=”localhost,127.0.0.1,::1
6. 访问即可
curl cip.cc # 会显示代理服务器ip地址

使用v2rayA(客户端)

  1. 安装docker 1.20版本以上

  2. 启动容器

1
2
3
4
5
6
7
8
9
10
11

docker run -d \
--restart=always \
--privileged \
--network=host \
--name v2raya \
-e V2RAYA_LOG_FILE=/tmp/v2raya.log \
-v /lib/modules:/lib/modules:ro \
-v /etc/resolv.conf:/etc/resolv.conf \
-v /etc/v2raya:/etc/v2raya \
mzz2017/v2raya:2.2.4
  1. 访问服务器2017端口

  2. 在页面上创建上游代理服务器

image-20231020153502393

  1. 点击服务器的选择按钮,选择要使用的上游代理

  2. 点击右上角设置

    1. image-20231020153725455

    2. 配置规则分流

      image-20231020153801838

      1. 保存后,在页面左上角启动代理就会看到服务区上监听了20172的分流http端口
  3. 即可在linux上配置代理使用了

服务端部署

v2ray

1
2
https://github.com/233boy/v2ray
bash <(wget -qO- -o- https://git.io/v2ray.sh)

1
2
3
4
5
6
7
8
9
10
11
12
spring:
datasource:
hikari:
minimum-idle: 10
maximum-pool-size: 100
idle-timeout: 10000
max-lifetime: 30000
connection-timeout: 30000
login-timeout: 5
validation-timeout: 3000
connection-test-query: SELECT 1
validation-query: SELECT 1

validation-query

validation-query 是一个 SQL 查询语句,用于验证连接是否仍然有效。当连接从连接池中获取并且处于空闲状态时,Hikari 连接池会执行 validation-query 来确保连接仍然有效。如果执行 validation-query 失败或返回的结果不符合预期,连接将被标记为无效并从连接池中移除,然后将会尝试获取一个新的连接来替代。默认情况下,validation-query 被设置为 null,表示不进行连接的验证。

connection-test-query

connection-test-query 是一个可选的 SQL 查询语句,用于在连接被创建时进行测试。当连接池创建新的连接时,会在连接被返回之前执行 connection-test-query。如果执行 connection-test-query 失败或返回的结果不符合预期,连接将被标记为无效并丢弃,然后将会尝试获取一个新的连接来替代。默认情况下,connection-test-query 被设置为 null,表示不进行连接的测试。

总结起来,validation-query 在连接从连接池中获取时进行验证,而 connection-test-query 在连接被创建时进行测试。这两个属性的目的都是确保连接的有效性,并在需要时替换无效的连接。

validation-timeout 毫秒 默认5s

当连接从连接池中获取并且处于空闲状态时,连接池会执行 validation-query 来验证连接的有效性。validation-timeout 指定了执行验证查询的最大等待时间。如果在指定的超时时间内无法完成验证查询,连接将被标记为无效并从连接池中移除,然后将会尝试获取一个新的连接来替代。

0%