首页
留言板
统计
友链
关于
推荐
图片压缩
在线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
篇与
的结果
2026-03-11
DBServer连接国产神通数据库
前言DBeaver是免费和开源 (GPL)为开发人员和数据库管理员通用数据库工具。神通数据库管理系统是传承航天自主创新传统,按照航天工程化和质量控制体系研制的一款自主创新、安全高效的国产数据库软件,具有通用性、高性能、高安全、高可靠、高可用等特性,提供多种版本充分满足不同业务场景需求,具备共享存储高可用、读写分离等多种部署模式,提供多种性能优化 技术,可满足用户在海量数据、高并发应用场景下对系统高性能的需求,为用户打造功能完善、稳定高效的业务数据存储管理支撑平台。最新版本DBeaver中ODBC连接方式已经弃用【Legacy ODBC driver is deprecated】,提供通用JDBCX方式进行连接神通数据库。配置流程如下:1.选择JDBCX连接方式2.编辑驱动设置,配置神通数据库连接方式3.设置神通数据库类名和URL模板类名:com.oscar.DriverURL模版:jdbc:oscar://{host}:{port}4.添加神通数据库JDBC驱动库文件基本都在神通数据库安装目录的lib下然后删除多余的别的依赖或者文件5.点击确定后保存6.输入神通数据库连接信息【IP、端口、数据库实例名称、用户名及密码】7.点击测试连接,测试是否正常连接8.完成设置点击完成,即可完成设置
2026年03月11日
1 阅读
0 评论
0 点赞
2026-02-03
Openclaw实战部署
安装nodejs安装官方推荐的NVMcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash代替重启shell\. "$HOME/.nvm/nvm.sh"下载并安装 Node.jsnvm install 24推荐一定要装偶数版本的,比如24,22,20验证 Node.js 版本node -v验证 npm 版本npm -v安装openclaw安装clicurl -fsSL https://openclaw.ai/install.sh | bash运行引导程序(并安装服务)openclaw onboard --install-daemon步骤 1:安全确认方向键←,选yes回车步骤2:选择模式推荐直接回车,后面可以自己修改步骤 3:选择 AI 后端和认证方式这里选择智谱的API KEY方式我选择4.7-flash 因为免费 = =!步骤4:选择消息平台这里我就跳过了,我没打算配置消息平台,因为后面我想接入QQ之类的步骤5:完成配置远程浏览器访问本机如果是本机127.0.0.1访问的话,那可直接跳到配对环节远程范围跟如果各位想远程访问,需要配置网关,这里推荐不要随便改动,直接安装一个nginx,将80/443反向代理到web端口配置sslopenclaw主页要求https才能使用大部分功能,各位可以自行在nginx中配置域名的ssl,或者直接在服务器自签名一个ip证书,测试不被信任的证书也可以配对配置远程访问后主页会提示disconnected (1008): pairing required这是要求咱们必须进行设备配对在服务器中执行:openclaw devices list会看到一个新的配对请求(一定要浏览器先访问,否则不会有配对请求)执行命令批准:openclaw devices approve <requestId>此时即可使用openclaw的对话功能
2026年02月03日
3 阅读
0 评论
0 点赞
2026-01-08
Debian服务器根目录LVM扩容记录
最近用PVE和VM创建的虚拟机根目录总是不够用,但是我又不想一次性分多,现在导致根目录容量告急,这里记录一下稳妥的根目录扩容方案,应该也适用于别的目录先判断你的 服务器/虚拟机 用的是什么结构本教程暂时先记录LVM的流程LVMlsblk sda ├─sda1 boot ├─sda2 LVM PV ├─pve-root ├─pve-swap └─pve-data你会看到类似LVM的字眼,即是LVM给虚拟机扩容首先我们使用首先使用PVE/VM给虚拟机增加磁盘容量增加容量前sda 8:0 0 40G 0 disk ├─sda1 8:1 0 976M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 39G 0 part ├─node01--vg-root 254:0 0 8.5G 0 lvm / ├─node01--vg-swap_1 254:1 0 2G 0 lvm [SWAP] └─node01--vg-home 254:2 0 28.4G 0 lvm /home sr0 11:0 1 754M 0 rom我们可以看到sda只有40G增加容量后sda 8:0 0 80G 0 disk ├─sda1 8:1 0 976M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 39G 0 part ├─node01--vg-root 254:0 0 8.5G 0 lvm / ├─node01--vg-swap_1 254:1 0 2G 0 lvm [SWAP] └─node01--vg-home 254:2 0 28.4G 0 lvm /home sr0 11:0 1 754M 0 rom现在sda已经80G了,但是这80G还不能使用,我们需要分给根目录分配空间给根目录进入 partedparted /dev/sdapartend未安装apt install parted运行命令我们在parted中依次输入print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 85.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1024MB 1023MB primary ext4 boot 2 1026MB 42.9GB 41.9GB extended lba 5 1026MB 42.9GB 41.9GB logical resizepart 5 100% quit注意当我们输入 resizepart 5 100% 的时候,可能会提示如下Error: Can't have overlapping partitions.为什么会提示是 MBR + 扩展分区(extended)结构的限制,咱们现在的结构是这样的sda1 primary /boot sda2 extended ← 外壳 └─sda5 logical ← LVM 用的sda5 是“逻辑分区”它 必须完全位于 sda2(扩展分区)内部你现在只尝试扩 sda5但 sda2 本身没有扩到 100%咱们不能让 sda5 超出 sda2 的范围(否则就“重叠”了)正确顺序先扩 sda2(extended) → 再扩 sda5(logical) → 再 pvresize → 再 lvextend所以如果提示这个错误,先退出parted, 然后重新 parted /dev/sda 进入,然后先执行resizepart 2 100%如果提示分区正在使用:Is this partition in use?输入Yes即可然后我们继续依次输入:resizepart 5 100% quit查看空间sda 8:0 0 80G 0 disk ├─sda1 8:1 0 976M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 79G 0 part ├─node01--vg-root 254:0 0 8.5G 0 lvm / ├─node01--vg-swap_1 254:1 0 2G 0 lvm [SWAP] └─node01--vg-home 254:2 0 28.4G 0 lvm /home sr0 11:0 1 754M 0 rom 现在我们sda5已经79G了,下一步继续把空间分给具体的跟目录(/)分配容量到跟目录让 LVM 认识新空间pvresize /dev/sda5确认 VG 里有空闲空间(强烈建议看一眼)vgdisplay node01-vg应该能看到类似:Free PE / Size 40.00 GiB把空闲空间给根目录 /全部给根目录lvextend -l +100%FREE /dev/node01-vg/root只给一部分lvextend -L +30G /dev/node01-vg/root扩展文件系统(ext4 必须做)resize2fs /dev/node01-vg/root如果是 xfs(你大概率不是),那是 xfs_growfs /最后验证df -h /已经增加上了Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 1.2M 1.6G 1% /run /dev/mapper/node01--vg-root 48G 6.8G 39G 15% / tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service tmpfs 7.8G 0 7.8G 0% /tmp /dev/sda1 943M 111M 768M 13% /boot /dev/mapper/node01--vg-home 28G 21G 5.9G 78% /home overlay 48G 6.8G 39G 15% /var/lib/docker/rootfs/overlayfs/368311adf1778f75225d00392c20a82e0c8785b6bde1badc75844b8f6a556d38 tmpfs 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service tmpfs 1.6G 12K 1.6G 1% /run/user/0 root@node01:~#
2026年01月08日
1 阅读
0 评论
0 点赞
2026-01-06
Debian使用nftables进行端口转发
最近搭建MC服务器,虽然有公网IP但是不想使用frp,最后采用了通过了Wireguard组网,nftables进行转口转发的方式,这里记录一下端口转发的配置以及相关介绍先上一些基础名词配置# 标准 NAT 钩子点有约定名称: # - prerouting (入站数据包处理) # - input (目标为本机的数据包) # - output (本机产生的数据包) # - postrouting (出站数据包处理) # - forward (转发的数据包) # nftables iptables # --------------------------------- # prerouting ↔ PREROUTING # input ↔ INPUT # output ↔ OUTPUT # postrouting ↔ POSTROUTING # forward ↔ FORWARD # 如果你改名,熟悉 iptables 的人会困惑直接上配置,咱们逐行解析table ip nat { chain prerouting { type nat hook prerouting priority -100; policy accept; # 外部访问转发 tcp dport 80 redirect to :8080 } chain output { type nat hook output priority -100; policy accept; # 本地访问转发 ip daddr 127.0.0.1 tcp dport 80 redirect to :8080 # 或者更通用(包括本机IP) # tcp dport 80 redirect to :8080 } chain postrouting { type nat hook postrouting priority 100; policy accept; } }表定义table ip nattable:定义一个 nftables 表ip:仅处理 IPv4 数据包(IPv6 需要 ip6 或 inet)nat:表名称,专门用于网络地址转换(NAT)PREROUTING 链定义 chain prerouting { type nat hook prerouting priority -100; policy accept;chain prerouting:创建名为 "prerouting" 的链type nat:这是一个 NAT 类型的链hook prerouting:挂接到内核的 PREROUTING 钩子点priority -100:优先级,数字越小优先级越高policy accept:默认策略是接受(如果规则不匹配)工作流程:外部访问: 客户端 → 服务器IP:80 → PREROUTING → 目标端口改为8080 → 本地进程PREROUTING 规则# 外部访问转发 tcp dport 80 redirect to :8080 }tcp dport 80:匹配 TCP 协议且目标端口为 80 的数据包redirect to :8080:将目标端口重定向到 8080工作流程:外部访问: 客户端 → 服务器IP:80 → PREROUTING → 目标端口改为8080 → 本地进程OUTPUT 链定义 chain output { type nat hook output priority -100; policy accept;chain output:创建名为 "output" 的链hook output:挂接到 OUTPUT 钩子点优先级相同:-100,与 PREROUTING 并行处理OUTPUT 钩子位置:本地进程发送数据 → OUTPUT → POSTROUTING → 发送到网络OUTPUT 链规则# 本地访问转发 ip daddr 127.0.0.1 tcp dport 80 redirect to :8080ip daddr 127.0.0.1:匹配目标 IP 地址为 127.0.0.1(localhost)tcp dport 80:匹配目标端口 80redirect to :8080:重定向到 8080 端口为什么需要这个规则本地访问: curl 127.0.0.1:80 → OUTPUT链 → 端口改为8080 → 回环接口 → 本地进程POSTROUTING 链定义 chain postrouting { type nat hook postrouting priority 100; policy accept; } }hook postrouting:挂接到 POSTROUTING 钩子点priority 100:较低优先级,在路由决策后执行POSTROUTING 钩子位置:数据包发送前 → POSTROUTING → 网络接口发送完整数据包流向场景1:外部客户端访问场景2:本地 curl 访问场景3:本地 curl 访问服务器公网IP问题当咱们有这个配置 chain output { type nat hook output priority -100; policy accept; # 本地访问转发 ip daddr 127.0.0.1 tcp dport 80 redirect to :8080 # 或者更通用(包括本机IP) # tcp dport 80 redirect to :8080 }咱们访问curl 127.0.0.1的时候会转发到80,但是curl 192.x.x.x则不会,因为咱们只配置了127.0.0.1解决方案1:更通用的 OUTPUT 规则chain output { type nat hook output priority -100; policy accept; # 匹配所有目标端口80的TCP流量 tcp dport 80 redirect to :8080 }但是这样有大问题,本机所有目标端口的80都会到8080,甚至是curl http://www.baidu.com所以慎用解决方案2:指定所有本地IP chain output { type nat hook output priority -100; policy accept; # 匹配多个本地地址 ip daddr { 127.0.0.1, 192.168.1.100, 10.0.0.1 } tcp dport 80 redirect to :8080 }进阶代理到其他内网机器大部分时候MC服务器不一定是在本机,所以有时候我们需要转发到别的内网机或者外网机先上配置:table ip nat { chain prerouting { type nat hook prerouting priority 0; policy accept; #ip daddr 公网ip tcp dport 80 dnat to 172.32.100.11:25565 iifname "eth0" tcp dport 80 dnat to 172.32.100.11:25565 } chain postrouting { type nat hook postrouting priority srcnat; policy accept; #ip daddr 172.32.100.11 masquerade oifname "test" masquerade } }prerouting部分咱们先看第一部分ip daddr 公网ip tcp dport 80 dnat to 172.32.100.11:25565iifname "eth0" tcp dport 80 dnat to 172.32.100.11:25565为什么我把第一段注释了呢,这段意思是把ip端口为公网:80的流量转发给172xxxx:25565,那么正常应该是没问题,但是咱们一般都是公网云服务器,一般也都是弹性IP,也就是说,如果正常网络下访问公网:80, 服务器的确能收到流量,但是目标ip可能被云服务器厂商转换了,而转换的ip大概率就是本机eth0(本机网卡)的IP如图这个10.0.16.2,当然我没试过,所以咱们直接最暴力的就是本机eth所有的80端口流量都到172.32.100.11:25565就行postrouting部分咱们再看第二部分,首先我们回顾一下场景① 客户端访问公网服务器客户端 → 82.x.x.x:80② PREROUTINGiifname "eth0" tcp dport 80 dnat to 172.32.100.11:25565数据包变为了源 IP: 客户端公网 IP 目标 IP: 172.32.100.11 目标端口: 25565③ 路由判断系统发现:172.32.100.11 在 wg/本机局域网 网段 → 走 test/eth0 网卡④ 到达 POSTROUTING(当前部分)oifname "test" masquerade那这里发生了什么呢?内核准备把包从 test 网卡发出去,于是 nftables 检查这个包是不是要从 test 网卡出去✔ 是 → 命中规则⑤ masquerade 做了什么(核心)原始包(DNAT 后):源 IP: 客户端公网 IP 目标 IP: 172.32.100.11经过 masquerade 后:源 IP: 172.32.100.1 ←(本机 test 网卡 IP) 目标 IP: 172.32.100.11源地址被“伪装”成 WG 网卡自己为什么必须 masquerade?如果不 masquerade(常见错误)MC 服务器收到的是:源 IP: 客户端公网 IP 目标 IP: 172.32.100.11然后 MC 服务器回包时会:目的 IP = 客户端公网 IPBut 这就是问题:MC 服务器根本不知道怎么去公网默认路由可能不在 WG回包直接丢失有 masquerade 的情况MC 服务器看到的是:源 IP: 172.32.100.1(你的公网服务器)回包:172.32.100.11 → 172.32.100.1走 WG 回到公网服务器内核根据 NAT 表反查自动还原成:82.x.x.x → 客户端连接成功
2026年01月06日
2 阅读
0 评论
0 点赞
2025-12-24
go交叉编译
设置环境变量set CGO_ENABLED=0 set GOOS=windows set GOARCH=amd64如果在idea等工具中的命令行无效,大概率是因为PowerShell问题,如图有两种解决方案新开一个cmd窗口执行使用go命令方式设置go env -w CGO_ENABLED=0 go env -w GOOS=linux go env -w GOARCH=amd64这里我是用第一种执行编译go build注意CGO如果不设置CGO_ENABLED = 0,可能会提示如下错误# runtime/cgo gcc_linux_amd64.c: In function '_cgo_sys_thread_start': gcc_linux_amd64.c:57:2: error: unknown type name 'sigset_t'; did you mean '_sigset_t'? sigset_t ign, oset; ^~~~~~~~ _sigset_t gcc_linux_amd64.c:62:2: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration] sigfillset(&ign); ^~~~~~~~~~ gcc_linux_amd64.c:57:16: error: unused variable 'oset' [-Werror=unused-variable] sigset_t ign, oset; ^~~~ cc1.exe: all warnings being treated as errors这个错误信息表明,你在 Windows 上进行 Go 代码编译时,Go 的 Cgo 部分尝试使用 C 编译器(在 Windows 上是 gcc)来编译与 C 语言相关的部分。因为你没有禁用 Cgo,而目标平台是 Linux,Cgo 正试图使用 Linux 的特定 C 库和头文件来编译,但你的 Windows 环境并没有适配 Linux 的相关编译工具和头文件。此时有两种解决方案禁用CGOset CGO_ENABLED=0 //或者 go env -w CGO_ENABLED=0只要你的 Go 项目没有依赖 Cgo,你可以通过禁用 Cgo 来避免这些问题。如果你的 Go 代码依赖于 C 语言库或使用了 Cgo 特性(例如,调用 C 语言代码),禁用 Cgo 会导致编译失败。因此,你必须确保项目中不使用 Cgo。安装 Linux 交叉编译工具链(如果需要使用 Cgo)如果你必须使用 Cgo,或者你的项目依赖于某些 C 语言库,你需要配置适当的交叉编译工具链。这通常涉及到安装与目标平台(Linux)兼容的交叉编译工具链。对于 Linux 目标,你需要安装交叉编译工具链,如 mingw-w64 或 x86_64-linux-gnu-gcc 等。Windows 上的 Go 并不默认提供跨平台的 C 编译器,因此你需要额外安装交叉编译工具。配置工具链后,Go 编译器能够在 Windows 上使用目标 Linux 平台的 C 编译器来编译 Cgo 代码。
2025年12月24日
2 阅读
0 评论
0 点赞
1
2
...
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