GitHub - snltty/linker: 极具特色的,P2P打洞(UDP+TCP、IPV4+IPV6) + 服务器转发,实现的异地组网、内网穿透。让你那些散落在世界各地的联网设备就像在隔壁房间一样轻松访问。
极具特色的,P2P打洞(UDP+TCP、IPV4+IPV6) + 服务器转发,实现的异地组网、内网穿透。让你那些散落在世界各地的联网设备就像在隔壁房间一样轻松访问。 - snltty/linker
GitHub (github.com)
UDP P2P
极具特色的,P2P打洞(UDP+TCP、IPV4+IPV6) + 服务器转发,实现的异地组网、内网穿透。让你那些散落在世界各地的联网设备就像在隔壁房间一样轻松访问。 - snltty/linker
GitHub (github.com)
UDP P2P
bluetooth mesh chat, IRC vibes. Contribute to permissionlesstech/bitchat development by creating an account on GitHub.
GitHub (github.com)
蓝牙 去中心化 mesh 通讯
[color=#FF4D4D]环境:Debian 13 Nginx1.31.1[/color]
nano auto_zstd_nginx.sh
#!/usr/bin/env bash
# ==============================================================================
# 脚本名称: auto_zstd_nginx.sh
# 适用系统: Debian 12/13 / Ubuntu
# 功能描述: 具备智能缓存检测的全功能 Nginx Zstd 动态模块编译与全自动更新脚本
# ==============================================================================
set -e # 遇到致命错误立即停止执行
# 颜色输出定义
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO] $1${NC}"; }
log_warn() { echo -e "${YELLOW}[WARN] $1${NC}"; }
log_err() { echo -e "${RED}[ERROR] $1${NC}"; exit 1; }
SRC_DIR="/usr/src"
CACHE_META="${SRC_DIR}/.nginx_zstd_cache.meta"
MODULES_INSTALL_DIR="/usr/lib/nginx/modules"
# 1. 权限检查
if [ "$EUID" -ne 0 ]; then
log_err "请使用 root 用户或通过 sudo 运行此脚本!"
fi
# 2. 检测当前运行的 Nginx 状态
if ! command -v nginx &> /dev/null; then
log_err "未检测到系统安装了 Nginx,请先安装 Nginx 主程序!"
fi
# 动态提取当前 Nginx 版本号 (例如: 1.31.0)
NGINX_VER=$(nginx -v 2>&1 | awk -F/ '{print $2}' | cut -d' ' -f1)
NGINX_ARGS=$(nginx -V 2>&1 | grep "configure arguments:" | sed 's/configure arguments://')
log_info "当前系统运行的 Nginx 版本: ${NGINX_VER}"
# 自动修正模块安装路径
if [ ! -d "$MODULES_INSTALL_DIR" ]; then
MODULES_INSTALL_DIR="/etc/nginx/modules"
fi
# 3. 智能检测远端 Zstd 库的最新版本(无需提前克隆)
log_info "正在检测 Facebook Zstd 官方仓库最新动态..."
if ! command -v git &> /dev/null; then
# 如果没有 git,临时安装以便检测
apt-get update -y || true
apt-get install -y git wget awk
fi
# 获取远程最新 Commit ID
REMOTE_ZSTD_COMMIT=$(git ls-remote https://github.com/facebook/zstd.git HEAD | awk '{print $1}')
if [ -z "$REMOTE_ZSTD_COMMIT" ]; then
log_err "无法连接到 GitHub 获取 Zstd 版本,请检查网络连接。"
fi
# 4. 缓存验证:比对版本与文件完整性
NEED_BUILD_ZSTD=true
NEED_BUILD_MODULE=true
if [ -f "$CACHE_META" ]; then
# 读取缓存的元数据
# shellcheck disable=SC1090
source "$CACHE_META"
# 检查本地动态库文件是否存在
if [ -f "/usr/local/lib/libzstd.so" ] && [ "$LAST_ZSTD_COMMIT" == "$REMOTE_ZSTD_COMMIT" ]; then
NEED_BUILD_ZSTD=false
log_info "✨ 检测到本地 Zstd 核心库已是最新版本 (${REMOTE_ZSTD_COMMIT:0:7}),跳过拉取与编译。"
fi
# 检查 Nginx 动态模块文件是否存在并比对版本
if [ -f "${MODULES_INSTALL_DIR}/ngx_http_zstd_filter_module.so" ] && \
[ -f "${MODULES_INSTALL_DIR}/ngx_http_zstd_static_module.so" ] && \
[ "$LAST_NGINX_VER" == "$NGINX_VER" ] && \
[ "$NEED_BUILD_ZSTD" == "false" ]; then
NEED_BUILD_MODULE=false
fi
fi
# 如果一切都未改变,直接退出
if [ "$NEED_BUILD_ZSTD" == "false" ] && [ "$NEED_BUILD_MODULE" == "false" ]; then
log_info "🚀 [完美缓存] 当前 Nginx 编译环境与 Zstd 模块均无任何更新,无需重复编译!"
exit 0
fi
# 5. 解决 APT 签名错误并安装依赖
log_info "正在准备同步系统依赖包..."
# 核心容错:使用 || true 允许非关键性源(如 MySQL 签名过期)报错,不中断脚本
apt-get update -y || log_warn "部分第三方软件源同步失败(例如系统的 MySQL 密钥未找到),脚本将忽略并尝试继续..."
log_info "正在安装与更新必要的编译工具链..."
apt-get install -y build-essential git libpcre3-dev zlib1g-dev libssl-dev debhelper wget
# 如果系统残留了旧的发行版自带库,予以清除以防冲突
if dpkg -l | grep -q libzstd-dev; then
log_warn "清理系统自带的旧版 libzstd-dev 以防链路冲突..."
apt-get remove -y libzstd-dev libzstd1 || true
fi
# 6. 【按需编译】最新的 Zstd 核心库
cd ${SRC_DIR}
if [ "$NEED_BUILD_ZSTD" == "true" ]; then
log_info "正在下载/更新 Zstd 官方源码并进行编译..."
if [ ! -d "zstd" ]; then
git clone --depth 1 https://github.com/facebook/zstd.git
fi
cd zstd
git fetch --depth 1 origin
git reset --hard origin/dev || git reset --hard origin/master # 适配官方默认主分支
log_info "开始编译 Zstd 核心库..."
make -j$(nproc)
make install
ldconfig
log_info "Zstd 核心库编译并安装成功。"
fi
# 7. 【按需编译】Nginx Zstd 动态模块
cd ${SRC_DIR}
if [ "$NEED_BUILD_MODULE" == "true" ]; then
log_info "正在同步 Nginx 源码与动态模块源码..."
# 清理旧的 Nginx 源码目录确保干净编译
rm -rf "nginx-${NGINX_VER}" "nginx-${NGINX_VER}.tar.gz"
wget -c "http://nginx.org/download/nginx-${NGINX_VER}.tar.gz"
tar -zxf "nginx-${NGINX_VER}.tar.gz"
if [ ! -d "zstd-nginx-module" ]; then
git clone https://github.com/tokers/zstd-nginx-module.git
fi
cd zstd-nginx-module && git pull && cd ..
log_info "配置 Nginx 模块环境,无缝继承原生 Nginx 编译参数..."
cd "nginx-${NGINX_VER}"
# 注入原生参数与定制的 Zstd include 路径
eval "./configure ${NGINX_ARGS} --add-dynamic-module=${SRC_DIR}/zstd-nginx-module --with-cc-opt='-I/usr/local/include' --with-ld-opt='-L/usr/local/lib -Wl,-rpath,/usr/local/lib'"
log_info "并行编译 Nginx Zstd 动态模块..."
make modules
log_info "将编译产物自动替换至 Nginx 目录..."
mkdir -p ${MODULES_INSTALL_DIR}
cp objs/ngx_http_zstd_filter_module.so ${MODULES_INSTALL_DIR}/
cp objs/ngx_http_zstd_static_module.so ${MODULES_INSTALL_DIR}/
chmod 644 ${MODULES_INSTALL_DIR}/ngx_http_zstd_*.so
# 检查模块语法
if nginx -t &>/dev/null; then
log_info "Nginx 配置文件语法检查通过,正在平滑重启服务..."
systemctl reload nginx || log_warn "Nginx 重载失败,请手动检查系统服务状态。"
else
log_warn "检测到 Nginx 配置当前存在异常,未自动重载,请执行 'nginx -t' 排查。"
fi
fi
# 8. 写入/更新本地编译缓存元数据
cat > "$CACHE_META" <<EOF
LAST_NGINX_VER="${NGINX_VER}"
LAST_ZSTD_COMMIT="${REMOTE_ZSTD_COMMIT}"
EOF
log_info "=================================================="
log_info "🎉 全功能自动 Nginx Zstd 模块部署/更新任务成功完成!"
log_info "当前缓存状态:Nginx [${NGINX_VER}] | Zstd [${REMOTE_ZSTD_COMMIT:0:7}]"
log_info "=================================================="
chmod +x auto_zstd_nginx.sh
# 执行两次测试版本缓存
sudo ./auto_zstd_nginx.sh
Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote. - DietrichGebert/ponytail
GitHub (github.com)
UDP2CAL 是一个双向、低延迟的局域网音频串流系统。支持 Android 手机麦克风采集发送到 Windows 虚拟声卡(正向),同时 PC 扬声器音频回传到手机播放(反向)。Opus 编解码、零软件降噪、声学回声消除、立体声/单声道自适应。全链路零堆分配,生产-消费双协程,P2P 独占通信防抢占。 - Raven777777/UDP2CAL
GitHub (github.com)
VPS重装脚本
一键DD/重装脚本 (One-click reinstall OS on VPS). Contribute to bin456789/reinstall development by creating an account on GitHub.
GitHub (github.com)
三三水这样问我,我认真的思考了一下:你觉得我们应该相信第一印象不
额我就拿我个人为例吧(?)
我是一个不看第一印象的人,我的习惯就是不带评价的去观察人(至少是与我不相干不会实际上冒犯到我的人)
即使我看到一个人,比如你XXXXXX,我也不会下意识的去给人贴标签
我承认人的多样和复杂这样的客观事实,我承认这些经历会导致一些可能的坏事或者好事
但是额由于我接触到的可以说是纯坏或者不可理喻而且将这种不可理喻(以一种令我不愉快的方式)施加到我身上的人几乎为零
大家对我都挺好的,所有我其实潜意识里认为世界上是好人多的(经历导致)
冒犯到我的人额那就另说了,我对此和希特勒持相同态度()
我觉得这个是否应该相信第一印象,是一个复杂的命题
像我的生活环境,是不怎么需要去判断一个人的好坏的,我接触的人也很少,所以我可以不去看第一印象
但是如果生活动荡,实际上的生活环境接触到的对自己不利的人的可能大的话,应该使用第一印象去进行一些排除
但是我觉得这个根本的命题可能是:
我们该如何避开那些潜在的人际威胁(?)
我们该如何在社交中选择潜在的“好人”(?)
但是这其实很难,正如我所说,人是很复杂的,就像你,无论你是怎么看待自己的,或者你是如何对待别人,你在对待我(某些特定的人的时候)又是不一样的,是好的
所以我的结论是,额
如果自己是一个会被别人以第一印象来评判的人,也就是额第一印象差的人,应该用第一印象去评价别人,因为会造成这样第一印象的环境本身就是不安定的,这时候使用第一印象评价法是可以有效的避开那些风险和威胁的
如果自己是一个不会被人以第一印象评判的人,那也不用去用第一印象去评价别人,因为你的生活环境既然塑造了这样的你,你接触那些风险和威胁的可能本来就是极小的
但是说到底,如果一个人带着敌意,隐藏,不可见人的目的与你接触,该被拐去棉被还是得被拐去棉被,和你是否使用第一印象去规避风险没多大关系我感觉
当然我的社交范围很小啊,这个是前提,如果大家可以在面对冒犯直白的坦言,互相沟通,无法沟通和互相理解就各自保持距离,真心换真心才是最优解吧()保持自我的独立性,不被他人左右(谈何容易()
Simple tool to configure Windows Filtering Platform (WFP) which can configure network activity on your computer. - henrypp/simplewall
GitHub (github.com)
Umami is a modern, privacy-focused analytics platform. An open-source alternative to Google Analytics, Mixpanel and Amplitude. - umami-software/umami
GitHub (github.com)
Zstd(Zstandard), Facebook(Meta)开发的开源无损数据压缩算法,2016 年发布, “高性能+高压缩比”的平衡——既比传统压缩算法(如 Gzip、Deflate)压缩更快、压缩率更高,也比同级别高压缩比算法(如 LZMA)速度更快,同时支持可配置的压缩级别(1-22,级别越高压缩率越高但速度越慢),还提供“快速模式”(级别 -1 到 -13)满足低延迟场景。
测试环境:Debain 13 Nginx1.31.0
# 安装编译工具
sudo apt install build-essential git libpcre3-dev zlib1g-dev libssl-dev debhelper
sudo apt remove libzstd-dev libzstd1
# 1. 进入源码存放目录
cd /usr/src
# 2. 克隆 Facebook Zstd 官方主分支源码
sudo git clone --depth 1 https://github.com/facebook/zstd.git
cd zstd
# 3. 编译并安装(核心库编译非常快)
sudo make -j$(nproc)
sudo make install
# 4. 刷新系统的动态链接库缓存,让系统认出刚刚安装的最新 libzstd.so
sudo ldconfig
# 1. 下载并解压 Nginx 1.31.0 官方源码
sudo wget http://nginx.org/download/nginx-1.31.0.tar.gz
sudo tar -zxf nginx-1.31.0.tar.gz
# 2. 克隆 zstd-nginx-module 源码
sudo git clone https://github.com/tokers/zstd-nginx-module.git
# 3. 进入 Nginx 源码目录
cd nginx-1.31.0
# 4. 配置编译参数:通过包含路径,强行让它关联到我们刚才安装在 /usr/local/include 的最新 Zstd 头文件
sudo ./configure --with-compat \
--add-dynamic-module=/usr/src/zstd-nginx-module \
--with-cc-opt="-I/usr/local/include" \
--with-ld-opt="-L/usr/local/lib -Wl,-rpath,/usr/local/lib"
# 5. 仅编译模块
sudo make modules
# 1. 覆盖复制到 Nginx 模块目录
sudo cp objs/ngx_http_zstd_filter_module.so /usr/lib/nginx/modules/
sudo cp objs/ngx_http_zstd_static_module.so /usr/lib/nginx/modules/
sudo chmod 644 /usr/lib/nginx/modules/ngx_http_zstd_*.so
打开 /etc/nginx/nginx.conf,在最顶部添加加载指令:
# 引入 Zstd 动态过滤和静态加载模块
load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_zstd_static_module.so;
user www-data;
worker_processes auto;
以Flarum 为例
zstd on;
zstd_comp_level 3; # 动态压缩推荐级别 3(1-5 之间性能与压缩率平衡最佳,最大为 22)
zstd_min_length 256; # 小于 256 字节的文件不压缩
zstd_buffers 16 8k;
# 允许 Nginx 直接读取预先压缩好的 .zst 静态文件(如果存在)
zstd_static on;
# 精准针对 Flarum 的 API、JS 和各种文本格式进行 Zstd 压缩
zstd_types
text/plain
text/css
text/javascript
application/javascript
application/json
application/xml
application/rss+xml
application/atom+xml
image/svg+xml
image/x-icon;
#检查配置文件,重启Nginx
nginx -t
systemctl reload nginx
按下 F12 打开开发者工具,前往 Network(网络) 面板。
Content-Encoding: zstd
Vary: Accept-Encoding
表明 Nginx 1.31.0 已经成功部署了目前业界公认在动态生成场景下处理效率极高、对 CPU 压迫极小的 Zstd 压缩引擎!
Concise, consistent, and legible badges in SVG and raster format - badges/shields
GitHub (github.com)
Linfo PHP Server Health Status. Contribute to jrgp/linfo development by creating an account on GitHub.
GitHub (github.com)
每次都手动打好麻烦
创建脚本
#!/bin/bash
# 定义颜色
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 无颜色
echo -e "${YELLOW}>>> 正在同步软件包索引...${NC}"
sudo apt update
echo -e "\n${GREEN}>>> 开始执行系统升级 (Full Upgrade)...${NC}"
# 移除 -y 参数,这样在升级前会停下来让你确认 [Y/n]
# 如果你想完全自动但看过程,可以保留 -y
sudo apt full-upgrade
echo -e "\n${YELLOW}>>> 正在清理过期的缓存和无用依赖...${NC}"
sudo apt autoremove -y
sudo apt autoclean
echo -e "\n${GREEN}>>> 更新任务已完成!${NC}"
赋予权限
sudo chmod +x /usr/local/bin/auto_update.sh
执行
auto_update.sh
针对 50MB 极小 内存目标
sudo nano /etc/mysql/mariadb.conf.d/99-lightweight.cnf
[mysqld]
# 核心:关闭性能监控,立省约 40MB+
performance_schema = OFF
# 存储引擎:将缓冲池压到最低 (适用于轻量 PHP 项目)
innodb_buffer_pool_size = 16M
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 2
innodb_stats_on_metadata = OFF
# 连接与线程:降低堆栈消耗
max_connections = 15
thread_stack = 192K
thread_cache_size = 0
# 临时表与缓存:防止内存突发占用
tmp_table_size = 2M
max_heap_table_size = 2M
table_open_cache = 400
table_definition_cache = 400
# 日志:禁用不必要的日志
skip-log-bin
sudo systemctl restart mariadb
查看内存情况
ps aux | grep mariadbd | grep -v grep | awk '{print $6/1024 " MB"}'
!作为个人博客使用及时不配置其内存占用也较低,实际上配置了之后内存占用并没有降低多少,全站负载500MB!<
sudo mariadb
-- 1. 创建数据库,指定字符集为 utf8mb4 以支持中文
CREATE DATABASE `2233` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 2. 创建用户并设置密码
CREATE USER '2233'@'localhost' IDENTIFIED BY 'YOURPASSWORD';
-- 3. 将数据库 2233 的所有权限授予用户 2233
GRANT ALL PRIVILEGES ON `2233`.* TO '2233'@'localhost';
-- 4. 刷新权限使配置立即生效
FLUSH PRIVILEGES;
-- 5. 退出
EXIT;
mariadb -u 2233 -p
成功进入后,运行 SHOW DATABASES; 能看到数据库 2233
爱来自 Dabian
sudo apt-get purge mariadb* mysql*
sudo apt-get autoremove
sudo apt update
sudo apt install -y dirmngr ca-certificates apt-transport-https curl
sudo curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo apt update
sudo apt install -y mariadb-server
sudo mariadb-secure-installation
基础 TLS 设置
sudo nano /etc/postfix/main.cf
# 可以使用网站域名证书
smtpd_tls_cert_file = /your.pem
smtpd_tls_key_file = /your.key
smtpd_use_tls = yes
# encrypt 强制启用
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtp_tls_CAfile = /your.crt
smtp_tls_security_level = may
smtp_tls_loglevel = 1
开启 465 和 587 端口
sudo nano /etc/postfix/master.cf
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
开启DNSSEC
1.CloudFlare > love4z.cn > DNS > 设置 > 开启DNSSEC
2.腾讯云 > love4z.cn > 域名安全 > DNSSEC 管理 >!(先暂时关闭禁止更新锁)!<
将CloudFlare提供的DS 记录一一对应填入:
安装 OpenDKIM
sudo apt install opendkim opendkim-tools
生成密钥
mkdir /etc/opendkim
opendkim-genkey -s 2233 -d love4z.cn -D /etc/opendkim
编辑 /etc/opendkim.conf
SyslogSuccess yes
LogWhy yes
Domain love4z.cn
Selector 2233
KeyFile /etc/opendkim/2233.private
# 注释掉原本的 Socket local:...
Socket inet:8891@localhost
InternalHosts 127.0.0.1, ::1
配置 DNS:
vi /etc/opendkim/2233.txt
若格式错误 删除括号内多余的空格换行和引号,使两段长字符串合并
TXT2233._domainkeyv=DKIM1; k=sha256; p=MIIBIjANBg...验证DNS配置
systemctl restart opendkim && opendkim-testkey -d love4z.cn -s 2233 -vvv
#应该返回
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key loaded from /etc/opendkim/2233.private
opendkim-testkey: checking key '2233._domainkey.love4z.cn'
opendkim-testkey: key secure
opendkim-testkey: key OK
配置 Postfix
vim /etc/postfix/main.cf
添加:
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
测试发信
邮件原文显示 dkim=fail(No key) 意味私钥读取失败
chown opendkim:opendkim /etc/opendkim/2233.private
chmod 600 /etc/opendkim/2233.private
sudo apt install postfix
sudo systemctl start postfix
1.修改系统主机名(可选)
hostnamectl set-hostname love4z.cn
2.修改 Postfix 配置
sudo nano /etc/postfix/main.cf
myhostname = love4z.cn
sudo systemctl restart postfix
SPF 记录
TXT@v=spf1 mx ip4:yourIP4 ip6:yourIp6 -allDMARC 记录
TXT_dmarcv=DMARC1; p=quarantine;