pacman -S caddy
Debian安装
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_response
Caddy目录
[root@archlinux caddy]# tree
.
├── Caddyfile
└── conf.d
修改默认 Caddyfile
配置文件 注册 replace
指令
nano /etc/caddy/Caddyfile
{
order replace after encode
}
添加网站配置
nano /etc/caddy/conf.d/example.com
example.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_proxy
]]>wireguard
等依赖Debian
apt update -y && apt install wireguard sudo curl vim openresolv -y
Arch Linux
yay -S wireguard-tools openresolv wgcf vim dnsutils linux-headers --needed
Debian
curl -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
删除配置文件中的AllowedIPs = ::/0
删除配置文件中的AllowedIPs = 0.0.0.0/0
cp wgcf-profile.conf /etc/wireguard/wgcf.conf
wg-quick up wgcf
# IPv4 Only VPS
curl -6 ip.p3terx.com
# IPv6 Only VPS
curl -4 ip.p3terx.com
wg-quick down wgcf
systemctl start wg-quick@wgcf
systemctl enable wg-quick@wgcf
]]>在安装配置好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
查看服务器,获取机器的UUID
scw 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安装目录/root/lnmp
下找到lnmp.conf
并编辑Nginx_Modules_Options
Nginx_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 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
日志
命令 | 说明 |
---|---|
-q | rclone将仅生成ERROR消息 |
-v | rclone将生成ERROR NOTICE INFO 消息 |
-vv | rclone 将生成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 | 块的大小,默认5M |
RCLONE_CACHE_CHUNK_TOTAL_SIZE | 块可以在本地磁盘上占用的总大小,默认10G |
RCLONE_IGNORE_ERRORS=true | 跳过错误 |
大部分内容拷贝自sunpma
]]>systemctl stop reflector.service
如无法连接上网络可尝试使用dhcpcd
命令
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/mirrorlist
Server = 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 sshd
passwd
设置当前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引导分区
mkswap /dev/nvme0n1px
mkfs.btrfs -L Arch /dev/nvme0n1px
mkfs.ext4 /dev/nvme0n1px
将 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/efi
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-firmware
pacstrap /mnt base base-devel linux linux-firmware dhcpcd iwd vim sudo bash-completion nano net-tools openssh man git wget zsh fish
genfstab -U /mnt >> /mnt/etc/fstab
复查一下 /mnt/etc/fstab
确保没有错误:
cat /mnt/etc/fstab
使用以下命令把系统环境切换到新系统下:
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
Locale
决定了软件使用的语言、书写习惯和字符集。
编辑 /etc/locale.gen
,去掉 en_US.UTF-8 UTF-8
以及 zh_CN.UTF-8 UTF-8
行前的注释符号(#
):
nano /etc/locale.gen
然后使用如下命令生成 locale
locale-gen
向 /etc/locale.conf
输入内容:
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
passwd root
nano /etc/pacman.conf
ctrl+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
新建用户名arch
可自行更改用户名
useradd -m -G wheel -s /bin/bash arch
设置arch
用户名的密码
passwd arch
编辑arch
用户的权限
EDITOR=nano visudo
ctrl+w搜索%wheel
找到# %wheel ALL=(ALL:ALL)ALL
删除前面的#号
通过以下命令安装对应芯片制造商的微码:
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
参数,这可以显著提高开关机速度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
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
systemctl enable NetworkManager sddm sshd
立即启动登陆管理器
systemctl start sddm
卸载本机的/mnt目录
umount -R /mnt
重启
reboot
输入密码登录进桌面环境
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-keyring
pacman-key --refresh-keys
更换LTS内核
pacman -S linux-lts linux-lts-headers
pacman -Rsdd linux
grub-mkconfig -o /boot/grub/grub.cfg
开启BBR
echo "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
清理系统日志文件 保留的最新日志文件大小为100M
journalctl --vacuum-size=100M
设置系统日志只保留100M
nano /etc/systemd/journald.conf
修改#SystemMaxUse=
为SystemMaxUse=100M
重新加载 systemd-journald
服务以应用更改
systemctl restart systemd-journald
]]>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 yay
yay安装报错
sudo pacman -Sy && sudo pacman -S archlinuxcn-keyring
sudo 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-zhwiki
fcitx5-im fcitx5 输入法框架包
fcitx5-chinese-addons 中文输入法
fcitx5-material-color 皮肤美化包
fcitx5-pinyin-zhwiki 词库
安装完成后编辑将下面 3 行代码加入到 /etc/environment 文件中,这样可以预防出现某些程序不能输入中文的情况发生
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
ohmyzsh
wget 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
Chrome
yay -S google-chrome
网易云音乐
sudo pacman -S netease-cloud-music
WPS
yay -S ttf-wps-fonts wps-office-mui-zh-cn wps-office-mime-cn wps-office-cn
yay -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
,点击编辑,选择停用即可。
yay -S deepin-wine-qq
Teamviewer
yay -S teamviewer
火焰截图
sudo pacman -S flameshot
Typora
Typora 最新版已经收费,可以在官网下载以前的版本并手动安装,下面是最后一个免费版本:
下载完成后手动安装:
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;InstantMessaging
Picgo
yay -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-WorkStation
VMware-WorkStation包在AUR上可用,可以通过运行命令来安装。
yay -S vmware-workstation
安装系统对应的linux-headers
sudo pacman -S linux-headers
载入vmmon模块
sudo modprobe -a vmw_vmci vmmon
自启动网络服务和USB
sudo systemctl enable vmware-networks.service vmware-usbarbitrator.service
sudo 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
]]>fail2ban可以监视你的系统日志,然后匹配日志的错误信息执行相应的屏蔽动作。网上大部分教程都是关于fail2ban+iptables组合,考虑到CentOS 7已经自带Firewalld,所以这里我们也可以利用fail2ban+Firewalld来防CC攻击和SSH爆破。
如果您已经安装iptables建议先关闭
service iptables stop
查看Firewalld状态
firewall-cmd --state
启动firewalld
systemctl 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-ports
fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。
CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
安装fial2ban
yum -y install fail2ban
安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到,如果需要详细了解可自行搜索。
新建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屏蔽端口
继续修改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
这里仅以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 IP
fail2ban-client set sshd delignoreip 192.168.111.111
或
fail2ban-client set sshd unbanip 192.168.111.111
查看日志
tail /var/log/fail2ban.log
]]>基于Centos7Minimal未精简制作,仅ufi启动修改,未做其他改动
oracle.vhd.gz
root密码 oracle@c7
DD方法:
强制关闭实例,然后分离启动卷,将启动卷挂载到另一台实例上(使用半虚拟化挂载),然后运行dd命令
wget -O- 'https://pic.kp.al/Centos7/oracle.vhd.gz' | gunzip | dd of=/dev/sdb
DD完成后进入新系统运行命令就可以更换内核安装加速了
grub2-mkconfig -o /boot/grub2/grub.cfg
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
首先下载DD镜像
wget https://pic.kp.al/Centos7/arm64.tar.gz
然后解压镜像
tar xzvf arm64.tar.gz
然后强制关闭实例,分离启动卷,将启动卷挂载到另一台实例上(使用半虚拟化挂载)
写入镜像
dd if=image.img of=/dev/sdb bs=10M status=progress
CentOS 7.9.2009 (AltArch) 最小化安装
Root密码 CoiaPrant#CentOS7
Root私钥 >>点此下载<<
你也可以用opc用户加上之前创建实例的私钥登陆
DD完成后请记得修改Root密码和私钥,以防被他人入侵服务器
修改Root密码
passwd root
删除Root私钥
rm -f /root/.ssh/authorized_keys
使用NetworkManager管理网络,双栈DHCP,在Oracle开启IPv6后使用nmtui修改,重启主机即可生效
已安装cloud-init,qemu-ga,oracle-cloud-agent 确保服务器正常配置
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
关闭IPV6
echo -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.sh
Linux一键更换内核
wget -N --no-check-certificate "https://git.io/kernel.sh"
chmod +x kernel.sh
./kernel.sh
Linux一键安装常见/最新内核脚本 锐速/BBRPLUS/BBR2
wget -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.9
wget 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
ARM64
wget 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-nox
cat << "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
EOF
systemctl daemon-reload
systemctl enable --now qbittorrent
systemctl status qbittorrent
重启关闭程序
ps -aux | grep qbittorrent
kill -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
安装Rclone
apt-get install -y fuse3
安装命令
curl https://rclone.org/install.sh | bash
安装完成后使用rclone config
命令进入配置
安装Docker
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
安装Docker-Compose
curl -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
卸载Docker
apt-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 --all
docker设置容器开机自启动
启动时加入--restart always
如果已经启动的项目.则使用update更新
docker update --restart=always 容器名或id
docker关闭容器开机自启动
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 bash
Docker容器固定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
固定容器 IP
docker 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/bash
Docker安装QBittorrent
docker 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.9
Docker安装Transmission
docker 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-r8
Transmission跳过检验(跳检)
sed -i 's/pausedi1e8/pausedi0e8/g' *.resume
sed -i 's/blocks4:none12:/blocks3:all4:have3:all12:/g' *.resume
Docker安装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:latest
Docker启用IPV6
编辑 /etc/docker/daemon.json
加上以下内容。
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80",
"experimental": true,
"ip6tables": true
}
重启Docker Engine
systemctl restart docker
测试
docker run --rm -it busybox ping -6 -c4 ipv6-test.com
docker run --rm -it busybox ifconfig
emby开心版
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/embyserver
Aria2一键脚本
为了确保能正常使用,请先安装基础组件wget curl ca-certificates
wget -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 | bash
wget -qO- git.io/superbench.sh | bash
bash <(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-geekbench
curl -sL network-speed.xyz | bash
纯IPV6
curl -sL https://raw.githubusercontent.com/teddysun/across/master/bench.sh | bash
Speedtest CLI
Centos
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | bash
yum install speedtest
Ubuntu/Debian
apt-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 | bash
wget -N --no-check-certificate https://raw.githubusercontent.com/Chennhaoo/Shell_Bash/master/AutoTrace.sh && chmod +x AutoTrace.sh && bash AutoTrace.sh
bash <(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.sh
curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh|bash
YABS跑分
curl -sL yabs.sh | bash
GB5
curl -sL yabs.sh | bash -s -- -fi5
GB6
curl -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:30000
bash <(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.sh
Gost一键脚本
wget --no-check-certificate -O gost.sh https://raw.githubusercontent.com/KANIKIG/Multi-EasyGost/master/gost.sh && chmod +x gost.sh && ./gost.sh
Reaim一键脚本
wget -N --no-check-certificate https://git.io/realm.sh && chmod +x realm.sh && ./realm.sh
Termux高级终端一键安装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 password
bin456789
curl -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 DD
bash <(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::4
OpenVZ/LXC伪DD
wget -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 ssh
SSH禁用密钥使用密码登录
#!/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 restart
SSH使用密钥登录并禁止密码登录
创建公私钥
ssh-keygen -t rsa
sed -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/config
ServerAliveInterval 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
Debian/Ubuntu无netstat命令解决方案
net-tools包含arp, ifconfig, netstat, rarp, nameif and route命令
apt-get install net-tools
apt-get install iputils-ping
dnsutils包中包含了nslookup工具以及其他与 DNS 相关的实用程序
apt-get install dnsutils
调整系统分区
检查分区信息
e2fsck -f /dev/sda1
调整分区大小
resize2fs /dev/sda1
EXT4释放保留分区(默认5%)
tune2fs -m 0 /dev/sda1
WARP
功能最多最强大的WARP脚本
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/warp-go.sh && bash warp-go.sh
wget -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.url
vps2arch
wget http://tinyurl.com/vps2arch
chmod +x vps2arch
./vps2arch
wget https://felixc.at/vps2arch
chmod +x vps2arch
./vps2arch
Linux下解压命令、压缩命令
.tar
解包
tar xvf FileName.tar
打包
tar cvf FileName.tar DirName
.gz
解压
gunzip FileName.gz
gzip -d FileName.gz
压缩
gzip FileName
tar.gz 和 .tgz
压缩
tar zcvf FileName.tar.gz ./store
tar 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
]]>