首页
语音便捷记账
开发服务
关于我
投稿
搜索
1
Android 系统级去广告方案全攻略:从 DNS 到 AdGuard 全覆盖
297 阅读
2
Flow Launcher:Windows上的Spotlight级快速启动器
280 阅读
3
Files:让Windows文件管理焕然一新
242 阅读
4
0 A.D. - 免费开源的古代战争即时战略游戏
231 阅读
5
Super Productivity:开发者的全能任务管理工具
204 阅读
默认分类
软件推荐
建站教程
服务器运维
自建服务
域名专题
深度指南
热点新闻
安卓
windows
登录
搜索
标签搜索
Windows
工具
跨平台
安全
Android
Linux
效率
开源
命令行
服务器
Mac
硬件
清理
开发
建站教程
优化
截图
视频
Nginx
AI
老郑的博客
累计撰写
369
篇文章
累计收到
11
条评论
首页
栏目
默认分类
软件推荐
建站教程
服务器运维
自建服务
域名专题
深度指南
热点新闻
安卓
windows
页面
语音便捷记账
开发服务
关于我
投稿
搜索到
73
篇与
的结果
2026-10-25
Alpine Linux:适用于服务器和容器的超轻量 Linux 发行版
Alpine Linux 是面向安全和效率的超轻量 Linux 发行版。基于 musl libc 和 busybox,基础系统不到 130MB,内存占用不到 100MB。被广泛用于 Docker 容器基础镜像——Docker Hub 上很多官方镜像的 alpine 变体。适用场景Docker 容器基础镜像:比 Ubuntu/Debian 镜像小 90%以上,拉取快、启动快、攻击面小。虚拟机中构建轻量服务器——不需要桌面环境,内存 256MB 就能跑 Web 服务器。路由器/嵌入式设备和小型 VPS。特点包管理器 apk(Alpine Package Keeper),不是 apt/yum/pacman。默认使用 OpenRC 而不是 systemd 做服务管理。编译器 musl libc 不是 glibc——一些二进制软件可能不兼容(需要 glibc 兼容层)。安全默认:内核 PaX/grsec 加固,所有二进制 PIE/PIC 编译。如果你想运行最小可能的服务器——Alpine 是最佳选择。Alpine Linux:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月25日
3 阅读
0 评论
0 点赞
2026-10-21
Croc:通过中继码安全传文件,比 Magic Wormhole 更快
Croc 是命令行文件传输工具,通过中继服务器在两个设备间安全传输文件。不需要设备在同一网络、不需要端口转发、不需要知道对方 IP 地址。发送方运行 croc send file → 生成一个代码短语(如 "correct-horse-battery-staple")→ 接收方运行 croc 代码短语 → 双方通过中继服务器建立端到端加密中继传输。特性端到端加密(PAKE 密码认证密钥交换,中继服务器不知道密码、无法解密文件)。断点续传。支持文件和文件夹。支持多文件同时发送。代码短语可以自定义(如 croc send --code mysecret123 file)。支持通过管道发送文本(echo "hello" | croc send)。跨平台:Windows/macOS/Linux/FreeBSD。对比 Magic WormholeCroc:需要双方安装 croc 工具。中继代码是单词短语(比随机字符串更容易口述传达)。支持断点续传和内网直连(同一局域网时自动直连、速度快很多)。Magic Wormhole:Python 编写,传输基于 TCP、只有一个包大小限制、不支持文件夹和断点续传。Croc 更现代、功能更好。Croc:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月21日
3 阅读
0 评论
0 点赞
2026-10-19
qpdf:命令行 PDF 处理,适合脚本批处理
qpdf 是命令行 PDF 处理工具,跨平台。适合在脚本中批量处理 PDF。qpdf empty.pdf pages input.pdf 1-5 -- output.pdf 提取前 5 页。qpdf --split-pages=n input.pdf output%d.pdf 每 n 页拆分。合并:qpdf empty.pdf pages 1.pdf 2.pdf -- merged.pdf。PDF 优化线性化(Linearize/Web Optimization):qpdf --linearize input.pdf output.pdf,使 PDF 支持在线流式阅读——打开 PDF 链接时从第一页开始显示而不是等整个文件下载完(适合在网站放 PDF 预览)。加密:qpdf encrypt --user-password=USER --owner-password=OWNER --key-length=256 input.pdf output.pdf 加密码保护。解密:qpdf decrypt --password=PASS input.pdf output.pdf。实用命令组合把 PDF 旋转后拆分:qpdf --rotate=+90 input.pdf --split-pages=1 -- output.pdf 每页旋转90度并一页一个文件。压缩 PDF 图片质量:先通过 Ghostscript,再通过 qpdf 处理,在脚本中批量处理整个文件夹的 PDF。qpdf:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月19日
12 阅读
0 评论
0 点赞
2026-10-19
GParted:开源磁盘分区管理工具,分区调整不求人
GParted(GNOME Partition Editor)是免费的跨平台磁盘分区管理工具。虽然名字带 GNOME,但通过 Live CD/USB 可以在任何电脑上运行(包括 Windows PC)。支持调整分区大小、移动分区、创建/删除/格式化分区,支持几乎所有文件系统(NTFS、FAT32、ext4、btrfs、xfs、HFS+ 等)。Live USB 方式:下载 GParted Live ISO → Rufus 写 U 盘 → 从 U 盘启动 → 进入 GParted 图形界面。在操作系统以外调整系统盘分区(因为系统盘在被使用时无法调整)。移分区需要移动数据,时间较长且不能中断(断电可能导致数据丢失),调整前务必备份重要数据。GParted:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月19日
17 阅读
0 评论
0 点赞
2026-10-18
syncthingtray:Syncthing 的系统托盘图形界面增强
SyncthingTray 是 Syncthing 的桌面图形界面包装器,为 Syncthing 提供系统托盘图标和桌面通知。Syncthing 本身只有 Web UI(用浏览器管理),SyncthingTray 把它变成标准的桌面应用体验。功能系统托盘图标 → 显示同步状态(颜色变化:蓝色同步中、绿色完成、红色错误)。右键菜单 → 快速打开 Web UI、最近的文件(显示最近同步的文件列表,点击直接打开)、文件夹状态(每个同步文件夹的完成百分比和设备在线状态)。桌面通知:文件冲突、设备上线/离线、同步完成。开机自启动和后台运行。暗色模式支持。跨平台Windows:通过 Qt 实现的托盘功能,类似 OneDrive 的系统托盘体验。Linux:支持 KDE/AppIndicator 等托盘标准。macOS:功能较少(macOS 菜单栏不支持 Qt 的托盘实现),但基本的同步状态仍然可见。SyncthingTray:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月18日
17 阅读
0 评论
0 点赞
2026-10-16
Czkawka:开源重复文件/大文件/空文件夹查找清理工具
Czkawka(波兰语"打嗝")是 Rust 编写的开源重复文件查找和清理工具,跨平台 Windows/macOS/Linux。极速(Rust 内存安全和并行处理)——扫描速度远快于 Python 编写的类似工具(如 dupeGuru)。检测模式重复文件:按文件名、大小、哈希(SHA256/XXHASH)或前 1MB 哈希匹配重复文件。可以设置最小文件大小(如忽略 1MB 以下的小文件)。大文件:找出指定大小的文件(如大于 500MB)。空文件夹:扫描没有文件的空目录。空文件:大小 0 字节的文件。相似图片:按感知哈希(pHash)找出视觉相似的图片(分辨率不同或轻微修改过的图片)。相似视频:比较视频的持续时间和分辨率等元数据。无效符号链接:找到指向不存在的目标的符号链接。安全所有删除操作提供预览——确认删除前可以看到会删除什么和选择保留哪个副本。可以设置保留规则:保留最旧的/最新的/最小的/最大的、仅保留指定路径中的文件。删除时可以选择移到回收站或永久删除。Czkawka:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月16日
17 阅读
0 评论
0 点赞
2026-10-15
Speedtest CLI:命令行测网速,无广告不占浏览器
Speedtest CLI 是 Ookla 官方提供的命令行网速测试工具。不需要打开 Speedtest.net 网页(网页端有广告和各种视觉元素影响测试精度),直接在终端运行即可获得准确的带宽和延迟数据。使用下载 Speedtest CLI 二进制文件(或通过系统包管理器安装:winget install speedtest、brew install speedtest、apt install speedtest-cli)。speedtest 自动选择最佳服务器测试下载/上传速度、延迟和抖动。speedtest --server-id=xxx 指定测速服务器 ID(适用于对比不同服务器的测速结果)。speedtest --format=json 输出 JSON 格式结果(适合脚本解析和持续监控)。speedtest --progress=no 静默模式输出最终结果。脚本应用定时监控:cron 计划任务每小时/每天跑一次 speedtest,结果追加到 CSV 日志。配合 Grafana 绘制宽带质量趋势图——在高峰时段(晚 8-11 点)网速是否被 ISP 限制(运营商限速套路)。路由器换位置或换了网线后跑测试对比。Speedtest CLI:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月15日
14 阅读
0 评论
0 点赞
2026-10-15
DDNS-GO:自动更新动态公网 IP 到域名解析,实现随时随地访问家里 NAS
DDNS-GO 是开源 DDNS(动态 DNS)客户端。家庭宽带通常没有固定公网 IP,IP 变化后你的域名解析需要随之更新才能继续从外网访问家里的 NAS、服务器、监控等设备。DDNS-GO 自动检测你的公网 IP 变化并更新到域名 DNS 记录。工作原理DDNS-GO 运行在你的路由器或 NAS 上 → 每隔一段时间(如 5 分钟)检测公网 IP → 与记录的 IP 对比 → 如果 IP 变了,自动调用 DNS 服务商 API 更新解析记录。支持的 DNS 服务商:Cloudflare、阿里云、腾讯云 DNSPod、华为云、Google Domains、Namecheap、DuckDNS 等十几个主流服务商。支持通过网卡获取、通过服务商接口获取、通过命令获取公网 IP,适应多种网络环境。使用示例Docker 部署:一行命令启动,Web 管理界面(默认 :9876)配置 DNS 服务商 API Token 和域名。配置后不再需要管理——只要盒子不掉电、IP 变化都能完全自动处理。配合端口转发或反向代理,实现类似 myhome.example.com 永久指向你家宽公网 IP。DDNS-GO:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月15日
16 阅读
0 评论
0 点赞
2026-10-09
wttr.in:命令行查天气,一行 curl 搞定
wttr.in 是面向命令行的天气服务。在终端输入 curl wttr.in 就显示当前所在城市的天气(基于 IP 判断位置),彩色的 ASCII 图表展示未来三天天气预报。不需要安装任何软件。用法curl wttr.in/Beijing 查北京天气。curl wttr.in/Moon 查月相。curl v2.wttr.in/Beijing 纯文本格式(v2 接口去掉颜色代码,适合脚本解析)。curl "wttr.in/Beijing?format=%t" 只返回当前温度数值(适合嵌入自定义脚本和状态栏)。支持中文城市名(如 curl wttr.in/上海)、邮编、机场代码。支持多语言(如 ?lang=zh 返回中文结果)。实用场景把天气信息集成到自定义状态栏(tmux 状态栏、Waybar、Polybar)。写监控脚本时追加天气信息到日志。快速看天气不想打开浏览器。wttr.in 背后由 Igor Chubin 维护,数据来源为 Open-Meteo,完全免费,无 API Key 要求。wttr.in:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月09日
28 阅读
0 评论
0 点赞
2026-10-07
Duplicati:免费的加密增量云备份工具
Duplicati 是免费开源加密备份软件,支持 Windows/macOS/Linux。采用增量去重备份——首次全量备份后,后续只备份变化的文件块,节省存储空间和上传时间。支持 AES-256 加密,所有数据在离开你的电脑之前已加密,云端存储商看不到你的文件内容。备份目标支持 20+ 种存储后端:Amazon S3、Backblaze B2、Google Drive、Microsoft OneDrive、Dropbox、FTP/SFTP、WebDAV、本地文件夹/网络共享等。可以同时配置多个备份目标——一份数据多地冗余。增量去重文件被切分为固定大小的块,每个块计算哈希值。再次备份时,只上传哈希值不在服务器上的新块,已有的块直接引用。删除文件后旧备份中的块不会立即删除,直到所有引用该块的旧备份都被清理。这意味着你可以回到任意历史时间点恢复文件,同时存储空间不会增长太多。配置示例备份本地 Documents 目录到 Backblaze B2,每周六凌晨 2 点自动执行。保留最近 4 周每周备份、最近 6 个月每月备份。备份前过滤掉 node_modules 和 .git 等大目录(排除规则支持通配符)。首次备份 10GB,之后每周末备份新增文件可能只增加 200MB 的新块。Duplicati:此内容需要评论后才能查看哦 (*^▽^*)
2026年10月07日
28 阅读
0 评论
0 点赞
2026-09-25
Docker Desktop:容器化开发环境一键搭建
Docker Desktop 是 Docker 官方提供的桌面版工具,让容器技术对开发者更友好——不需要手动安装 Docker Engine 和配置 Linux 环境,Docker Desktop 内置了一个轻量 Linux 虚拟机,开箱即用。支持 Windows(Hyper-V 或 WSL2 后端)和 Mac 两个平台。核心概念镜像(Image):类似虚拟机的快照或系统的安装盘 ISO——包含了运行某个应用所需的全部依赖(操作系统精简层、运行环境、应用代码、配置)。镜像是只读的层叠文件系统。容器(Container):镜像的运行实例。你可以从同一个 MySQL 8.0 镜像启动多个容器,每个容器有独立的数据和网络。容器轻量到秒级启动、MB 级磁盘占用。Dockerfile:定义镜像构建过程的文本文件。Docker Compose:用 YAML 文件定义多容器应用(如 Web 应用 + MySQL + Redis + Nginx),一条 docker compose up 启动全部服务。实用场景本地跑 MySQL 测试:docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:8,不用安装配置 MySQL,用完 docker rm -f mysql 彻底清理所有痕迹。运行 Redis、RabbitMQ、Elasticsearch 等同理。团队统一开发环境:Docker Compose 文件放入 Git 仓库,新人 clone 后 docker compose up 就拥有一模一样的开发环境。临时测试 Linux 命令:docker run -it ubuntu bash,进入 Ubuntu 容器的 bash,用完 exit 退出自动清理。Docker Desktop:此内容需要评论后才能查看哦 (*^▽^*)
2026年09月25日
37 阅读
0 评论
0 点赞
2026-09-21
Streamlink:命令行直播流提取工具,看直播不用网页
Streamlink 是命令行直播流提取工具。支持 Twitch、YouTube Live、Bilibili 直播、斗鱼、虎牙等各种直播平台。原理:从直播间网页提取直接视频流地址,传给 VLC 或 mpv 等播放器播放,绕过网页端的高 CPU 占用和广告,享受原生视频播放性能。基本用法streamlink URL best 用默认播放器(VLC)打开直播的最高画质。streamlink URL 720p,480p,best 尝试 720p,不行就 480p,都不行就 best。streamlink -o output.ts URL best 录制直播到文件。streamlink --player mpv URL best 指定 mpv 播放器。列出可用画质:streamlink URL(不加画质参数,列出所有可用选项)。为什么用它看直播直播网页通常非常吃资源——弹幕渲染层、礼物特效、广告、自动播放的推荐视频、大量 JavaScript 运行。实测同一台电脑,浏览器看 B 站直播 CPU 占用 40-60%,Streamlink + mpv 仅 5-10%。直播结束时 Streamlink 自动退出,避免网页一直跑着后台占用资源。配合 Python 脚本可以实现监控主播开播并自动录制,不会错过喜欢的直播。Streamlink:此内容需要评论后才能查看哦 (*^▽^*)
2026年09月21日
50 阅读
0 评论
0 点赞
2026-09-20
Tabby:可无限自定义的跨平台终端模拟器
Tabby(原 Terminus)是基于 Electron 的跨平台终端模拟器,支持 Windows/macOS/Linux。它最大的特点是高度可自定义——主题、配色、字体、光标样式、背景图片、透明度等等都能调。内置 SSH 客户端和串口终端,不需要单独的 PuTTY 或 screen。核心功能SSH 连接管理:内置 SSH 客户端,保存主机列表,点击即连。支持密码和密钥认证,支持 SSH 隧道和跳板机配置。分屏和标签页:和 tmux 逻辑相同但由终端模拟器本身提供,不受远端 tmux 服务状态影响。插件系统:社区开发的各种插件(Docker 面板、CPU 监控、快速命令等)。主题:300+ 社区主题,支持背景图片和模糊透明效果。设置同步:通过 GitHub Gist 在多台电脑间同步设置和 SSH 配置(加密存储)。缺点Electron 框架导致启动较慢、内存占用偏高(100-200MB vs 终端自带 10MB)。不适合追求极致轻量和原生体验的用户。颜值和功能都很好,适合愿意用内存换体验的用户。替代品参考:Windows Terminal(原生 C++/WinUI,启动快)、Warp(macOS 原生 Rust,AI 能力强)、iTerm2(macOS 经典老牌,功能最全)。Tabby:此内容需要评论后才能查看哦 (*^▽^*)
2026年09月20日
48 阅读
0 评论
0 点赞
2026-09-14
ImageMagick:命令行图像处理的瑞士军刀
ImageMagick 是命令行图像处理工具集,支持 200+ 图像格式,能做几乎所有你能想到的图像操作:格式转换、缩放、裁剪、旋转、加水印、批量处理、GIF 制作、颜色调整、透明度处理等。它是很多网站后台图片处理的底层引擎。常用命令格式转换:convert input.png output.jpg(最基础)。调整大小:convert input.jpg -resize 800x600 output.jpg(按比例缩放到 800x600 范围内,保持宽高比)。加 ! 强制精确尺寸:-resize 800x600!。批量转换和缩放:mogrify -format jpg -resize 50% *.png(当前目录所有 PNG 缩放到 50% 并转为 JPG,覆盖原文件慎用)。加 -path 指定输出目录可以避免覆盖。裁剪:convert input.jpg -crop 400x300+100+50 output.jpg(从坐标 100,50 开始裁剪 400x300 区域)。加水印:convert input.jpg -gravity southeast -geometry +10+10 watermark.png -composite output.jpg(右下角加 10px 边距放置水印)。添加文字:convert input.jpg -gravity center -pointsize 48 -fill white -annotate +0+0 'Copyright 2026' output.jpg。制作 GIF:convert -delay 20 -loop 0 frame*.png animation.gif(所有帧图片合成 GIF,delay 20 是帧率 50ms)。压缩图片:convert input.jpg -quality 85 output.jpg(JPG 质量 85,字体好可读性强的数字 85)。获取图片信息:identify -verbose image.jpg(元数据、分辨率、色域、EXIF 等)。ImageMagick:此内容需要评论后才能查看哦 (*^▽^*)
2026年09月14日
78 阅读
0 评论
0 点赞
2026-09-03
FFmpeg 入门:命令行音视频处理的瑞士军刀
FFmpeg 是音视频处理领域最强大的命令行工具。几乎所有视频播放器、编辑软件底层都用了 FFmpeg 或其组件。学会 FFmpeg 的基本命令,你将能完成大多数图形界面软件才能做到的音视频处理任务,而且更快、更灵活、可批量。10 个常用命令1. 转换格式:ffmpeg -i input.mp4 output.avi。根据扩展名自动选择编码器,极简单。2. 压缩视频(减小体积):ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4。CRF 28 是比较强的压缩,体积可减少 70%+,画质尚可。CRF 值越小画质越好体积越大。3. 提取音频:ffmpeg -i video.mp4 -vn -acodec copy output.aac。 -vn 表示不要视频。4. 去除音频(静音视频):ffmpeg -i input.mp4 -an output.mp4。 -an 表示不要音频。5. 裁剪视频片段:ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:30 -c copy output.mp4。从 1 分 30 秒开始截取 30 秒,-c copy 不重新编码极快。但 -c copy 时 ss 可能不精确到帧,追求精度需要去掉 -c copy 重新编码。6. 合并多个视频:先把文件列表写进 list.txt(格式:file 'video1.mp4'),然后 ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4。要求所有视频编码参数相同。7. 提取视频帧为图片:ffmpeg -i video.mp4 -vf fps=1/10 frame_%04d.png。每 10 秒抽一帧保存为 PNG。8. 图片合成视频:ffmpeg -framerate 30 -pattern_type glob -i '*.png' -c:v libx264 -pix_fmt yuv420p output.mp4。当前目录所有 PNG 合成为 30fps 视频。9. GIF 转 MP4:ffmpeg -i animation.gif -movflags faststart output.mp4。GIF 通常是几 MB/秒,转 MP4 可缩小到原来的 10%。10. 查看媒体信息:ffmpeg -i video.mp4(不加输出文件),输出编码信息、时长、分辨率、码率等详细元数据。FFmpeg:此内容需要评论后才能查看哦 (*^▽^*)
2026年09月03日
91 阅读
0 评论
0 点赞
2026-09-03
Warp:基于 Rust 的现代终端,AI 加持的命令行革命
Warp 是用 Rust 编写的现代终端模拟器,目前仅支持 macOS(Linux 和 Windows 版开发中)。它重新思考了终端应该是什么样子,加入了很多以前终端没有的特性。核心创新文本编辑器式交互:传统终端中你不能用鼠标选择文字、不能复制粘贴多行、不能撤销。Warp 让终端像代码编辑器一样:可以用鼠标选择和编辑文字、Ctrl+Z 撤销、Ctrl+Shift+C/V 复制粘贴、多光标编辑。光标不在输入行时,上下键是浏览输出历史,不是调出上一条命令。命令块(Blocks):每个命令和它的输出被组织在一个"块"中。你可以折叠块的输出、复制块的内容、把块的内容分享为链接(Warp Drive)。块的顶部显示命令执行耗时和退出码。AI 辅助:输入自然语言描述你想做的事,按 Ctrl+` 或输入 #,Warp AI 会生成对应的命令。例如输入"find all log files modified in the last 24 hours larger than 10MB",AI 直接生成 find 命令。AI 不依赖外部 API(可离线使用本地推理引擎)。你还可以用 Ctrl+R 搜索命令历史并得到 AI 的解释。Warp Drive(工作流共享):把一组命令打包成工作流并分享(如部署脚本、环境初始化流程)。团队成员导入后一键运行。缺点目前需要注册账号才能使用(官方计划未来移除)。闭源,隐私敏感用户可能介意。不支持 TUI 应用中使用鼠标(如 htop、vim)。对传统终端骨灰级用户来说,文本编辑器式交互需要学习曲线。Warp:此内容需要评论后才能查看哦 (*^▽^*)
2026年09月03日
99 阅读
0 评论
0 点赞
2026-08-29
RClone:命令行云存储管理神器,挂载网盘为本地磁盘
RClone 是命令行云存储管理工具,支持 40+ 种云存储服务:Google Drive、OneDrive、Dropbox、Amazon S3、阿里云 OSS、Backblaze B2、WebDAV、SFTP 等。它的杀手级功能是把云存储挂载为本地文件系统——任何程序都可以像读写本地文件一样读写云端文件。基本使用rclone config 进入交互式配置向导,选择云服务类型 → 按提示完成 OAuth 授权(Google Drive 和 OneDrive 需要浏览器授权)→ 给配置起个名字(如 gdrive、onedrive)。配置完成后,rclone ls gdrive: 列出 Google Drive 根目录文件,rclone copy /local/folder gdrive:backup 上传文件夹到云端,rclone sync /local/docs gdrive:docs 同步(单向,使云端与本地一致,云端多出的文件会被删除)。挂载为本地磁盘rclone mount gdrive: ~/gdrive-mount --vfs-cache-mode writes。执行后 ~/gdrive-mount 目录就是一个本地磁盘,Finder/文件管理器可以直接浏览,任何程序都可以打开、编辑、保存文件——读写操作被 RClone 透明地转换为 API 调用。VFS 缓存模式:off(不缓存,每次读都是 API 调)、minimal、writes(缓存写入操作)、full(读写全缓存,最流畅但占本地空间)。推荐日常使用 writes 模式,配合系统服务开机自启。加密备份RClone 支持 Crypt 远程——在上传前自动加密文件。即使云盘被攻破,攻击者也看不到你的文件内容。创建 crypt 远程时需要指定底层存储(如 Google Drive)和加密密码。之后你读写加密远程,文件在本地是明文,传输和存储时是密文。还可以用 rclone serve webdav 把加密远程暴露为 WebDAV 服务,让手机上的文件管理器直接通过 WebDAV 访问加密云盘。RClone:此内容需要评论后才能查看哦 (*^▽^*)
2026年08月29日
80 阅读
0 评论
0 点赞
2026-08-26
QEMU + virt-manager:Linux 上最强的虚拟机方案
为什么选 QEMU/KVMQEMU 是开源的硬件模拟器和虚拟化工具。配合 KVM(Kernel-based Virtual Machine,Linux 内核虚拟化模块),可以提供接近原生性能的虚拟机体验。对比 VirtualBox:QEMU/KVM 的性能更好(直接利用 CPU 虚拟化指令),磁盘 I/O 更高(virtio 驱动),支持更多高级特性(GPU 直通、NUMA 拓扑、嵌套虚拟化)。对比 VMware Workstation:QEMU 完全开源免费,没有任何功能限制。安装和初始配置sudo apt install qemu-kvm libvirt-daemon-system virt-manager(Debian/Ubuntu)。安装后把当前用户加入 libvirt 组:sudo usermod -aG libvirt $USER,重新登录生效。启动 virt-manager(图形化管理界面),连接到 QEMU/KVM。下载想要安装的操作系统 ISO,在 virt-manager 中新建虚拟机 → 选择 ISO → 分配 CPU 核心数和内存 → 创建虚拟磁盘(推荐 qcow2 格式,支持快照和动态分配空间)。性能优化使用 virtio 驱动:安装 Windows 虚拟机时务必加载 virtio-win 驱动 ISO,提供 virtio 存储和网络驱动,磁盘性能比 SATA 模拟高 3 倍以上。CPU 配置:选择 host-passthrough 模型让虚拟机直接暴露宿主机 CPU 特性(如 AVX 指令集)。内存:启用巨页(HugePages)减少内存地址转换开销,适合大内存虚拟机。磁盘缓存:选择 none(直接 I/O)或 writeback(写入缓存)根据场景取舍。网络:使用 virtio 网卡+ macvtap 桥接模式获得接近物理网卡的性能。GPU 直通(PCI Passthrough)高级玩法:把一块物理显卡直通给虚拟机,虚拟机里的游戏性能接近裸金属。需要:CPU 和主板支持 IOMMU(VT-d / AMD-Vi)、两块显卡(一块给宿主机,一块给虚拟机)、在 GRUB 内核参数中启用 iommu。配置步骤较复杂,但完成后可以在 Linux 宿主机上用一个 Windows 虚拟机玩游戏且获得 95%+ 的 GPU 性能。适合"一台电脑同时当 Linux 工作站和 Windows 游戏机"的场景。QEMU:此内容需要评论后才能查看哦 (*^▽^*) virt-manager:此内容需要评论后才能查看哦 (*^▽^*)
2026年08月26日
84 阅读
0 评论
0 点赞
2026-08-24
Git 从入门到团队协作:20 个高频命令和最佳实践
基础配置安装 Git 后的第一件事:设置用户名和邮箱——git config --global user.name "Your Name" 和 git config --global user.email "your@email.com"。这些信息会嵌入每一次提交。推荐同时设置默认分支名为 main:git config --global init.defaultBranch main。换行符配置:Windows 设置 core.autocrlf true,Mac/Linux 设置 core.autocrlf input,避免跨平台协作时换行符混乱导致整个文件都标记为变更。日常高频命令场景命令 初始化仓库git init 克隆仓库git clone url 查看状态git status / git status -s(简洁模式) 添加文件到暂存区git add file / git add . / git add -p(交互选择) 提交git commit -m "message" 推送到远程git push origin main 拉取远程更新git pull / git pull --rebase(避免多余的 merge commit) 查看提交历史git log --oneline --graph --all 撤销工作区修改git checkout -- file / git restore file 撤销暂存区git reset HEAD file / git restore --staged file 修改最近一次提交git commit --amend 创建分支git branch feature-x / git checkout -b feature-x 合并分支git merge feature-x 变基git rebase main 储藏修改git stash / git stash pop 查看远程仓库git remote -v 查看某次提交的变更git show commit-hash 标签git tag v1.0 / git push origin --tags cherry-pickgit cherry-pick commit-hash 找回丢失的提交git reflog分支策略推荐 Git Flow 简化版:main 分支永远是生产就绪代码;feature/* 分支开发新功能,完成后 PR 合并到 main;hotfix/* 分支紧急修复线上 bug。日常在 feature 分支工作,每天结束前 push 到远程作为备份。提交信息规范:类型(范围): 简短描述,类型包括 feat/fix/docs/style/refactor/test/chore。例:feat(auth): add JWT token refresh。好的提交信息是你三个月后回来看代码时的救命稻草。解决冲突合并或 rebase 时出现冲突不可怕。冲突标记 > 之间是冲突部分,删掉标记并保留想要的代码,git add 标记为解决,git rebase --continue 或 git merge --continue 继续。VS Code 和 JetBrains 内置的三路合并工具可以大幅简化这个过程。预防冲突的最佳实践:频繁从 main 拉取更新、保持分支短小(一个分支只做一件事)。Git 官方文档:此内容需要评论后才能查看哦 (*^▽^*) Git 飞行规则:此内容需要评论后才能查看哦 (*^▽^*)
2026年08月24日
89 阅读
0 评论
0 点赞
2026-08-23
Neovim 从入门到日常使用:用 LunarVim 快速获得 IDE 级体验
< p > V i m 是 " 一 旦 掌 握 就 回 不 去 " 的 编 辑 器 , 但 配 置 门 槛 高 得 吓 人 。 N e o v i m 是 V i m 的 现 代 分 支 , 而 L u n a r V i m 是 一 套 预 配 置 的 N e o v i m 发 行 版 — — 安 装 后 直 接 获 得 V S C o d e 级 别 的 功 能 : 语 法 高 亮 、 自 动 补 全 ( L S P ) 、 文 件 树 、 模 糊 搜 索 、 G i t 集 成 、 终 端 集 成 。 < / p > < h 2 > 安 装 < / h 2 > < p > 确 保 安 装 了 N e o v i m 0 . 9 + 、 G i t 、 r i p g r e p 、 N o d e . j s ( L S P 需 要 ) 。 然 后 一 行 命 令 安 装 L u n a r V i m : < c o d e > b a s h < ( c u r l - s h t t p s : / / r a w . g i t h u b u s e r c o n t e n t . c o m / l u n a r v i m / l u n a r v i m / m a s t e r / u t i l s / i n s t a l l e r / i n s t a l l . s h ) < / c o d e > 。 首 次 运 行 < c o d e > l v i m < / c o d e > 会 自 动 安 装 所 有 插 件 和 L S P 服 务 器 。 这 个 过 程 需 要 3 - 5 分 钟 。 < / p > < h 2 > 核 心 功 能 < / h 2 > < p > 文 件 树 : S p a c e + e 打 开 / 关 闭 , a 新 建 文 件 , d 删 除 , r 重 命 名 。 模 糊 搜 索 : S p a c e + f 搜 索 文 件 ( 类 似 C t r l + P ) , S p a c e + / 全 文 搜 索 ( g r e p ) , 搜 索 结 果 在 T e l e s c o p e 窗 口 中 实 时 预 览 。 L S P 智 能 补 全 : 打 开 代 码 文 件 自 动 启 动 对 应 语 言 的 L S P 服 务 器 ( 通 过 M a s o n 自 动 安 装 ) , 输 入 时 自 动 弹 出 补 全 窗 口 , 支 持 函 数 签 名 提 示 、 跳 转 到 定 义 ( g d ) 、 查 找 引 用 ( g r ) 、 重 命 名 符 号 。 G i t 集 成 : 行 号 左 侧 显 示 改 动 标 记 ( + ~ - ) , S p a c e + g 打 开 G i t 操 作 面 板 。 终 端 : C t r l + / 在 编 辑 器 中 打 开 浮 动 终 端 窗 口 。 < / p > < h 2 > 学 V i m 核 心 键 位 < / h 2 > < p > V i m 的 学 习 曲 线 陡 峭 但 回 报 巨 大 。 核 心 概 念 : N o r m a l 模 式 ( 导 航 和 操 作 ) 、 I n s e r t 模 式 ( 输 入 文 字 ) 、 V i s u a l 模 式 ( 选 中 文 本 ) 。 最 基 本 的 移 动 : h / j / k / l ( 左 下 上 右 ) 、 w / b ( 按 单 词 前 后 移 动 ) 、 0 / $ ( 行 首 行 尾 ) 、 g g / G ( 文 件 头 尾 ) 。 编 辑 : i 进 入 插 入 模 式 、 E s c 退 出 、 d d 删 除 一 行 、 y y 复 制 一 行 、 p 粘 贴 、 u 撤 销 、 C t r l + r 重 做 。 搜 索 : / 关 键 词 n / N 下 一 个 / 上 一 个 。 熟 练 掌 握 这 2 0 个 键 位 后 , 你 编 辑 文 本 的 速 度 会 翻 倍 。 < / p >
2026年08月23日
91 阅读
0 评论
0 点赞
2026-08-23
Alacritty + Tmux + Zellij:现代终端工作流的三种方案
< p > 终 端 是 程 序 员 的 第 二 双 手 。 传 统 的 G N O M E T e r m i n a l 和 i T e r m 2 功 能 虽 全 但 速 度 偏 慢 。 本 文 介 绍 三 种 现 代 终 端 工 作 流 方 案 , 各 自 适 合 不 同 的 使 用 场 景 。 < / p > < h 2 > 方 案 一 : A l a c r i t t y ( G P U 加 速 终 端 + 简 洁 至 死 ) < / h 2 > < p > A l a c r i t t y 是 用 R u s t 编 写 的 G P U 加 速 终 端 模 拟 器 , 核 心 卖 点 是 极 致 的 性 能 和 极 简 的 设 计 。 它 没 有 标 签 页 、 没 有 分 屏 、 没 有 配 置 文 件 G U I — — 这 些 功 能 交 给 T m u x 或 Z e l l i j 处 理 。 A l a c r i t t y 只 做 一 件 事 : 以 最 快 的 速 度 渲 染 字 符 。 实 测 滚 动 大 量 日 志 时 , A l a c r i t t y 的 帧 率 远 超 其 他 终 端 , 延 迟 感 知 几 乎 为 零 。 支 持 V i 模 式 ( 像 V i m 一 样 在 终 端 输 出 中 选 择 和 复 制 文 字 ) 、 多 窗 口 、 自 定 义 配 色 。 适 合 追 求 极 致 性 能 和 极 简 哲 学 的 用 户 。 配 置 文 件 是 T O M L 格 式 , 可 以 做 透 明 背 景 、 自 定 义 字 体 、 键 盘 快 捷 键 绑 定 等 。 < / p > < h 2 > 方 案 二 : K i t t y ( G P U 终 端 + 内 置 功 能 丰 富 ) < / h 2 > < p > K i t t y 也 是 G P U 加 速 终 端 , 但 和 A l a c r i t t y 的 极 简 主 义 不 同 , K i t t y 内 置 了 大 量 功 能 : 标 签 页 、 分 屏 、 图 形 协 议 ( 可 以 直 接 在 终 端 里 显 示 图 片 ! ) 、 S S H 集 成 ( 连 接 远 程 服 务 器 时 自 动 复 制 t e r m i n f o ) 、 连 字 ( L i g a t u r e ) 字 体 支 持 。 K i t t y 的 图 形 协 议 特 别 适 合 需 要 查 看 数 据 可 视 化 的 场 景 — — 在 远 程 服 务 器 上 生 成 一 张 图 , 直 接 在 终 端 里 显 示 , 不 需 要 s c p 下 载 再 打 开 。 缺 点 是 用 C 和 P y t h o n 混 合 开 发 , 自 定 义 和 插 件 不 如 A l a c r i t t y 灵 活 。 < / p > < h 2 > 方 案 三 : Z e l l i j ( 终 端 W o r k s p a c e 管 理 器 ) < / h 2 > < p > Z e l l i j 是 一 个 " 终 端 工 作 区 " 工 具 , 可 以 理 解 成 更 现 代 、 更 易 用 的 T m u x 。 自 带 状 态 栏 ( 显 示 当 前 标 签 页 列 表 、 快 捷 键 提 示 ) 、 浮 动 面 板 ( 按 C t r l + p 弹 出 命 令 面 板 ) 、 多 用 户 协 作 、 布 局 模 板 。 Z e l l i j 最 大 的 创 新 是 " 对 新 手 友 好 " — — 默 认 状 态 下 所 有 快 捷 键 都 在 底 部 状 态 栏 显 示 , 不 需 要 背 T m u x 那 一 堆 前 缀 组 合 。 布 局 文 件 可 以 用 K D L 格 式 预 先 定 义 ( 如 " 左 侧 代 码 编 辑 、 右 侧 测 试 运 行 、 底 部 日 志 监 控 " ) , 一 键 加 载 。 适 合 T m u x 的 新 用 户 和 需 要 可 视 化 工 作 区 的 人 群 。 < / p >
2026年08月23日
88 阅读
0 评论
0 点赞
2026-08-22
Linux 服务器安全加固 10 步清单:从 SSH 到防火墙
< p > 一 台 新 买 的 云 服 务 器 上 线 后 , 不 做 任 何 安 全 配 置 的 话 , 几 分 钟 内 就 会 被 僵 尸 网 络 扫 描 到 并 开 始 暴 力 破 解 S S H 。 以 下 是 新 服 务 器 必 须 完 成 的 1 0 项 安 全 加 固 。 < / p > < h 2 > 1 . 禁 用 r o o t S S H 密 码 登 录 , 改 用 密 钥 < / h 2 > < p > 编 辑 < c o d e > / e t c / s s h / s s h d _ c o n f i g < / c o d e > : < c o d e > P e r m i t R o o t L o g i n p r o h i b i t - p a s s w o r d < / c o d e > ( 禁 止 r o o t 密 码 登 录 但 允 许 密 钥 登 录 ) 、 < c o d e > P a s s w o r d A u t h e n t i c a t i o n n o < / c o d e > ( 完 全 禁 止 密 码 登 录 , 强 制 密 钥 ) 。 重 启 s s h d : < c o d e > s y s t e m c t l r e s t a r t s s h d < / c o d e > 。 在 这 之 前 务 必 已 经 把 自 己 公 钥 添 加 到 < c o d e > ~ / . s s h / a u t h o r i z e d _ k e y s < / c o d e > , 否 则 你 自 己 也 进 不 去 了 。 < / p > < h 2 > 2 . 修 改 S S H 默 认 端 口 < / h 2 > < p > 在 s s h d _ c o n f i g 中 < c o d e > P o r t 2 2 2 2 < / c o d e > ( 改 成 非 标 准 端 口 ) 。 这 不 能 阻 止 专 业 攻 击 者 用 n m a p 扫 描 到 , 但 能 过 滤 掉 9 9 % 的 自 动 化 扫 描 脚 本 。 如 果 用 了 U F W 防 火 墙 , 别 忘 了 开 放 新 端 口 : < c o d e > u f w a l l o w 2 2 2 2 / t c p < / c o d e > 。 < / p > < h 2 > 3 . 安 装 f a i l 2 b a n < / h 2 > < p > < c o d e > a p t i n s t a l l f a i l 2 b a n < / c o d e > 。 默 认 配 置 就 能 自 动 检 测 S S H 暴 力 破 解 并 在 1 0 分 钟 内 封 禁 该 I P 。 可 以 配 置 邮 件 通 知 : 每 次 有 I P 被 封 就 发 邮 件 提 醒 你 。 < / p > < h 2 > 4 . 配 置 防 火 墙 < / h 2 > < p > U F W ( U n c o m p l i c a t e d F i r e w a l l ) 是 最 易 用 的 i p t a b l e s 前 端 : < c o d e > u f w d e f a u l t d e n y i n c o m i n g < / c o d e > ( 默 认 拒 绝 入 站 ) → < c o d e > u f w d e f a u l t a l l o w o u t g o i n g < / c o d e > ( 默 认 允 许 出 站 ) → < c o d e > u f w a l l o w 2 2 2 2 / t c p < / c o d e > ( S S H ) → < c o d e > u f w a l l o w 8 0 / t c p < / c o d e > 和 < c o d e > u f w a l l o w 4 4 3 / t c p < / c o d e > ( W e b ) → < c o d e > u f w e n a b l e < / c o d e > 。 检 查 状 态 : < c o d e > u f w s t a t u s v e r b o s e < / c o d e > 。 < / p > < h 2 > 5 - 1 0 . 其 他 关 键 措 施 < / h 2 > < p > 5 . 禁 用 不 必 要 的 服 务 : < c o d e > s y s t e m c t l l i s t - u n i t s - - t y p e = s e r v i c e < / c o d e > 检 查 运 行 中 的 服 务 , 禁 用 不 需 要 的 。 6 . 保 持 系 统 更 新 : < c o d e > a p t u p d a t e & & a p t u p g r a d e - y < / c o d e > 每 周 执 行 一 次 。 7 . 配 置 自 动 安 全 更 新 : < c o d e > a p t i n s t a l l u n a t t e n d e d - u p g r a d e s < / c o d e > 自 动 安 装 安 全 补 丁 。 8 . 创 建 普 通 用 户 并 赋 予 s u d o 权 限 : 日 常 操 作 不 用 r o o t 。 9 . 禁 用 I P v 6 ( 如 果 不 需 要 ) : 在 s y s c t l . c o n f 中 设 置 禁 用 。 1 0 . 安 装 并 配 置 a u d i t d 审 计 日 志 : 记 录 关 键 文 件 的 访 问 和 修 改 。 < / p >
2026年08月22日
87 阅读
0 评论
0 点赞
2026-08-22
Tmux 完全指南:终端复用器让你的 SSH 不再断连
< p > S S H 连 接 到 远 程 服 务 器 执 行 长 时 间 任 务 ( 如 训 练 模 型 、 大 数 据 处 理 、 系 统 更 新 ) 时 , 网 络 一 断 任 务 就 终 止 了 — — 这 很 让 人 抓 狂 。 T m u x ( T e r m i n a l M u l t i p l e x e r ) 解 决 了 这 个 问 题 : 它 在 服 务 器 上 创 建 一 个 持 久 的 会 话 , 即 使 你 的 S S H 断 开 了 , 任 务 仍 在 后 台 继 续 运 行 , 重 新 连 接 后 可 以 无 缝 恢 复 。 < / p > < h 2 > 基 础 概 念 < / h 2 > < p > T m u x 有 三 个 层 级 : S e s s i o n ( 会 话 ) 包 含 多 个 W i n d o w ( 窗 口 ) , W i n d o w 包 含 多 个 P a n e ( 窗 格 ) 。 你 可 以 有 多 个 S e s s i o n , 每 个 S e s s i o n 里 分 屏 操 作 不 同 的 任 务 。 会 话 在 服 务 器 上 独 立 存 在 , 你 的 终 端 只 是 一 个 " 查 看 器 " 。 < / p > < h 2 > 常 用 操 作 < / h 2 > < p r e > < c o d e > t m u x n e w - s m y s e s s i o n # 创 建 名 为 m y s e s s i o n 的 新 会 话 t m u x a t t a c h - t m y s e s s i o n # 重 新 连 接 到 已 有 会 话 t m u x l s # 列 出 所 有 会 话 C t r l + b d # 从 会 话 中 脱 离 ( d e t a c h ) , 任 务 继 续 运 行 < / c o d e > < / p r e > < p > 前 缀 键 C t r l + b 是 T m u x 的 灵 魂 — — 之 后 的 按 键 才 是 命 令 : C t r l + b % 纵 向 分 屏 ( 左 右 ) 、 C t r l + b " 横 向 分 屏 ( 上 下 ) 、 C t r l + b 方 向 键 切 换 窗 格 、 C t r l + b x 关 闭 当 前 窗 格 、 C t r l + b c 新 建 窗 口 、 C t r l + b , 重 命 名 窗 口 、 C t r l + b [ 进 入 滚 动 模 式 ( P a g e U p / D o w n 翻 页 , q 退 出 ) 。 < / p > < h 2 > 配 置 美 化 < / h 2 > < p > 编 辑 ~ / . t m u x . c o n f 来 实 现 : 鼠 标 支 持 ( 点 击 切 换 窗 格 、 拖 拽 调 整 大 小 ) 、 2 5 6 色 终 端 、 状 态 栏 美 化 ( 显 示 时 间 、 主 机 名 、 窗 口 列 表 ) 、 把 前 缀 键 从 C t r l + b 改 为 C t r l + a ( G N U S c r e e n 用 户 习 惯 ) 。 重 启 T m u x 或 < c o d e > t m u x s o u r c e - f i l e ~ / . t m u x . c o n f < / c o d e > 生 效 。 < / p > < h 2 > 实 际 场 景 < / h 2 > < p > 场 景 一 : S S H 到 服 务 器 , t m u x n e w - s t r a i n , 运 行 p y t h o n t r a i n . p y , C t r l + b d 脱 离 。 回 家 后 t m u x a t t a c h - t t r a i n 继 续 看 训 练 进 度 。 场 景 二 : 在 一 个 T m u x 会 话 里 , 左 边 窗 格 v i m 写 代 码 , 右 边 窗 格 运 行 测 试 , 下 方 窗 格 t a i l - f 日 志 。 场 景 三 : 多 人 协 作 — — 两 个 用 户 a t t a c h 到 同 一 个 S e s s i o n , 实 时 看 到 对 方 的 操 作 。 < / p >
2026年08月22日
87 阅读
0 评论
0 点赞
2026-08-21
Nginx 配置入门:静态网站、反向代理和 SSL 证书一键部署
< p > N g i n x 是 世 界 上 最 流 行 的 W e b 服 务 器 和 反 向 代 理 。 一 台 1 核 1 G 的 云 服 务 器 部 署 N g i n x , 可 以 轻 松 承 载 几 千 个 并 发 连 接 。 本 文 覆 盖 三 个 最 常 用 的 配 置 场 景 。 < / p > < h 2 > 场 景 一 : 静 态 网 站 托 管 < / h 2 > < p > 最 简 单 的 配 置 — — 把 你 的 H T M L / C S S / J S 文 件 放 到 一 个 目 录 , N g i n x 直 接 对 外 提 供 。 在 < c o d e > / e t c / n g i n x / s i t e s - a v a i l a b l e / < / c o d e > 下 创 建 配 置 文 件 , 指 定 s e r v e r _ n a m e ( 域 名 ) 、 r o o t ( 网 站 文 件 路 径 ) 、 i n d e x ( 默 认 首 页 ) 。 然 后 < c o d e > l n - s / e t c / n g i n x / s i t e s - a v a i l a b l e / m y - s i t e / e t c / n g i n x / s i t e s - e n a b l e d / < / c o d e > 启 用 站 点 , < c o d e > n g i n x - t < / c o d e > 检 查 配 置 语 法 , < c o d e > n g i n x - s r e l o a d < / c o d e > 重 载 配 置 。 配 合 L e t ' s E n c r y p t 的 c e r t b o t 工 具 , 一 条 命 令 自 动 申 请 和 安 装 S S L 证 书 : < c o d e > c e r t b o t - - n g i n x - d e x a m p l e . c o m - d w w w . e x a m p l e . c o m < / c o d e > 。 证 书 9 0 天 有 效 期 , c e r t b o t 会 自 动 续 期 。 < / p > < h 2 > 场 景 二 : 反 向 代 理 < / h 2 > < p > 反 向 代 理 是 N g i n x 最 核 心 的 功 能 — — 把 来 自 客 户 端 的 请 求 转 发 给 后 端 的 应 用 服 务 器 ( 如 N o d e . j s 的 l o c a l h o s t : 3 0 0 0 、 P y t h o n F l a s k 的 l o c a l h o s t : 5 0 0 0 ) 。 配 置 文 件 中 的 l o c a t i o n 块 指 定 代 理 规 则 : < c o d e > p r o x y _ p a s s h t t p : / / l o c a l h o s t : 3 0 0 0 ; < / c o d e > 。 可 选 的 代 理 头 设 置 : < c o d e > p r o x y _ s e t _ h e a d e r H o s t $ h o s t ; < / c o d e > ( 传 递 原 始 域 名 ) 、 < c o d e > p r o x y _ s e t _ h e a d e r X - R e a l - I P $ r e m o t e _ a d d r ; < / c o d e > ( 传 递 客 户 端 真 实 I P ) 、 < c o d e > p r o x y _ s e t _ h e a d e r X - F o r w a r d e d - F o r $ p r o x y _ a d d _ x _ f o r w a r d e d _ f o r ; < / c o d e > ( 传 递 代 理 链 ) 。 开 启 W e b S o c k e t 支 持 需 额 外 添 加 < c o d e > p r o x y _ h t t p _ v e r s i o n 1 . 1 ; p r o x y _ s e t _ h e a d e r U p g r a d e $ h t t p _ u p g r a d e ; < / c o d e > 。 < / p > < h 2 > 场 景 三 : 负 载 均 衡 < / h 2 > < p > 当 后 端 有 多 个 应 用 实 例 时 ( 如 3 个 N o d e . j s 进 程 分 别 在 3 0 0 0 / 3 0 0 1 / 3 0 0 2 端 口 ) , N g i n x 可 以 用 u p s t r e a m 块 定 义 后 端 组 : < c o d e > u p s t r e a m b a c k e n d { s e r v e r l o c a l h o s t : 3 0 0 0 ; s e r v e r l o c a l h o s t : 3 0 0 1 ; s e r v e r l o c a l h o s t : 3 0 0 2 ; } < / c o d e > 。 然 后 在 p r o x y _ p a s s 中 用 < c o d e > h t t p : / / b a c k e n d < / c o d e > 引 用 。 默 认 轮 询 算 法 , 可 改 为 l e a s t _ c o n n ( 最 少 连 接 ) 或 i p _ h a s h ( 按 I P 固 定 分 配 到 同 一 后 端 , 适 合 需 要 s e s s i o n 亲 和 性 的 场 景 ) 。 < / p >
2026年08月21日
130 阅读
0 评论
0 点赞
2026-08-21
Caddy Server:自动 HTTPS 的下一代 Web 服务器
< p > C a d d y 是 用 G o 语 言 编 写 的 现 代 W e b 服 务 器 , 最 大 的 卖 点 是 自 动 H T T P S — — 你 只 需 要 指 定 域 名 , C a d d y 自 动 从 L e t ' s E n c r y p t 申 请 证 书 、 自 动 续 期 , 整 个 过 程 零 配 置 。 N g i n x 也 可 以 做 到 , 但 需 要 手 动 安 装 c e r t b o t 、 配 置 c r o n 续 期 任 务 。 C a d d y 把 这 些 全 内 置 了 。 < / p > < h 2 > 安 装 和 基 本 使 用 < / h 2 > < p > 单 文 件 部 署 : 从 官 网 下 载 对 应 平 台 的 二 进 制 文 件 , 放 到 P A T H 里 即 可 使 用 。 最 简 单 的 C a d d y f i l e 配 置 文 件 : < c o d e > e x a m p l e . c o m { r o o t * / v a r / w w w / h t m l f i l e _ s e r v e r } < / c o d e > 。 运 行 < c o d e > c a d d y r u n < / c o d e > , C a d d y 自 动 为 e x a m p l e . c o m 申 请 证 书 并 启 动 H T T P S 服 务 , H T T P 自 动 重 定 向 H T T P S 。 不 需 要 额 外 配 置 H T T P - 0 1 验 证 、 不 需 要 配 置 证 书 路 径 — — 全 部 自 动 处 理 。 < / p > < h 2 > 反 向 代 理 一 行 搞 定 < / h 2 > < p > 反 向 代 理 同 样 简 洁 : < c o d e > e x a m p l e . c o m { r e v e r s e _ p r o x y l o c a l h o s t : 3 0 0 0 } < / c o d e > 。 就 这 么 一 行 , C a d d y 自 动 处 理 H T T P S 、 自 动 处 理 W e b S o c k e t 、 自 动 处 理 H T T P / 2 和 H T T P / 3 。 多 个 后 端 : < c o d e > r e v e r s e _ p r o x y l o c a l h o s t : 3 0 0 0 l o c a l h o s t : 3 0 0 1 < / c o d e > 自 动 负 载 均 衡 。 C a d d y 还 内 置 了 请 求 日 志 、 访 问 控 制 、 压 缩 、 缓 存 头 、 文 件 服 务 器 浏 览 、 模 板 引 擎 等 功 能 , 全 都 通 过 C a d d y f i l e 简 洁 配 置 。 < / p > < h 2 > C a d d y v s N g i n x < / h 2 > < p > C a d d y 的 优 势 : 零 配 置 H T T P S 、 配 置 简 洁 、 单 文 件 部 署 、 内 置 功 能 多 。 N g i n x 的 优 势 : 性 能 更 高 ( 尤 其 在 高 并 发 静 态 文 件 场 景 ) 、 社 区 更 大 ( S t a c k O v e r f l o w 解 答 多 ) 、 模 块 生 态 更 成 熟 ( l u a - n g i n x - m o d u l e 等 ) 。 选 型 建 议 : 个 人 项 目 和 小 型 服 务 用 C a d d y ( 省 心 ) , 企 业 级 高 并 发 用 N g i n x ( 经 过 海 量 验 证 ) 。 < / p >
2026年08月21日
90 阅读
0 评论
0 点赞
2026-08-20
Linux 常用的 50 个命令速查表:从入门到日常使用全覆盖
< p > L i n u x 命 令 行 不 可 怕 , 可 怕 的 是 不 知 道 有 什 么 命 令 可 以 用 。 本 文 按 使 用 频 率 分 类 整 理 5 0 个 日 常 高 频 命 令 , 每 个 附 简 洁 说 明 。 < / p > < h 2 > 文 件 与 目 录 操 作 ( 1 5 个 ) < / h 2 > < t a b l e b o r d e r = " 1 " c e l l p a d d i n g = " 4 " > < t r > < t h > 命 令 < / t h > < t h > 作 用 < / t h > < t h > 常 用 参 数 < / t h > < / t r > < t r > < t d > l s < / t d > < t d > 列 出 目 录 内 容 < / t d > < t d > - l a ( 详 细 + 隐 藏 文 件 ) - l h ( 人 类 可 读 大 小 ) < / t d > < / t r > < t r > < t d > c d < / t d > < t d > 切 换 目 录 < / t d > < t d > c d - ( 回 到 上 一 个 目 录 ) c d ~ ( 回 h o m e ) < / t d > < / t r > < t r > < t d > c p < / t d > < t d > 复 制 文 件 < / t d > < t d > - r ( 递 归 复 制 目 录 ) - p ( 保 留 权 限 时 间 ) < / t d > < / t r > < t r > < t d > m v < / t d > < t d > 移 动 / 重 命 名 < / t d > < t d > 简 单 直 接 : m v o l d n e w < / t d > < / t r > < t r > < t d > r m < / t d > < t d > 删 除 文 件 < / t d > < t d > - r f ( 递 归 强 制 , 危 险 ! ) - i ( 确 认 模 式 ) < / t d > < / t r > < t r > < t d > m k d i r < / t d > < t d > 创 建 目 录 < / t d > < t d > - p ( 递 归 创 建 父 目 录 ) < / t d > < / t r > < t r > < t d > f i n d < / t d > < t d > 查 找 文 件 < / t d > < t d > - n a m e ( 按 名 称 ) - s i z e ( 按 大 小 ) - m t i m e ( 按 时 间 ) < / t d > < / t r > < t r > < t d > g r e p < / t d > < t d > 文 本 搜 索 < / t d > < t d > - r ( 递 归 ) - i ( 忽 略 大 小 写 ) - v ( 反 向 匹 配 ) < / t d > < / t r > < t r > < t d > c a t < / t d > < t d > 查 看 文 件 内 容 < / t d > < t d > 小 文 件 适 用 , 大 文 件 用 l e s s < / t d > < / t r > < t r > < t d > h e a d / t a i l < / t d > < t d > 查 看 文 件 头 / 尾 < / t d > < t d > - n 2 0 ( 前 / 后 2 0 行 ) - f ( t a i l 实 时 跟 踪 ) < / t d > < / t r > < t r > < t d > c h m o d < / t d > < t d > 修 改 权 限 < / t d > < t d > 7 5 5 ( r w x r - x r - x ) 6 4 4 ( r w - r - - r - - ) < / t d > < / t r > < t r > < t d > c h o w n < / t d > < t d > 修 改 所 有 者 < / t d > < t d > u s e r : g r o u p f i l e < / t d > < / t r > < t r > < t d > t a r < / t d > < t d > 打 包 / 解 包 < / t d > < t d > - c z f 打 包 - x z f 解 压 < / t d > < / t r > < t r > < t d > l n < / t d > < t d > 创 建 链 接 < / t d > < t d > - s ( 软 链 接 / 符 号 链 接 ) < / t d > < / t r > < t r > < t d > d u < / t d > < t d > 查 看 目 录 大 小 < / t d > < t d > - s h * ( 当 前 目 录 各 项 目 大 小 ) - h - - m a x - d e p t h = 1 < / t d > < / t r > < / t a b l e > < h 2 > 进 程 与 系 统 管 理 ( 1 0 个 ) < / h 2 > < t a b l e b o r d e r = " 1 " c e l l p a d d i n g = " 4 " > < t r > < t h > 命 令 < / t h > < t h > 作 用 < / t h > < / t r > < t r > < t d > p s a u x < / t d > < t d > 列 出 所 有 进 程 < / t d > < / t r > < t r > < t d > t o p / h t o p < / t d > < t d > 实 时 进 程 监 控 ( h t o p 更 友 好 ) < / t d > < / t r > < t r > < t d > k i l l / k i l l a l l < / t d > < t d > 终 止 进 程 < / t d > < / t r > < t r > < t d > s y s t e m c t l < / t d > < t d > 管 理 系 统 服 务 < / t d > < / t r > < t r > < t d > d f - h < / t d > < t d > 查 看 磁 盘 空 间 < / t d > < / t r > < t r > < t d > f r e e - h < / t d > < t d > 查 看 内 存 使 用 < / t d > < / t r > < t r > < t d > u n a m e - a < / t d > < t d > 查 看 系 统 信 息 < / t d > < / t r > < t r > < t d > u p t i m e < / t d > < t d > 查 看 运 行 时 间 和 负 载 < / t d > < / t r > < t r > < t d > d m e s g < / t d > < t d > 查 看 内 核 日 志 < / t d > < / t r > < t r > < t d > j o u r n a l c t l < / t d > < t d > 查 看 系 统 日 志 < / t d > < / t r > < / t a b l e > < h 2 > 网 络 与 传 输 ( 1 0 个 ) < / h 2 > < t a b l e b o r d e r = " 1 " c e l l p a d d i n g = " 4 " > < t r > < t h > 命 令 < / t h > < t h > 作 用 < / t h > < / t r > < t r > < t d > p i n g < / t d > < t d > 测 试 网 络 连 通 性 < / t d > < / t r > < t r > < t d > c u r l / w g e t < / t d > < t d > H T T P 请 求 和 下 载 < / t d > < / t r > < t r > < t d > s s h < / t d > < t d > 远 程 登 录 < / t d > < / t r > < t r > < t d > s c p / r s y n c < / t d > < t d > 远 程 文 件 传 输 / 同 步 < / t d > < / t r > < t r > < t d > n e t s t a t / s s < / t d > < t d > 查 看 网 络 连 接 和 端 口 < / t d > < / t r > < t r > < t d > i p a d d r / i f c o n f i g < / t d > < t d > 查 看 网 络 接 口 < / t d > < / t r > < t r > < t d > n c ( n e t c a t ) < / t d > < t d > 网 络 瑞 士 军 刀 , 端 口 扫 描 / 聊 天 / 文 件 传 输 < / t d > < / t r > < t r > < t d > u f w / f i r e w a l l d < / t d > < t d > 防 火 墙 管 理 < / t d > < / t r > < t r > < t d > n s l o o k u p / d i g < / t d > < t d > D N S 查 询 < / t d > < / t r > < t r > < t d > t r a c e r o u t e < / t d > < t d > 路 由 追 踪 < / t d > < / t r > < / t a b l e > < h 2 > 文 本 处 理 ( 1 0 个 ) < / h 2 > < t a b l e b o r d e r = " 1 " c e l l p a d d i n g = " 4 " > < t r > < t h > 命 令 < / t h > < t h > 作 用 < / t h > < / t r > < t r > < t d > a w k < / t d > < t d > 文 本 分 析 和 格 式 化 < / t d > < / t r > < t r > < t d > s e d < / t d > < t d > 流 编 辑 器 , 批 量 替 换 文 本 < / t d > < / t r > < t r > < t d > s o r t < / t d > < t d > 排 序 < / t d > < / t r > < t r > < t d > u n i q < / t d > < t d > 去 重 ( 通 常 配 合 s o r t ) < / t d > < / t r > < t r > < t d > w c < / t d > < t d > 统 计 行 数 / 字 数 / 字 符 数 < / t d > < / t r > < t r > < t d > d i f f < / t d > < t d > 比 较 文 件 差 异 < / t d > < / t r > < t r > < t d > c u t < / t d > < t d > 按 列 提 取 文 本 < / t d > < / t r > < t r > < t d > t r < / t d > < t d > 字 符 替 换 / 删 除 < / t d > < / t r > < t r > < t d > t e e < / t d > < t d > 同 时 输 出 到 文 件 和 屏 幕 < / t d > < / t r > < t r > < t d > x a r g s < / t d > < t d > 将 标 准 输 入 转 为 命 令 参 数 < / t d > < / t r > < / t a b l e > < h 2 > 管 道 和 组 合 ( 5 个 ) < / h 2 > < p > 管 道 ( | ) 将 一 个 命 令 的 输 出 作 为 另 一 个 命 令 的 输 入 。 < c o d e > g r e p E R R O R a p p . l o g | a w k ' { p r i n t $ 3 } ' | s o r t | u n i q - c | s o r t - r n < / c o d e > 这 个 组 合 从 日 志 中 提 取 错 误 类 型 并 按 出 现 次 数 排 序 。 重 定 向 : > 覆 盖 写 入 、 > > 追 加 写 入 、 2 > & 1 将 s t d e r r 重 定 向 到 s t d o u t 、 / d e v / n u l l 黑 洞 丢 弃 输 出 。 < / p >
2026年08月20日
64 阅读
0 评论
0 点赞
2026-08-20
Docker 入门到实战:10 个必知必会的命令和场景
< p > D o c k e r 让 应 用 以 容 器 形 式 运 行 , 打 包 了 代 码 、 运 行 时 、 系 统 工 具 、 库 和 配 置 — — 保 证 在 任 何 环 境 下 运 行 结 果 一 致 。 本 文 不 是 D o c k e r 理 论 教 学 , 而 是 直 接 上 手 的 1 0 个 实 用 场 景 。 < / p > < h 2 > 基 础 命 令 < / h 2 > < p r e > < c o d e > # 1 . 运 行 一 个 容 器 d o c k e r r u n - d - - n a m e m y - n g i n x - p 8 0 8 0 : 8 0 n g i n x : a l p i n e # - d 后 台 运 行 - - n a m e 命 名 容 器 - p 宿 主 机 端 口 : 容 器 端 口 # 2 . 查 看 运 行 中 的 容 器 d o c k e r p s # 运 行 中 的 d o c k e r p s - a # 所 有 容 器 ( 包 括 已 停 止 的 ) # 3 . 停 止 / 启 动 / 重 启 / 删 除 容 器 d o c k e r s t o p m y - n g i n x d o c k e r s t a r t m y - n g i n x d o c k e r r e s t a r t m y - n g i n x d o c k e r r m - f m y - n g i n x # - f 强 制 删 除 运 行 中 的 # 4 . 进 入 容 器 内 部 d o c k e r e x e c - i t m y - n g i n x s h # A l p i n e 用 s h , U b u n t u 用 b a s h # 5 . 查 看 日 志 d o c k e r l o g s m y - n g i n x # 全 部 日 志 d o c k e r l o g s - f m y - n g i n x # 实 时 跟 踪 d o c k e r l o g s - - t a i l 5 0 m y - n g i n x # 最 后 5 0 行 # 6 . 复 制 文 件 d o c k e r c p . / i n d e x . h t m l m y - n g i n x : / u s r / s h a r e / n g i n x / h t m l / d o c k e r c p m y - n g i n x : / e t c / n g i n x / n g i n x . c o n f . / < / c o d e > < / p r e > < h 2 > D o c k e r C o m p o s e 多 容 器 编 排 < / h 2 > < p > 当 需 要 同 时 运 行 多 个 容 器 ( 如 W e b 应 用 + 数 据 库 + 缓 存 ) 时 , 用 d o c k e r - c o m p o s e . y m l 定 义 所 有 服 务 。 一 条 < c o d e > d o c k e r c o m p o s e u p - d < / c o d e > 启 动 全 部 , < c o d e > d o c k e r c o m p o s e d o w n < / c o d e > 全 部 关 闭 并 清 理 网 络 。 < / p > < h 2 > 镜 像 管 理 < / h 2 > < p r e > < c o d e > d o c k e r i m a g e s # 列 出 本 地 镜 像 d o c k e r p u l l n o d e : 1 8 - a l p i n e # 拉 取 镜 像 d o c k e r r m i n o d e : 1 8 - a l p i n e # 删 除 镜 像 d o c k e r s y s t e m p r u n e - a # 清 理 所 有 未 使 用 的 镜 像 / 容 器 / 网 络 / 缓 存 ( 慎 用 ) < / c o d e > < / p r e > < h 2 > 实 用 场 景 < / h 2 > < p > 场 景 一 : 搭 建 临 时 M y S Q L — — < c o d e > d o c k e r r u n - d - - n a m e t m p - m y s q l - e M Y S Q L _ R O O T _ P A S S W O R D = p a s s - p 3 3 0 6 : 3 3 0 6 m y s q l : 8 < / c o d e > , 用 完 < c o d e > d o c k e r r m - f t m p - m y s q l < / c o d e > , 不 残 留 任 何 文 件 。 场 景 二 : 运 行 一 次 性 命 令 — — < c o d e > d o c k e r r u n - - r m p y t h o n : 3 . 1 2 - a l p i n e p y t h o n - c " p r i n t ( ' h e l l o ' ) " < / c o d e > , - - r m 执 行 完 自 动 删 除 容 器 。 场 景 三 : 构 建 自 己 的 镜 像 — — 写 一 个 D o c k e r f i l e , < c o d e > F R O M n o d e : 1 8 - a l p i n e < / c o d e > 开 头 , C O P Y 代 码 进 去 , R U N n p m i n s t a l l , E X P O S E 端 口 , C M D 启 动 命 令 。 然 后 < c o d e > d o c k e r b u i l d - t m y - a p p . < / c o d e > 构 建 镜 像 。 < / p >
2026年08月20日
85 阅读
0 评论
0 点赞
2026-08-19
Linux 上最好的 Markdown 编辑器对比:Typora vs MarkText vs Zettlr
< p > M a r k d o w n 编 辑 器 是 程 序 员 和 写 作 者 的 必 备 工 具 。 L i n u x 平 台 上 三 款 最 值 得 关 注 的 M a r k d o w n 编 辑 器 : T y p o r a ( 所 见 即 所 得 的 先 驱 ) 、 M a r k T e x t ( 开 源 的 T y p o r a 替 代 ) 和 Z e t t l r ( 面 向 学 术 写 作 ) 。 < / p > < h 2 > T y p o r a : 所 见 即 所 得 的 标 杆 < / h 2 > < p > T y p o r a 的 核 心 卖 点 是 " 所 见 即 所 得 " — — 你 输 入 # 标 题 , 它 立 刻 渲 染 成 标 题 样 式 , 而 不 是 分 屏 显 示 源 码 和 预 览 。 这 种 沉 浸 式 体 验 让 T y p o r a 在 2 0 1 7 年 一 炮 而 红 。 T y p o r a 1 . 0 版 本 后 改 为 了 付 费 模 式 ( $ 1 4 . 9 9 一 次 性 , 可 装 3 台 设 备 ) , L i n u x 版 本 通 过 d e b / r p m 包 安 装 。 T y p o r a 支 持 主 题 自 定 义 ( C S S ) , 社 区 有 大 量 精 美 主 题 。 内 置 的 文 件 管 理 器 可 以 打 开 文 件 夹 作 为 文 档 库 浏 览 。 支 持 导 出 P D F / H T M L / W o r d / 图 片 等 多 种 格 式 。 缺 点 是 不 开 源 , 更 新 频 率 低 。 < / p > < h 2 > M a r k T e x t : 开 源 的 T y p o r a 完 美 替 代 < / h 2 > < p > M a r k T e x t 是 G i t H u b 开 源 项 目 , S t a r 超 过 4 . 8 万 。 功 能 上 几 乎 完 全 对 标 T y p o r a : 所 见 即 所 得 编 辑 、 多 主 题 、 导 出 多 种 格 式 、 焦 点 模 式 ( 高 亮 当 前 段 落 , 其 余 变 暗 ) 、 打 字 机 模 式 ( 光 标 始 终 在 屏 幕 中 央 ) 。 M a r k T e x t 最 大 的 优 势 是 免 费 开 源 , 并 且 支 持 在 源 码 模 式 和 预 览 模 式 间 一 键 切 换 ( T y p o r a 不 支 持 源 码 模 式 ) 。 M a r k T e x t 用 E l e c t r o n 构 建 , 启 动 速 度 和 内 存 占 用 略 高 , 但 对 现 代 机 器 完 全 不 影 响 。 < / p > < h 2 > Z e t t l r : 学 术 写 作 专 用 < / h 2 > < p > Z e t t l r 的 定 位 是 面 向 学 术 研 究 和 长 篇 写 作 的 M a r k d o w n 编 辑 器 。 内 置 Z e t t e l k a s t e n ( 卡 片 盒 笔 记 法 ) 支 持 、 参 考 文 献 管 理 ( 集 成 Z o t e r o ) 、 L a T e X 数 学 公 式 、 图 表 渲 染 。 如 果 你 写 论 文 、 写 书 、 做 研 究 笔 记 , Z e t t l r 的 专 业 功 能 远 超 T y p o r a 和 M a r k T e x t , 但 日 常 写 博 客 和 文 档 没 有 必 要 用 它 , 杀 鸡 用 牛 刀 。 < / p >
2026年08月19日
66 阅读
0 评论
0 点赞
2026-08-19
Linux 终端美化终极方案:Oh My Zsh + Powerlevel10k + zsh 插件
< p > L i n u x 默 认 的 B a s h 终 端 虽 然 功 能 够 用 , 但 颜 值 和 效 率 都 有 提 升 空 间 。 本 文 推 荐 一 套 经 过 验 证 的 Z s h 终 端 美 化 配 置 , 让 你 每 次 打 开 终 端 都 心 情 愉 快 。 < / p > < h 2 > 第 一 步 : 安 装 Z s h 并 设 为 默 认 < / h 2 > < p > 大 多 数 L i n u x 发 行 版 已 经 预 装 了 Z s h 。 如 果 没 有 : < c o d e > s u d o a p t i n s t a l l z s h < / c o d e > ( D e b i a n / U b u n t u ) 或 < c o d e > s u d o d n f i n s t a l l z s h < / c o d e > ( F e d o r a ) 。 安 装 O h M y Z s h 框 架 : < c o d e > s h - c " $ ( c u r l - f s S L h t t p s : / / r a w . g i t h u b . c o m / o h m y z s h / o h m y z s h / m a s t e r / t o o l s / i n s t a l l . s h ) " < / c o d e > 。 O h M y Z s h 是 一 套 Z s h 配 置 管 理 工 具 , 自 带 3 0 0 + 插 件 和 1 5 0 + 主 题 。 < / p > < h 2 > 第 二 步 : 安 装 P o w e r l e v e l 1 0 k 主 题 < / h 2 > < p > P o w e r l e v e l 1 0 k 是 目 前 最 流 行 的 Z s h 主 题 , 颜 值 高 且 性 能 远 超 同 类 主 题 。 安 装 : < c o d e > g i t c l o n e - - d e p t h = 1 h t t p s : / / g i t h u b . c o m / r o m k a t v / p o w e r l e v e l 1 0 k . g i t $ { Z S H _ C U S T O M : - $ H O M E / . o h - m y - z s h / c u s t o m } / t h e m e s / p o w e r l e v e l 1 0 k < / c o d e > , 然 后 在 ~ / . z s h r c 中 设 置 < c o d e > Z S H _ T H E M E = " p o w e r l e v e l 1 0 k / p o w e r l e v e l 1 0 k " < / c o d e > 。 重 启 终 端 后 会 进 入 配 置 向 导 , 一 步 步 选 择 你 喜 欢 的 样 式 : 提 示 符 风 格 ( L e a n / C l a s s i c / R a i n b o w ) 、 图 标 样 式 、 时 间 显 示 、 G i t 状 态 显 示 等 。 完 成 后 提 示 符 会 显 示 当 前 目 录 、 G i t 分 支 、 运 行 时 间 、 错 误 代 码 等 实 用 信 息 。 < / p > < h 2 > 第 三 步 : 必 装 插 件 < / h 2 > < p > 在 ~ / . z s h r c 的 p l u g i n s 数 组 中 添 加 : < c o d e > z s h - a u t o s u g g e s t i o n s < / c o d e > ( 根 据 历 史 自 动 灰 字 建 议 补 全 , 按 → 接 受 ) 、 < c o d e > z s h - s y n t a x - h i g h l i g h t i n g < / c o d e > ( 命 令 语 法 高 亮 , 有 效 命 令 绿 色 、 无 效 命 令 红 色 ) 、 < c o d e > z < / c o d e > ( 智 能 跳 转 目 录 , c d 都 不 用 打 了 , z 项 目 名 直 接 跳 ) 。 启 用 方 式 : 先 g i t c l o n e 到 c u s t o m / p l u g i n s 目 录 再 添 加 到 p l u g i n s 列 表 。 < / p > < h 2 > 性 能 优 化 < / h 2 > < p > O h M y Z s h 默 认 加 载 了 很 多 用 不 上 的 插 件 , 拖 慢 启 动 速 度 。 编 辑 ~ / . z s h r c , 注 释 掉 不 需 要 的 插 件 。 P o w e r l e v e l 1 0 k 本 身 有 i n s t a n t p r o m p t 功 能 — — 在 你 加 载 z s h 配 置 的 同 时 显 示 上 一 个 提 示 符 , 消 除 启 动 延 迟 感 。 执 行 < c o d e > t i m e z s h - i - c e x i t < / c o d e > 测 试 启 动 速 度 , 理 想 情 况 下 应 该 < 2 0 0 m s 。 < / p >
2026年08月19日
65 阅读
0 评论
0 点赞
2026-08-06
Docker Compose 环境变量管理:.env 文件最佳实践
## 问题密码、API Key 直接写在 docker-compose.yml 里既不安全(提交到 Git)又不方便(切换环境)。## .env 文件Docker Compose 自动读取同目录 `.env`。变量用 `${VAR_NAME}` 引用,支持默认值 `${VAR:-default}`。`.env` 不提交 Git,创建 `.env.example` 作为模板。## 多环境配置```bash docker compose --env-file .env.dev up -d docker compose --env-file .env.prod up -d ```## 变量优先级Shell 环境变量 > `--env-file` 指定的文件 > 当前目录 `.env`。注意 `.env` 不会覆盖 Shell 已有变量。## 敏感信息管理Docker secrets(Swarm 模式)或外部密钥管理(Vault)。至少不要在 docker-compose.yml 中硬编码密码。`.env` 是 Docker Compose 项目中最重要的文件之一。
2026年08月06日
87 阅读
0 评论
0 点赞
2026-08-05
Shell 脚本实战:5 个每个程序员都应该会的脚本
## 前言Shell 脚本是程序员的瑞士军刀。不需要 IDE,不需要编译,一个文件搞定各种自动化。## 5 个实用脚本1. **一键服务器体检**:CPU/内存/磁盘/网络/Docker/最近登录一网打尽 2. **批量重命名**:改后缀、加日期前缀、替换空格 3. **日志清理**:找并删除 N 天前的日志,清空 Docker 日志 4. **Git 仓库批量操作**:遍历所有仓库执行 git pull 5. **网站健康检查**:curl 多个 URL,HTTP 200 为正常,否则告警脚本编写技巧:`set -euo pipefail` 兜底,函数化减少重复,`-h` 帮助参数。一个 20 行的脚本可能帮你省下每天 10 分钟的重复操作。
2026年08月05日
92 阅读
0 评论
0 点赞
2026-08-05
终端美化:让你的命令行好看又好用
## 为什么要美化一个好用的终端能大幅提升效率。自动补全、语法高亮、Git 状态显示都是免费的。## 工具选型终端模拟器:iTerm2(macOS)、Windows Terminal、Alacritty(跨平台)。Shell:Zsh + Oh My Zsh 最推荐。## 必装插件zsh-autosuggestions(灰色提示)、zsh-syntax-highlighting(语法高亮)、z(智能跳转)、git/docker 补全。推荐 powerlevel10k 主题和 Nerd Font 字体。## 实用别名```bash alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"' alias dc='docker compose' alias gs='git status' ```服务器端不需要华丽主题,简单配色 + 别名就够了。花 20 分钟配好,能用好几年。
2026年08月05日
96 阅读
0 评论
0 点赞
2026-08-04
Docker 日志管理:别让日志吃光你的磁盘
## 问题Docker 默认不限日志大小和保留时间,跑半年的容器日志可能 30GB。不配置日志轮转迟早写满磁盘。## 全局日志配置编辑 `/etc/docker/daemon.json` 设置 `max-size: 10m` + `max-file: 3`,重启 Docker 后每个容器日志最多 30MB。## 清理已有日志用 `truncate -s 0` 清空,或直接删除日志文件后重启容器。## 高级方案Loki + Grafana 集中日志管理,Dozzle 轻量实时查看。最佳实践:生产环境不要用 json-file 驱动,日志轮转是底线,定期巡检磁盘。花 2 分钟配好,避免深夜磁盘告警。
2026年08月04日
86 阅读
0 评论
0 点赞
2026-08-03
Portainer:Docker 可视化管理面板
## 为什么需要 Portainer命令行管理 Docker 没问题,但多台服务器几十个容器时效率太低。Portainer 是 Docker 的 Web 管理面板,支持容器管理、镜像管理、Compose 部署、多节点管理。## 部署```yaml services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: unless-stopped ports: - "9443:9443" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data:/data ```## 核心功能Dashboard 总览、容器管理(启动/停止/日志/终端)、Stack 部署(网页粘贴 docker-compose.yml)、镜像管理、网络/卷管理。## 多节点管理在另一台服务器运行 Portainer Agent,然后在主面板添加 Environment,一个面板管理多台服务器。## 安全提醒Portainer 暴露 `/var/run/docker.sock` 意味着能操控整个 Docker 引擎。务必配置 HTTPS + 强密码,不要用默认端口。社区版已足够个人和中小团队使用。
2026年08月03日
94 阅读
0 评论
0 点赞
2026-08-02
Watchtower:让 Docker 容器自动更新
## 更新容器的烦恼Docker 镜像经常发布安全更新。手动 `docker pull` + `docker compose up -d` 总容易忘。Watchtower 自动检测镜像更新,自动拉取重启。## 基础用法```yaml services: watchtower: image: containrrr/watchtower:latest container_name: watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock command: --interval 86400 --cleanup ````--interval 86400` 每天检查一次,`--cleanup` 更新后删除旧镜像。## 精细控制可以只更新指定容器,或通过 label 排除某些容器(如数据库)。支持 Gotify/Slack/Email 等多种通知。## 风险控制自动更新有风险(新版可能有 bug)。建议关键服务只监控不更新(`--monitor-only`),非关键服务自动更新,配合 Uptime Kuma 监控。数据库绝对不要自动更新。装一个 Watchtower,你的 Docker 服务永远跑在最新版本。
2026年08月02日
77 阅读
0 评论
0 点赞
2026-08-02
Traefik:比 Nginx 更懂 Docker 的反向代理
## Traefik 是什么Nginx 需要在配置文件中手动写每个服务的反代规则,服务多了很繁琐。Traefik 是云原生反向代理,会自动发现 Docker 容器,根据容器标签自动配置路由和 SSL 证书。## Docker Compose 部署```yaml services: traefik: image: traefik:v3.0 container_name: traefik restart: unless-stopped ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./traefik.yml:/etc/traefik/traefik.yml - ./acme.json:/acme.json ````traefik.yml` 配置参考文中。核心优势:新增服务只需在 docker-compose.yml 里加几行 label,Traefik 自动搞定域名路由和 HTTPS 证书。## 给服务添加路由```yaml services: whoami: image: traefik/whoami labels: - "traefik.enable=true" - "traefik.http.routers.whoami.rule=Host(`whoami.yourdomain.com`)" - "traefik.http.routers.whoami.entrypoints=websecure" - "traefik.http.routers.whoami.tls.certresolver=letsencrypt" ```## 中间件Traefik 的中间件可以做很多事:Basic Auth、IP 白名单、限流等。配合 Cloudflare DNS Challenge 做证书签发更可靠。## Nginx vs Traefik全部 Docker 化选 Traefik,混合部署或需要复杂 URL 重写选 Nginx。用了 Traefik 再也不用记 Nginx 配置语法了。
2026年08月02日
76 阅读
0 评论
0 点赞
2026-08-01
服务器迁移实战:一年换了 5 台 VPS 的经验总结
## 为什么要迁移你可能出于这些原因迁移服务器:促销到期、升级配置、换服务商、被墙 IP。我一年换了 5 台 VPS,总结了一套零停机迁移方案。## 迁移前:做好架构准备**1. 用 Docker 跑所有服务**Docker 化的服务迁移就像搬箱子。一条 `docker compose up -d` 就能在新服务器上恢复所有服务。**2. 数据与程序分离**把持久化数据都映射到宿主机的统一目录:`/data/blog`、`/data/mysql` 等。迁移时只需要 rsync `/data` 目录。**3. 用域名而不是 IP**所有服务绑定域名,迁移时只需改 DNS 解析。## 迁移步骤**步骤 1**:新服务器基础配置(安装 Docker、同步 SSH 公钥)**步骤 2**:同步数据```bash rsync -avzP /data/ root@new-server:/data/ # 关闭旧服务,做增量同步 rsync -avzP --delete /data/ root@new-server:/data/ ```**步骤 3**:数据库迁移```bash mysqldump -u root -p --all-databases > full_backup.sql scp full_backup.sql new-server:/tmp/ ssh new-server "mysql -u root -p < /tmp/full_backup.sql" ```**步骤 4**:在新服务器启动服务并验证**步骤 5**:切换 DNS。TTL 提前设为 120 秒。**步骤 6**:保留旧服务器 48 小时,DNS 缓存完全刷新后再下线。## 迁移检查清单- SSL 证书重新签发 - 定时任务已迁移 - 防火墙规则已配置 - 数据库已恢复,数据完整 - 监控/告警已重新配置## 经验教训1. 别在同一天取消旧服务器 2. 提前在 hosts 文件中测试新 IP 3. Cloudflare 用户注意 SSL 模式 4. 备份不要删,迁移完成后保留至少一周掌握这套流程后,换服务器就像换衣服一样简单。
2026年08月01日
71 阅读
0 评论
0 点赞
2026-08-01
LVM 逻辑卷管理:Linux 磁盘扩容不重装
## 痛点服务器磁盘满了,又不想重装系统。加了一块新硬盘,但应用程序的目录在旧磁盘上,不能无缝扩容。LVM(Logical Volume Manager)就是用来解决这个问题的。## 核心概念- **PV(Physical Volume)**:物理卷,就是你的硬盘或分区 - **VG(Volume Group)**:卷组,把多个 PV 组合成一个池 - **LV(Logical Volume)**:逻辑卷,从 VG 中划分,可以动态扩容## 创建 LVM```bash pvcreate /dev/sdb vgcreate vg_data /dev/sdb lvcreate -l 100%FREE -n lv_data vg_data mkfs.ext4 /dev/vg_data/lv_data mkdir /data mount /dev/vg_data/lv_data /data ```## 扩容逻辑卷场景:`/data` 空间不够了,加了一块新硬盘 /dev/sdc。```bash pvcreate /dev/sdc vgextend vg_data /dev/sdc lvextend -L +100G /dev/vg_data/lv_data resize2fs /dev/vg_data/lv_data # 在线扩容,无需卸载! ```全过程数据不丢失,服务不中断。## 快照功能```bash lvcreate -L 10G -s -n lv_data_snap /dev/vg_data/lv_data mount /dev/vg_data/lv_data_snap /mnt/snap tar -czf /backup/data_backup.tar.gz -C /mnt/snap . umount /mnt/snap lvremove /dev/vg_data/lv_data_snap ```## 常用命令速查| 命令 | 功能 | |------|------| | pvs | 查看物理卷 | | vgs | 查看卷组 | | lvs | 查看逻辑卷 | | vgextend | 扩展卷组 | | lvextend | 扩展逻辑卷 |如果你用云服务器,大多数云厂商的系统镜像已经默认使用 LVM。了解 LVM 的基本操作,是运维的基本功。
2026年08月01日
78 阅读
0 评论
0 点赞
2026-07-31
DDNS 动态域名解析:家里宽带也能建站
## 为什么需要 DDNS家庭宽带大多是动态 IP,每隔几天运营商就会换一次 IP。如果你用家里的 NAS 或树莓派跑服务,IP 一换就访问不了。DDNS(动态域名解析)就是解决这个问题的:在路由器或设备上跑一个脚本,定期检测公网 IP,IP 变化时自动更新域名解析记录。## 方案一:Cloudflare DDNS创建 API Token,然后运行脚本:```bash #!/bin/bash ZONE_ID="your_zone_id" RECORD_ID="your_record_id" API_TOKEN="your_api_token" DOMAIN="home.yourdomain.com"CURRENT_IP=$(curl -s https://api.ipify.org) DNS_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ -H "Authorization: Bearer $API_TOKEN" | grep -o '"content":"[^"]*"' | cut -d'"' -f4)if [ "$CURRENT_IP" != "$DNS_IP" ]; then curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"$DOMAIN\",\"content\":\"$CURRENT_IP\",\"ttl\":120,\"proxied\":false}" fi ```设置定时任务:`*/5 * * * * /scripts/cf-ddns.sh`## 方案二:ddns-go(推荐)```bash docker run -d --name ddns-go --restart always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go ```访问 `http://IP:9876`,填入 DNS 服务商的 API 密钥,选域名,点保存就行。## IPv6 DDNSddns-go 支持 IPv6,选择"通过网卡获取 IPv6"即可。手机 4G/5G 都支持 IPv6。## 端口转发DDNS 只解决了 IP 变化的问题。还需要在路由器上做端口转发才能从外网访问内网服务。配置完 DDNS + 端口转发,你的家庭服务器就和云服务器一样,随时随地用域名访问。
2026年07月31日
108 阅读
1 评论
0 点赞
2026-07-30
Docker Swarm 集群入门
## Swarm 是什么Docker Swarm 是 Docker 自带的容器编排工具。和 Kubernetes 比,它极其简单,学习成本只有 K8s 的十分之一。对于个人开发者和中小团队,Swarm 足够用了。## 核心概念- **Manager 节点**:管理集群状态,调度服务 - **Worker 节点**:运行容器 - **Service**:定义要运行的服务 - **Stack**:一组服务的集合(类似 docker-compose.yml)## 初始化集群```bash docker swarm init --advertise-addr 192.168.1.10 # Worker 节点执行输出的 join 命令 docker swarm join --token SWMTKN-xxx 192.168.1.10:2377 docker node ls ```## 部署服务```bash docker service create --name web --replicas 3 --publish published=80,target=80 nginx:alpine docker service ls docker service scale web=5 docker service update --image nginx:latest web ```## 使用 Stack 部署(推荐)创建 `stack.yml`,然后用 `docker stack deploy -c stack.yml myapp` 部署。## Swarm vs Kubernetes| 特性 | Docker Swarm | Kubernetes | |------|-------------|-----------| | 学习曲线 | 低 | 高 | | 安装 | 内置 Docker | 需要额外安装 | | 配置复杂度 | 简单 | 复杂 | | 适合规模 | 3-10 节点 | 10+ 节点 |## 实用技巧**配置文件管理**:`docker config create nginx-conf ./nginx.conf` **密钥管理**:`echo "mypassword" | docker secret create db_password -`Swarm 是 Docker 生态里最被低估的功能。对于个人和小团队,它比 K8s 务实得多。
2026年07月30日
77 阅读
0 评论
0 点赞
2026-07-30
Redis 缓存实战:网站性能翻倍的秘密
## 缓存的意义你的网站每次请求都要查数据库、渲染模板,大量重复计算。如果 1000 个用户看同一篇文章,你做了 1000 次相同的数据库查询。加一层缓存,第一次查完存起来,后面 999 次直接返回,性能提升立竿见影。## 快速部署 Redis```yaml services: redis: image: redis:7-alpine container_name: redis restart: unless-stopped ports: - "127.0.0.1:6379:6379" volumes: - ./data:/data command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru ```## PHP 中使用 Redis```php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $cacheKey = 'article:' . $articleId; $article = $redis->get($cacheKey); if ($article === false) { $article = $db->query("SELECT * FROM articles WHERE id = ?", [$articleId]); $redis->setex($cacheKey, 3600, serialize($article)); } return unserialize($article); ```## Python 中使用 Redis```python import redis, json r = redis.Redis(host='localhost', port=6379, db=0)def get_article(article_id): cache_key = f'article:{article_id}' cached = r.get(cache_key) if cached: return json.loads(cached) article = db.query(f"SELECT * FROM articles WHERE id={article_id}") r.setex(cache_key, 1800, json.dumps(article)) return article ```## 常见问题与解决**缓存穿透**:查询不存在的数据,缓存没有,每次都打 DB。解决:缓存空值,设置短过期时间。**缓存击穿**:热点 key 过期瞬间大量请求打 DB。解决:加互斥锁,只让一个请求去加载数据。**缓存雪崩**:大量 key 同时过期。解决:给过期时间加随机偏移。## Redis 不只是缓存除了缓存,Redis 还能做:Session 存储、分布式锁、消息队列(Stream)、计数器/排行榜、地理位置(GEO)。装一个 Redis,你的网站性能至少翻一倍。
2026年07月30日
76 阅读
0 评论
0 点赞
2026-07-29
GitHub Actions 免费 CI/CD:博客自动部署
## 为什么用 GitHub Actions以前部署静态博客的流程:本地写 Markdown → 运行构建命令 → 生成 HTML → SCP 上传到服务器。每次更新都要手动重复。GitHub Actions 是 GitHub 提供的免费 CI/CD 服务,公有仓库无限使用,私有仓库每月 2000 分钟。## 最简单的部署 Workflow```yaml name: Deploy Blog on: push: branches: [main] jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - run: npm install && npm run build - name: Deploy to Server uses: easingthemes/ssh-deploy@v4 with: SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }} REMOTE_HOST: ${{ secrets.SSH_HOST }} REMOTE_USER: ${{ secrets.SSH_USER }} TARGET: /var/www/blog SOURCE: "public/" ```## 配置 secrets仓库 Settings → secrets and variables → Actions 中添加: - `SSH_HOST`:服务器 IP - `SSH_USER`:SSH 用户名 - `SSH_KEY`:SSH 私钥内容建议专门为 GitHub Actions 生成一对新密钥。## 带缓存加速构建```yaml - uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' - uses: actions/cache@v3 with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} ```## Docker 镜像自动构建```yaml - name: Build and Push uses: docker/build-push-action@v4 with: push: true tags: username/myapp:latest ```配置完 GitHub Actions,你只需要专注写作和 push,构建部署全自动。
2026年07月29日
75 阅读
0 评论
0 点赞
2026-07-29
VPS 安全加固 10 条铁律
## 前言VPS 被入侵是最糟心的体验:数据丢失、被挂马、被当肉鸡。以下 10 条是服务器的安保底线,每一条都来自实战教训。## 1. 禁用 root 密码登录,只用密钥```bash vim /etc/ssh/sshd_config # 修改以下配置 PermitRootLogin prohibit-password PasswordAuthentication no PubkeyAuthentication yes systemctl restart sshd ```修改之前,确保你已经把公钥放到了 `~/.ssh/authorized_keys`,否则你会把自己锁在外面。## 2. 修改 SSH 默认端口把 22 改成高位端口(比如 22222),能避开 99% 的自动化扫描。记得在防火墙和云服务商安全组放行新端口。## 3. 安装 Fail2ban```bash apt install fail2ban systemctl enable fail2ban systemctl start fail2ban ```## 4. 配置防火墙```bash ufw default deny incoming ufw default allow outgoing ufw allow 22222/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable ```## 5. 最小化软件安装不要安装用不到的软件。每多一个服务就多一个攻击面。定期检查监听端口 `ss -tlnp`。## 6. 保持系统更新```bash apt install unattended-upgrades dpkg-reconfigure unattended-upgrades ```## 7. 非 root 用户操作日常操作不要用 root,创建普通用户并赋予 sudo 权限。## 8. 应用隔离用 Docker每个服务跑在独立容器中,利用 Docker 默认的网络隔离和权限限制。不要用 `--privileged`。## 9. 定期审计日志```bash grep "Accepted" /var/log/auth.log | tail -20 cat /var/log/auth.log | grep sudo last -20 ```## 10. 备份!备份!备份!安全措施不能 100% 防入侵。定期备份重要数据到异地。以上 10 条用 30 分钟就能配置完,但能为你的服务器省去无数麻烦。
2026年07月29日
64 阅读
0 评论
0 点赞
2026-07-28
Webhook 自动化:Git Push 自动触发部署
## 什么是 WebhookWebhook 是"反向 API"——不是你去轮询服务器,而是事件发生时服务器主动通知你。最常见的场景:Git Push 代码后自动部署到服务器。## GitHub Webhook 配置**1. 服务器端创建接收脚本**```python from flask import Flask, request import hmac import hashlib import subprocessapp = Flask(__name__) secret = b"your_webhook_secret"@app.route("/webhook", methods=["POST"]) def webhook(): signature = request.headers.get("X-Hub-Signature-256") if not signature: return "No signature", 403 computed = "sha256=" + hmac.new(secret, request.data, hashlib.sha256).hexdigest() if not hmac.compare_digest(computed, signature): return "Invalid signature", 403 subprocess.Popen(["/scripts/deploy.sh"]) return "OK", 200if __name__ == "__main__": app.run(host="0.0.0.0", port=9000) ```**2. 部署脚本**```bash #!/bin/bash cd /var/www/my-site git pull origin main sudo systemctl restart my-site ```**3. 在 GitHub 仓库设置 Webhook**Settings → Webhooks → Add webhook - URL: `https://yourdomain.com/webhook` - Content type: `application/json` - secret: 和脚本中的 secret 一致 - Events: Just the push event## 轻量方案:webhook 工具有一个叫 `webhook` 的 Go 工具更简单:```bash apt install webhook ```配置文件 `hooks.json`:```json [{ "id": "deploy-blog", "execute-command": "/scripts/deploy.sh", "command-working-directory": "/var/www/blog", "trigger-rule": { "match": { "type": "payload-hmac-sha256", "secret": "your_secret", "parameter": { "source": "header", "name": "X-Hub-Signature-256" } } } }] ```启动:`webhook -hooks hooks.json -port 9000 -verbose`## GitHub Actions 推送部署```yaml name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Deploy via SSH uses: appleboy/ssh-action@v0.1.10 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} key: ${{ secrets.SSH_KEY }} script: | cd /var/www/blog git pull ```配置好 Webhook 后,你只需要 git push,剩下的自动完成。
2026年07月28日
60 阅读
0 评论
0 点赞
2026-07-27
Caddy Server:自动 HTTPS 的反向代理新选择
## 为什么考虑 CaddyNginx 是反向代理的王者,但配置 SSL 证书需要 Certbot 配合,还要写 cron 定时续期。Caddy 的出现改变了这一切——它是用 Go 写的现代 Web 服务器,**自动申请和续期 Let's Encrypt 证书,零配置 HTTPS**。## Caddy vs Nginx| 特性 | Caddy | Nginx | |------|-------|-------| | HTTPS 自动配置 | 内置,零配置 | 需 Certbot + cron | | 配置文件 | Caddyfile(简洁) | nginx.conf(功能全但冗长) | | 性能 | 接近 Nginx | 业界标杆 | | 插件生态 | 内置常用功能 | 需编译模块 | | 资源占用 | 稍高于 Nginx | 更轻 | | 学习曲线 | 低 | 中 |## Docker 部署```yaml services: caddy: image: caddy:alpine container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./data:/data - ./config:/config ```## Caddyfile 配置示例```caddyfile # 最简单的反代 yourdomain.com { reverse_proxy localhost:8080 }# 多个子域名 blog.yourdomain.com { reverse_proxy localhost:3000 }api.yourdomain.com { reverse_proxy localhost:8081 }# 带路径重写的反代 files.yourdomain.com { reverse_proxy /api/* localhost:5000 reverse_proxy /* localhost:3000 }# 静态文件服务 static.yourdomain.com { root * /var/www/static file_server } ```## 进阶配置**请求头透传:**```caddyfile yourdomain.com { reverse_proxy localhost:8080 { header_up Host {host} header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto {scheme} } } ```**WebSocket 支持:**Caddy 自动支持 WebSocket,不需要像 Nginx 那样额外配置。**限流:**```caddyfile yourdomain.com { rate_limit { zone dynamic { key {remote_host} events 10 window 10s } } reverse_proxy localhost:8080 } ```**自定义证书:**```caddyfile yourdomain.com { tls /path/to/cert.pem /path/to/key.pem reverse_proxy localhost:8080 } ```## 多站点 + 全局配置```caddyfile # 全局选项 { email admin@yourdomain.com admin off }# 导入片段 (common) { encode gzip header { X-Frame-Options "DENY" X-Content-Type-Options "nosniff" } }blog.yourdomain.com { import common reverse_proxy localhost:8080 }wiki.yourdomain.com { import common reverse_proxy localhost:3000 } ```## 从 Nginx 迁移到 Caddy如果你现有的 Nginx 配置只是做反代,迁移到 Caddy 只需要:1. 把 `proxy_pass http://localhost:8080;` 改成 `reverse_proxy localhost:8080` 2. 删掉所有 SSL 相关配置(Caddy 自动处理) 3. 删掉 Certbot 的 cron 任务就这么简单。对于个人项目和中小型站点,Caddy 的"零配置 HTTPS"体验非常棒。如果你已经厌倦了手动管理证书,不妨试试 Caddy。
2026年07月27日
75 阅读
0 评论
0 点赞
2026-07-26
Tmux 终端复用器:SSH 断线任务不中断
## 痛点你是不是经常遇到这种情况:SSH 连上服务器,正跑着一个长时间任务(比如 `apt upgrade`、大文件下载、数据库迁移),突然网络断了一下——任务没了,前功尽弃。Tmux 就是解决这个问题的神器。它让你的终端会话独立于 SSH 连接运行,断线了任务继续跑,重新连上还能恢复现场。## 安装和基础概念```bash # Debian/Ubuntu sudo apt install tmux# Alpine sudo apk add tmux# macOS brew install tmux ```Tmux 的核心概念: - **Session(会话)**:一个独立的工作环境 - **Window(窗口)**:类似浏览器标签页 - **Pane(窗格)**:窗口内的分屏## 常用命令速查**会话管理:**```bash tmux new -s mysession # 创建命名会话 tmux ls # 列出所有会话 tmux attach -t mysession # 重新接入会话 tmux kill-session -t mysession # 杀死会话 ```**在 tmux 内的快捷键(默认前缀 Ctrl+b):**| 快捷键 | 功能 | |--------|------| | Ctrl+b d | 脱离会话(后台运行) | | Ctrl+b c | 新建窗口 | | Ctrl+b n/p | 切换下一个/上一个窗口 | | Ctrl+b w | 列出所有窗口 | | Ctrl+b % | 垂直分屏 | | Ctrl+b " | 水平分屏 | | Ctrl+b 方向键 | 切换窗格 | | Ctrl+b [ | 进入滚动模式 | | Ctrl+b x | 关闭当前窗格 |## 实战场景**场景1:跑长时间任务**```bash # SSH 登录后 tmux new -s update sudo apt update && sudo apt upgrade -y # 按 Ctrl+b d 脱离,可以断开 SSH # 第二天重新登录 tmux attach -t update # 可以看到任务已完成或继续运行中 ```**场景2:多窗口工作流**```bash tmux new -s work # 窗口0:编辑代码 vim app.py # Ctrl+b c 新建窗口1 # 窗口1:运行服务 python app.py # Ctrl+b c 新建窗口2 # 窗口2:查看日志 tail -f /var/log/app.log # Ctrl+b n/p 在窗口间切换 ```**场景3:SSH 多服务器管理**```bash tmux new -s servers # Ctrl+b % 垂直分屏 # 左边窗格:连服务器A ssh server-a # Ctrl+b → 切换到右边 # 右边窗格:连服务器B ssh server-b # 现在可以同时监控两台服务器 ```## 美化与配置在 `~/.tmux.conf` 中配置:```bash # 修改前缀键为 Ctrl+a(更顺手) set -g prefix C-a unbind C-b bind C-a send-prefix# 鼠标支持 set -g mouse on# 从 1 开始编号窗口 set -g base-index 1# 状态栏美化 set -g status-bg black set -g status-fg white set -g status-left '#[fg=green]#S ' set -g status-right '#[fg=yellow]%Y-%m-%d %H:%M'# 加大滚动缓冲区 set -g history-limit 10000 ```## 进阶:tmux 插件安装 TPM(Tmux Plugin Manager):```bash git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm ```在配置中添加插件:```bash set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-resurrect' # 保存/恢复会话 set -g @plugin 'tmux-plugins/tmux-continuum' # 自动保存run '~/.tmux/plugins/tpm/tpm' ````tmux-resurrect` 可以保存你的窗口布局、运行的程序,重启后一键恢复。## 终极技巧:SSH 自动进入 tmux在 `.bashrc` 或 `.zshrc` 末尾加上:```bash if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then tmux attach -t main || tmux new -s main fi ```这样每次 SSH 登录自动进入 tmux,再也不怕断线。学会 tmux 之后,你会发现它在终端操作中的重要性相当于 Git 在代码管理中的地位——不可或缺。
2026年07月26日
62 阅读
0 评论
0 点赞
2026-07-26
FRP 内网穿透进阶:STCP 安全加密隧道
## 回顾 FRP 基础FRP(Fast Reverse Proxy)是国内最流行的内网穿透工具。基础用法很简单:服务器端运行 frps,客户端运行 frpc,就能把内网端口映射到公网。但基础模式有个安全问题:流量在公网是明文传输的(除非你上层套了 TLS)。FRP 提供了 STCP(secret TCP)模式来解决这个问题。## STCP 是什么STCP 是 FRP 的安全传输模式,所有流量在客户端和服务端之间加密传输,且需要预共享密钥(PSK)才能连接。**基础 TCP vs STCP:**| 特性 | 基础 TCP | STCP | |------|---------|------| | 流量加密 | 否 | 是(AES-128) | | 访问控制 | IP 可达即可连 | 需要密钥 | | 访问方式 | 直接访问公网端口 | 需要 frpc 客户端 |注意:STCP 模式要求访问者也安装 frpc,不像基础 TCP 那样直接用浏览器访问。它适合"点对点"的安全访问场景。## 配置示例**服务端 frps.ini:**```ini [common] bind_port = 7000 token = your_secure_token ```**客户端 A(被访问的内网机器)frpc.ini:**```ini [common] server_addr = your_server_ip server_port = 7000 token = your_secure_token[secret_ssh] type = stcp sk = abcdefgh local_ip = 127.0.0.1 local_port = 22 ```**客户端 B(访问者)frpc.ini:**```ini [common] server_addr = your_server_ip server_port = 7000 token = your_secure_token[secret_ssh_visitor] type = stcp role = visitor server_name = secret_ssh sk = abcdefgh bind_addr = 127.0.0.1 bind_port = 6000 ```访问者在本地执行 `ssh -p 6000 user@127.0.0.1` 即可连接内网的 SSH。## 完整的安全配置模板```ini # frps.ini - 服务端 [common] bind_port = 7000 token = strong_random_token_here# 限制端口范围 allow_ports = 6000-7000# Dashboard dashboard_port = 7500 dashboard_user = admin dashboard_pwd = your_password# 限速 max_pool_count = 50# 日志 log_file = /var/log/frps.log log_level = info log_max_days = 7 ```## 性能对比在同一台低配 VPS 上测试(1C1G,带宽 10Mbps):| 模式 | 吞吐量 | CPU 占用 | 延迟增加 | |------|--------|---------|---------| | TCP 直连 | 9.5 Mbps | 5% | +3ms | | STCP | 8.8 Mbps | 8% | +8ms | | STCP + 压缩 | 实测带宽利用率更高 | 12% | +12ms |加密带来的性能损耗很小(约 7%),对于管理用途完全可接受。## 使用建议- SSH/RDP 等管理类连接优先使用 STCP - Web 服务(博客等)用基础 TCP + Nginx HTTPS 即可 - 使用强随机密钥(`openssl rand -hex 16` 生成) - 定期更换 token 和 skFRP 配上 STCP,让你的内网隧道既方便又安全。
2026年07月26日
62 阅读
0 评论
0 点赞
2026-07-25
Alpine Linux 极简服务器:比 Ubuntu 省 80% 内存
## Alpine 是什么Alpine Linux 是一个面向安全的轻量级 Linux 发行版。基于 musl libc 和 busybox,镜像体积仅 5MB 左右。Docker 官方镜像很多都基于 Alpine。如果你有一台低配 VPS(512MB 内存),Alpine 比 Ubuntu 省下约 80% 的内存开销。## Alpine vs Ubuntu 资源对比| 项目 | Alpine 3.19 | Ubuntu 22.04 | |------|------------|-------------| | 镜像大小 | 5 MB | ~700 MB | | 安装后磁盘 | ~130 MB | ~2.5 GB | | 空闲内存占用 | ~30 MB | ~150 MB | | 包管理 | apk | apt | | init 系统 | OpenRC | systemd |## 安装 Alpine适合在 VPS 上安装时,选择 Alpine 镜像即可。或者用 netboot:```bash # 下载 Alpine wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/x86_64/alpine-standard-3.19.0-x86_64.iso ```安装过程比 Ubuntu 稍复杂,但跟着 setup-alpine 脚本走就行。## 基础配置```bash # 更新软件源 apk update && apk upgrade# 基础工具 apk add curl wget vim git bash openssh docker# 设置时区 apk add tzdata cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 启动 Docker rc-update add docker boot service docker start# 开启 SSH rc-update add sshd service sshd start ```## apk 包管理速查| 操作 | Alpine (apk) | Ubuntu (apt) | |------|-------------|-------------| | 更新索引 | apk update | apt update | | 安装包 | apk add xxx | apt install xxx | | 删除包 | apk del xxx | apt remove xxx | | 搜索包 | apk search xxx | apt search xxx | | 升级所有 | apk upgrade | apt upgrade | | 查看信息 | apk info xxx | apt show xxx |## 踩坑记录**1. DNS 解析问题** Alpine 默认使用 musl 的 DNS 解析器,某些情况下会出现解析失败。解决:```bash apk add bind-tools # 在 /etc/resolv.conf 中添加 nameserver 1.1.1.1 ```**2. 部分软件无 Alpine 包**有些软件只有 glibc 版本,需要额外处理:```bash # 安装 glibc 兼容层 apk add gcompat ```**3. 时区问题** 很多 Docker 镜像不能正确识别 Alpine 的时区设置,需在 docker-compose 中显式指定:```yaml environment: - TZ=Asia/Shanghai ```## 适用场景- **低配 VPS**:512MB/1GB 内存的机器 - **Docker 宿主机**:只跑容器,系统层越轻越好 - **边缘设备**:树莓派、路由器 - **CI/CD Runner**:轻量构建环境## 不适用场景- 需要大量编译安装的场景(部分编译工具在 Alpine 上有兼容问题) - 必须使用 glibc 专有软件的(虽然可以装兼容层,但不如直接用 Ubuntu 省心) - 不熟悉 Linux 的新手(文档比 Ubuntu 少)如果你的服务器只跑 Docker,Alpine 是目前最优雅的选择。省下的内存留给你的服务不香吗?
2026年07月25日
63 阅读
0 评论
0 点赞
2026-07-25
MySQL/PostgreSQL 自动备份:一条命令搞定
## 数据无价服务器磁盘会坏,黑客会删库,自己手滑会误删。数据库备份是运维的底线,没有备份的服务器,等于裸奔。## MySQL 备份脚本```bash #!/bin/bash # mysql_backup.shBACKUP_DIR="/backup/mysql" DATE=$(date +%Y%m%d_%H%M%S) RETENTION_DAYS=30 DB_USER="root" DB_PASS="your_password" DB_NAME="your_database"# 创建备份目录 mkdir -p $BACKUP_DIR# 备份数据库 mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz# 删除 30 天前的备份 find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -deleteecho "Backup completed: ${DB_NAME}_${DATE}.sql.gz" ```## PostgreSQL 备份```bash #!/bin/bashBACKUP_DIR="/backup/postgres" DATE=$(date +%Y%m%d_%H%M%S) DB_NAME="your_database"mkdir -p $BACKUP_DIR# pg_dump 不需要交互式输入密码,用 .pgpass 文件或环境变量 export PGPASSWORD="your_password" pg_dump -U postgres $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gzfind $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete ```## Docker 中的数据库备份```bash # MySQL in Docker docker exec mysql_container mysqldump -uroot -ppassword db_name | gzip > backup.sql.gz# PostgreSQL in Docker docker exec postgres_container pg_dump -U postgres db_name | gzip > backup.sql.gz ```## 定时执行```bash # 每天凌晨 2 点备份 0 2 * * * /scripts/mysql_backup.sh >> /var/log/backup.log 2>&1 ```## 远程备份(同步到另一台服务器)备份文件只放在本地不够安全,服务器物理损坏了备份也丢了。建议同步到另一台服务器或云存储:```bash #!/bin/bash # 备份后同步到远程服务器 rsync -avz --delete /backup/mysql/ user@remote-server:/backup/mysql/# 或上传到对象存储 rclone sync /backup/mysql/ s3:my-backup-bucket/mysql/ ```## 备份恢复验证备份文件不是存了就行,要定期验证能不能恢复:```bash # 创建一个测试数据库 mysql -u root -p -e "CREATE DATABASE test_restore;" # 恢复最近的备份 zcat /backup/mysql/db_20260722_020000.sql.gz | mysql -u root -p test_restore # 检查表数量是否一致 mysql -u root -p -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='test_restore';" # 验证完删除测试库 mysql -u root -p -e "DROP DATABASE test_restore;" ```建议每周自动执行一次恢复验证,确认备份文件可用。## 备份 3-2-1 原则- **3** 份备份:1 份原始数据 + 2 份备份 - **2** 种介质:本地磁盘 + 远程/云端 - **1** 份异地:至少 1 份备份在不同物理位置花 10 分钟配置好备份,可以节省未来 10 个小时的灾难恢复时间。
2026年07月25日
58 阅读
0 评论
0 点赞
2026-07-24
Cloudflare Zero Trust 免费内网穿透
## 传统的内网穿透方案常见的内网穿透方案有 FRP、Tailscale、ZeroTier。但如果你已经使用了 Cloudflare,其实它自带了更简单的方案——Cloudflare Tunnel。**优势:** - 完全免费,不限流量 - 不需要公网 IP - 自带 HTTPS 证书 - 自带 DDoS 防护 - 不需要客户端安装任何软件(访问端)## 安装 cloudflared```bash # 下载 cloudflared wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 chmod +x cloudflared-linux-amd64 sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared# 验证 cloudflared --version ```## 登录授权```bash cloudflared tunnel login ```会生成一个 URL,在浏览器中打开,选择要使用的域名,完成授权。## 创建隧道```bash # 创建隧道 cloudflared tunnel create my-tunnel# 查看隧道 ID cloudflared tunnel list ```## 配置 DNS 和路由创建配置文件 `~/.cloudflared/config.yml`:```yaml tunnel: YOUR_TUNNEL_ID credentials-file: /root/.cloudflared/YOUR_TUNNEL_ID.jsoningress: # 将 blog.yourdomain.com 指向本地 8080 端口 - hostname: blog.yourdomain.com service: http://localhost:8080# 将 nas.yourdomain.com 指向本地 5000 端口 - hostname: nas.yourdomain.com service: http://localhost:5000# SSH 穿透(需要客户端也装 cloudflared) - hostname: ssh.yourdomain.com service: ssh://localhost:22# 默认规则 - service: http_status:404 ```## 设置 DNS 记录并启动```bash # 自动创建 DNS 记录 cloudflared tunnel route dns my-tunnel blog.yourdomain.com cloudflared tunnel route dns my-tunnel nas.yourdomain.com# 启动隧道 cloudflared tunnel run my-tunnel# 以服务方式运行 sudo cloudflared service install sudo systemctl start cloudflared ```## 访问控制(Zero Trust)可以在 Cloudflare Zero Trust 面板中给隧道添加访问控制:1. 进入 Cloudflare Zero Trust → Access → Applications 2. 添加应用,选择 "Self-hosted" 3. 设置子域名,添加策略(如只允许特定邮箱登录) 4. 访问时会跳转到 Cloudflare 登录页面,验证后进入这样即使隧道是公开的,也只有授权用户才能访问。## Docker 部署 cloudflared```yaml services: cloudflared: image: cloudflare/cloudflared:latest command: tunnel run environment: - TUNNEL_TOKEN=your_tunnel_token restart: unless-stopped ```获取 Token 的方法:在 Cloudflare Zero Trust → Tunnels → 选择隧道 → Configure → 复制 tunnel token。## 注意事项- Cloudflare Tunnel 会经过 Cloudflare 的全球网络,延迟取决于你到 Cloudflare 边缘节点的距离 - 大文件传输和视频流不适合走 Tunnel - 违反 ToS 的内容(如视频流代理)会被封号对于个人博客、管理面板、开发环境这些场景,Cloudflare Tunnel 是目前最优的内网穿透方案。
2026年07月24日
66 阅读
0 评论
0 点赞
1
2