Tony's Blog - 古人誠不我欺 https://iyiy.de/ 係咁先,得閑飲茶! 记录一下脚本命令 https://iyiy.de/16.html 2022-02-07T17:50:00+08:00 一键开启BBR(适用于较新的Debian、Ubuntu)echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p sysctl net.ipv4.tcp_available_congestion_control lsmod | grep bbr关闭IPV6echo -e "net.ipv6.conf.all.disable_ipv6=1\nnet.ipv6.conf.default.disable_ipv6=1\nnet.ipv6.conf.lo.disable_ipv6=1" >> /etc/sysctl.conf && sysctl -p安装BBR-OpenVZ版本wget https://github.com/tcp-nanqinlang/lkl-rinetd/releases/download/1.1.0-nocheckvirt/tcp_nanqinlang-rinetd-debianorubuntu-nocheckvirt-multiNIC.sh bash tcp_nanqinlang-rinetd-debianorubuntu-nocheckvirt-multiNIC.shLinux一键更换内核wget -N --no-check-certificate "https://git.io/kernel.sh" chmod +x kernel.sh ./kernel.shLinux一键安装常见/最新内核脚本 锐速/BBRPLUS/BBR2wget -O tcp.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh 一键更换国内源bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)安装QBittorrent 4.3.9wget https://github.com/userdocs/qbittorrent-nox-static/releases/download/release-4.3.9_v1.2.15/x86_64-qbittorrent-nox chmod +x x86_64-qbittorrent-nox ./x86_64-qbittorrent-nox ARM64wget https://github.com/userdocs/qbittorrent-nox-static/releases/download/release-4.3.9_v1.2.15/aarch64-qbittorrent-nox chmod +x aarch64-qbittorrent-nox ./aarch64-qbittorrent-noxcat << "EOF" > /etc/systemd/system/qbittorrent.service [Unit] Description=qBittorrent Daemon Service After=network.target [Service] LimitNOFILE=512000 User=root ExecStart=/root/x86_64-qbittorrent-nox ExecStop=/usr/bin/kill -w qbittorrent-nox [Install] WantedBy=multi-user.target EOFsystemctl daemon-reload systemctl enable --now qbittorrent systemctl status qbittorrent重启关闭程序ps -aux | grep qbittorrentkill -9 xxxxx开启 vnstat 支持vnstat 是Linux下一个流量统计工具,开启 vnstat 后,server 完全依赖客户机的 vnstat 数据来显示月流量和总流量,优点是重启不丢流量数据。# 在client端安装 vnstat ## Centos yum install epel-release -y yum install -y vnstat ## Ubuntu/Debian apt install -y vnstat # 修改 /etc/vnstat.conf # BandwidthDetection 0 # MaxBandwidth 0 # 默认不是 eth0 网口的需要置空 Interface 来自动选择网口 # 没报错一般不需要改 # Interface "" systemctl restart vnstat # 确保 version >= 2.6 vnstat --version # 测试查看月流量 (刚安装可能需等一小段时间来采集数据) vnstat -m vnstat --json m安装Rcloneapt-get install -y fuse3安装命令curl https://rclone.org/install.sh | bash安装完成后使用rclone config命令进入配置安装Dockercurl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker 安装Docker-Composecurl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose && docker-compose --version卸载Dockerapt-get remove docker docker-engine docker-ce docker-ce-cli containerd.io rm -fr /var/lib/docker/限制日志大小nano /etc/docker/daemon.json{ "log-driver":"json-file", "log-opts":{ "max-size" :"50m", "max-file":"1" } }删除未使用的资源docker system prune --alldocker设置容器开机自启动启动时加入--restart always如果已经启动的项目.则使用update更新docker update --restart=always 容器名或iddocker关闭容器开机自启动docker update --restart=no 容器名或id网络桥接--network=host获取镜像docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]列出镜像docker image ls获取镜像体积docker system df删除本地镜像docker image rm [选项] <镜像1> [<镜像2> ...]进入容器docker exec -it 69d1 bashDocker容器固定IP地址每次主机重启时,如果容器没有固定 IP ,容器的 IP 将由启动顺序决定。这将导致类似无法远程访问数据库等等情况时,发送错误的请求,从而使得服务提供失败。首先创建自定义网络默认的docker0网络是不支持容器固定 IP 到该网段的,必须先创建一个自定义网络,才能固定容器 IP 到这个自定义网络中。docker network create --subnet=172.20.0.0/24 test格式docker network create --subnet=[自定义网络广播地址]/[子网掩码位数] [自定义网络名]创建带IPV6的bridge网络docker network create --subnet="192.168.0.0/24" --ipv6 --subnet="2001:db8:1::/64" test查看更多参数docker network create --hlelp固定容器 IPdocker run -it --name network-test --net test --ip 172.20.0.2 ubuntu:latest /bin/bash格式docker run -it --name [容器名] --net [网络名] --ip [选定网络下固定 IP 地址] ubuntu:latest /bin/bashDocker安装QBittorrentdocker run -d \ --name=qBittorrent \ -e WEBUI_PORT=8080 \ -p 9821:6881 \ -p 9821:6881/udp \ -p 8080:8080 \ -v /date/downloads:/downloads \ -v /date/appdata/config:/config \ --restart unless-stopped \ linuxserver/qbittorrent:14.3.9Docker安装Transmissiondocker run --restart=always --name transmission -d \ -e TRANSMISSION_WEB_HOME=/transmission-web-control/ \ -e USER=moerats \ -e PASS=moerats \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v ~/transmission/config:/config \ -v ~/transmission/downloads:/downloads \ -v ~/transmission/watch:/watch \ linuxserver/transmission:version-3.00-r8Transmission跳过检验(跳检)sed -i 's/pausedi1e8/pausedi0e8/g' *.resume sed -i 's/blocks4:none12:/blocks3:all4:have3:all12:/g' *.resumeDocker安装Bitwarden(Vaultwarden)docker run --restart always -d --name vaultwarden \ -e ADMIN_TOKEN=xxxxxxxx \ -v /vw-data/:/data/ \ -p 88:80 \ -p 89:3012 \ vaultwarden/server:latest-e ADMIN_TOKEN=xxx \此行是启用管理面板,配置时可加入密码使用openssl rand -base64 48命令随机生成Nginx反向代理配置 location / { proxy_pass http://127.0.0.1:88; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /notifications/hub { proxy_pass http://127.0.0.1:89; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /notifications/hub/negotiate { proxy_pass http://127.0.0.1:88; }Docker安装mynodequery创建文本/home/mynodequery/appsettings.json加入内容{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "MySql": { "ConnectionString": "" }, "AllowedHosts": "*", "Installed": "false", "ReadNodeIpHeaderKey": "X-Real-IP" }启动容器docker run -d --name=mynodequery -p 5000:5000 -v /home/mynodequery/appsettings.json:/app/appsettings.json jaydenlee2019/mynodequery:latestDocker启用IPV6编辑 /etc/docker/daemon.json 加上以下内容。{ "ipv6": true, "fixed-cidr-v6": "fd00::/80", "experimental": true, "ip6tables": true }重启Docker Enginesystemctl restart docker测试docker run --rm -it busybox ping -6 -c4 ipv6-test.com docker run --rm -it busybox ifconfigemby开心版docker run -d -e PUID=0 -e PGID=0 -v /home/gd:/data -v /home/emby:/config -p 8096:8096 -p 8920:8920 --name=emby --restart=always amilys/embyserverAria2一键脚本为了确保能正常使用,请先安装基础组件wget curl ca-certificateswget -N git.io/aria2.sh && chmod +x aria2.sh综合工具箱 集成了很多脚本wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh测速脚本wget -qO- bench.sh | bashwget -qO- git.io/superbench.sh | bashbash <(curl -Lso- https://git.io/superspeed_uxh)bash <(curl -Lso- https://git.io/J1SEh)bash <(curl -Lso- https://bench.im/hyperspeed)bash <(wget -qO- https://down.vpsaff.net/linux/speedtest/superbench.sh) --no-geekbenchcurl -sL network-speed.xyz | bash纯IPV6curl -sL https://raw.githubusercontent.com/teddysun/across/master/bench.sh | bashSpeedtest CLICentoscurl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | bash yum install speedtestUbuntu/Debianapt-get install curl curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash apt-get install speedtest回程测试wget -qO- git.io/besttrace | bashwget -N --no-check-certificate https://raw.githubusercontent.com/Chennhaoo/Shell_Bash/master/AutoTrace.sh && chmod +x AutoTrace.sh && bash AutoTrace.shbash <(curl -Ls https://raw.githubusercontent.com/sjlleo/nexttrace/main/nt_install.sh)wget -O jcnf.sh https://raw.githubusercontent.com/Netflixxp/jcnfbesttrace/main/jcnf.sh bash jcnf.shcurl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh|bashYABS跑分curl -sL yabs.sh | bashGB5curl -sL yabs.sh | bash -s -- -fi5GB6curl -sL yabs.sh | bash -s -- -fi测试硬盘性能dd bs=64k count=4k if=/dev/zero of=test oflag=dsync测试IP质量bash <(wget -qO- --no-check-certificate https://gitlab.com/spiritysdx/za/-/raw/main/qzcheck.sh)流媒体解锁检测wget -O nf https://github.com/sjlleo/netflix-verify/releases/download/v3.1.0/nf_linux_amd64 && chmod +x nf && ./nf通过代理执行./nf -proxy socks5://127.0.0.1:30000bash <(curl -L -s check.unlock.media)bash <(curl -L -s https://github.com/1-stream/RegionRestrictionCheck/raw/main/check.sh)端口转发iptables端口转发wget --no-check-certificate -qO natcfg.sh https://raw.githubusercontent.com/arloor/iptablesUtils/master/natcfg.sh && bash natcfg.shGost一键脚本wget --no-check-certificate -O gost.sh https://raw.githubusercontent.com/KANIKIG/Multi-EasyGost/master/gost.sh && chmod +x gost.sh && ./gost.shReaim一键脚本wget -N --no-check-certificate https://git.io/realm.sh && chmod +x realm.sh && ./realm.shTermux高级终端一键安装Linux脚本. <(curl -L git.io/linux.sh)一键网络重装 DD脚本wget --no-check-certificate -O NewReinstall.sh https://raw.githubusercontent.com/fcurrk/reinstall/master/NewReinstall.sh && chmod a+x NewReinstall.sh && bash NewReinstall.sh新版DD脚本 支持保留IPV6配置wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh bash InstallNET.sh -debian 11 -pwd passwordbin456789curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh萌咖DD脚本bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 11 -v 64 -p "自定义root密码" -port "自定义ssh端口"默认root密码MoeClub.org星尘IPV6 DDbash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -a -d 11 -v 64 -p "password" --ip-addr 2001:bcc:ccc:111::1/64 --ip-gate 2001:bcc:ccc:111:: --ip-mask 255.255.255.254 --ip-dns 2001:67c:2b0::4OpenVZ/LXC伪DDwget -qO OsMutation.sh https://raw.githubusercontent.com/LloydAsp/OsMutation/main/OsMutation.sh && chmod u+x OsMutation.sh && ./OsMutation.sh一键输出IP地址网关掩码MAINIP=$(ip route get 1 | awk -F 'src ' '{print $2}' | awk '{print $1}') GATEWAYIP=$(ip route | grep default | awk '{print $3}' | head -1) SUBNET=$(ip -o -f inet addr show | awk '/scope global/{sub(/[^.]+\//,"0/",$4);print $4}' | head -1 | awk -F '/' '{print $2}') value=$(( 0xffffffff ^ ((1 << (32 - $SUBNET)) - 1) )) NETMASK="$(( (value >> 24) & 0xff )).$(( (value >> 16) & 0xff )).$(( (value >> 8) & 0xff )).$(( value & 0xff ))" echo "--ip-addr $MAINIP --ip-gate $GATEWAYIP --ip-mask $NETMASK"一键修改默认SSH端口sed -i 's/#Port\ 22/Port\ 2222/' /etc/ssh/sshd_config && systemctl reload sshSSH禁用密钥使用密码登录#!/bin/bash sed -i 's/^.*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config sed -i 's/^.*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config echo root:yourRootPasswd | chpasswd service ssh restartSSH使用密钥登录并禁止密码登录创建公私钥ssh-keygen -t rsased -i "s/^.*PasswordAuthentication.*/PasswordAuthentication no/g" /etc/ssh/sshd_config sed -i "s/^.*RSAAuthentication.*/RSAAuthentication yes/g" /etc/ssh/sshd_config sed -i "s/^.*PubkeyAuthentication.*/PubkeyAuthentication yes/g" /etc/ssh/sshd_config sed -i "s/^.*AuthorizedKeysFile.*/AuthorizedKeysFile .ssh\/authorized_keys/g" /etc/ssh/sshd_config service ssh restart保持SSH服务连接不断开修改~/.ssh/configServerAliveInterval 10 ServerAliveCountMax 5设置IPV4优先或者IPV6优先/etc/gai.conf中取消这一行配置的注释是IPV4优先,否则是IPV6优先(默认)precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 100一键清理 /var/log/目录下的过期日志find /var/log/ -name "*.1" -exec rm -rf {} \; && find /var/log/ -name "*.log.1" -exec rm -rf {} \; && find /var/log/ -name "*.gz" -exec rm -rf {} \;列出已安装的包,按大小排序dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n'|grep -v deinstall|sort -n|awk '{print $1" "$2}'一键开启Swap脚本wget --no-check-certificate https://dl.233.mba/d/sh/swap.sh && bash swap.sh设置时区/时间方法一:timedatectl set-timezone Asia/Shanghai date -s "2022-12-11 16:34:50"修改时间为24小时编辑/etc/default/locale添加一行LC_TIME=en_DK.UTF-8方法二:tzselect选择亚洲 Asia,确认之后选择中国(China),最后选择北京(Beijing),选择1复制文件到/etc目录下cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime同步硬件时间hwclock --systohc查看端口占用情况netstat -tunlp | grep 端口号查看当前所有tcp端口netstat -ntlp查看当前所有udp端口netstat -nulp-t (tcp) 仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化为数字-l 仅列出在Listen(监听)的服务状态-p 显示建立相关链接的程序名Debian/Ubuntu无netstat命令解决方案net-tools包含arp, ifconfig, netstat, rarp, nameif and route命令apt-get install net-toolsapt-get install iputils-pingdnsutils包中包含了nslookup工具以及其他与 DNS 相关的实用程序apt-get install dnsutils调整系统分区检查分区信息e2fsck -f /dev/sda1 调整分区大小resize2fs /dev/sda1EXT4释放保留分区(默认5%)tune2fs -m 0 /dev/sda1WARP功能最多最强大的WARP脚本wget -N https://gitlab.com/fscarmen/warp/-/raw/main/warp-go.sh && bash warp-go.shwget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh解决 screen 中文乱码找到screenrc文件首先输入whereis screenrc查看文件的路径编辑文件,加入以下内容defutf8 on defencoding utf8 encoding UTF-8 UTF-8更改主机名hostnamectl set-hostname xxx查看是否生效hostnamectl剑皇脚本wget https://github.com/maintell/webBenchmark/releases/download/0.6/webBenchmark_linux_x64 chmod +x webBenchmark_linux_x64 ./webBenchmark_linux_x64 -c 32 -s https://target.urlvps2archwget http://tinyurl.com/vps2arch chmod +x vps2arch ./vps2archwget https://felixc.at/vps2arch chmod +x vps2arch ./vps2archLinux下解压命令、压缩命令.tar解包tar xvf FileName.tar打包tar cvf FileName.tar DirName.gz解压gunzip FileName.gzgzip -d FileName.gz压缩gzip FileNametar.gz 和 .tgz压缩tar zcvf FileName.tar.gz ./storetar zcvf FileName.tar.gz DirName解压tar zvxf name.tar.gz tar zvxf name.tar.gz -C 输出目录-c 压缩-x 解压-z 支持gzip解压文件-v 显示操作过程-f 使用档名.zip解压unzip FileName.zip压缩zip FileName.zip DirName文件解压到指定的目录下,需要用到-d参数。unzip -d /DirName FileName.zip解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数unzip -n -d /DirName FileName.zip只看一下zip压缩包中包含哪些文件,不进行解压缩unzip -l FileName.zip查看显示的文件列表还包含压缩比率unzip -v FileName.zip检查zip文件是否损坏unzip -t FileName.zip.rar解压rar x FileName.rar压缩rar a FileName.rar DirName rclone挂载Google Drive之emby优化 https://iyiy.de/166.html 2023-11-22T01:09:00+08:00 安装fuse3apt install fuse3创建挂载目录mkdir /home/gd添加挂载守护进程cat > /etc/systemd/system/gd.service <<EOF [Unit] Description=Rclone AssertPathIsDirectory=/home/gd After=network-online.target [Service] Type=notify ExecStart=/usr/bin/rclone mount gd1: /home/gd --use-mmap --umask 000 --default-permissions --no-check-certificate --allow-other --allow-non-empty --dir-cache-time 10m --vfs-cache-max-age 24h --vfs-cache-poll-interval 1m --cache-dir=/home/cache --vfs-cache-mode full --buffer-size 256M --vfs-read-ahead 512M --vfs-read-chunk-size 32M --vfs-read-chunk-size-limit 128M --vfs-cache-max-size 50G --vfs-cache-min-free-space 10G --low-level-retries 200 --config /root/.config/rclone/rclone.conf ExecStop=/bin/fusermount -qzu /home/gd Restart=on-abort User=root [Install] WantedBy=default.target EOF启动服务systemctl enable --now gd && systemctl status gd元数据和图片放在网盘上 加载速度会比放在本地慢一些 所以我们可以使用OverlayFS 实现图片和元数据文件储存到本地OverlayFS 是 Linux 的一个文件系统,用途很广泛,比如 openwrt、docker 的文件系统就基于这个。简单讲一下他的作用。OverlayFS 可以多个目录进行合并成一个新的目录,比如a、b两个目录里分别有 1.mp4 和 1.nfo 文件,那么他们合并成的新目录就同时包含了1.mp4和1.nfo两个文件。另外 OverlayFS 也有层级的概念,如果a、b目录有同名的文件,那么更高层级的目录的文件会优先被访问。引用自rclone挂载Google群友盘 + OverlayFS + tmm + kodi打造家庭媒体中心创建必要目录根据自己实际情况更改mkdir /home/gd-upper /home/gd-work /home/gd2upper:作为上层目录,对谷歌云的读写都会保存到这里,而不会真正写入谷歌云的挂载点work: 存储临时文件gd2: 合并出的新目录*挂载 OverlayFSmount -t overlay overlay -o lowerdir=/home/gd,upperdir=/home/gd-upper,workdir=/home/gd-work /home/gd2lowerdir=/home/gd:代表底层目录,写操作不会实际写到这里,读操作优先读取上层目录,读不到的才会读这里(比如视频文件)upperdir=/home/gd-upper:代表上层目录,读写优先对这里操作,会保存nfo、poster等文件workdir=/home/gd-work:临时目录,系统需要的,我们不用管他的作用/home/gd2:合并出的新目录,我们后续只对他进行访问*复制元数据/图片到本地cat > emby.txt <<EOF + *.jpg + *.png + *.nfo - * EOF假设EMBY文件放在Google Drive根目录的EMBY目录上rclone copy -P gd:EMBY /home/gd-upper/EMBY --filter-from emby.txt --transfers=100NGINX反向代理 #PROXY-START/ client_max_body_size 5000M; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For '$proxy_add_x_forwarded_for'; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions; proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key; proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version; proxy_cache off; proxy_redirect off; proxy_buffering off; location / { proxy_pass http://127.0.0.1:8096; proxy_set_header X-Forwarded-For $remote_addr; proxy_ssl_verify off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } location ~* \.(gif|png|jpg|css|js|woff|woff2)$ { proxy_pass http://127.0.0.1:8096; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; expires 12h;#图片缓存浏览器过期时间 } #PROXY-END/ 记录下Caddy反代CloudFlare网站和替换文本 https://iyiy.de/165.html 2023-11-02T01:02:00+08:00 安装caddypacman -S caddyDebian安装apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list apt update apt install caddy添加 http.handlers.replace_response模块caddy add-package github.com/caddyserver/replace-response检查http.handlers.replace_response模块是否安装完成[root@archlinux ~]# caddy list-modules | grep http.handlers.replace_response http.handlers.replace_responseCaddy目录[root@archlinux caddy]# tree . ├── Caddyfile └── conf.d修改默认 Caddyfile配置文件 注册 replace指令nano /etc/caddy/Caddyfile{ order replace after encode }添加网站配置nano /etc/caddy/conf.d/example.comexample.com { reverse_proxy https://example.com { header_up Host {upstream_hostport} header_up Accept-Encoding identity } replace aaa bbb }重载caddy配置systemctl reload caddy参考https://caddyserver.com/docs/caddyfile/directives/reverse_proxyhttps://github.com/caddyserver/replace-response 使用Cloudflare WARP给VPS添加IPv4/IPv6 双栈网络出口 https://iyiy.de/125.html 2023-06-12T15:11:00+08:00 安装wireguard等依赖Debianapt update -y && apt install wireguard sudo curl vim openresolv -yArch Linuxyay -S wireguard-tools openresolv wgcf vim dnsutils linux-headers --needed安装wgcfDebiancurl -fsSL git.io/wgcf.sh | sudo bash注册账户wgcf register生成配置文件wgcf generate编辑配置文件vim wgcf-profile.conf配置文件样式[Interface] PrivateKey = 这里会自动生成 Address = 172.16.0.2/32 Address = 这里会自动生成 DNS = 8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844 MTU = 1280 [Peer] PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= AllowedIPs = 0.0.0.0/0 AllowedIPs = ::/0 Endpoint = engage.cloudflareclient.com:2408更改engage.cloudflareclient.com为IPV4/6地址(如双栈网络接入忽略)[root@archlinux ~]# nslookup engage.cloudflareclient.com Server: 1.1.1.1 Address: 1.1.1.1#53 Non-authoritative answer: Name: engage.cloudflareclient.com Address: 162.159.192.1 Name: engage.cloudflareclient.com Address: 2606:4700:d0::a29f:c001接入WARP IPV4删除配置文件中的AllowedIPs = ::/0接入WARP IPV6删除配置文件中的AllowedIPs = 0.0.0.0/0启动wireguard复制配置文件到wireguard文件夹cp wgcf-profile.conf /etc/wireguard/wgcf.conf启动 wireguardwg-quick up wgcf检查网络连通# IPv4 Only VPS curl -6 ip.p3terx.com # IPv6 Only VPS curl -4 ip.p3terx.com关闭wgcf接口wg-quick down wgcf将wireguard启用守护进程systemctl start wg-quick@wgcf systemctl enable wg-quick@wgcf参考P3terx企鹅大大 Scaleway Stardust(星尘)实例使用netboot.xyz重装系统 https://iyiy.de/46.html 2023-03-01T01:07:00+08:00 首先 在网页上或使用官方CLI连接串行控制台官方Github仓库在安装配置好CLI的情况下,使用这个命令连接控制台scw instance server console 实例id zone=区域然后将 VM 重新启动到 UEFI设置 (机器能正常启动的情况下)systemctl reboot --firmware然后就会跳转到这个界面选择Device Manager-> Network Device List->HTTP Boot Configuration->Boot URI输入地址http://boot.netboot.xyz/ipxe/netboot.xyz.efi保存后返回主页选择Boot Manager UEFI HTTP然后就会进入netboot.xyz界面了转到Utilities (UEFI)->Kernel cmdline params并输入console=ttyS0修改好之后按两下esc返回主界面使用第二个选项进行安装系统下面说一下 进不了系统的情况下如何重装首先在后台把机子重启到救援模式然后把硬盘设置成启动项进入救援模式下,下载netboot的iso文件wget https://boot.netboot.xyz/ipxe/netboot.xyz.iso直接把镜像d进硬盘,启动就能看到netboot界面了[font color="紅"]最后说明,此方法需在有IPV4的环境下进行 安装好系统之后可以配置好网络 再把IPV4删除[/font]题外Sacleway-cli 用法创建服务器scw instance server create type=STARDUST1-S zone=fr-par-1 image=debian_bullseye root-volume=l:10G name=Denian ip=none ipv6=true project-id=UUID查看服务器,获取机器的UUIDscw instance server list开机scw instance server start UUID自动开机脚本来源#!/usr/bin/env bash MACHINE_UUID="" BOT_API="" CHAT_ID="" STAR_MACHINE() { scw instance server start "${MACHINE_UUID}" } SEND_NOTIFY(){ curl -X POST \ -H 'Content-Type: application/json' \ -d '{"chat_id": '${CHAT_ID}', "text": "Your Sacleway machine is opening now."}' \ https://api.telegram.org/bot${BOT_API}/sendMessage } while true; do STATUS=$(scw instance server list | sed -n '2p' | awk '{print $4}') if [[ ${STATUS} == "starting" ]]; then echo "Your server status is ${STATUS}" echo "Starting...Wait for 60 seconds to check again..." sleep 60 elif [[ ${STATUS} == "archived" ]]; then echo "Your server status is ${STATUS}" echo "Now we start your machine..." STAR_MACHINE sleep 60 else SEND_NOTIFY break fi done 记录下LNMP环境下使用CDN后获取访客真实IP的方法 https://iyiy.de/27.html 2023-01-29T13:38:00+08:00 获取访客真实IP在lnmp安装目录/root/lnmp下找到lnmp.conf并编辑Nginx_Modules_OptionsNginx_Modules_Options='--with-http_realip_module'保存后执行./upgrade.sh nginx升级下Nginx。找到网站配置文件,即/usr/local/nginx/conf/vhost/xx.com.conf并编辑。在任意一个location里加入以下参数:set_real_ip_from 添加CDN IP段 set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; real_ip_recursive on;CloudFlare IP段#Cloudflare set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 172.64.0.0/13; set_real_ip_from 131.0.72.0/22; set_real_ip_from 2400:cb00::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2a06:98c0::/29; set_real_ip_from 2c0f:f248::/32; # use any of the following two #real_ip_header CF-Connecting-IP; real_ip_header X-Forwarded-For; real_ip_recursive on;编辑伪静态文件 直接插入 自动引用到所有vhost config上/usr/local/nginx/conf/rewrite/none.conf反向代理配置 location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; 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; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }关闭防跨站sed -i 's/^fastcgi_param PHP_ADMIN_VALUE/#fastcgi_param PHP_ADMIN_VALUE/g' /usr/local/nginx/conf/fastcgi.conf启用被禁用的函数sed -i 's/,system//g' /usr/local/php/etc/php.ini sed -i 's/,proc_open//g' /usr/local/php/etc/php.ini sed -i 's/,proc_get_status//g' /usr/local/php/etc/php.ini 记录一下 Rclone 常用命令参数 https://iyiy.de/26.html 2022-12-19T00:11:00+08:00 设置命令说明rclone config添加、删除、管理网盘等操作rclone config file显示配置文件的路径rclone config show显示配置文件信息root@SunPma:~# rclone config Current remotes: Name Type ==== ==== DB dropbox GD drive e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q>语法# 本地到网盘 rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数] # 网盘到本地 rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数] # 网盘到网盘 rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数] # [参数]为可选项示例# 复制到网盘,并显示实时传输进度,设置并行上传数为8 rclone copy -P /home/SunPma GD:/home/SunPma --transfers=8 # 如果需要服务端对服务端的传输可加以下参数(不消耗本地流量) rclone copy 配置名称:网盘路径 配置名称:网盘路径 --drive-server-side-across-configs功能命令说明rclone copy复制rclone move移动,如果要在移动后删除空源目录,加上 --delete-empty-src-dirs 参数rclone sync同步:将源目录同步到目标目录,只更改目标目录rclone size查看网盘文件占用大小rclone delete删除路径下的文件内容rclone purge删除路径及其所有文件内容rclone mkdir创建目录rclone rmdir删除目录rclone rmdirs删除指定环境下的空目录。如果加上 --leave-root 参数,则不会删除根目录rclone check检查源和目的地址数据是否匹配rclone ls列出指定路径下的所有的文件以及文件大小和路径rclone lsl比上面多一个显示上传时间rclone lsd列出指定路径下的目录rclone lsf列出指定路径下的目录和文件参数命令说明-n = --dry-run测试运行,查看Rclon在实际运行中会进行哪些操作-P = --progress显示实时传输进度,500mS刷新一次,否则默认1分钟刷新一次--cache-chunk-size 5M块的大小,默认5M越大上传越快,占用内存越多,太大可能会导致进程中断--onedrive-chunk-size 100M提高OneDrive上传速度适用于G口宽带服务器(默认为320KB)--drive-chunk-size 64M提高Google Drive上传速度适用于G口宽带服务器(默认为8M)--cache-chunk-total-size SizeSuffix块可以在本地磁盘上占用的总大小,默认10G--transfers=N并行文件数,默认为4--config string指定配置文件路径,string为配置文件路径--ignore-errors跳过错误--size-only根据文件大小校验,不校验hash--drive-server-side-across-configs服务端对服务端传输日志有4个级别的日志记录:ERROR NOTICE INFO DEBUG默认情况下Rclon将生成ERROR NOTICE日志命令说明-qrclone将仅生成ERROR消息-vrclone将生成ERROR NOTICE INFO 消息-vvrclone 将生成ERROR NOTICE INFO DEBUG 消息--log-level LEVEL标志控制日志级别输出日志到文件使用--log-file=FILE选项rclone会将Error Info Debug消息以及标准错误重定向到FILE这里的FILE是你指定的日志文件路径例如rclone sync -v Onedrive:/DRIVEX Gdrive:/DRIVEX > "~/DRIVEX.log" 2>&1过滤命令说明--exclude排除文件或目录--include包含文件或目录--filter文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以+开头,排除规则以-开头文件类型过滤例如--exclude "*.bak" --filter "- *.bak"排除所有bak文件例如--include "*.{png,jpg}" --filter "+ *.{png,jpg}"包含所有png和jpg文件,排除其他文件例如--delete-excluded删除排除的文件。需配合过滤参数使用,否则无效目录过滤目录过滤需要在目录名称后面加上/否则会被当做文件进行匹配以/开头只会匹配根目录(指定目录下),否则匹配所目录,这同样适用于文件--exclude ".git/"排除所有目录下的.git目录--exclude "/.git/"只排除根目录下的.git目录--exclude "{Video,Software}/"排除所有目录下的Video和Software目录--exclude "/{Video,Software}/"只排除根目录下的Video和Software目录--include "/{Video,Software}/**"仅包含根目录下的Video和Software目录的所有内容大小过滤默认大小单位为kBytes但可以使用k M或G后缀--min-size过滤小于指定大小的文件。比如--min-size 50表示不会传输小于50k的文件。--max-size过滤大于指定大小的文件。比如--max-size 1G表示不会传输大于1G的文件。实际使用中发现大小过滤两个选项不能同时使用过滤规则文件--filter-from <规则文件>从文件添加包含/排除规则比如--filter-from filter-file.txt过滤规则文件示例:- secret*.jpg + *.jpg + *.png + file2.avi - /dir/Trash/** + /dir/** - *环境变量rclone中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除--前缀,更改-为_大写并添加前缀RCLONE_环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值。比如设置最小上传大小--min-size 50使用环境变量是RCLONE_MIN_SIZE=50当环境变量设置后,在命令行中使用--min-size 100那么此时环境变量的值就会被覆盖常用环境变量命令说明RCLONE_CONFIG自定义配置文件路径RCLONE_CONFIG_PASS若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件RCLONE_RETRIES上传失败重试次数,默认 3 次RCLONE_RETRIES_SLEEP上传失败重试等待时间,默认禁用,单位s、m、h分别代表秒、分钟、小时CLONE_TRANSFERS并行上传文件数RCLONE_CACHE_CHUNK_SIZE块的大小,默认5MRCLONE_CACHE_CHUNK_TOTAL_SIZE块可以在本地磁盘上占用的总大小,默认10GRCLONE_IGNORE_ERRORS=true跳过错误大部分内容拷贝自sunpma 简记一下Arch Linux安装部署 https://iyiy.de/25.html 2022-09-30T19:05:00+08:00 U盘引导进入系统之后停止reflector服务 禁止自动更新服务器列表systemctl stop reflector.service连接网络有线连接 若是连接到已经有网的路由器可以自动联网如无法连接上网络可尝试使用dhcpcd命令无线连接(WIFI)iwctl列出无线网卡设备device list 用wlan0网卡扫描网络station wlan0 scan列出网络station wlan0 get-networks连接网络网络SSID不支持中文station wlan0 connect 无线网名字输入密码,连接成功后使用exit或者quit同步网络时间timedatectl set-ntp true修改软件源把中国的服务器排在前列nano /etc/pacman.d/mirrorlistServer = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch 刷新软件包pacman -Sy安装ssh远程软件pacman -S openssh启用sshd服务systemctl start sshdpasswd设置当前root账户的密码ip a查看ip地址局域网内使用其他设备连接SSH操作更方便磁盘分区lsblk显示当前磁盘和分区情况cfdisk /dev/nvme0n1系统格式可使用Btrfs或者EXT4首先创建 Swap 分区。选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建 swap 分区(类似 Windows 的交换文件)我们再只需要一个分区即可(因为使用 Btrfs 文件系统,所以根目录和用户主目录在一个分区上),所以类似的:选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建分区分区类型默认即可,无需更改。接下来选中操作 [Write] 并回车 Enter > 输入 yes 并回车 Enter 确认分区操作选中操作 [Quit] 并回车 Enter 以退出 cfdisk 分区工具EFI引导分区可使用Windows的ESP分区。如没有可自行创建300MB的EFI引导分区格式化 Swap 分区mkswap /dev/nvme0n1px格式化 Btrfs 分区或者EXT4(二选一)mkfs.btrfs -L Arch /dev/nvme0n1pxmkfs.ext4 /dev/nvme0n1px挂载分区Btrfs文件格式将 Btrfs 分区挂载到 /mnt 下mount -t btrfs -o compress=zstd /dev/nvme0n1px /mnt创建 Btrfs 子卷通过以下命令创建两个 Btrfs 子卷,之后将分别挂载到 / 根目录和 /home 用户主目录:btrfs subvolume create /mnt/@ btrfs subvolume create /mnt/@home复查子卷情况btrfs subvolume list -p /mnt子卷创建好后,我们需要将 /mnt 卸载掉,以挂载子卷umount /mnt挂载/目录mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1px /mnt创建home目录mkdir /mnt/home挂载/home目录mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1px /mnt/home创建 /boot/efi 目录mkdir -p /mnt/boot/efi 挂载 /boot/efi 目录mount /dev/nvme0n1px /mnt/boot/efiEXT4文件格式mount /dev/nvme0n1px /mnt创建 /boot/efi 目录mkdir -p /mnt/boot/efi 挂载 /boot/efi 目录(使用Windows系统ESP分区)mount /dev/nvme0n1px /mnt/boot/efi挂载交换分区swapon /dev/nvme0n1px安装系统往/mnt目录里安装系统其中最基础的四个包是base base-devel linux linux-firmwarepacstrap /mnt base base-devel linux linux-firmware dhcpcd iwd vim sudo bash-completion nano net-tools openssh man git wget zsh fish生成 fstab 文件genfstab -U /mnt >> /mnt/etc/fstab复查一下 /mnt/etc/fstab 确保没有错误:cat /mnt/etc/fstabchange root使用以下命令把系统环境切换到新系统下:arch-chroot /mnt设置主机名与时区首先在 /etc/hostname 设置主机名:nano /etc/hostname然后在 /etc/hosts 设置与其匹配的条目:127.0.0.1 localhost ::1 localhost 127.0.1.1 myarch.localdomain myarch随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime硬件时间设置hwclock --systohc设置 LocaleLocale 决定了软件使用的语言、书写习惯和字符集。编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):nano /etc/locale.gen然后使用如下命令生成 localelocale-gen向 /etc/locale.conf 输入内容:echo 'LANG=en_US.UTF-8' > /etc/locale.conf为 root 用户设置密码passwd root开启 32 位支持库与 Arch Linux 中文社区仓库(archlinuxcn)nano /etc/pacman.confctrl+w 搜索Color注意大小写 删除#号系统报错会彩色显示 方便用户排查[multilib]这两行前面的#号删除再手动添加[archlinuxcn]源我这里以中科大和网易开源镜像站为例其他地址 如清华 阿里云 或者你所在的高校有archlinuxcn源 可以自行添加[archlinuxcn] Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch官方源[archlinuxcn] Server = https://repo.archlinuxcn.org/$arch添加非 root 用户新建用户名arch 可自行更改用户名useradd -m -G wheel -s /bin/bash arch设置arch用户名的密码passwd arch编辑arch用户的权限EDITOR=nano visudoctrl+w搜索%wheel找到# %wheel ALL=(ALL:ALL)ALL删除前面的#号安装CPU微码和引导软件通过以下命令安装对应芯片制造商的微码:intel-ucode # Intel amd-ucode # AMD os-prober #查找已安装的操作系统 pacman -S intel-ucode grub efibootmgr os-prober安装 GRUB 到 EFI 分区:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Arch接下来 编辑 /etc/default/grub 文件:nano /etc/default/grub进行如下修改:去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数把 loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错加入 nowatchdog 参数,这可以显著提高开关机速度为了引导 win10,则还需要添加新的一行 GRUB_DISABLE_OS_PROBER=false# GRUB boot loader configuration GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Arch" GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog" GRUB_CMDLINE_LINUX="" GRUB_DISABLE_OS_PROBER=false ...最后生成 GRUB 所需的配置文件:grub-mkconfig -o /boot/grub/grub.cfg如遇到报错或无法引导Windows分区可使用下面的命令sudo LANG=C grub-mkconfig -o /boot/grub/grub.cfg安装KDE桌面 字体 浏览器等软件包pacman -S plasma-meta konsole dolphin # plasma-meta 元软件包、konsole 终端模拟器和 dolphin 文件管理器pacman -S ntfs-3g **可以读取ntfs格式磁盘 ** pacman -S os-prober **查找已安装的操作系统 **中文字体 这里如果不安装 之后设置语言的时候都是框框不好辨认pacman -S adobe-source-han-serif-cn-fonts adobe-source-han-sans-cn-fonts wqy-zenhei wqy-microhei noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-dejavu 安装火狐浏览器等软件pacman -S firefox ark gwenview packagekit-qt5 packagekit appstream-qt appstream man neofetch net-tools networkmanager openssh git wget pamac开机启动 登陆管理器 网络管理 SSHsystemctl enable NetworkManager sddm sshd立即启动登陆管理器systemctl start sddm安装完成卸载本机的/mnt目录umount -R /mnt重启reboot输入密码登录进桌面环境安装AUR助手 前提是开启AUR中国源sudo pacman -S archlinuxcn-keyring && sudo pacman -S yay启动蓝牙(若有)sudo pacman -S bluez bluez-utils sudo systemctl enable --now bluetooth安装音频驱动sudo pacman -S alsa-utils pulseaudio pulseaudio-alsa pulseaudio-bluetooth安装显卡驱动Intel 核芯显卡sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel不建议安装 xf86-video-intel,而应使用 Xorg 的 modesetting 驱动(也就是什么都不用装的意思)注意,只有 Intel HD 4000 及以上的核显才支持 vulkan。不建议安装 xf86-video-intel,而应使用 Xorg 的 modesetting 驱动(也就是什么都不用装的意思)注意,只有 Intel HD 4000 及以上的核显才支持 vulkan。题外如果太久没更新 密钥环失效sudo pacman -Sy archlinux-keyringpacman-key --refresh-keys题外更换LTS内核pacman -S linux-lts linux-lts-headers pacman -Rsdd linux grub-mkconfig -o /boot/grub/grub.cfg开启BBRecho "tcp_bbr" > /etc/modules-load.d/modules.conf echo "net.core.default_qdisc=fq" > /etc/sysctl.d/bbr.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.d/bbr.conf sysctl --system校验sysctl net.ipv4.tcp_congestion_control安装cron定时任务pacman -S cronie默认 editor 为 vi, 在 /etc/environment 下配置环境变量EDITOR=nano清理系统日志文件 保留的最新日志文件大小为100Mjournalctl --vacuum-size=100M设置系统日志只保留100Mnano /etc/systemd/journald.conf修改#SystemMaxUse=为SystemMaxUse=100M重新加载 systemd-journald 服务以应用更改systemctl restart systemd-journald 简记一下手动编译TWRP https://iyiy.de/23.html 2022-09-12T15:49:00+08:00 操作系统推荐使用Ubuntu(实体机安装或WSL皆可)磁盘可用空间>50G项目地址推荐使用twrp-9.0分支进行编译WSL配置代理(非必选)配置http/httpsexport all_proxy="http://${hostip}:{port}"配置socks5export all_proxy="socks5://${hostip}:{port}"使用 curl 即可验证是否代理成功,如下有返回值说明成功➜ ~curl google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>301 Moved</TITLE></HEAD><BODY><H1>301 Moved</H1>The document has moved<A HREF="http://www.google.com/">here</A>.</BODY></HTML>可以将上面命令选择你需要的添加到 .bashrc ,这样会让代理一直开启。安装编译时所需的依赖sudo apt updatesudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev git安装repomkdir -p ~/bincurl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo> ~/bin/reposudo cp ~/bin/repo /bin/reposudo chmod a+x /bin/repoexport PATH=/bin:$PATHexport REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'拉取源码mkdir TWRP cd TWRP 要使用 OMNIROM 树初始化本地存储库以构建 TWRP,请使用如下命令repo init -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0只拉取一层提交,可以减少拉下来的源码大小repo init --depth=1 -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0最后会提示你输入用户名和邮箱,输入之后回车,选y即可当出现repo has been initialized in xxx就成功了然后同步源码repo sync当出现repo sync has finished successfully.表示源码同步完成准备编译准备好设备的Device Tree可在Github或者XDA上寻找,一般使用手机代号寻找but,手机比较冷门的可能找不到,这个时候就需要我们使用脚本生成Device Tree用于编译TWRP提取设备的 recovery/boot.img手机是A-Only或Sar的提取recovery.img,A/B分区的提取boot.img此工具Python 3.8或更高版本sudo apt install cpiopip3 install twrpdtgenpython3 -m twrpdtgen 镜像文件绝对路径进入output文件夹就可用看到一个我们手机厂商名的文件夹然后我们把这个文件夹复制到源码目录下的device文件夹进入厂商文件夹之后还有一个文件夹,这是你的设备名,记住你的设备名,等下要用到。在构建之前,请确保您已将系统的 python 实现设置为 python2。该项目不会使用 python3 构建。设置方法sudo apt install python2查找python2的安装路径whereis python2创建软链接符号sudo ln -s /usr/bin/python2 /usr/bin/python查看python版本python -V开始编译回到源码根目录为具有恢复分区的设备构建export ALLOW_MISSING_DEPENDENCIES=true; . build/envsetup.sh; lunch omni_<device>-eng; mka recoveryimage为没有恢复分区的设备构建export ALLOW_MISSING_DEPENDENCIES=true; . build/envsetup.sh; lunch omni_<device>-eng; mka bootimage此时已经开始编译了,过程比较漫长,请耐心等待。(取决电脑配置) build completed successfully当看到出现这串文字,表示已经编译成功。然后我们进入out/target/product/设备名这个文件夹,就可以看到编译好的TWRP了。 简记一下Manjaro折腾和优化 https://iyiy.de/20.html 2022-07-13T06:44:00+08:00 系统基本配置Manjaro换源sudo pacman-mirrors -c China添加 archlinuxcn 源,获得更多的包:sudo nano /etc/pacman.conf[archlinuxcn] SigLevel = Optional TrustAll Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch## xTom (Hong Kong server) (Hong Kong) (ipv4, ipv6, http, https) ## Added: 2017-09-18 ## Blocking users in mainland China [archlinuxcn] Server = https://mirrors.xtom.hk/archlinuxcn/$arch更新系统、软件sudo pacman -Syyu下载 yay AUR 助手sudo pacman -S yayyay安装报错sudo pacman -Sy && sudo pacman -S archlinuxcn-keyringsudo rm -rf /etc/pacman.d/gnupg sudo pacman-key --init sudo pacman-key --populate安装 base-devel,yay 命令构建包时会使用到sudo pacman -S base-devel输入法配置yay -S fcitx5-im fcitx5-chinese-addons fcitx5-material-color fcitx5-pinyin-zhwikifcitx5-im fcitx5 输入法框架包 fcitx5-chinese-addons 中文输入法 fcitx5-material-color 皮肤美化包 fcitx5-pinyin-zhwiki 词库安装完成后编辑将下面 3 行代码加入到 /etc/environment 文件中,这样可以预防出现某些程序不能输入中文的情况发生GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitxohmyzshwget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh更改默认 shell 为 zsh:chsh -s /usr/bin/zsh zsh下载插件:自动补全 git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions 语法高亮 git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting zsh-vi-mod git clone https://github.com/jeffreytse/zsh-vi-mode $ZSH_CUSTOM/plugins/zsh-vi-mode安装 autojump,终端目录跳转神器:git clone https://github.com/wting/autojump cd autojump ./install.py cd .. rm -rf autojump打开 ~/.zshrc 找到 plugins 将它改成下面这样:plugins=( git zsh-syntax-highlighting zsh-autosuggestions zsh-vi-mode colored-man-pages )在~/.zshrc尾部添加[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh常用软件安装Chromeyay -S google-chrome网易云音乐sudo pacman -S netease-cloud-musicWPSyay -S ttf-wps-fonts wps-office-mui-zh-cn wps-office-mime-cn wps-office-cnyay -S wps-office-fonts ttf-ms-fonts百度网盘yay -S baidunetdisk迅雷yay -S xunlei-bin 微信yay -S deepin-wine-wechat微信运行时会显示:程序 WeChatApp.exe 遇到严重问题需要关闭。我们对此造成的不便表示抱歉。其实这个 BUG 不影响使用,但是看着心烦,解决办法是先运行如下命令:/opt/apps/com.qq.weixin.deepin/files/run.sh winecfg然后选择函数库选项卡,新增函数库顶替的输入框中中输入 wechatapp.exe ,点击右侧添加,选择新建好的 wechatapp.exe,点击编辑,选择停用即可。QQyay -S deepin-wine-qqTeamvieweryay -S teamviewer火焰截图sudo pacman -S flameshotTyporaTypora 最新版已经收费,可以在官网下载以前的版本并手动安装,下面是最后一个免费版本:点我跳转下载完成后手动安装:sudo tar -xvf ~/Downloads/Typora-linux-x64-1.0.3.tar.gz -C /usr/local sudo mv /usr/local/bin/Typora-linux-x64 /usr/local/typora添加可视化启动程序,在 ~/.local/share/applications 下新建以下文件,Typora 内部自己有 PNG 图片,所以不需要额外下载,直接复制粘贴以下内容即可:vim ~/.local/share/applications/typora.desktop [Desktop Entry] Type=Application Name=Typora Exec=/usr/local/typora/Typora Icon=/usr/local/typora/resources/assets/icon/[email protected] Terminal=false Categories=program;InstantMessagingPicgoyay -S picgo-appimage如果可以直接安装就直接使用。我这里自动安装出现了问题,所以又需要手动安装了。先到 picgo 的 github 中下载 AppImage 后缀的包,然后双击安装即可。点我跳转转换 deb 包安装 debtab:sudo pacman -S debtap更新 debtab:sudo debtap -u下载好待转换的 deb 包,将其转换,以下步骤一路回车即可:sudo debtap ~/Downloads/包名.deb安装转换后的包:sudo pacman -U ~/Downloads/包名.pkg.tar.zst配置Git配置 Git 用户名、密码、代理 :git config --global user.name <用户名> git config --global user.email <邮箱地址> git config --global http.proxy socks5://127.0.0.1:7890 git config --global https.proxy socks5://127.0.0.1:7890添加 SSH:ssh-keygen # 疯狂回车拷贝公钥 ~/.ssh/id_rsa.pub 中的内容,到 github 中添加 ssh keys 即可。VMware-WorkStationVMware-WorkStation包在AUR上可用,可以通过运行命令来安装。yay -S vmware-workstation安装系统对应的linux-headerssudo pacman -S linux-headers载入vmmon模块sudo modprobe -a vmw_vmci vmmon自启动网络服务和USBsudo systemctl enable vmware-networks.service vmware-usbarbitrator.servicesudo systemctl start vmware-networks.service vmware-usbarbitrator.service安装osc-url下载 ocs-url:点我跳转下载完成后手动安装:sudo pacman -U ~/Downloads/ocs-url-3.1.0-1-x86_64.pkg.tar.xz CentOS 7安装Fail2ban+Firewalld防止SSH爆破与CC攻击 https://iyiy.de/18.html 2022-03-21T15:21:00+08:00 前言fail2ban可以监视你的系统日志,然后匹配日志的错误信息执行相应的屏蔽动作。网上大部分教程都是关于fail2ban+iptables组合,考虑到CentOS 7已经自带Firewalld,所以这里我们也可以利用fail2ban+Firewalld来防CC攻击和SSH爆破。准备工作1、检查Firewalld是否启用如果您已经安装iptables建议先关闭service iptables stop查看Firewalld状态firewall-cmd --state启动firewalldsystemctl start firewalld设置开机启动systemctl enable firewalld.service启用Firewalld后会禁止所有端口连接,因此请务必放行常用的端口,以免被阻挡在外,以下是放行SSH端口(22)示例,供参考:放行22端口firewall-cmd --zone=public --add-port=22/tcp --permanent重载配置firewall-cmd --reload查看开放的端口firewall-cmd --zone=public --list-ports2、安装fail2banfail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。CentOS内置源并未包含fail2ban,需要先安装epel源yum -y install epel-release安装fial2banyum -y install fail2ban安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到,如果需要详细了解可自行搜索。3、配置规则新建jail.local来覆盖fail2ban的一些默认规则:新建配置vi /etc/fail2ban/jail.local默认配置[DEFAULT] ignoreip = 127.0.0.1/8 bantime = 86400 findtime = 600 maxretry = 5 #这里banaction必须用firewallcmd-ipset,这是fiewalll支持的关键,如果是用Iptables请不要这样填写 banaction = firewallcmd-ipset action = %(action_mwl)s参数说明:ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔 bantime:屏蔽时间,单位为秒(s) findtime:时间范围 maxretry:最大次数 banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口防止SSH爆破继续修改jail.local这个配置文件,在后面追加如下内容:[sshd] enabled = true filter = sshd port = 22 action = %(action_mwl)s logpath = /var/log/secure参数说明:[sshd]:名称,可以随便填写 filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则 port:对应的端口 action:采取的行动 logpath:需要监视的日志路径到这一步,我们jail.local的规则看起来可能像下面这样子:[DEFAULT] ignoreip = 127.0.0.1/8 bantime = 86400 findtime = 600 maxretry = 5 banaction = firewallcmd-ipset action = %(action_mwl)s [sshd] enabled = true filter = sshd port = 22 action = %(action_mwl)s logpath = /var/log/secure上面的配置意思是如果同一个IP,在10分钟内,如果连续超过5次错误,则使用Firewalld将他IP ban了。输入systemctl start fail2ban启动fail2ban来试试效果。使用另一台服务器不断尝试连接SSH,并且不断的将密码输入错误,你会发现连续超过5次后直接连不上,说明IP被ban了,可以输入:fail2ban-client status sshd查看被ban的IP防止CC攻击这里仅以Nginx为例,使用fail2ban来监视nginx日志,匹配短时间内频繁请求的IP,并使用firewalld将其IP屏蔽,达到CC防护的作用。需要先新建一个nginx日志匹配规则vi /etc/fail2ban/filter.d/nginx-cc.conf填写以下内容[Definition] failregex = <HOST> -.*- .*HTTP/1.* .* .*$ ignoreregex =继续修改jail.local追加如下内容:[nginx-cc] enabled = true port = http,https filter = nginx-cc action = %(action_mwl)s maxretry = 20 findtime = 60 bantime = 3600 logpath = /usr/local/nginx/logs/access.log上面的配置意思是如果在60s内,同一IP达到20次请求,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。常用命令启动systemctl start fail2ban停止systemctl stop fail2ban重启systemctl restart fail2ban开机启动systemctl enable fail2ban关闭开机启动systemctl disable fail2ban查看被ban IP,其中sshd为名称,比如上面的[nginx-cc]fail2ban-client status sshd删除被ban IPfail2ban-client set sshd delignoreip 192.168.111.111或fail2ban-client set sshd unbanip 192.168.111.111查看日志tail /var/log/fail2ban.log