首页
留言板
统计
友链
关于
推荐
图片压缩
在线PO转MO
柠娜汉化站
搜索
1
PCL我的世界启动器设置第三方登录
44 阅读
2
Debian搭建wireguard组网
12 阅读
3
开源、轻量、易用的服务器监控,实战部署哪吒监控
4 阅读
4
哪吒监控配置nginx反向代理
3 阅读
5
Rust静态编译
3 阅读
服务器
技术
闲谈
MC
VPN
登录
搜索
标签搜索
debian
服务器
Linux
监控
雨云
wireguard
Android
MC
我的世界
硬盘
nginx
反向代理
哪吒
部署
Rust
静态编译
组网
局域网
联机
虚拟网卡
mohuangNPC
累计撰写
18
篇文章
累计收到
1
条评论
首页
栏目
服务器
技术
闲谈
MC
VPN
页面
留言板
统计
友链
关于
推荐
图片压缩
在线PO转MO
柠娜汉化站
搜索到
18
篇与
的结果
2025-12-23
Docker迁移目录
停止dockersystemctl stop docker.socket systemctl stop docker systemctl stop containerd迁移数据到新目录mkdir -p /data/docker mkdir -p /data/containerd rsync -aHAX --progress /var/lib/docker/ /data/docker mv /var/lib/docker /var/lib/docker.old //注意 必要可以挂一个软连接 ln -s /data/docker /var/lib/ 正常的话不需要 //迁移containerd到新目录 rsync -aHAX --progress /var/lib/containerd /data/containerd/配置docker新目录sudo nano /etc/docker/daemon.json内容写成:{ "data-root": "/home/docker" }配置containerd新目录//修改containerd配置 nano /etc/containerd/config.toml root = "/var/lib/containerd" 改成 root = "/data/containerd"重启dockersystemctl daemon-reload systemctl start docker // 必要的话下面的也可以执行 一般不需要 systemctl restart containerd查看结果docker info | grep "Docker Root Dir"
2025年12月23日
3 阅读
0 评论
0 点赞
2025-12-23
lsblk/fdisk额外磁盘挂载教程
看物理盘 & 分区lsblk看有没有文件系统lsblk -f //如果你看到: sdb1 ext4 /data → 已可用 如果是空的 → 还没格式化看 UUID(挂载必用)blkid /dev/sdb如果blkid命令没有执行命令安装apt install util-linux注意安装后可能还是不行,大概率在/usr/sbin/blkid并入LVM方法挂载为单独的/data进入分区工具fdisk /dev/sdb在 fdisk 里依次输入(照敲)n # 新建分区 p # 主分区 1 # 分区号 # 回车(默认起始) # 回车(默认结束,用满整盘) w # 写入并退出格式化分区(推荐 ext4)mkfs.ext4 /dev/sdb1看到 done / writing superblocks 即成功。创建挂载目录mkdir -p /data临时挂载(立刻生效)mount /dev/sdb1 /data验证:df -h | grep data 你应该能看到: /dev/sdb1 100G ... /data设置开机自动挂载(很重要)获取 UUID(不用 blkid)lsblk -f 示例输出: sdb1 ext4 3e9c6c0e-xxxx-xxxx-xxxx-xxxxxxxxxxxx编辑 /etc/fstabnano /etc/fstab 在最后一行加: UUID=3e9c6c0e-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2 (UUID 换成你自己的)验证 fstab 是否正确(不重启)mount -a 没报错 = 100% 正确
2025年12月23日
2 阅读
0 评论
0 点赞
2025-12-22
Forge或NeoForge开发过程记录
@Mixin 注解重要的注解,写在类名上,用来表示注入到哪个类@Mixin(TeleportCommand.class)@Shadow 注解当你mixin一个类的时候,然后要用该类的某个内部字段,或者某个方法签名的时候 // @Invoker("teleportToPos") @Shadow private static int teleportToPos(CommandSourceStack p_139026_, Collection<? extends Entity> p_139027_, ServerLevel p_139028_, Coordinates p_139029_, @Nullable Coordinates p_139030_, @Nullable TeleportCommand.LookAt p_139031_) throws CommandSyntaxException { throw new AssertionError(); } // @Invoker("teleportToEntity") @Shadow private static int teleportToEntity(CommandSourceStack source, Collection<? extends Entity> targets, Entity destination) throws CommandSyntaxException { throw new AssertionError(); }如果有某些无语的问题,比如私有方法中还调用了注入类的内部接口或者各种奇葩方法,那干脆直接方法全部复制一遍也可以@Inject注解该注解是直接注入方法@Inject(method = "register", at = @At("HEAD"),cancellable = true)method 代表需要注入的方法at 参数详解at代表注入位置 HEAD 代表方法头插入 RETURN 代表方法RETURN之前插入 TAIL 在方法的最后一条指令之前注入(在return之前)。 INVOKE 方法调用相关的注入点@At(value = "INVOKE", target = "目标方法签名") // 在调用特定方法时注入。 @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getX()D")INVOKE_ASSIGN 在调用方法并将结果赋值给变量时注入。@At(value = "INVOKE_ASSIGN", target = "目标方法签名")INVOKE_STRING 在调用方法且栈顶有特定字符串常量时注入。@At(value = "INVOKE_STRING", target = "目标方法签名", args = "ldc=要匹配的字符串")FIELD 字段访问相关的注入点@At(value = "FIELD", target = "字段签名") //在访问(读取或写入)字段时注入。 @At(value = "FIELD", target = "Lnet/minecraft/world/entity/Entity;x:D")GETFIELD@At(value = "GETFIELD", target = "字段签名") 在读取字段值时注入。PUTFIELD@At(value = "PUTFIELD", target = "字段签名") 在写入字段值时注入。FIELD_GET@At(value = "FIELD_GET", target = "字段签名") 同GETFIELD。FIELD_SET@At(value = "FIELD_SET", target = "字段签名") 同PUTFIELD。数组访问相关的注入点 ARRAY@At(value = "ARRAY") 在数组访问时注入。ARRAY_GET@At(value = "ARRAY_GET") 在读取数组元素时注入。ARRAY_SET@At(value = "ARRAY_SET") 在写入数组元素时注入。局部变量相关的注入点 STORE@At(value = "STORE", ordinal = 0) 在存储到局部变量时注入。LOAD@At(value = "LOAD", ordinal = 0) 在从局部变量加载时注入。JUMP 条件判断相关的注入点@At(value = "JUMP", opcode = Opcodes.IFNE) 在条件跳转指令处注入。IFNULL@At(value = "IFNULL") 在ifnull指令处注入。IFNONNULL@At(value = "IFNONNULL") 在ifnonnull指令处注入。IF_ACMPEQ, IF_ACMPNE@At(value = "IF_ACMPEQ") 在对象引用比较时注入。IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT等@At(value = "IF_ICMPEQ") 在整数比较时注入。常量相关的注入点 CONSTANT@At(value = "CONSTANT", args = "doubleValue=0.0") 在加载常量时注入。新建对象相关的注入点 NEW@At(value = "NEW", target = "类签名") 在创建新对象时注入。 @At(value = "NEW", target = "net/minecraft/world/item/ItemStack")异常处理相关的注入点 THROW@At(value = "THROW") 在抛出异常时注入。特殊注入点 INVOKE_SPECIAL@At(value = "INVOKE_SPECIAL", target = "方法签名") 在调用私有方法或构造方法时注入。INVOKE_VIRTUAL@At(value = "INVOKE_VIRTUAL", target = "方法签名") 在调用虚方法时注入。INVOKE_STATIC@At(value = "INVOKE_STATIC", target = "方法签名") 在调用静态方法时注入。INVOKE_INTERFACE@At(value = "INVOKE_INTERFACE", target = "方法签名") 在调用接口方法时注入。字节码指令相关的注入点 INVOKE_DYNAMIC@At(value = "INVOKE_DYNAMIC") 在invokedynamic指令处注入。INSTANCEOF@At(value = "INSTANCEOF") 在instanceof检查时注入。常用的组合参数 ordinal参数 指定第几次出现的位置:@At(value = "INVOKE", target = "...", ordinal = 0) shift参数 调整注入位置: Shift.BEFORE: 在目标指令之前 Shift.AFTER: 在目标指令之后 Shift.BY: 偏移指定数量 @At(value = "INVOKE", target = "...", shift = Shift.BEFORE)by参数 与Shift.BY一起使用:@At(value = "INVOKE", target = "...", shift = Shift.BY, by = 2)cancellable 参数它控制是否允许取消(跳过)原始方法的执行@Inject(method = "register", at = @At("HEAD"),cancellable = true) private static void modifyCommandPermissions(CommandDispatcher<CommandSourceStack> dispatcher, CallbackInfo ci) { ci.cancel(); }
2025年12月22日
1 阅读
0 评论
0 点赞
2025-12-22
PCL我的世界启动器设置第三方登录
本教程展示如何在PCL中使用第三方登录选择版本首先打开PCL如图:点击版本选择并选择游玩的版本:这里我选择机械动力,各位需要玩什么就选择什么进入版本独立设置PCL采用版本独立设置,通俗的来说就是每个版本单独设置正版登录或者第三方登录,按照上面步骤选择版本后,我们点击设置:拖到最下方点击版本独立设置:拖到最下方找到服务器配置部分:设置第三方登录按照上述步骤进入服务器配置后,我们下拉选择第三方登录输入第三方服务器的 认证服务器 , 注册连接 , 服务器名称 服务器名称随意写一个即可,只是为了展示。填完后直接点击左上角的返回即可:然后点击启动返回登陆界面:如图已经变为我们刚才填入的服务器名称注册账号我们已经添加完第三方服务器了,现在我们需要注册一个账号,点击界面的注册账号:这时我们会自动打开浏览器跳到第三方界面的注册页面:这是我的注册页面,不同的网站有不同的注册页面,大家可以自行鉴别,这里就不演示注册方式了,都差不多登录账号输入用户名密码点击启动游戏,这里比较坑,没法先登陆账号,必须连带游戏一起启动不过第二次就记住密码了,只要密码没打错这是第二次打开登录成功后的样子
2025年12月22日
44 阅读
0 评论
0 点赞
2025-12-16
WireGuard的配置文件详解
记录一下wireguard的配置文件参数详解组成WireGuard 配置文件通常命名为 wg0.conf(接口名可自定义),分为 [Interface](本地配置)和 [Peer](对等节点配置)两部分。[Interface] 部分(本地配置)必需参数PrivateKey (必填)本地私钥,用于解密接收的数据生成命令:wg genkey示例:PrivateKey = yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=Address (必填)这里的Address的代表的是本机的ip地址,也就是说是别的节点能通过这个Address去访问本机本地虚拟网络地址,可指定多个CIDR 格式(IPv4/IPv6)示例Address = 10.0.0.1/24 Address = 10.0.0.1/24, fd86:ea04:1115::1/64可选参数ListenPort (可选,默认随机)监听端口(UDP)示例:ListenPort = 51820MTU (可选,默认自动)最大传输单元示例:MTU = 1420DNS (可选)DNS 服务器地址示例:DNS = 1.1.1.1 DNS = 8.8.8.8, 8.8.4.4Table (可选)路由表规则值:auto (默认), off, 或数字示例:Table = 1234PreUp, PostUp (可选)接口启动前/后执行的脚本示例:PostUp = iptables -A FORWARD -i %i -j ACCEPTPreDown, PostDown (可选)接口关闭前/后执行的脚本示例:PreDown = iptables -D FORWARD -i %i -j ACCEPTSaveConfig (可选)运行时是否保存配置示例:SaveConfig = trueFwMark (可选)防火墙标记示例:FwMark = 0x1234[Peer] 部分(对等节点配置)必需参数PublicKey (必填)对等节点的公钥,用于加密发送的数据从对等节点的私钥生成:wg pubkey < private.key示例:PublicKey = xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=AllowedIPs (必填)这里的意思是发往AllowedIPs的流量走这个Endpoint,就是配置路由允许通过该对等节点路由的 IP 范围特殊值:0.0.0.0/0 表示全部流量示例:AllowedIPs = 10.0.0.2/32 AllowedIPs = 10.0.0.0/24, 192.168.1.0/24 AllowedIPs = 0.0.0.0/0 # 完整隧道可选参数Endpoint (可选,但至少一个节点需要)对等节点的公网地址和端口格式:IP或域名:端口示例:Endpoint = 203.0.113.1:51820PersistentKeepalive (可选)NAT 穿透保持连接间隔(秒)示例:PersistentKeepalive = 25PresharedKey (可选,增强安全性)预共享密钥,对称加密生成命令:wg genpsk示例:PresharedKey = /UwcSPg38hW/D9Y3tcS1FOV0K1wuURMbS0sesJEP5ak=完整配置文件示例服务器端配置 (wg0.conf)[Interface] # 服务器配置 Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = <server_private_key> # 可选配置 DNS = 8.8.8.8 MTU = 1420 # 防火墙规则 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # 客户端1 PublicKey = <client1_public_key> AllowedIPs = 10.0.0.2/32 [Peer] # 客户端2 PublicKey = <client2_public_key> AllowedIPs = 10.0.0.3/32客户端配置 (wg0.conf)[Interface] # 客户端配置 Address = 10.0.0.2/24 PrivateKey = <client_private_key> DNS = 8.8.8.8 [Peer] # 服务器端 PublicKey = <server_public_key> Endpoint = server.example.com:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
2025年12月16日
2 阅读
0 评论
0 点赞
1
2
3
4
Warning
: file_put_contents(/var/www/html/rss.xml): failed to open stream: Permission denied in
/var/www/html/usr/plugins/CustomRSS/Plugin.php
on line
149