首页
语音便捷记账
开发服务
关于我
投稿
搜索
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
页面
语音便捷记账
开发服务
关于我
投稿
搜索到
369
篇与
的结果
2026-07-29
Tenacity:免费开源音频编辑器,Audacity 的纯净复刻版
Tenacity 是一款免费开源的多轨音频编辑和录音软件,是 Audacity 的隐私友好复刻版。它继承了 Audacity 的全部功能,同时移除了遥测和数据收集,真正做到纯净使用。支持 Windows、macOS 和 Linux。完整的录音与编辑支持多轨录音和编辑,可同时处理多个音频文件。提供剪切、复制、粘贴、混音等基本编辑功能,以及降噪、均衡器、音频效果器等高级功能。支持 WAV、MP3、FLAC 等多种音频格式。专业音频处理实时效果处理:均衡器、压缩器、混响、合唱、回声等。支持 VST 插件扩展,满足专业音频工作需求。内置频谱分析和波形显示,可视化编辑更加直观。纯净无遥测Tenacity 完全移除了 Audacity 中的遥测和数据收集功能,不追踪用户行为,不联网上报数据。支持通过键盘快捷键、屏幕阅读器等方式操作,无障碍体验优秀。下载方式
2026年07月29日
55 阅读
0 评论
0 点赞
2026-07-29
AriaNg:aria2 的现代化 Web 管理前端,轻松搭建私人下载服务器
AriaNg 是 aria2 下载工具最流行的 Web 管理前端,界面美观现代,支持纯 HTML 静态部署。配合 aria2 服务端,你可以用浏览器轻松管理所有下载任务,甚至搭建私人离线下载服务器。aria2 的强大内核aria2 是业界公认最轻量高效的命令行下载工具,支持 HTTP/HTTPS、FTP、BT、磁力链等全协议,内存占用仅 4MB,CPU 使用率极低。AriaNg 为它提供了美观易用的图形化管理界面。远程管理与部署AriaNg 为纯静态 HTML 页面,可部署在任何 Web 服务器或直接本地打开。支持 JSON-RPC 远程连接,在浏览器中管理远程服务器上的下载任务。配合路由器/NAS,轻松搭建 24 小时离线下载机。丰富功能支持多任务并行下载、断点续传、速度限制、任务队列管理。提供详细的下载进度统计和日志。响应式设计适配手机和平板,任何设备都能流畅管理。下载方式
2026年07月29日
72 阅读
0 评论
0 点赞
2026-07-29
BleachBit:免费开源系统清理工具,CCleaner 的最佳替代
BleachBit 是一款强大的开源系统清理工具,支持 Windows 和 Linux。它能够深度清理临时文件、浏览器缓存、日志文件等垃圾数据,同时提供安全的文件粉碎功能。完全免费、无广告、无捆绑,是 CCleaner 的最佳替代方案。深度清理释放空间BleachBit 可清理浏览器缓存、Cookie、历史记录、临时文件、系统日志等,轻松释放数 GB 磁盘空间。支持清理数千种应用程序残留,包括 Chrome、Firefox、Office、Photoshop 等常用软件。隐私保护一键清除浏览历史、保存密码、应用痕迹,不留数字足迹。支持安全删除模式,彻底粉碎敏感文件,即使数据恢复工具也无法找回。所有功能离线运行,无需注册或激活。透明可控清理前可预览所有待删除文件,由用户决定删除哪些内容。支持自定义 CleanerML 规则,可针对任意应用或文件模式创建专属清理策略。命令行模式支持批量自动化清理。下载方式
2026年07月29日
57 阅读
0 评论
0 点赞
2026-07-29
Sumatra PDF:仅 8MB 的极速开源 PDF 阅读器,启动比 Acrobat 快 10 倍
Sumatra PDF 是 Windows 上最轻量的开源电子书阅读器,安装包仅 8MB,启动速度极快。它不仅支持 PDF,还支持 ePub、MOBI、CHM、XPS、DjVu、CBZ/CBR 漫画等多种格式,一个软件搞定所有电子书阅读需求。极致轻量与速度单文件绿色便携,不写注册表项,不后台驻留。基于 MuPDF 渲染引擎,复杂 PDF 加载流畅无卡顿,高清文档显示清晰。相比 Adobe Acrobat,启动速度快 10 倍以上。多格式支持除了 PDF,还支持 ePub、MOBI、CHM、XPS、DjVu、CBZ/CBR(漫画格式)等主流电子书格式,无需安装多个阅读器。支持多窗口切换,方便多文档对比阅读。阅读增强功能3.3 及以上版本支持文本高亮、下划线等批注编辑,可保存至原文件。支持书签记忆、阅读位置同步,重新打开自动跳转到上次阅读位置。自定义快捷键提升操作效率。下载方式
2026年07月29日
57 阅读
0 评论
0 点赞
2026-07-29
Motrix v1.8.19:开源全能下载器,替代迅雷的最佳选择
Motrix 是一款基于 aria2 的开源全能下载器,支持 HTTP、FTP、BT、磁力链等所有主流下载协议,界面清爽无广告。如果你受够了迅雷的弹窗广告和限速,Motrix 是目前最好的替代方案。全协议支持Motrix 一站式支持 HTTP/HTTPS、FTP、BT 种子和磁力链接下载。配合浏览器扩展,还能直接从百度网盘提取链接下载,无需安装网盘客户端。极速多线程基于 aria2 内核,最高支持 64 线程同时下载,智能分片技术将大文件分割为多个小片段并行传输,充分利用带宽。支持断点续传,下载中断后自动从断点处恢复。现代交互体验采用 Material Design 风格的现代化界面,支持深色模式。内置下载任务管理、计划任务、速度限制等功能。跨平台支持 Windows、macOS 和 Linux。下载方式
2026年07月29日
61 阅读
0 评论
0 点赞
2026-07-29
Everything:Windows 上秒级文件搜索神器,比系统搜索快 100 倍
Everything 是 Windows 上最著名的文件搜索工具,由 voidtools 开发。它能够在数秒内索引数百万个文件,实现即时文件名搜索,速度远超 Windows 自带搜索,堪称效率神器。极速搜索原理Everything 直接读取 NTFS 文件系统的 USN 日志,无需逐个扫描文件夹,因此搜索速度极快——输入关键词的瞬间即出结果。轻量安装包仅 2MB,运行时内存占用极低。强大的过滤功能支持按文件类型、大小、修改日期、文件夹路径等多种条件过滤。支持正则表达式、通配符、布尔运算等高级搜索语法。可自定义搜索规则,精准定位目标文件。实时更新与分享文件系统变化时自动更新索引,搜索结果始终准确。支持 HTTP/FTP 服务器功能,可将搜索结果通过网络分享。支持 ETP 协议,局域网内多台电脑可共享索引。下载方式
2026年07月29日
56 阅读
0 评论
0 点赞
2026-07-29
ImageGlass:开源免费轻量图片查看器,替代 Windows 自带看图工具
ImageGlass 是一款开源、免费、无广告的 Windows 轻量级图片查看器。它支持超过 80 种图片格式,加载速度远超系统自带看图工具,是替代 Windows 照片查看器的最佳选择。海量格式支持支持包括 SVG、HEIC、WebP、RAW、GIF、PNG、JPG、BMP、TIFF 在内的 80+ 种常见图片格式。对于系统自带看图工具打不开的格式(如 GIF 动图、SVG 矢量图),ImageGlass 都能流畅浏览。轻量高效体积小巧,资源占用极低,图片加载丝滑流畅。和 Windows 默认图片查看器相同的操作方式和界面风格,任何人都能零成本上手。缩略图面板可快速切换同目录下的其他图片。实用附加功能内置图片格式转换功能,支持一键导出为不同格式。支持幻灯片播放、缩放无缝切换。提供深色/浅色主题,适配不同使用环境。下载方式
2026年07月29日
57 阅读
0 评论
0 点赞
2026-07-29
CopyQ:免费开源的剪贴板管理神器,效率提升利器
CopyQ 是一款高级开源剪贴板管理器,支持 Windows、macOS 和 Linux。它持续监控系统剪贴板,将复制的内容保存到自定义标签页中,方便随时查找和复用。全能记录与搜索CopyQ 可以存储文本、HTML、图片及各种自定义格式。强大的搜索和过滤功能,让你在数百条历史记录中快速定位需要的内容。支持为条目添加备注和标签,分类管理更高效。强大的编辑能力内置类似 Vim 的编辑器,支持直接在 CopyQ 中编辑剪贴板内容。支持拖放排序、批量操作、快捷键粘贴。全系统快捷键可自定义,无需离开当前应用即可快速调出粘贴。脚本与自动化支持高级命令行界面和脚本功能,可编写自动处理脚本。可设置忽略来自特定窗口的剪贴板内容,保护隐私。自定义外观主题,界面完全可定制。下载方式
2026年07月29日
63 阅读
0 评论
0 点赞
2026-07-29
Inkscape v1.4.4:免费开源矢量图形设计软件,Adobe Illustrator 的最佳替代
Inkscape 是一款免费、开源、跨平台的矢量图形编辑软件,支持 Windows、macOS 和 Linux。无论是制作图标、插图、Logo、海报,还是设计网页元素,Inkscape 都能轻松胜任,堪称 Adobe Illustrator 的最佳免费替代方案。专业的绘图工具提供钢笔工具、直线工具、圆形工具、矩形工具、贝塞尔曲线等全套矢量绘图工具,支持节点编辑和路径编辑,精细控制每个图形的形状。丰富的格式支持以 SVG 为原生格式,同时支持导入和导出 PDF、EPS、AI、DXF、PNG 等多种格式。内置位图描摹功能,可将位图自动转换为矢量图形。强大的文本与图层支持多行文本编辑,可自由设置字体、字号、颜色。完整的分层管理系统,可自由添加、删除、移动图层,轻松管理复杂设计项目。下载方式
2026年07月29日
46 阅读
0 评论
0 点赞
2026-07-29
PCSX2:免费开源 PS2 模拟器,重温 PlayStation 2 经典游戏
PCSX2 是全球最知名的 PlayStation 2 模拟器,完全免费开源,支持 Windows、macOS 和 Linux。近两年开发进度突飞猛进,兼容性已达极高水平,超过 98% 的 PS2 游戏可流畅运行。画质飞跃PCSX2 支持最高 8K 内部分辨率渲染,配合抗锯齿和各向异性过滤,让 PS2 经典游戏焕发新生。支持宽屏补丁,让原生 4:3 的游戏适配现代 16:9 显示器。广泛的游戏兼容战神、最终幻想、合金装备、GT赛车、皇牌空战——几乎所有 PS2 名作都能在 PCSX2 上完美运行。内置游戏数据库自动匹配最优设置,新手也能即装即玩。便捷功能支持即时存档/读档,再也不用担心忘记存档。支持金手指代码,满足想要快速通关的玩家。内置录制功能可轻松录制游戏精彩时刻。下载方式
2026年07月29日
58 阅读
0 评论
0 点赞
2026-07-29
Microsoft PowerToys:微软官方出品的 Windows 效率增强工具集
Microsoft PowerToys 是微软官方推出的一套 Windows 系统增强工具集,灵感源自 Windows 95 时代的经典项目。它为高级用户提供了多款实用工具,从窗口管理到文件批处理,全方位提升 Windows 使用效率。核心工具一览FancyZones 窗口管理器:自定义桌面布局,拖拽窗口自动吸附到预设区域,大屏多任务必备。PowerToys Run:类似 macOS Spotlight 的快速启动器,按 Alt+Space 即可搜索文件、启动应用、执行计算。Keyboard Manager:自由重映射键盘按键和快捷键。更多实用功能Image Resizer:右键一键批量调整图片大小。PowerRename:强大的批量重命名工具,支持正则表达式。File Explorer 预览增强:在资源管理器中直接预览 SVG、Markdown、PDF 等文件。Text Extractor:Win+Shift+T 从屏幕任意位置提取文字(OCR)。Screen Ruler:屏幕标尺工具,精确测量像素。完全免费由微软官方开源维护,GitHub 110k+ stars,持续更新,完全免费,纯净无广告。需要 Windows 10 v1903 或更高版本。下载方式
2026年07月29日
48 阅读
0 评论
0 点赞
2026-07-29
qBittorrent:免费开源无广告的 BT 磁力下载神器
qBittorrent 是一款完全免费、开源、无广告的 BT 下载工具,由 Christophe Dumez 于 2006 年开发,至今已维护近 20 年。它被认为是 μTorrent 的最佳替代品——同样的轻量高效,但没有广告和捆绑软件。纯净无广告作为开源软件,qBittorrent 承诺永不添加广告、不捆绑推广软件、不追踪用户行为。界面清爽简洁,经典的深色主题和三栏式布局让老用户零学习成本。功能全面支持磁力链接和种子文件下载,内置种子搜索引擎,支持 RSS 订阅自动下载,带宽调度器可按时间段限速,IP 过滤功能增强安全性。WebUI 远程管理让你在任何设备上控制家里的下载任务。跨平台支持 Windows、macOS、Linux 三大平台,代码基于 Qt 框架,各平台体验一致。v5.1.0 版本新增自定义统计数据保存间隔、URL 动态获取 Tracker 列表等实用功能。下载方式
2026年07月29日
58 阅读
0 评论
0 点赞
2026-07-29
ShareX:Windows 上最强免费开源截图工具
ShareX 是 Windows 平台上功能最强大的免费开源截图工具,已持续开发超过 18 年。它集截图、录屏、OCR 文字识别、图片编辑、文件上传于一体,是效率党的不二之选。丰富的截图模式支持全屏、活动窗口、区域、滚动截屏、屏幕录制(含 GIF)、自动截图等多种捕获方式。区域截图还支持矩形、椭圆、自由绘制等多种形状,满足各种场景需求。强大的标注与编辑截图后可立即使用内置编辑器进行标注,支持箭头、文字、方框、马赛克、高亮、模糊、序号标记等多种工具。智能橡皮擦和像素化模糊功能可以精准保护隐私信息。自动化工作流ShareX 支持自定义截图后的自动化任务链:截图→添加水印→上传到图床→复制链接→保存本地,一气呵成。支持上传到数十种图床和文件分享服务,包括自建服务器。轻量无广告完全免费、开源、无广告,安装包仅几十 MB,内存占用极低。被微软、Google 等大公司内部广泛使用,品质有保障。下载方式
2026年07月29日
51 阅读
0 评论
0 点赞
2026-07-29
OBS Studio:免费开源的专业录屏与直播推流神器
OBS Studio 是全球最受欢迎的开源录屏和直播推流软件,支持 Windows、macOS 和 Linux。无论是游戏直播、在线教学、视频会议录制,还是屏幕录像,OBS 都能提供专业级的解决方案。高性能实时采集OBS 支持高性能实时视频/音频采集和混音。可以创建由多个来源组成的场景,包括窗口捕获、图片、文本、浏览器窗口、摄像头、采集卡等,任意组合,无缝切换。专业级音频控制内置直观的音频混音器,支持每个音源的独立滤镜,包括噪声门、噪声抑制、增益调节等。同时支持 VST 插件,满足专业播客和音乐制作的音频处理需求。强大的自定义能力模块化的停靠式 UI 让你可以自由调整界面布局,每个模块都可以弹出为独立窗口。支持自定义快捷键,几乎所有操作都可以通过快捷键完成。工作室模式支持预览场景再推流,避免直播事故。全平台直播支持OBS 支持所有主流直播平台,包括 B站、抖音、Twitch、YouTube 等。凭借庞大的插件生态,你可以无限扩展 OBS 的功能。下载方式
2026年07月29日
47 阅读
0 评论
0 点赞
2026-07-29
HandBrake v1.11.2:免费开源的万能视频转码工具
HandBrake 是一款免费开源的全能视频转码工具,支持 Windows、macOS 和 Linux。无论是压缩视频体积、转换视频格式,还是提取 DVD/蓝光内容,HandBrake 都能轻松胜任。核心优势HandBrake 完全免费,无广告、无水印、无时长限制,所有功能全部开放。支持 4K/8K/HDR 视频转换,内置丰富的预设模板,新手也能一键转换。支持 NVIDIA NVENC、Intel Quick Sync 等硬件加速技术,4K 视频转换速度可提升 400%。全能格式支持输入格式涵盖 BDMV、ISO、MKV、MP4、AVI 等几乎所有常见视频格式;输出支持 H.265、H.264、AV1、VP9、ProRes 等主流编码。字幕支持 SRT、ASS、PGS 格式,可内嵌或外挂。专业参数控制HandBrake 提供 RF 值画质微调(0-51级)、关键帧间隔设置、色度采样深度调整等专业级参数,满足进阶用户的精细化需求。支持批量处理,拖拽文件夹即可自动队列转换,后台静默运行不打扰。下载方式
2026年07月29日
58 阅读
0 评论
0 点赞
2026-07-29
Ryujinx v1.1.1403:开源强大的 Switch 模拟器中文最终版
Ryujinx 是一款免费、开源的 Nintendo Switch 模拟器,可以在 Windows、macOS 和 Linux 上模拟 Switch 游戏机的运行环境,让玩家在 PC 上畅玩 Switch 大作。它支持大部分 Switch 游戏,包括《塞尔达传说:旷野之息》《超级马力欧 奥德赛》等知名作品,同时还支持多人在线联机和语音聊天功能。完全免费开源Ryujinx 完全免费且源代码公开,遵循 MIT 许可证,用户可以自由下载、使用、修改和分发。其核心模块采用 C# 编写,代码规范,易于维护。开发团队对性能和稳定性要求极高,每个版本都经过多轮测试才发布。高兼容性与稳定性目前 Ryujinx 已支持数百款 Switch 游戏,且持续更新以提高兼容性。无论是热门的 3A 大作还是小众的独立游戏,都有较高的运行成功率。在稳定性方面,Ryujinx 的表现同样出色,长时间游戏也不易出现闪退或卡顿。丰富的功能特性Ryujinx 内置了大量实用功能:支持 GPU 加速以提升性能;支持多人在线联机和语音聊天;内置直播和录制功能,可直接录制游戏画面或推流;支持 Joy-Con 手柄模拟,包括振动反馈;支持实时保存和读取游戏进度,随时存档不怕丢失。高度可定制Ryujinx 提供了丰富的设置选项:可自定义分辨率、帧率、控制器映射;支持键盘、鼠标、手柄等多种输入方式;支持快捷键自定义;还提供线程数、CPU 占用率、GPU 硬件加速等高级设置,方便玩家根据电脑配置优化性能。此外,模拟器内置了内存查看、堆栈跟踪等调试工具,方便进阶用户调优。多语言与社区Ryujinx 支持多语言界面和字幕,包括中文、英文、日文等。它拥有一个活跃的社区,用户可以在官网上获取帮助、提问交流、分享游戏心得。注意事项与中文设置安装时注意不要将 Ryujinx 解压到中文目录,建议放在分区根目录(如 D 盘)。中文界面设置路径:Options → Select Language → 简体中文。下载方式
2026年07月29日
56 阅读
0 评论
0 点赞
2026-07-29
MAME v0.273:重温经典,最强大的街机游戏模拟器
MAME,全称为 Multiple Arcade Machine Emulator,是一款由意大利人尼科拉·萨尔莫里亚(Nikola Salmoria)于1997年发起的街机游戏模拟器。自诞生以来,MAME便致力于保存经典街机游戏的文化遗产,通过精确的模拟技术,让玩家在现代设备上重温那些令人怀念的经典游戏。MAME项目自启动以来,不断吸收和整合其他模拟器项目,如MESS(Multiple Emulator Super System)和AGEMAME,其功能得到了极大的扩展。如今的MAME不仅能够模拟街机游戏,还能模拟各种复古电脑、视频游戏主机和计算器等电子娱乐设备。这种广泛的硬件模拟能力,使得MAME成为有史以来最优秀的多机种街机模拟器之一。超过32000个游戏系统MAME的核心功能之一是它能够模拟过去50年来超过32000个不同的游戏系统。这包括众多知名的街机游戏平台,如Capcom、SNK等公司的街机主板,以及早期的家用游戏机、电脑等。通过MAME,玩家可以在现代设备上体验到与当年在街机厅或使用原始设备相似的游戏感受。游戏的画面显示、音效、操作响应等方面都力求接近原始硬件的表现,为玩家带来了极高的还原度和沉浸感。强大的跨平台支持在操作系统支持方面,MAME展现出了强大的跨平台性。当前的MAME源代码可以在Microsoft Windows、Linux、FreeBSD和macOS等主要操作系统下直接编译和运行。这种广泛的兼容性,使得MAME成为了一款全球玩家都能轻松使用的模拟器。开源精神与技术实现MAME项目坚持开源模式,将所有源代码公开给全世界的开发者和爱好者。这种开放共享的精神促进了技术交流与进步,为无数对街机游戏充满好奇的年轻人打开了一扇通往编程世界的大门。同时,MAME项目还拥有一个高质量的文档系统,包括详尽的编译指南和API参考,方便新用户入门和开发者进行二次开发。在技术实现上,MAME主要使用C++编写,部分核心组件使用C语言编写,在运行效率和可维护性上取得了较好的平衡。在图形与输入处理方面,MAME使用SDL2.0来处理图形和输入,同时还集成了BGFX Shaders等技术进行高级图形渲染,进一步提升游戏的视觉效果。简单易用对于玩家来说,使用MAME模拟器非常简单。玩家可以通过双击mame.exe文件(Windows系统)或直接从命令行运行无参数的MAME来启动模拟器。对于不想使用命令行的用户,MAME还提供了图形化界面,无需额外下载和设置前端。此外,MAME还支持软件列表功能,可以简化操作,玩家只需在命令行中输入对应的游戏名称和系统名称,即可轻松加载游戏。丰富的附加功能除了基本的游戏模拟功能外,MAME还支持多种高级功能,如暂停和保存/加载游戏状态、调整游戏速度、设置游戏难度等。这些功能为玩家提供了更多的游戏选择和个性化设置,使得MAME成为了一款功能强大且易于使用的模拟器。汉化设置修改中文界面:General Settings – Customize UI – Language 选择 Chinese(Simplified) 保存即可。下载方式
2026年07月29日
54 阅读
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
自建网页监控:Changedetection.io 抢货比价
## 使用场景- 监控商品价格变化,降价时通知你 - 监控招聘网站,新岗位第一时间知道 - 监控政府公告,政策变化不错过 - 监控竞品网站改版 - 抢限量商品Changedetection.io 是一个开源网页变更监控工具,支持可视化选择监控区域、多种通知方式。## Docker 部署```yaml services: changedetection: image: ghcr.io/dgtlmoon/changedetection.io:latest container_name: changedetection restart: unless-stopped ports: - "5000:5000" volumes: - ./data:/datastore environment: - PLAYWRIGHT_DRIVER_URL=ws://browserless:3000browserless: image: browserless/chrome:latest restart: unless-stopped environment: - MAX_CONCURRENT_SESSIONS=5 ```## 基础用法1. 打开 Web 界面,点击 "New Watch" 2. 输入要监控的 URL 3. 设置检查间隔(建议至少 5 分钟)**选择监控区域(Visual Selector):**点击 "Visual" 标签,会自动渲染页面截图,你可以用鼠标框选要监控的价格区域。这样只有价格变化才触发通知,避免广告、推荐内容变化导致的误报。## 通知配置支持 Apprise 统一通知框架,支持微信/钉钉/Telegram/Slack 等 70+ 渠道。配置 Gotify 通知:`gotify://push.yourdomain.com/TOKEN`配置企业微信:`apprise://wxwork://corpid:corpsecret@agentid/touser`## 高级功能**正则过滤**:只关注特定文字变化,比如只监控"立即购买"按钮的出现**请求头设置**:模拟移动端访问(有些网站手机端和桌面端价格不同)**JavaScript 预处理**:在页面加载后执行 JS,比如自动登录或点击弹窗关闭Changedetection.io 的优势在于自建、免费、功能全。花 10 分钟搭起来,以后买东西再也不会买贵了。
2026年07月28日
56 阅读
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
自建电子书库:Calibre-Web 搭建私人图书馆
## 为什么要自建电子书库Kindle 退出中国后,很多人的电子书管理成了问题。Calibre-Web 是基于 Calibre 数据库的 Web 前端,支持在线阅读、格式转换、推送到 Kindle 等功能。## Docker 部署```yaml services: calibre-web: image: lscr.io/linuxserver/calibre-web:latest container_name: calibre-web restart: unless-stopped ports: - "8083:8083" volumes: - ./config:/config - /path/to/books:/books environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai ```启动后访问 `http://IP:8083`,首次需要配置 Calibre 数据库路径。如果没有现成的 Calibre 数据库,可以设置一个空路径,Calibre-Web 会自动创建。## 核心功能- **在线阅读**:支持 EPUB、PDF、MOBI 格式在线打开 - **格式转换**:内置转换引擎,EPUB→MOBI、PDF→EPUB 等 - **推送到 Kindle**:配置 SMTP 后一键发送到 Kindle 设备 - **OPDS 协议**:可以通过 OPDS 客户端(如静读天下)直接访问书库 - **多用户**:支持多个用户,可设置每个人可见的书籍权限 - **元数据管理**:自动从 Google Books/Amazon 获取书籍封面和简介## 启用格式转换Calibre-Web 需要额外的转换服务:```yaml services: calibre-web: environment: - DOCKER_MODS=linuxserver/calibre-web:calibre ```或者单独运行 Calibre 转换服务:```bash docker run -d --name calibre-server \ -v /path/to/books:/books \ -p 8081:8081 \ linuxserver/calibre ```然后在 Calibre-Web 设置中填写转换服务器地址。## 推送到 Kindle 配置在管理员设置中配置 SMTP:- SMTP 服务器:smtp.qq.com(用 QQ 邮箱举例) - 端口:465 - 加密:SSL - 用户名:你的 QQ 邮箱 - 密码:QQ 邮箱的授权码(不是登录密码)然后在 Kindle 的「设置→您的账户」中找到 Kindle 邮箱地址,填入 Calibre-Web 即可。## 配合公网访问用 Cloudflare Tunnel 或 Nginx 反代暴露到公网,配合 HTTPS 和密码认证,就能随时随地上传和阅读。有了 Calibre-Web,你的电子书再也不会散落在各个设备里了。
2026年07月27日
73 阅读
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日
63 阅读
0 评论
0 点赞
2026-07-26
Syncthing 教程:多设备文件实时同步,告别手动备份
为什么要用 Syncthing?试想一个场景:你在阿里云服务器上跑着博客、小程序后端、各种 Docker 容器,每次改了代码都要 scp 上传,或者写个备份脚本定期 rsync。麻烦不说,还容易忘了备份,真到服务器挂了那天欲哭无泪。Syncthing 解决了这个问题:文件在哪改,瞬间同步到另一台设备。不需要手动操作,不需要定时任务,完全静默运行。而且它是开源、免费、端到端加密的,文件不经过任何第三方服务器。核心概念Syncthing 的精髓就三个词:设备 → 文件夹 → 共享。 设备:每台安装了 Syncthing 的电脑/手机都有一个唯一的设备 ID,像一个身份证号。 文件夹:你指定哪些目录要同步,每个文件夹可以独立配置。 共享:一个文件夹可以只和部分设备共享,A↔B 同步的项目,C 完全看不到。 这意味着你可以灵活控制:公司文件只同步到笔记本,个人照片同步到家里 NAS,互不干扰。安装 SyncthingLinux 服务器(Debian/Ubuntu)# 下载最新版本(以 v2.1.2 为例) curl -sL "https://github.com/syncthing/syncthing/releases/download/v2.1.2/syncthing-linux-amd64-v2.1.2.tar.gz" -o /tmp/st.tar.gz tar xzf /tmp/st.tar.gz -C /tmp cp /tmp/syncthing-linux-amd64-v2.1.2/syncthing /usr/bin/syncthing # 创建 systemd 服务实现开机自启 cat > /etc/systemd/system/syncthing.service ~/Library/LaunchAgents/com.syncthing.plist
2026年07月26日
55 阅读
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
LocalSend:开源跨平台文件传输神器,完美替代 AirDrop
在日常工作和生活中,我们经常需要在手机、电脑、平板等不同设备之间传输文件。iPhone 用户有 AirDrop,但一旦跨出苹果生态圈——想从手机传文件到 Windows 电脑,或者把 Mac 上的大文件分享给安卓手机——就变得非常麻烦。微信、QQ 虽然能传,但速度慢、压缩画质、有文件大小限制,还要走云端服务器,隐私也没保障。有没有一款工具能做到跨平台、高速传输、无需联网、完全免费?答案是 LocalSend。什么是 LocalSend?LocalSend 是一款免费开源的本地文件传输工具,通过局域网(Wi-Fi)在设备之间直接传输文件,无需互联网连接,不需要注册账号,也不会把你的数据上传到任何服务器。它基于 Flutter 开发,使用 REST API + HTTPS 加密通信,TLS/SSL 证书在每台设备上动态生成,保证端到端安全。目前 LocalSend 已经覆盖了几乎所有主流平台: Windows(10+,Win 7 可用 v1.15.4) macOS(11 Big Sur+) Linux Android(5.0+) iOS(12.0+) 核心优点1. 真正的全平台支持无论你用 iPhone、安卓手机、Mac 还是 Windows 电脑,只要连在同一个 Wi-Fi 下,就能互相传输文件。这在同类工具中是极为少见的——大多数工具要么只做某两个平台之间的桥接,要么功能残缺。LocalSend 一次性解决了所有设备之间的互通问题。2. 端到端加密,隐私至上所有数据传输都通过 HTTPS 加密,TLS/SSL 证书由每台设备自行生成。文件走的是局域网直连,不经过任何第三方服务器。你的照片、文档、视频等数据永远不会离开你家的路由器范围。没有中间人,没有云存储,没有隐私泄露的风险。3. 无需联网,纯局域网传输这对于以下场景简直是救命级别的功能: 家里/公司网络带宽有限,大文件通过 QQ/微信传太慢 在飞机、高铁等无网络环境需要传输文件 不想消耗手机流量传输大视频 只要设备在同一局域网内,LocalSend 就能工作,不依赖外网连接。4. 传输速度极快因为是局域网直连,速度上限取决于你路由器的 Wi-Fi 性能,而不是外网带宽。在 5GHz Wi-Fi 环境下,传一部 2GB 的电影只需几十秒。比微信文件传输助手快 10 倍以上,而且不会压缩原文件。5. 无广告、无追踪、完全免费开源LocalSend 在 GitHub 上拥有超过 5 万 Star,代码完全开源(MIT 协议)。没有广告,不收集任何用户数据,不要求注册账号——下载即用。如果你会开发,甚至可以自己编译构建。典型使用场景场景一:手机照片/视频传到电脑旅行回来手机拍了几十个 G 的照片视频,用数据线拷太麻烦,用微信传会压缩画质还有大小限制。打开 LocalSend,手机上选文件 → 点发送 → 电脑上点接收,几秒搞定。场景二:同事之间快速分享大文件一份 500MB 的 PPT 或设计稿,U 盘跑来跑去不现实,上传网盘再分享链接太曲折。两台电脑同时开 LocalSend,局域网秒传。场景三:多设备无缝工作流在 Mac 上写完的文档,一键传到 Windows 台式机继续编辑;手机收到的 PDF 合同,直接发到电脑打印。LocalSend 让设备之间的界限变得模糊。对比其他文件传输方案 方案 跨平台 无需联网 无压缩 免费 隐私安全 LocalSend ✅ 全平台 ✅ ✅ 原文件 ✅ 开源免费 ✅ 端到端加密 Apple AirDrop ❌ 仅苹果 ✅ ✅ ✅ ✅ 微信/QQ 文件传输 ✅ ❌ 需联网 ❌ 图片/视频压缩 ✅ ❌ 经云端服务器 网盘(百度/阿里云等) ✅ ❌ 需联网 ✅ ⚠️ 限速/收费 ❌ 云端存储 如何下载?LocalSend 提供了多种下载渠道,覆盖所有平台的应用商店: 官网:https://localsend.org GitHub:github.com/localsend/localsend/releases Google Play(Android):搜索 "LocalSend" App Store(iOS/macOS):搜索 "LocalSend" Microsoft Store(Windows):搜索 "LocalSend" Linux:支持 Snap、AppImage、AUR 等多种包管理方式 💡 提示:由于 LocalSend 没有内置自动更新功能,建议通过应用商店或包管理器安装,方便后续升级。总结LocalSend 是我近两年用过最实用的开源工具之一。它解决了一个非常具体的痛点——跨设备、跨平台、无网络环境下的文件传输——而且解决得非常优雅。界面简洁、速度飞快、完全免费、源码开放,没有任何隐形消费或隐私隐患。如果你还在用微信文件传输助手传大文件,或者为了从安卓传文件到 Mac 折腾各种数据线、云盘转存,强烈建议试试 LocalSend。一次安装,终生受益。本文由 Marvis 生成
2026年07月25日
67 阅读
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
OpenCut:告别订阅焦虑,用开源的力量解锁专业视频剪辑
创作者的困境:剪得爽,还是剪得自由?你有没有遇到过这种情况——深夜剪完一支视频,点导出时弹出「试用时长已用完,请订阅会员解锁 4K 导出」。又或者,你只是想给公司内部视频打个码,却发现某知名剪辑软件的隐私政策里写着「可能会收集你的剪辑数据」。CapCut(剪映) 无疑是强大的,但随着付费墙越筑越高、云端隐私争议不断,越来越多的创作者开始寻找第三条路——既拥有接近 CapCut 的操作体验,又能完全掌控自己的创作和数据。2026 年 7 月,GitHub 上一个叫 OpenCut 的项目给出了答案。78K+ Star、MIT 开源许可证、完全免费的剪映替代品。OpenCut 是什么?OpenCut是一个开源的视频剪辑工具,基于 TypeScript + Rust/WASM 构建,主打三个核心哲学:完全本地化:所有项目文件、素材、缓存全部存储在你的设备上,不需要登录任何账号,不向云端上传任何数据。断网也能正常剪辑。社区驱动的功能集:路线图公开在 GitHub Discussions 中,哪些特效该优先开发、多轨道性能如何优化,由真实用户投票决定。无平台锁定:导出的视频格式完全标准,没有隐形水印、没有元数据标记。项目文件是标准的 JSON + 媒体资源文件夹,任何文本编辑器都能打开。一句话总结:像安装 VS Code 一样安装 OpenCut,然后永久拥有一个视频工作台。没有订阅,没有过期。核心功能一览功能说明多轨道时间线无限层视频、音频、文字、贴纸轨道,拖拽分割、拉伸变速、关键帧动画AI 字幕自动语音转文字生成字幕,支持导入外部转录文件智能抠像基于 ONNX Runtime 的本地模型,无需联网社区特效商店一键安装社区制作的转场、调色 LUT、粒子效果遮罩系统矩形、椭圆、星形、心形、电影宽幅条等多种遮罩关键帧曲线编辑器贝塞尔手柄调节缓动曲线全格式支持底层 FFmpeg 集成,iPhone Log 色、DJI HLG 直接拖入无需转码画布背景模糊、纯色、渐变可选自定义画布尺寸不再受限于固定预设最新版本 v0.3.0 更新亮点2026 年 4 月发布的 v0.3.0 是一次大规模更新:新增遮罩系统,支持矩形/椭圆/星形/心形/电影宽幅条等形状新增关键帧曲线编辑器,支持贝塞尔手柄调缓动新增音量控制和变速控制(变速时可选保持音调不变)新增贴纸面板(Logo、国旗、几何形状)预览支持缩放和平移时间线剪辑支持多选和批量操作画布背景回归,支持模糊/纯色/渐变回放性能大幅提升,修复了播放时交互卡顿的问题底层渲染引擎从 WebGL 迁移到 Rust/wgpu,编译为 WASM 运行如何使用?目前 OpenCut 以 Web 应用为主,打开浏览器访问即可直接使用,不用安装任何软件。桌面版正在开发中,基于 GPUI + Rust 构建,后续会提供 .dmg / .exe / .AppImage 安装包。如果你喜欢折腾,也可以克隆仓库本地构建。项目完全开源,MIT 协议允许商用。局限与展望诚实地说,OpenCut 还不是 CapCut 的完全替代品:部分依赖昂贵商业授权的特效无法直接移植,需要社区慢慢复现AI 模型首次加载需下载约 500MB,网络不佳时体验受影响移动端(iOS/Android)仍在路线图中,尚未实现但换个角度看,它带来的不是功能上的全面碾压,而是选择权和确定性——你今天剪辑的婚礼视频、商业样片、法律证据,没有任何第三方能够访问你的原始数据。对于独立创作者、小型工作室和教育机构来说,这个价值远超那些收费特效。快速开始GitHub 仓库:https://github.com/OpenCut-app/OpenCut在线使用:此内容需要评论后才能查看哦 (*^▽^*)开源协议:MIT(可商用)也可以下载下面的源码,直接本地部署。[verify file="opencut-v0.3.0"]
2026年07月25日
84 阅读
1 评论
0 点赞
2026-07-25
免费智能扫描王 v1.1.7 免费扫描工具
这次推荐一款真正免费、没有套路、无需登录且实测可离线使用的智能扫描工具——免费智能扫描王 v1.1.7,适用于安卓手机。体验极好,没有多余干扰,极简舒适,装上它就能把手机变成一台随身扫描仪。核心功能App 内置了智能切边和背景净化算法。使用时只需将手机对准文档,它会自动识别边缘并拍照。拍完后自动清理杂乱背景,生成高清 JPEG 或 PDF 文件。如果对自动效果不满意,还可以手动调节亮度、对比度、锐度等图像参数,满足不同场景的需求。回想以前,随便下载一个扫描软件,拍文档、转 PDF 之类的基础功能都还能免费使用。现在市面上基本都需要充值会员。对于偶尔需要扫描证件、处理文档的人来说,实在不划算。适用场景无论是合同、发票、书籍、身份证、护照还是名片,都能扫描得清晰亮丽。编辑功能除了"扫"之外,还支持"编":一键涂抹敏感信息、添加批注、签名等实用编辑操作。在输出方面,还能保存为加密的 PDF 文件。另外还有二维码生成等实用小功能。如果你正缺一款好用的扫描软件,又不想被会员套路,那这款绝对合适。
2026年07月25日
57 阅读
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 点赞
2026-07-24
自建通知推送服务:Gotify 实现手机消息推送
## 痛点服务器备份完成了、网站被攻击了、Docker 容器挂了——这些消息你希望第一时间知道。微信通知需要企业微信或公众号,钉钉需要建机器人,邮件通知不够即时。Gotify 是一个极简的自建推送服务,服务端 + 手机 App,不需要任何第三方平台。## 部署```yaml services: gotify: image: gotify/server:latest container_name: gotify restart: unless-stopped ports: - "8088:80" volumes: - ./data:/app/data environment: - GOTIFY_DEFAULTUSER_PASS=your_admin_password - TZ=Asia/Shanghai ```启动后访问 `http://IP:8088`,默认用户名 `admin`,密码为上面设置的值。## 手机端在 App Store 或 Google Play 搜索 "Gotify" 安装。打开后填入服务器地址和管理员账号密码即可连接。## 创建应用和 Token在 Web 界面创建应用(比如叫 "Server Monitor"),会生成一个 Token。推送消息只需要这个 Token:```bash # 发送一条测试消息 curl "https://push.yourdomain.com/message?token=YOUR_TOKEN" \ -F "title=测试通知" \ -F "message=Gotify 配置成功!" \ -F "priority=5" ```priority 范围 0-10,数字越大通知越醒目。## 实战场景**1. 监控备份结果**```bash #!/bin/bash # backup.sh if rsync -av /data /backup/; then curl "https://push.domain.com/message?token=xxx" \ -F "title=备份成功" -F "message=数据已备份到远程" -F "priority=5" else curl "https://push.domain.com/message?token=xxx" \ -F "title=⚠️ 备份失败" -F "message=请检查磁盘空间" -F "priority=10" fi ```**2. 监控 Docker 容器状态**```bash #!/bin/bash # check_container.sh if ! docker inspect -f '{{.State.Running}}' nginx | grep -q true; then curl "https://push.domain.com/message?token=xxx" \ -F "title=⚠️ Nginx 挂了" \ -F "message=容器已停止,请检查" \ -F "priority=10" fi ```**3. 配合 Uptime Kuma**Uptime Kuma 原生支持 Gotify 通知。在"通知方式"中选择 Gotify,填入服务器地址和 Token 即可。## 进阶:使用优先级- priority < 3:信息类通知,不打扰 - priority 3-6:一般提醒 - priority 7-9:重要告警,手机会响铃 - priority 10:紧急,即使勿扰模式也会通知Gotify 是我使用频率最高的自建服务之一,服务器有任何风吹草动,手机第一时间知道。
2026年07月24日
66 阅读
0 评论
0 点赞
2026-07-23
Nginx 限流配置:保护网站不被爬虫刷爆
## 问题场景某天早上起来,发现网站打不开了。SSH 上去一看,CPU 100%,Nginx 日志每秒几百条请求。原来是被某个爬虫或者恶意扫描盯上了。Nginx 自带了强大的限流模块,配置好之后可以有效防止这种情况。## 限制请求速率在 http 块中定义限流区域:```nginx http { # 定义一个限流区域:名为 mylimit,基于客户端 IP,速率 10r/s limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s; } ```应用到具体 location:```nginx location / { limit_req zone=mylimit burst=20 nodelay; } ```参数解释: - `zone=mylimit`:使用上面定义的限流区域 - `burst=20`:允许 20 个突发请求排队等待 - `nodelay`:超出 rate 的请求立即返回 503,不排队## 限制并发连接数```nginx http { limit_conn_zone $binary_remote_addr zone=connlimit:10m; }server { location /download/ { limit_conn connlimit 5; # 每个 IP 最多 5 个并发连接 limit_rate 500k; # 每个连接限速 500KB/s } } ```## 实战配置:给博客的完整防护```nginx http { # 请求频率限制 limit_req_zone $binary_remote_addr zone=global:10m rate=30r/s; limit_req_zone $binary_remote_addr zone=login:10m rate=3r/m;# 连接数限制 limit_conn_zone $binary_remote_addr zone=perip:10m;server { # 全局限制 limit_req zone=global burst=50 nodelay; limit_conn perip 20;# 登录接口严格限制 location /admin/ { limit_req zone=login burst=2 nodelay; }# 静态资源不做限流 location ~* \.(jpg|png|css|js|woff2)$ { limit_req off; limit_conn off; } } } ```## 白名单:放过搜索引擎```nginx # 定义白名单用的 geo 映射 geo $limit_whitelist { default 0; 127.0.0.1 1; # 你的 IP 1.2.3.4 1; }# 白名单内的 IP 不做限制 map $limit_whitelist $limit_key { 0 $binary_remote_addr; 1 ""; }limit_req_zone $limit_key zone=mylimit:10m rate=10r/s; ```## 被限流时的用户体验被限流后 Nginx 默认返回 503。可以自定义错误页面:```nginx error_page 503 /503.html; location = /503.html { internal; } ```限流不是目的,保护服务稳定才是。建议先用宽松的阈值,观察日志后再逐步收紧。
2026年07月23日
58 阅读
0 评论
0 点赞
2026-07-23
一键部署 Wiki:Wiki.js 搭建个人知识库
## 为什么需要知识库程序员的知识体系是碎片化的:今天学了个 Nginx 配置技巧,明天发现了一个 Docker 最佳实践,后天同事分享了一个 Shell 脚本。如果不系统化管理,一个月后多半忘了。Wiki.js 是目前最漂亮的开源 Wiki 系统,基于 Node.js,支持 Markdown 编辑,界面现代。## Docker Compose 部署```yaml version: '3' services: wiki: image: requarks/wiki:2 container_name: wikijs restart: unless-stopped ports: - "8080:3000" environment: DB_TYPE: sqlite DB_FILEPATH: /data/db.sqlite volumes: - ./data:/data ```这是最简单的部署方式,使用 SQLite 无需额外数据库。如果文章量大,建议换 PostgreSQL。## PostgreSQL 版部署```yaml version: '3' services: db: image: postgres:15-alpine restart: unless-stopped environment: POSTGRES_DB: wiki POSTGRES_PASSWORD: your_password POSTGRES_USER: wikijs volumes: - ./db:/var/lib/postgresql/datawiki: image: requarks/wiki:2 restart: unless-stopped ports: - "8080:3000" depends_on: - db environment: DB_TYPE: postgres DB_HOST: db DB_PORT: 5432 DB_USER: wikijs DB_PASS: your_password DB_NAME: wiki ```## 核心功能- **Markdown 编辑器**:所见即所得,支持代码高亮、数学公式、流程图 - **权限管理**:可以设置公开页和私有页 - **全文搜索**:内置搜索引擎,找文档很快 - **多语言**:支持中文界面 - **备份恢复**:支持 Git 同步和手动导出 - **OAuth 登录**:支持 GitHub/Google/微软等 SSO## 我的使用方式1. **运维文档**:每台服务器的配置、IP、安装的服务都记录在案 2. **踩坑记录**:每次遇到奇怪的 bug 和解决方案,写一篇文章 3. **代码片段**:常用脚本和配置模板,复制即用 4. **学习笔记**:新技术的学习路径和关键知识点## 最佳实践- 每篇文章加标签,方便分类检索 - 坚持"遇到问题→解决→记录"的习惯 - 每周花 10 分钟整理零散笔记 - 把 Wiki.js 设为浏览器首页,督促自己记录搭建起来只需要 5 分钟,但坚持下去,一年后你会感谢自己。
2026年07月23日
62 阅读
0 评论
0 点赞
2026-07-22
旧手机改桌面信息屏:天气日历监控摆件
# 旧手机改桌面信息屏:实时天气+日历+待办+系统监控刷手机看时间,结果不知不觉刷了半小时短视频。如果你也有这个烦恼,说明你需要一块"只能看信息但不能刷"的桌面摆件屏。 旧手机屏幕大小适中、分辨率不低、联网能力完整,稍加改造就能变成一台极客风桌面信息屏:实时天气、日历、待办清单、系统资源监控,一屏搞定。全程不需要写代码。---## 一、整体思路核心方案:**全屏浏览器 + 数据看板网页**。``` 旧手机 → 全屏浏览器 → 自建或使用现成的 Dashboard 网页 ├─ 天气 API ├─ 日历展示 ├─ 待办事项 └─ 系统状态(可选) ```浏览器方案的好处: - 不需要开发 App,加载一个网页即可 - 刷新实时数据方便 - 主题随便换,自由度极高 - 旧手机性能足够(浏览器不吃资源)---## 二、方案对比| 方案 | 难度 | 功能 | 适合人群 | |------|-----|------|---------| | 自建 HTML Dashboard | ★★★ | 完全自定义 | 会一点 HTML/CSS | | 使用开源 Dashboard | ★☆☆ | 开箱即用 | 不想写代码 | | 下载信息屏 App | ☆☆☆ | 最省事 | 纯小白(效果一般) |本文推荐**方案二:开源 Dashboard**,以开源项目 "Dashy" 或 "Homarr" 为例。这里用更轻量的方案:直接编写一个单页 HTML 文件,通过 Termux + SimpleHTTP 托管,旧手机浏览器全屏打开。---## 三、操作步骤### 第 1 步:获取天气 API Key打开和风天气开发者平台(dev.qweather.com),注册免费账号,获取 API Key。免费版每天 1000 次调用,完全够用。创建一个应用,选择"Web API",记下 Key。### 第 2 步:编写 Dashboard 网页在 Termux 中创建 HTML 文件:```bash cd ~ mkdir dashboard cd dashboard touch index.html ```用 `vim index.html` 或电脑编辑后传到手机上。以下是一个精简模板(你只需替换 `YOUR_KEY` 和城市代码):```html 信息屏 ``` * { margin: 0; padding: 0; box-sizing: border-box; } ```html body { background: #0d1117; color: #c9d1d9; font-family: -apple-system, sans-serif; padding: 24px; height: 100vh; display: flex; flex-direction: column; } .header { display: flex; justify-content: space-between; align-items: flex-start; } .time { font-size: 72px; font-weight: 700; color: #58a6ff; } .date { font-size: 24px; color: #8b949e; margin-top: 8px; } .weather { text-align: right; } .temp { font-size: 48px; font-weight: 600; color: #f0883e; } .desc { font-size: 20px; color: #8b949e; } .section { margin-top: 32px; } .section-title { font-size: 20px; color: #8b949e; margin-bottom: 12px; border-bottom: 1px solid #21262d; padding-bottom: 8px; } .todo-item { font-size: 22px; padding: 8px 0; border-bottom: 1px solid #21262d; display: flex; align-items: center; } .todo-check { width: 20px; height: 20px; border: 2px solid #30363d; border-radius: 4px; margin-right: 12px; } .todo-done .todo-check { background: #238636; border-color: #238636; } .todo-done span { text-decoration: line-through; color: #484f58; } .stats { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; } .stat-card { background: #161b22; border: 1px solid #21262d; border-radius: 8px; padding: 16px; } .stat-value { font-size: 36px; font-weight: 700; } .stat-label { font-size: 16px; color: #8b949e; margin-top: 4px; } .ram { color: #58a6ff; } .cpu { color: #3fb950; } .wifi { color: #d2a8ff; } --:------年--月--日 星期---°加载中... 待办事项设计新功能原型完成周报学习 Rust 第 3 章整理收藏的文章 系统状态24%CPU1.2G内存-42WiFi dBm function updateTime() { const now = new Date(); document.getElementById('time').textContent = String(now.getHours()).padStart(2,'0') + ':' + String(now.getMinutes()).padStart(2,'0'); const days = ['日','一','二','三','四','五','六']; document.getElementById('date').textContent = now.getFullYear()+'年'+(now.getMonth()+1)+'月'+now.getDate()+'日 星期'+days[now.getDay()]; } setInterval(updateTime, 1000); updateTime(); // 天气 API(替换 YOUR_KEY 和城市 location_id) fetch('https://devapi.qweather.com/v7/weather/now?location=101020100&key=YOUR_KEY') .then(r => r.json()) .then(d => { document.getElementById('temp').textContent = d.now.temp + '°'; document.getElementById('weather-desc').textContent = d.now.text; }); ```### 第 3 步:启动 HTTP 服务在 Termux 中:```bash pkg install nodejs cd ~/dashboard npx serve . -p 8080 ```### 第 4 步:旧手机浏览器全屏打开打开 Chrome,访问 `http://localhost:8080`。然后:- Chrome 菜单 → 添加到主屏幕 → 创建快捷方式 - 从主屏幕图标打开,自动进入全屏模式(PWA 效果) - 设置 → 显示 → 休眠 → 永不(或 30 分钟)### 第 5 步:美化摆件找一个小支架把手机立在桌面。黑色背景 + 低亮度 + 始终显示的 Dashboard,配上暗色桌面非常和谐。淘宝搜"手机桌面支架",10 块钱搞定。---## 四、进阶玩法- **天气预警**:和风天气 API 支持预警数据,暴雨/高温红色预警时把温度颜色改成红色闪烁 - **音乐播放器**:嵌入 Spotify 或网易云音乐的 Web Player iframe - **Pomodoro 计时器**:加一个番茄钟模块,工作和休息切换显示 - **股市行情**:调用新浪财经接口展示自选股涨跌---
2026年07月22日
57 阅读
0 评论
0 点赞
2026-07-22
旧手机做下载机:Termux + Aria2 离线下载
# 旧手机做家庭下载机:Termux + Aria2 + AriaNg 远程离线下载磁力链接贴进迅雷一挂就是一晚上,电脑风扇呼呼转。有没有想过,让旧手机来做这件事?安静、省电、24 小时在线,这不就是天生的下载机吗? 今天用 Termux + Aria2 + AriaNg 三个免费工具,把旧手机改造成家庭下载机。BT、磁力链接、直链、FTP,通吃。配合 Tailscale 实现远程管理,在公司摸鱼时也能顺手把想看的电影下到家里的旧手机上。---## 一、整体架构``` 你的电脑/手机(AriaNg 网页控制台) ```bash ↓ Tailscale 虚拟局域网 ↓ 旧手机 → Termux → Aria2 → 下载到外接 U 盘/存储卡 ``````- Aria2:轻量级多协议下载工具,支持 HTTP/HTTPS/FTP/BT/Magnet - AriaNg:Aria2 的网页管理界面,美观易用 - Tailscale:ZeroTier 的替代方案,同样免费,速度更快(基于 WireGuard)---## 二、环境搭建### 第 1 步:安装 Termux从 F-Droid 安装 Termux。打开后执行:```bash pkg update && pkg upgrade pkg install aria2 nodejs wget git termux-setup-storage ```最后一条命令会授予 Termux 访问手机存储的权限。### 第 2 步:配置 Aria2创建 Aria2 的配置目录和文件:```bash mkdir -p ~/.aria2 cd ~/.aria2 touch aria2.session ```编辑配置文件 `~/.aria2/aria2.conf`:```bash dir=/storage/emulated/0/Download/aria2 file-allocation=none continue=true max-concurrent-downloads=5 max-connection-per-server=10 min-split-size=10M split=10 disable-ipv6=true enable-rpc=true rpc-allow-origin-all=true rpc-listen-all=true rpc-listen-port=6800 rpc-secret=你的密码 listen-port=6881-6999 enable-dht=true bt-enable-lpd=true enable-peer-exchange=true bt-max-peers=55 save-session=/data/data/com.termux/files/home/.aria2/aria2.session save-session-interval=30 ```关键参数解释: - `dir`:下载目录。建议指向外接 U 盘(路径类似 `/storage/XXXX-XXXX`) - `split=10`:单个文件最多 10 个线程下载 - `rpc-secret`:远程访问密码,防别人乱用你的 Aria2 - `listen-port`:BT 下载端口,需要在路由器做端口映射(可选)### 第 3 步:启动 Aria2```bash aria2c --conf-path=~/.aria2/aria2.conf -D ````-D` 参数表示后台运行。检查是否启动成功:```text ps aux | grep aria2 ```---## 三、安装 AriaNg 网页控制台AriaNg 是一个纯前端的网页控制台,能通过浏览器管理 Aria2 的下载任务。### 第 1 步:下载 AriaNg```bash cd ~ git clone https://github.com/mayswind/AriaNg.git cd AriaNg ```### 第 2 步:用 Node.js 启动静态文件服务器```bash npx serve . ```这会启动一个临时 HTTP 服务器,端口 3000。### 第 3 步:在电脑浏览器访问浏览器打开:`http://192.168.1.105:3000`看到 AriaNg 界面后,点击左侧"设置"→ 填入: - 协议:http - 主机:192.168.1.105 - 端口:6800 - 密钥:你配置文件中的 rpc-secret显示"已连接"就成功了。现在可以在 AriaNg 里粘贴链接或磁力直接下载。---## 四、远程管理(Tailscale)在家用 WiFi 没问题,但公司摸鱼时想远程加个下载任务怎么办?用 Tailscale。### 第 1 步:注册并安装 Tailscale1. tailscale.com 注册免费账号(支持 100 个设备) 2. Termux 中安装:```bash pkg install tailscale tailscale up ```3. 浏览器会自动弹出来登录授权,完成授权后旧手机加入 Tailscale 网络### 第 2 步:电脑/主力手机也装 Tailscale去 tailscale.com/download 下载对应客户端,登录同一个账号。### 第 3 步:远程管理Tailscale 会给你分配一个固定虚拟 IP(如 100.xxx.xxx.xxx)。在公司电脑浏览器打开:```text http://100.xxx.xxx.xxx:3000 ```就能像在家一样管理下载任务。---## 五、进阶优化### 外接存储旧手机内置存储有写入寿命,建议外接 U 盘或 SD 卡作下载目录。在 `aria2.conf` 中修改 `dir`:```ini dir=/storage/1234-5678/Downloads ```路径可通过 Termux 中执行 `ls /storage/` 查看。### Tracker 自动更新BT 下载速度依赖 Tracker 列表。定期更新 Tracker:创建一个脚本 `~/update-tracker.sh`:```bash curl -s https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt | tr '\n' ',' > ~/.aria2/trackers sed -i "s/bt-tracker=.*/bt-tracker=$(cat ~/.aria2/trackers)/" ~/.aria2/aria2.conf ```用 cron 每天跑一次:```bash crontab -e 0 4 * * * sh ~/update-tracker.sh ```### 保活设置同之前文章,关闭电池优化 + 开启后台活动 + termux-wake-lock。---## 六、常见问题**Q:BT 下载没速度?** A:检查路由器是否开启了 UPnP;添加 Tracker;确认 `listen-port` 没有被运营商封锁。**Q:下载突然中断?** A:Aria2 支持断点续传,重启后会从 session 文件恢复进度。如果频繁中断,考虑手机 WiFi 休眠问题——关闭"WiFi 优化"。**Q:耗电严重吗?** A:纯下载时约 2-3W,一天不到 0.1 度电。比电脑省多了。---
2026年07月22日
59 阅读
0 评论
0 点赞
2026-07-22
旧手机跑 Pi-hole:全屋去广告 DNS 服务器
# 旧手机搭建 Pi-hole:全屋去广告 DNS 服务器你有没有过这种体验:打开一个 App,满屏弹窗广告;看个网页,内容还没加载完,广告倒是先跳出来了。今天教你把旧手机改造成全屋去广告 DNS 服务器,电视、手机、电脑的广告统统拦截。 核心工具是 Pi-hole,一款开源 DNS 级广告拦截工具。手机上跑不了原生 Pi-hole,但我们通过 Termux + Pi-hole in Docker 或直接 DNS 代理方案来实现。---## 一、Pi-hole 原理Pi-hole 本质上是一个 DNS 黑名单过滤器。正常上网流程:```text 你 → DNS 服务器 → 返回广告域名的 IP → 加载广告 ```装上 Pi-hole 之后:```text 你 → Pi-hole → 发现是广告域名 → 返回 0.0.0.0 → 广告加载失败 ```它内置了上百万条广告域名的黑名单,每日自动更新。你还可以手动导入更多规则(如 AdGuard 规则、anti-AD 规则)。---## 二、方案选择旧手机跑 Pi-hole 有两种方案:| 方案 | 难度 | 效果 | 推荐度 | |------|-----|------|-------| | 方案 A:Termux + Pi-hole 脚本 | ★★☆ | 完整功能 | ★★★★ | | 方案 B:AdGuard Home 替代 | ★☆☆ | 类似效果,更轻量 | ★★★★★ |AdGuard Home 用 Go 语言编写,有 ARM 版本,资源占用极低,功能与 Pi-hole 高度重合,而且不需要折腾 Docker。**本文推荐方案 B,旧手机友好。**---## 三、操作步骤(AdGuard Home 方案)### 第 1 步:旧手机安装 Termux从 F-Droid(f-droid.org)下载 Termux。不要用 Google Play 版本,因为 Play 版已停止更新,很多包装不上。安装后打开 Termux,执行基础更新:```bash pkg update && pkg upgrade pkg install wget curl ```### 第 2 步:下载并运行 AdGuard Home```bash wget https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_arm64.tar.gz tar xzf AdGuardHome_linux_arm64.tar.gz ./AdGuardHome ```首次运行会自动初始化,终端会显示管理界面地址:```text http://127.0.0.1:3000 ```### 第 3 步:通过局域网访问管理界面旧手机连上家里 WiFi,查看 IP 地址:```bash ifconfig ```假设 IP 是 192.168.1.105。在电脑浏览器打开:```text http://192.168.1.105:3000 ```按界面引导完成初始化配置: - 监听端口:53(DNS 服务) - 管理端口:3000(保持默认) - 创建管理员账号密码### 第 4 步:配置上游 DNS 服务器初始化完成后进入设置 → DNS 设置: - 上游 DNS 服务器:```text 114.114.114.114 223.5.5.5 ```这两个是国内延迟最低的公共 DNS。如果追求隐私,可以换成:```text tls://dns.quad9.net ```### 第 5 步:添加广告过滤规则进入过滤器 → DNS 封锁清单,点击"添加封锁清单"→"添加自定义列表":推荐规则:```text https://anti-ad.net/easylist.txt https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt https://cdn.jsdelivr.net/gh/privacy-protection-tools/anti-AD@master/anti-ad-easylist.txt ```这三条规则覆盖了国内绝大多数广告、跟踪器和恶意域名。### 第 6 步:让全屋设备用上 Pi-hole到路由器管理后台,找到 DHCP 设置,把 DNS 服务器地址改为旧手机的 IP(如 192.168.1.105)。**重要**:同时填备用 DNS 为 114.114.114.114,这样万一旧手机关机,网络不至于完全断掉。重启路由器或重新连接各设备的 WiFi,之后所有设备(手机、电脑、电视、平板)都能享受去广告效果。---## 四、进阶:保持 Termux 后台运行Android 系统会杀后台进程,必须做以下设置:1. 手机设置 → 电池 → 关闭 Termux 的电池优化 2. 手机设置 → 应用 → Termux → 开启"允许后台活动" 3. 开启 Termux 内的 Wake Lock:```bash pkg install termux-api termux-wake-lock acquire ```4. 设置 Termux 开机自启(需要 Termux:Boot 插件,F-Droid 可下载)。---## 五、效果检验配置完成后,访问下面几个网址测试: - speedtest.net(如果没看到测速页面的视觉广告,说明生效) - xinwenlianbo.tv(国内广告密集的新闻站)进入 AdGuard Home 管理面板 → 网页控制台,能实时看到拦截了哪些域名、各设备的拦截数量。---## 六、注意事项1. **功耗很低**:AdGuard Home 在旧手机上运行时内存占用约 60-80 MB,CPU 占用不到 5%,几乎不耗电。 2. **不要关闭 WiFi**:关闭 WiFi 后 DNS 服务就断了,全屋断网可能会被家人打。 3. **规则别加太多**:规则太多会增加 DNS 查询延迟。3-5 条精选规则最平衡。---
2026年07月22日
58 阅读
0 评论
0 点赞
2026-07-22
旧手机改监控摄像头:IP Webcam + ZeroTier 异地远程
# 旧手机改监控摄像头:IP Webcam + ZeroTier 异地远程查看换下来的旧手机,摄像头参数往往还不错(1200 万像素以上的一大把),扔抽屉吃灰太浪费。今天教你把旧手机改成一个能异地远程查看的家用监控摄像头。 成本:0 元。服务器:不用。数据隐私:完全本地,不经过任何第三方服务。---## 一、整体架构``` 旧手机(摄像头端)→ ZeroTier 虚拟局域网 → 你的主力手机/电脑(查看端) ```text ↑ IP Webcam 推视频流 ``````核心组件: - IP Webcam:把手机摄像头变成网络摄像头,提供 MJPEG/RTSP 视频流 - ZeroTier:创建 P2P 虚拟局域网,让你在任何地方都能连上家里的旧手机 - 电源:旧手机长期插电使用(电池管理见后文)---## 二、摄像头端配置(旧手机)### 第 1 步:安装 IP Webcam在 Google Play 搜索 "IP Webcam"(开发者 Pavel Khlebovich),安装免费版即可。注意不要下成山寨版,认准 5000 万+ 下载量那个。### 第 2 步:配置 IP Webcam打开 IP Webcam,拉到最底部找到"Start server"。但别急着开启,先做以下设置:进入 Settings → Video preferences: - 分辨率:选 640×480 或 1280×720(不建议更高,旧手机发热严重) - 帧率:15 FPS(平衡流畅度和发热) - 对焦模式:Continuous video进入 Settings → Streaming: - 开启 RTSP 支持(后面配合 ZeroTier 用) - 端口保持默认 8080进入 Settings → Other: - 开启"Start on boot"(通电自动启动) - 开启"Keep screen on"(保持亮屏)### 第 3 步:核对视频流地址回到主界面,点击"Start server",记下底部显示的内网地址,比如:```text http://192.168.1.105:8080 ```在同一个 WiFi 下,用主力手机浏览器打开这个地址,能看到实时画面就算成功。点页面里的"Video renderer"可以切换不同的播放方式。RTSP 地址格式:```text rtsp://192.168.1.105:8080/h264_pcm.sdp ```---## 三、异地远程访问(ZeroTier)内网能看不算本事,关键是在外面也能随时查看家里的情况。ZeroTier 是免费的内网穿透 / SD-WAN 工具,创建虚拟局域网后,你的主力手机和旧手机就像在同一个 WiFi 下。### 第 1 步:注册 ZeroTier 并创建网络1. 访问 my.zerotier.com 注册账号 2. 点击"Create A Network",记下 Network ID(16 位字符) 3. 保持默认设置即可(免费版支持 25 个设备)### 第 2 步:旧手机安装 ZeroTier在 Google Play 安装 "ZeroTier One",打开后点击右上角"+",输入刚才的 Network ID,点"Add Network",然后打开开关。回到 ZeroTier 网页端,在 Members 列表里找到这个设备,勾选左侧的 Auth 复选框授权设备加入网络。记下 ZeroTier 分配给旧手机的虚拟 IP(如 10.147.17.5)。### 第 3 步:主力手机也装 ZeroTier同样的方式安装并加入同一个 Network,也勾选 Auth。之后就可以通过虚拟 IP 访问旧手机:```text 浏览器打开:http://10.147.17.5:8080 RTSP 流:rtsp://10.147.17.5:8080/h264_pcm.sdp ```无论你在家里、公司还是出国旅行,只要有网络,就能看到家里的实时画面。---## 四、进阶优化### 电池管理旧手机长期插电,电池有鼓包风险。两个方案:- 方案 A(简单):智能插座 + 定时任务。每天只充电 2 小时。用旧手机自带的"定时开关机"配合。 - 方案 B(硬核):拆掉电池,改直供电。把电池保护板拆下来,焊接一个 4V 稳压模块。**仅推荐有电路基础的朋友操作。**### 夜视功能IP Webcam 支持用闪光灯做补光。在 Settings → Video → 开启"Use flashlight"。如果环境完全漆黑,市面上有低于 20 元的 USB 红外补光灯,插在 OTG 口上就能用。### 多摄像头矩阵家里旧手机多?每个房间放一台,不同的 ZeroTier 端口避免冲突:```text 卧室:IP Webcam 端口 8080 → http://10.147.17.5:8080 客厅:IP Webcam 端口 8081 → http://10.147.17.6:8081 门口:IP Webcam 端口 8082 → http://10.147.17.7:8082 ```---## 五、常见问题**Q:IP Webcam 会自动关闭怎么办?** A:设置 → 电池 → 关闭"电池优化"(对 IP Webcam 设为不优化),防止系统杀后台。**Q:画面卡顿怎么优化?** A:降分辨率到 640×480,帧率降到 10 FPS。ZeroTier 的延迟取决于双方网络,国内同运营商一般 50-200ms。**Q:流量消耗大吗?** A:640×480 15FPS MJPEG 约 2-3 Mbps,一小时大约 1 GB。建议在 WiFi 环境下使用,4G/5G 流量下建议降到 320×240。---
2026年07月22日
51 阅读
0 评论
0 点赞
2026-07-22
域名解析进阶:A/CNAME/MX/TXT 记录一次讲透
# 域名解析进阶:A / AAAA / CNAME / MX / NS / TXT 记录一次讲透很多人买了域名、配了 DNS,但一看到 A 记录、CNAME 就头大。别怕,今天用最通俗的语言 + 实际场景 + dig 命令验证,把这些记录彻底讲明白。 读完这篇,你不仅能配好 DNS,还能用命令行自己排查解析问题。---## 一、DNS 解析的基础概念DNS(Domain Name System)可以理解成互联网的电话本。你输入 zjunwei.com,DNS 把这个人类可读的名字翻译成机器可读的 IP 地址(如 1.2.3.4)。DNS 记录就是这本电话本里的"条目",每种记录有不同的用途。核心有 6 种:| 记录类型 | 作用 | 类比 | |---------|------|-----| | A | 域名 → IPv4 地址 | 家庭住址 | | AAAA | 域名 → IPv6 地址 | 新版家庭住址 | | CNAME | 域名 → 另一个域名 | 别名/外号 | | MX | 指定邮件服务器 | 邮局地址 | | NS | 指定 DNS 服务器 | 电话本管理员 | | TXT | 存储文本信息 | 备注栏 |---## 二、A 记录(Address Record)**作用**:把域名指向一个 IPv4 地址。**实际场景**:你的服务器 IP 是 123.45.67.89,你想让 zjunwei.com 指向它。配置示例(Cloudflare / 阿里云 DNS 后台):```text 类型:A 名称:@(代表根域名) 内容:123.45.67.89 TTL:600 ```**常见子域名 A 记录**:```text 名称:www → 内容:123.45.67.89 名称:api → 内容:10.0.0.5 名称:cdn → 内容:203.0.113.1 ```**dig 验证**:```bash dig zjunwei.com A ```输出关键行:```text zjunwei.com. 600 IN A 123.45.67.89 ```---## 三、AAAA 记录(IPv6 Address Record)**作用**:把域名指向 IPv6 地址。**什么时候用**:你服务器有 IPv6 地址,或者你想让网站在纯 IPv6 环境下也能访问。配置示例:```text 类型:AAAA 名称:@ 内容:2001:db8::1 ```**dig 验证**:```bash dig zjunwei.com AAAA ```输出:```text zjunwei.com. 600 IN AAAA 2001:db8::1 ```**注意**:如果只配了 AAAA 没配 A,IPv4 用户无法访问。目前建议 A 和 AAAA 同时配置。---## 四、CNAME 记录(Canonical Name Record)**作用**:把域名指向另一个域名,而不是 IP。**为什么不用 A 记录**:假设你用 GitHub Pages 托管博客,它的 IP 地址可能会变。如果你配 A 记录指向它当前的 IP,IP 变了你的网站就挂了。用 CNAME 指向 yourname.github.io,GitHub 那边自动更新 IP,你完全不用管。配置示例:```text 类型:CNAME 名称:www 内容:yourname.github.io ```**CNAME 的重要规则(容易踩坑)**: - 根域名(@)不能配 CNAME,只能用 A 记录。这是 DNS 协议规定 - CNAME 不能和其他记录共存。配了 CNAME 就不能再配 A/AAAA/MX**dig 验证**:```bash dig www.zjunwei.com CNAME ```输出:```text www.zjunwei.com. 600 IN CNAME yourname.github.io. ```---## 五、MX 记录(Mail Exchange Record)**作用**:告诉全世界你的域名的邮件该送到哪个服务器。**实际场景**:你用了 Google Workspace 或腾讯企业邮箱,需要配置 MX 记录让邮件能正常收发。Google Workspace 的 MX 配置:```text 类型:MX 名称:@ 内容:ASPMX.L.GOOGLE.COM 优先级:1 类型:MX 名称:@ 内容:ALT1.ASPMX.L.GOOGLE.COM 优先级:5 类型:MX 名称:@ 内容:ALT2.ASPMX.L.GOOGLE.COM 优先级:5 ```**优先级含义**:数字越小优先级越高。邮件系统会先尝试 1 号服务器,不可用再尝试 5 号。**dig 验证**:```bash dig zjunwei.com MX ```输出:```text zjunwei.com. 300 IN MX 1 aspmx.l.google.com. zjunwei.com. 300 IN MX 5 alt1.aspmx.l.google.com. ```---## 六、NS 记录(Name Server Record)**作用**:指定由哪个 DNS 服务器来管理你的域名解析。**什么时候配**:更换 DNS 服务商时(比如从阿里云 DNS 换成 Cloudflare DNS)。配置位置:**不在 DNS 管理后台配,而是在域名注册商后台配。**举例:把 DNS 从阿里云换到 Cloudflare:```text 类型:NS 名称:@ 内容:alice.ns.cloudflare.com 内容:bob.ns.cloudflare.com ```**dig 验证**:```bash dig zjunwei.com NS ```输出:```text zjunwei.com. 86400 IN NS alice.ns.cloudflare.com. zjunwei.com. 86400 IN NS bob.ns.cloudflare.com. ```---## 七、TXT 记录(Text Record)**作用**:存储任意文本信息。虽然叫"文本记录",但主要用途是安全验证。**三大实际用途**:### 1. SPF(防邮件伪造) 告诉邮件接收方,哪些 IP 或服务器有权用你的域名发邮件:```text 类型:TXT 名称:@ 内容:v=spf1 include:_spf.google.com ~all ```### 2. DKIM(邮件签名验证) 公钥存在 TXT 记录里,邮件接收方用来验签:```text 类型:TXT 名称:google._domainkey 内容:v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQ... ```### 3. 域名所有权验证 Google Search Console / SSL 证书验证 / 第三方服务验证:```text 类型:TXT 名称:@ 内容:google-site-verification=AbCdEf123456 ```**dig 验证**:```bash dig zjunwei.com TXT ```输出:```text zjunwei.com. 300 IN TXT "v=spf1 include:_spf.google.com ~all" ```---## 八、实战:用 dig 排查 DNS 问题### 场景 1:网站打不开,先看解析对不对```bash dig zjunwei.com A ```检查返回的 IP 是不是你的服务器 IP。如果不是 → DNS 配置错误或被劫持。### 场景 2:改完 DNS 不生效```bash dig zjunwei.com A @8.8.8.8 ```@8.8.8.8 指定用 Google 的公共 DNS 查询(不走本地缓存)。如果这个结果正确,说明 DNS 已生效,你的本地还没刷新。### 场景 3:追踪完整解析路径```bash dig zjunwei.com +trace ```从根 DNS 一路追踪到最终的 A 记录,能看到每一步的 DNS 服务器。---## 九、速查表| 需求 | 用什么记录 | 示例值 | |------|----------|-------| | 网站指向服务器 | A | 123.45.67.89 | | 网站指向 IPv6 | AAAA | 2001:db8::1 | | 子域名指向另一个网站 | CNAME | other.example.com | | 配置企业邮箱 | MX | mx.example.com | | 换 DNS 服务商 | NS | ns1.example.com | | SSL 验证 / 邮件签名 | TXT | 各种验证字符串 |---
2026年07月22日
66 阅读
0 评论
0 点赞
2026-07-22
域名安全防护:5 个防止域名被劫持盗取的措施
# 域名安全防护:5 个防止域名被劫持盗取的措施2023 年某知名电商创始人因域名被盗导致全站瘫痪 6 小时,直接损失数百万。域名是你的数字资产大门,门被撬了,里面的东西还能安全吗? 域名劫持和盗取比你想象的更常见。攻击者通过社工、钓鱼或漏洞获取你的注册商账号,把域名偷偷转走,然后坐地起价勒索。今天分享 5 条硬核防护措施,每一条都是实际有效的防护手段。---## 一、注册商锁(Registrar Lock)这是第一道也是最有效的防线。**原理**:开启注册商锁后,域名无法被转移到其他注册商,也无法修改 DNS 和 WHOIS 信息。即使攻击者拿到了你的账号密码,也无法把域名转走。**如何开启**: - 阿里云:域名控制台 → 对应域名 → 安全设置 → 开启"禁止转移锁"和"禁止更新锁" - GoDaddy:域名管理 → 设置 → 域名锁定 → 开启 Transfer Lock - Namecheap:Domain List → 域名右侧的 Lock 图标 → 确认为锁定状态**建议**:这两个锁日常保持开启。只有在你真的需要转移域名或修改信息时,才暂时关闭,操作完成后立即恢复。**注意**:部分注册商(如 Namesilo)默认就开启锁定,但国内注册商有时默认不开启,建议检查一遍。---## 二、二次验证(2FA / MFA)如果你的注册商账号密码在某个数据泄露中被兜售,二次验证就是救命稻草。**最佳实践**: - 使用 TOTP 验证器(Google Authenticator、Authy、Microsoft Authenticator),不要用短信验证码(SIM 卡克隆风险) - 建议用支持云端备份的 TOTP 工具(如 Authy),防止换手机丢失密钥 - 保存备用恢复码在安全的地方(打印出来锁保险柜)**不要做**: - 关闭二次验证 - 用同一个邮箱注册托管商和域名注册商(如果邮箱被盗,双重沦陷) - 把验证码存在聊天记录或云端笔记中**深度防护**:不光注册商要开 2FA,用来绑定的邮箱也必须开 2FA。攻击链常常是:先拿下邮箱 → 重置注册商密码 → 转走域名。---## 三、WHOIS 隐私保护WHOIS 是一个公开数据库,记录每个域名的注册人姓名、邮箱、电话、地址。如果不做隐私保护,这些信息任何人都能查到。**风险**: - 社工攻击:通过 WHOIS 信息收集你的手机号和邮箱,发送钓鱼邮件或短信 - 身份冒充:得知注册人姓名和地址后,伪装成你去申请域名转移 - 垃圾骚扰:域名抢注公司和 SEO 服务商会大量发送推广信息**开启方式**: - 阿里云:默认开启 WHOIS 隐私保护(国内注册商因政策要求已全量默认隐藏) - GoDaddy:购买时勾选"Full Domain Privacy & Protection" - Cloudflare Registrar:注册的所有域名自动免费隐藏 WHOIS - Namecheap:第一年免费 WhoisGuard,后续续费约 2.88 美元/年**注意**:如果用的是 Cloudflare Registrar,完全没有这个烦恼——Cloudflare 从根源上就显示 Cloudflare 自己的信息,而且完全免费。---## 四、DNSSEC(域名系统安全扩展)DNSSEC 是 DNS 的"数字签名",防止 DNS 劫持和缓存投毒攻击。**攻击场景**:你在星巴克连了公共 WiFi,要访问 zjunwei.com。如果没有 DNSSEC,中间人可以把 DNS 查询劫持到一个假的 IP,看似是你网站,实际上是个钓鱼页面。**DNSSEC 如何防护**:它在 DNS 记录上加了加密签名,递归 DNS 服务器可以验证记录是否被篡改。签名对不上 → 拒绝解析。**开启步骤(以 Cloudflare 为例)**: 1. Cloudflare → 域名 → DNS → Settings → 开启 DNSSEC 2. Cloudflare 会生成 DS 记录 3. 登录域名注册商后台,在 DNS 设置中添加 DS 记录 4. 等待生效(几分钟到 24 小时不等)**兼容性说明**:DNSSEC 需要注册商、DNS 服务商、递归 DNS 三方都支持。Cloudflare + 主流注册商(阿里云、Namecheap)都支持。开启后对网站访问无任何影响。---## 五、续费提醒 + 自动续费这条看似简单,但每年都有大量域名因忘记续费被释放,然后被抢注公司秒抢。**真实案例**:Google 曾经忘记续费 google.com,域名短暂落到他人手中,还好对方马上归还。连 Google 这样的公司都能犯这种错,个人就更不用说了。**防护策略**: 1. **开启自动续费**:注册商后台开启,确保支付方式有效 2. **多设提醒**:到期前 90 天、60 天、30 天、7 天各设一个日历提醒 3. **留一个备用邮箱**:注册商联系邮箱不要只用域名邮箱(万一域名过期你收不到邮件)。建议再多留一个 Gmail 或 QQ 邮箱 4. **域名续费周期**:建议一次续费 3-5 年。不仅防止忘记,Google 也确实把长续费域名当作一个微弱的信任信号**域名生命周期**: - 到期日:可正常续费 - 续费宽限期(约 30 天):可续费,可能加收赎回费 - 赎回期(约 30 天):需支付高昂赎回费(几百到上千元) - 删除期(约 5 天):域名彻底删除,重新开放注册---## 总结:安全清单| 防护措施 | 重要性 | 成本 | |---------|-------|-----| | 注册商锁 | ★★★★★ | 免费 | | 二次验证 | ★★★★★ | 免费 | | WHOIS 隐私 | ★★★★☆ | 免费或极低 | | DNSSEC | ★★★☆☆ | 免费 | | 续费提醒 | ★★★★★ | 免费 |这 5 项全部免费,配置总时长不超过 30 分钟。花半小时换来域名安全,这笔投资非常划算。---
2026年07月22日
64 阅读
0 评论
0 点赞
2026-07-22
免费域名邮箱:Cloudflare Email Routing 搭建指南
# 免费域名邮箱搭建:用 Cloudflare Email Routing 实现 admin@你的域名.com有了自己的域名,每次给别人发邮件还用 @gmail.com 是不是差点意思?今天教你零成本搞一个 admin@yourdomain.com,看起来专业度直接拉满。 Cloudflare Email Routing 完全免费,不需要额外买服务器,不需要装任何程序,只要你的域名 DNS 托管在 Cloudflare,5 分钟就能搞定。---## 一、Cloudflare Email Routing 是什么?简单说就是一个邮件转发服务。别人发邮件到 admin@yourdomain.com,Cloudflare 自动转发到你真实的 Gmail 或 QQ 邮箱。你在 Gmail 里回复时,对方看到的发件人仍然是 admin@yourdomain.com。核心能力: - 自定义邮箱前缀:support@、admin@、hello@ 随便设 - 免费无限转发规则 - 支持通配符转发(catch-all):任何 @yourdomain.com 的邮件都收 - 内置反垃圾邮件过滤 - 完全免费,无接收/发送量限制---## 二、前提条件- 域名 DNS 托管在 Cloudflare(如果还没托管,先去 Cloudflare 添加站点,把 NS 记录改过去) - 有一个真实可用的邮箱(Gmail、QQ 邮箱、163 邮箱均可) - Cloudflare 账号(免费注册即可)---## 三、操作步骤### 第 1 步:登录 Cloudflare,进入 Email 设置登录 Cloudflare Dashboard → 选择你的域名 → 左侧菜单点击"Email"→ 然后点"Email Routing"。### 第 2 步:启用 Email Routing点击"Get started",Cloudflare 会自动检查你的 DNS 记录,如果没有 MX 记录会提示你添加。确认后,Cloudflare 自动添加所需的 DNS 记录。### 第 3 步:创建自定义地址进入"Routes"页面,点击"Create address":```text 自定义地址:admin 目标邮箱:yourname@gmail.com ```保存后,admin@yourdomain.com 就上线了。### 第 4 步:设置通配符转发(可选)在 Routes 页面点击"Add route":```text 自定义地址:*(星号代表任意前缀) 目标邮箱:yourname@gmail.com ```这样无论别人发到 aaa@yourdomain.com 还是 bbb@yourdomain.com,你都能收到。好处是网站注册时可以随便编邮箱前缀,方便分类和防追踪。### 第 5 步:测试用你的 Gmail 发一封测试邮件到 admin@yourdomain.com,查看是否正常收到。如果收不到,检查: - DNS 记录的 MX 记录是否正确 - 目标邮箱是否在 Cloudflare 中已验证---## 四、进阶:让 Gmail 代发邮件光能收不行,还得能发。配置 Gmail 的"代发邮件"功能,你就可以在 Gmail 里以 admin@yourdomain.com 的身份发邮件。### 配置步骤:1. 打开 Gmail → 右上角齿轮 →"查看所有设置" 2. 进入"账号和导入"标签 3. 找到"用这个地址发送邮件",点击"添加其他电子邮件地址" 4. 填写: - 姓名:你的名字 - 电子邮件地址:admin@yourdomain.com 5. 下一步,SMTP 服务器选 Cloudflare 的邮件发送服务。但实际上 Cloudflare Email Routing 本身不提供 SMTP 发送,所以这里需要借助第三方服务。### 方案 A:使用 Resend(推荐,免费额度充足)Resend 每天免费 100 封邮件,个人使用完全够。1. 注册 Resend,添加你的域名,验证 DNS 记录 2. 在 Resend 获取 SMTP 凭据 3. 回到 Gmail 代发设置,填入 Resend 的 SMTP 信息: - SMTP 服务器:smtp.resend.com - 端口:587 - 用户名:resend - 密码:Resend 提供的 API Key### 方案 B:使用 Zoho Mail 免费版Zoho 提供最多 5 个用户的免费企业邮箱,带完整 SMTP 服务。1. 注册 Zoho Mail 免费计划 2. 添加域名,验证所有权 3. 创建 admin@yourdomain.com 用户 4. SMTP 信息:smtp.zoho.com,端口 587---## 五、常见问题**Q:Cloudflare Email Routing 有收件数量限制吗?** A:没有。Cloudflare 官方没有公布限制,正常使用完全够。**Q:SPF 和 DKIM 需要配置吗?** A:Cloudflare 自动配置 SPF。DKIM 需要你用的发件服务(Resend/Zoho)提供记录,手动添加到 Cloudflare DNS。**Q:能否用多个域名?** A:可以。每个托管在 Cloudflare 的域名都能独立启用 Email Routing。**Q:邮件会被 Cloudflare 看到吗?** A:Cloudflare 明确说明不会保存或阅读你的邮件,仅做转发和垃圾过滤。---
2026年07月22日
69 阅读
0 评论
0 点赞
2026-07-22
域名备案从 0 到 1:阿里云备案完整流程详解
# 域名备案从 0 到 1:阿里云备案完整流程详解很多人对备案的第一印象是"麻烦""周期长""容易驳回"。其实只要材料齐全、流程走对,7 到 20 个工作日就能拿下来。今天带你把每一步走通。 本文以阿里云为例(腾讯云、华为云流程大同小异),从准备材料到提交审核,逐步拆解。看完你就能自己操作,不用找人代办。---## 一、备案前必须知道的 5 件事### 1. 什么是备案?备案全称是"非经营性互联网信息服务备案",本质是把你的网站信息提交给工信部登记。没有备案的域名无法解析到中国大陆服务器。### 2. 谁需要备案?- 域名解析到中国大陆服务器(阿里云 ECS、轻量服务器等) - 域名后缀是 .cn(强制要求)**不需要备案的情况**:服务器在境外(香港/新加坡/美国),域名不是 .cn。### 3. 备案需要多长时间?- 阿里云初审:1-2 个工作日 - 管局审核:各地不同,一般 7-20 个工作日 - 总计:**通常 10-15 个工作日**,最快 7 天,慢则 20+ 天### 4. 备案期间网站能访问吗?**不能。**备案期间域名必须无法访问,否则会被驳回。建议先把网站暂停或者用 IP 直接访问测试。### 5. 备案是免费的阿里云、腾讯云等平台备案不收费。市面上的"代办备案"都是智商税——你把材料给人家,他们也只是帮你提交而已,你自己做完全一样。---## 二、准备材料清单| 材料 | 说明 | |------|------| | 身份证原件 | 正反面彩色扫描或拍照 | | 人脸核身 | 阿里云 APP 内完成,需本人 | | 域名证书 | 域名注册商后台下载 | | 服务器 IP | 阿里云 ECS/轻量服务器的公网 IP | | 网站名称 | 不能包含"中国""中华""国家"等字眼 | | 网站简介 | 真实描述网站内容,不要写"测试" | | 应急联系电话 | 备用联系人手机号 | | 核验单(部分地区) | 部分省份需邮寄纸质核验单 |---## 三、操作步骤(阿里云)### 第 1 步:登录阿里云备案系统打开阿里云官网 → 右上角"备案"→ 进入备案管理控制台 → 点击"开始备案"。### 第 2 步:填写主体信息主体就是你个人或公司。个人备案选择"个人",填写姓名、身份证号、详细地址(精确到门牌号)、手机号。**关键点**: - 地址必须与身份证地址一致,如果搬到新城市,需要上传居住证或暂住证 - 手机号必须是本人实名认证的号码### 第 3 步:填写网站信息- 网站名称:不能带"中国""国家""中华",也不能太宽泛(如"便民服务网"容易被驳回),建议用个人博客名 - 网站简介:如实描述,建议写"个人技术分享博客"或"个人摄影作品展示" - 前置审批:一般个人网站选"否" - 域名:填写你要备案的域名(不带 www)### 第 4 步:上传证件照片身份证正反面拍照上传。要求:四个角完整、无反光、文字清晰可辨、背景纯色。**常见被驳回原因**: - 身份证边缘被裁切 - 反光导致号码看不清 - 拍照时手持角度歪斜 - 照片颜色过暗或过曝### 第 5 步:人脸核身下载"阿里云"手机 APP,在 APP 内找到"备案"入口,按提示完成人脸识别。这一步需要实时拍摄,不能用照片代替。### 第 6 步:提交初审所有信息填完后提交,阿里云客服会在 1-2 个工作日内审核。如果材料有问题,会短信/电话通知你修改。**初审通过后**,阿里云会帮你提交到管局。### 第 7 步:等待管局审核管局审核是最后一步,也是唯一无法加速的环节。各地管局审核速度:- 上海:约 7-10 个工作日 - 广东:约 15-20 个工作日 - 北京:约 10-15 个工作日 - 浙江:约 10-15 个工作日---## 四、常见驳回原因及避坑指南| 驳回原因 | 如何避免 | |---------|---------| | 网站名称不合规 | 去掉"中国""中华""国家",不要过于宽泛 | | 证件照片不清晰 | 用扫描仪或手机高清模式,检查四角和文字 | | 地址不详细 | 个人地址写到门牌号,公司地址写到楼层房间号 | | 域名未实名 | 备案前先在域名注册商完成实名认证 | | 手机号非本人 | 必须本人实名认证的手机号 | | 网站名与简介不一致 | 名称说"博客",简介写"电商",会被判内容不实 |---## 五、备案通过后要做什么1. **解析域名到服务器**:备案通过后,去 DNS 后台添加 A 记录指向服务器 IP 2. **网站添加备案号**:在网站底部添加备案号并链接到工信部备案查询页面 3. **公安联网备案**(部分省市):备案通过 30 日内到公安机关联网备案平台登记---
2026年07月22日
59 阅读
0 评论
0 点赞
2026-07-22
域名后缀怎么选:com/cn/net/org 全维度对比指南
# 域名后缀怎么选?com/cn/net/org 全维度对比指南选域名就像给孩子起名,起好了品牌加分,起错了后期全是坑。 你是不是也遇到过这种情况:好不容易想到一个绝佳域名,一查发现 com 被抢了,cn 还在,net 也在,org 也没人要。到底选哪个?今天这篇就把 com、cn、net、org 四个主流后缀,从价格、备案、SEO、品牌保护角度彻底讲清楚。---## 一、先认识四位主角### .com — 商业之王.com 是域名世界的硬通货。全球注册量超过 1.5 亿个,覆盖 148 个国家和地区,是世界使用最广泛的顶级域名。用户默认习惯:不记得后缀时,会本能输入 .com。**优点**: - 全球通用,用户信任度最高 - SEO 天然优势,搜索引擎对 .com 没有偏见 - 转售价值高,优质 .com 域名本身是数字资产**缺点**: - 好名字基本被抢光 - 短字母域名溢价严重,动辄几万几十万**价格参考**:首年 55-85 元,续费约 75 元/年(阿里云)。---### .cn — 中国国家队.cn 是中国国家顶级域名,由中国互联网络信息中心(CNNIC)管理。如果业务面向国内用户,.cn 是性价比最高的选择。**优点**: - 国内用户心理认同感强 - 价格实惠,首年常 29 元 - 国内 SEO 与 .com 基本无差异 - 可用资源多,短域名好注册**缺点**: - **必须备案**,不备案无法解析到国内服务器 - 政策风险略高于 .com(需要实名认证) - 海外用户认知度低**价格参考**:首年 29-35 元,续费约 39 元/年。---### .net — 网络服务专属.net 源自 network,最初给网络服务提供商使用,后来开放给所有人注册。现在作为 .com 的替代品存在。**优点**: - 与 .com 同为全球通用顶级域,无需备案即可解析 - 某些场景下比 .com 更贴切(如 SaaS、API 服务) - 资源比 .com 充裕**缺点**: - 用户习惯不如 .com - 有人会觉得是"次选",品牌调性略降 - 被误输入成 .com 会流失流量**价格参考**:首年 69-85 元,续费约 85 元/年。---### .org — 非营利符号.org 源自 organization,传统用于非营利组织、开源项目、社区论坛。如果域名和网站性质契合,.org 非常得体。**优点**: - 非营利/开源/社区项目的最佳选择 - 用户看到 .org 会天然认为内容中立可信 - 维基百科、Apache 基金会等背书**缺点**: - 商业项目不合适,用户预期错位 - SEO 权重略低于 .com(但影响极小) - 国内用户认知度中等**价格参考**:首年 55-75 元,续费约 75 元/年。---## 二、备案要求对比这是国内建站绕不开的问题:| 后缀 | 备案要求 | 服务器限制 | |------|----------|-----------| | .com | 解析到国内服务器才需备案 | 境外服务器免备案 | | .cn | **强制备案** | 只能解析到国内(或境外 CDN) | | .net | 同 .com | 同 .com | | .org | 同 .com | 同 .com |**结论**:如果不想折腾备案,首选 .com/.net/.org,把服务器放在香港或海外。选了 .cn 就必须老老实实备案,跑不掉。---## 三、SEO 影响真相先说结论:**Google 明确表示 TLD 不影响排名权重。**也就是说,.com 和 .net 在 Google 眼里是一样的。但现实中存在间接影响: 1. **点击率差异**:用户在搜索结果中更倾向点 .com 2. **外链自然度**:其他网站引用时,给 .com 的锚文本更多样化 3. **品牌记忆**:用户更容易记住和口头传播 .com 域名百度的态度类似,但对 .cn 可能有微弱地域加权(未官方确认)。总体而言,**SEO 差异远小于内容质量和外链质量**。---## 四、品牌保护策略这里给你一个实操建议:**主流后缀全买,防止被抢注**。以我的域名 zjunwei.com 为例,理想状态是: - zjunwei.com(主站) - zjunwei.cn(跳转到 .com) - zjunwei.net(跳转到 .com)三个后缀一年总共不到 200 元,换来的是: - 防止别人注册 zjunwei.cn 搞山寨站 - 防止品牌关键词被 SEO 截流 - 未来业务扩展(如 zjuiwei.net 做 API 服务)如果你的名字比较热门,建议再拿下 zjunwei.org。四个后缀全拿到手,一年也不到 300 元,这笔钱花在品牌保护上绝对值得。---## 五、决策流程图``` 你是商业项目? ├─ 是 → 预算充裕? → .com(不解释) │ └─ 预算紧张 → .com 被抢?→ .net 或 .co └─ 否 → 开源/社区/非营利? → .org └─ 纯国内用户? → .cn(做好备案准备) ```**最终推荐**: - 商业/个人品牌:.com 优先,次选 .net - 国内项目 + 愿备案:.cn 性价比最高 - 开源/社区:.org - 最安全的策略:.com + .cn + .net 全收---
2026年07月22日
62 阅读
0 评论
0 点赞
2026-07-22
自建文件分享服务:Pingvin Share 比网盘更好用
## 场景你是不是经常需要临时传个文件给别人?微信有 100MB 限制,QQ 要加好友,网盘要注册登录。Pingvin Share 是一个自建的文件分享工具,像临时网盘一样,上传文件生成链接就能分享。## 特点- 开源免费,Docker 一键部署 - 支持设置过期时间和下载次数限制 - 可以设置访问密码 - 界面简洁干净 - 支持反向分享(让别人上传文件给你)## Docker Compose 部署```yaml version: '3' services: pingvin-share: image: stonith404/pingvin-share:latest container_name: pingvin-share restart: unless-stopped ports: - "3000:3000" volumes: - ./data:/opt/app/backend/data environment: - TZ=Asia/Shanghai ```启动后访问 `http://你的IP:3000`,首次访问会引导你创建管理员账号。## 配合 Nginx 反代```nginx server { listen 443 ssl; server_name share.yourdomain.com;client_max_body_size 500M;location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ```注意 `client_max_body_size` 要设大一点,否则大文件上传会被 Nginx 拦截。## 使用技巧1. **临时分享**:设置 1 小时后过期,1 次下载后自动删除 2. **团队文件收集**:创建一个"收件箱"分享,让团队成员上传文件给你 3. **访客上传**:不需要注册,打开链接就能上传 4. **邮件通知**:配置 SMTP 后,可以设置有人上传时邮件通知你## 对比网盘方案| 对比项 | Pingvin Share | 百度网盘 | 阿里云盘 | |--------|-------------|---------|--------| | 隐私性 | 数据在自己服务器 | 数据在云端 | 数据在云端 | | 上传限制 | 无(仅受磁盘限制) | 非会员限速 | 免费容量有限 | | 分享控制 | 密码+过期+次数 | 密码+过期 | 密码+过期 | | 对方注册 | 不需要 | 需要登录下载 | 需要登录下载 |自建才是真正的"数据掌握在自己手里"。
2026年07月22日
64 阅读
0 评论
0 点赞
2026-07-22
Docker Compose 健康检查:让你的服务自动恢复
## 为什么需要健康检查你有没有遇到过这种情况:容器还在运行,但服务已经挂了?Nginx 返回 502,数据库连不上,应用卡死但不退出。Docker 只关心进程是否存活,不关心服务是否可用。健康检查(Healthcheck)就是解决这个问题的。它让 Docker 定期探测服务状态,发现异常时可以自动重启。## 基础用法在 docker-compose.yml 中添加 healthcheck 配置:```yaml services: web: image: nginx:alpine ports: - "80:80" healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s retries: 3 start_period: 40s ```参数说明: - `test`:健康检查命令,返回 0 表示健康 - `interval`:检查间隔,默认 30s - `timeout`:单次检查超时时间 - `retries`:连续失败次数阈值,超过后容器被标记为 unhealthy - `start_period`:容器启动后的宽限期,这段时间失败不计入 retries## 常用服务的健康检查配置**MySQL/MariaDB:** ```yaml healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 ```**PostgreSQL:** ```yaml healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 ```**Redis:** ```yaml healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 ```## 利用健康检查控制启动顺序Docker Compose 的 `depends_on` 只保证启动顺序,不保证服务就绪。结合 `condition: service_healthy` 可以实现真正的按依赖启动:```yaml services: db: image: mysql:8 healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 5s retries: 10app: depends_on: db: condition: service_healthy ```这样 app 容器会等到 MySQL 真正可以接受连接后才启动。## 实战建议1. 不要用太复杂的检查命令,健康检查本身也有开销 2. timeout 不要设太大,避免健康检查本身卡死 3. 生产环境建议同时配合外部监控,Docker 健康检查是最后一道防线配置好健康检查后,你的服务就能在半夜挂了的时候自动恢复,不用半夜爬起来重启容器了。
2026年07月22日
63 阅读
0 评论
0 点赞
2026-07-21
安卓手机跑 Docker 容器:无需 root 的轻量容器化环境实战
Docker 是服务端部署的事实标准,但很少有人想到——安卓手机也能跑 Docker。不需要 root 权限,不需要刷机,一台普通的安卓手机就能运行 nginx、MySQL、Redis 等容器。这意味着你可以把手机变成随身携带的微型服务器,测试环境、演示项目、甚至跑一些轻量级的生产服务。前置条件 安卓 7.0 及以上 至少 4GB RAM(推荐 6GB+) 10GB 以上空闲存储空间 手机无需 root 安装 Termux(从 F-Droid):termux-change-repo pkg update && pkg upgrade -y pkg install proot-distro -y安装 Ubuntu + DockerDocker 需要完整的 Linux 内核特性,Termux 原生环境做不到,所以用 proot-distro 跑一个 Ubuntu:proot-distro install ubuntu proot-distro login ubuntu进入 Ubuntu 后安装 Docker:apt update && apt upgrade -y apt install docker.io docker-compose -y启动 Docker 守护进程:dockerd > /tmp/dockerd.log 2>&1 &验证是否正常:docker info docker run hello-world如果看到 "Hello from Docker!",说明 Docker 运行成功了。实战一:跑一个随身 Nginx 网站拉取 Nginx 镜像并启动:docker pull nginx:alpine docker run -d --name web -p 8888:80 nginx:alpine手机浏览器访问 http://localhost:8888,看到 Nginx 欢迎页。挂载自定义网页目录:mkdir -p ~/mysite echo '<h1>Hello from Android Docker!</h1>' > ~/mysite/index.html docker rm -f web docker run -d --name web -p 8888:80 -v ~/mysite:/usr/share/nginx/html nginx:alpine刷新页面,看到自己写的内容。一个随身网站就这么简单。实战二:MySQL + WordPress 一键部署用 docker-compose 编排多容器服务。创建 docker-compose.yml:version: '3' services: db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: wppass ports: - "3307:3306" volumes: - ./mysql-data:/var/lib/mysql wordpress: image: wordpress:latest depends_on: - db ports: - "8889:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wppass WORDPRESS_DB_NAME: wordpress volumes: - ./wp-content:/var/www/html/wp-contentdocker-compose up -d打开 http://localhost:8889,一个完整的 WordPress 站点已经在手机上跑起来了。实战三:Redis + Node.js 缓存服务# 启动 Redis docker run -d --name redis -p 6379:6379 redis:alpine # 测试连接 apt install redis-tools -y redis-cli -h localhost ping # 返回 PONG配合 Node.js 应用做缓存,手机也能跑完整的后端技术栈。性能实测测试设备:小米 13(骁龙 8 Gen 2,12GB RAM) 场景内存占用CPU 占用(空闲)备注 仅 Docker 守护进程~200MB~1%非常轻量 Nginx 单容器~50MB~0%Alpine 镜像极小 MySQL 8.0~450MB~3%建议限制内存 WordPress (MySQL+Nginx+PHP)~800MB~5%足够运行 同时跑 5 个轻量容器~1.2GB~8%12GB RAM 完全够用 中端机(6GB RAM)最多建议同时跑 2-3 个轻量容器,MySQL 这类吃内存的建议设 --memory=512m 限制。常见问题Q: dockerd 启动报错?proot-distro 环境下不支持 overlay2 存储驱动。如果报错,改用 vfs(性能差但兼容性好):dockerd --storage-driver=vfs > /tmp/dockerd.log 2>&1 &或编辑 Docker daemon 配置 /etc/docker/daemon.json:{"storage-driver": "vfs"}Q: 容器网络不通?proot-distro 的网络是共享宿主 Termux 的,一般不需要额外配置。如果 --net=host 模式报错,用默认 bridge 模式加端口映射即可。Q: 手机关屏后 Docker 停止?这是 Android 的电池优化机制。解决方法: 在系统设置中关闭 Termux 的电池优化 在 Termux 中执行 termux-wake-lock 获取唤醒锁 让 Termux 在前台运行(或使用通知常驻) 与 Termux 原生服务的对比 维度Termux 原生Docker 安装复杂度pkg install 直接装需要 proot-distro + Docker 隔离性无隔离容器级隔离 版本管理依赖仓库版本任意版本随意切换 迁移/复制手动配置docker-compose 一键部署 资源占用低中等(守护进程 ~200MB) 建议:日常小工具用 Termux 原生(比如 Python 脚本),需要多服务编排或特定版本时用 Docker。实际用途 随身演示环境:见客户时掏出手机跑项目 Demo 学习 Docker:没有服务器也能实操 Docker/K8s 测试环境:开发新服务前先在手机上验证概念 应急服务:主力服务器挂了,手机临时顶上 一台安卓手机,装上 Docker,就是一台口袋里的微型服务器集群。
2026年07月21日
53 阅读
0 评论
0 点赞
2026-07-21
安卓手机变身随身 Linux 开发站:Termux + code-server 搭建 VS Code 云端 IDE
你可能已经知道 Termux 能把手机变成 Linux 终端,但有没有想过——直接在手机上跑一个完整的 VS Code,随时随地写代码?code-server 是 Coder 公司开源的 VS Code 服务端版本,通过浏览器访问就能获得几乎和桌面版一致的开发体验。把它跑在安卓手机上,出门带一部手机就能应对紧急修 bug、写脚本、甚至做小项目开发。环境准备手机不需要 root,只需要安装 Termux(推荐从 F-Droid 下载,Google Play 版本已停止更新)。安装后先换源并更新:termux-change-repo pkg update && pkg upgrade -y安装必要工具:pkg install proot-distro -yTermux 原生环境受限较多(比如不支持 systemd),所以我们用 proot-distro 安装一个完整的 Ubuntu。如果你更喜欢轻量,可以用 Debian——两者操作完全一致:proot-distro install ubuntu proot-distro login ubuntu进入 Ubuntu 后,先更新并安装基础依赖:apt update && apt upgrade -y apt install curl wget git build-essential -y安装 code-server官方提供一键安装脚本,一行搞定:curl -fsSL https://code-server.dev/install.sh | sh安装完成后,code-server 默认监听 127.0.0.1:8080,会生成一个随机密码。首次启动:code-server --bind-addr 0.0.0.0:8080绑定 0.0.0.0 是为了让局域网内其他设备也能访问(只在信任的网络中这样做)。启动后会看到类似输出:Password: ******** (在 ~/.config/code-server/config.yaml 中查看) Web UI: http://0.0.0.0:8080用手机浏览器打开 http://localhost:8080,输入密码,你就能看到熟悉的 VS Code 界面了。配置开机自启 + 后台运行手动每次启动很麻烦,写个启动脚本。在 Termux 中创建 ~/.termux/boot/ 目录(需要 Termux:Boot 插件):mkdir -p ~/.termux/boot创建启动脚本 ~/.termux/boot/start-code-server:#!/data/data/com.termux/files/usr/bin/bash termux-wake-lock proot-distro login ubuntu -- bash -c "nohup code-server --bind-addr 0.0.0.0:8080 > /tmp/code-server.log 2>&1 &"chmod +x ~/.termux/boot/start-code-server安装 Termux:Boot 插件,手机开机后自动启动 code-server。如果不想装插件,也可以手动后台运行:proot-distro login ubuntu nohup code-server --bind-addr 0.0.0.0:8080 > /tmp/code-server.log 2>&1 & exit安装常用插件code-server 完全兼容 VS Code 扩展生态。打开后直接在扩展面板搜索安装: Python:代码补全、调试支持 Prettier:代码格式化 GitLens:Git 增强 Chinese Language Pack:中文界面 Live Server:前端开发实时预览 Docker:容器管理(如果装了 Docker) 实际使用体验我在小米 13(骁龙 8 Gen 2,12GB RAM)上实测: 启动速度:code-server 冷启动约 5 秒 内存占用:空闲约 150MB,打开大项目约 400MB Python 开发:Flask/Django 项目完全可跑,编辑自动补全流畅 前端开发:Node.js + React 热更新正常,编译速度比桌面慢但可接受 编译任务:轻度编译 OK,大型 C++ 项目建议交给服务器 如果你用旗舰机(8 Gen 3 或天玑 9300),体验会更好。中端机建议把重编译任务推到远程服务器,code-server 只当编辑器用。进阶:内网穿透 & 外网访问配合 Tailscale 或 frp,你可以在外面随时连回家里的手机开发环境:# 在 Termux Ubuntu 中安装 Tailscale curl -fsSL https://tailscale.com/install.sh | sh tailscale up然后用 Tailscale 分配的 IP 访问 http://100.x.x.x:8080 即可。结合我之前写过的 Tailscale 组网文章,秒变全球可访问的个人开发站。适用场景 通勤路上紧急修 bug 咖啡厅拿出手机 + 折叠键盘写代码 给旧手机一个"第二春",专做开发机 作为轻量级远程开发环境的备份方案 局限与替代方案 性能上限:大型项目编译慢,建议仅做编辑器 电量消耗:长时间运行建议插电 替代:如果只是要 Terminal 环境,Termux 原生 + vim/nano 更轻量;code-server 的优势在于完整的 IDE 体验 一台手机 + 一个折叠键盘,就能拥有媲美笔记本的开发体验。下次出门不想背电脑,试试这套方案。
2026年07月21日
57 阅读
0 评论
0 点赞
2026-07-20
SSL 证书自动续期:Certbot + Let's Encrypt 免费 HTTPS 一劳永逸
HTTP 明文传输,中间人抓包一抓一个准。HTTPS 是标配,但买证书一年几百块。Let's Encrypt 提供完全免费的 SSL 证书,配合 Certbot 自动续期,一劳永逸。安装 Certbot# Ubuntu/Debian apt update && apt install certbot python3-certbot-nginx -y # CentOS 7 yum install certbot python2-certbot-nginx -y申请证书一句命令搞定,Certbot 自动改 Nginx 配置:certbot --nginx -d blog.zjunwei.com -d www.zjunwei.com它会问你两个问题:邮箱(证书快过期时通知)是否自动跳转 HTTPS(选 2,强制跳转)完成后访问 https://blog.zjunwei.com,地址栏直接变绿锁。多域名一张证书certbot --nginx -d zjunwei.com -d www.zjunwei.com -d blog.zjunwei.com自动续期Let's Encrypt 证书有效期 90 天。Certbot 安装时会自动创建定时任务:systemctl list-timers | grep certbot certbot renew --dry-run正常情况完全不用管,到期前 30 天自动续。泛域名证书需要 *.zjunwei.com 泛域名证书,得用 DNS 验证:certbot certonly --manual --preferred-challenges dns \ -d "*.zjunwei.com" -d "zjunwei.com"执行后会给你一条 TXT 记录,去域名 DNS 后台添加,等几分钟生效后按回车。常见坑问题解决80 端口被墙换 DNS 验证方式Nginx 配置路径不对certbot --nginx --nginx-server-root /usr/local/nginx/conf续期失败不通知加 --deploy-hook "nginx -s reload"总结HTTPS 是搜索引擎排名因素之一,也是用户信任的基础。Let's Encrypt + Certbot 这套组合从安装到上线不超过五分钟,全自动续期完全不用维护。别让裸 HTTP 成为你网站最短的板。
2026年07月20日
64 阅读
0 评论
0 点赞
2026-07-20
Nginx 反向代理入门:一台服务器优雅地跑多个网站
新手玩 VPS 最常遇到一个问题:买一台服务器,想跑博客、网盘、监控面板好几个服务,但 80 和 443 端口只有一个,怎么办?答案就是 Nginx 反向代理。一句话解释:Nginx 站在所有服务前面当"门卫",根据来访域名把请求转发到背后不同端口。基础配置假设服务器上跑了三个服务:博客:localhost:8080NextCloud:localhost:8081Uptime Kuma:localhost:3001对应的 Nginx 配置:# 博客 server { listen 80; server_name blog.zjunwei.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # NextCloud server { listen 80; server_name cloud.zjunwei.com; client_max_body_size 10G; location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }关键参数参数作用proxy_pass把请求转发到哪个地址proxy_set_header Host告诉后端原始域名proxy_set_header X-Real-IP告诉后端真实客户端 IPproxy_set_header X-Forwarded-Proto告诉后端前端是 HTTP 还是 HTTPSclient_max_body_size上传文件大小限制(云盘必设)WebSocket 支持如果后端需要 WebSocket(比如聊天应用、在线终端),加三行:proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";一键重载改完配置先测试再重载,别直接重启:nginx -t && nginx -s reload配置错误不会生效,线上服务不受影响。总结Nginx 反向代理是自托管玩家的必备技能。三条 proxy_set_header 加一条 proxy_pass,剩下的按域名复制 server 块即可。要加新服务就加一个新 server 块,十分钟搞定。
2026年07月20日
70 阅读
0 评论
0 点赞
2026-07-20
Uptime Kuma 自建监控:网站宕机 30 秒内微信通知你
网站挂了不可怕,可怕的是用户都来通知你了你还不知道。搞个监控工具,宕机第一时间推送微信/钉钉/邮件,比用户先发现问题才叫专业。Uptime Kuma 是目前最火的开源监控工具,界面清爽,支持几十种通知渠道,Docker 一条命令部署。部署浏览器打开 ,设置管理员账号就能用。添加监控点添加监控,选类型:类型用途HTTP(s)网站是否正常响应TCP PortMySQL、Redis 等端口是否存活Ping服务器网络是否连通DNS域名解析是否正常Docker容器运行状态HTTP(s) 监控支持关键字匹配——如果页面返回内容里不包含你指定的关键词,也判定为故障。这个功能很实用,能发现页面能打开但数据库挂了返回空这种情况。配置通知支持的通知渠道:微信企业微信/Server酱钉钉机器人Telegram Bot邮件(SMTP)Slack / DiscordWebhook(自定义)以微信为例,用 Server酱 转发:去 注册获取 SendKeyUptime Kuma 添加通知 → 选 WebhookURL 填消息模板写:状态页Uptime Kuma 自带公开状态页功能,生成一个独立链接展示所有服务状态,发给用户或挂在自己网站底部。总结Uptime Kuma 部署不到一分钟,配置监控不到两分钟。一劳永逸的事,别等用户截图发群里才知道网站挂了。
2026年07月20日
68 阅读
0 评论
0 点赞
1
...
5
6
7
8