普通视图

发现新文章,点击刷新页面。
昨天以前首页

探索扣子空间「邀请码不限量分享」

2025年4月27日 00:00

当今数字化浪潮中,人工智能正以前所未有的速度改变着我们的工作和生活方式。字节跳动于 2025 年 4 月 19 日推出的通用型 AI Agent 平台,无疑是这一变革中一颗璀璨新星,为我们带来了全新的 AI 协作办公体验。

扣子空间是啥

扣子空间是个致力于打造和 AI 协作工作全新工作方式的平台。

它基于字节跳动自研的豆包等国产大模型,用户只需将任务交给智能体,系统就能自动完成需求分析、任务拆解、工具调用、结果生成,支持从网页到文档等多种类输出形式,极大提升工作效率与执行力。

核心特点功能

  1. 双重模式协作,灵活应对任务需求

扣子空间提供了探索模式和规划模式。

探索模式下 AI 自主动态探索,完成速度更快,适用于时效性强的任务,例如查询最新资讯、获取实时数据等等;规划模式中 AI 深度思考,会先给出任务处理规划,经过用户确认后再行动,执行期间也需用户参与,适合高复杂性任务,如跨行业市场调研、复杂项目规划等等。这种双模式的协作机制,让用户可根据任务属性灵活选择,能更好地与 AI 协作完成工作。

  1. 强大任务处理能力,实现自动工作流程

扣子空间能够智能解析用户的一句话需求,精准识别意图并将其分解为多个具体任务。系统会自主调用浏览器、代码编辑器等工具执行任务,同时将每个思考和执行步骤清晰呈现,适时的与用户确认意图,确保执行方向准确。

最终输出完整结果报告,如 PPT、网页、飞书文档等等,真正实现了从需求输入到成果输出的全流程自动化。

  1. 专家级 Agent 生态,提供专业领域支持

平台内置多种领域的专业 Agent,例如华泰 A 股观察助手可生成每日股市早报并解答股票分析问题,用户研究专家可以协助进行用户研究资料深度分析。

这些专家级的 Agent 针对特定领域更专业,能处理更复杂任务,为不同领域的用户提供了便捷的专业服务。

  1. 丰富插件集成,无限拓展能力边界

扣子空间首批集成飞书多维表格、高德地图、图像工具、语音合成等 60 多款 MCP 模块化能力插件,未来还将支持开发者通过扣子开发平台发布自定义插件。

这些插件涵盖资讯阅读、旅游出行、效率办公等等众多方面,使扣子空间能够满足用户在不同场景下的各种需求,真正实现了功能的无限扩展。

应用场景广泛

扣子空间应用场景十分丰富,涵盖办公、学习、生活、电商、金融等等多个领域。

在办公场景中,可以帮助用户完成撰写文档、数据分析、制作 PPT 等各种工作任务;在学习场景下,能为学生和教育工作者提供课程资料收集、课件制作等辅助教学和学习服务;在生活场景里,可以用于制定旅游计划、查询信息等等;在电商场景中,能够进行商品推荐、用户行为分析;在金融场景下,可为股票分析、金融数据解读等等提供决策支持。

截图与邀请码

扣子空间界面非常简洁,登录后可通过左侧菜单进行任务管理,输入任务描述即可快速创建任务,开始任务后会在右侧显示 Agent 执行过程:

扣子目前机制每次能生成五个邀请码,杜老师会定期更新邀请码的使用状态,也请小伙伴使用后留言邀请码的编号,用尽后会发放新邀请码:

编号邀请地址备注
1https://www.coze.cn/space-preview?invite_code=PYFNVF90已用
2https://www.coze.cn/space-preview?invite_code=TLZTCXQN已用
3https://www.coze.cn/space-preview?invite_code=MCIEP9ZP已用
4https://www.coze.cn/space-preview?invite_code=H3M95JPB已用
5https://www.coze.cn/space-preview?invite_code=0XV6MVQ3已用
6https://www.coze.cn/space-preview?invite_code=39GL3SRL已用
7https://www.coze.cn/space-preview?invite_code=LGOQDX27已用
8https://www.coze.cn/space-preview?invite_code=W9G0P33F已用
9https://www.coze.cn/space-preview?invite_code=CEP1YQD5已用
10https://www.coze.cn/space-preview?invite_code=EFUJVJ95未用
11https://www.coze.cn/space-preview?invite_code=PGYMJSN5未用
12https://www.coze.cn/space-preview?invite_code=L33JT5Q7未用
13https://www.coze.cn/space-preview?invite_code=MCAKQH6N未用
14https://www.coze.cn/space-preview?invite_code=68TDVTNL未用
15https://www.coze.cn/space-preview?invite_code=PA55VHFS未用

LibreTV 免费的在线视频观看神器

2025年4月21日 00:00

在数字媒体盛行的今天,观看电影、电视剧等视频内容成为了人们日常娱乐的重要部分。然而,许多视频平台要么需要付费订阅,要么充斥大量广告,还有的需要复杂的注册流程,极大地影响了观影体验。今天,就给大家介绍一款名为 LibreTV 的开源工具,它将彻底改变在线观影方式。

LibreTV 是什么

LibreTV 是个轻量级、免费的在线视频搜索与观看平台,无需注册账号,也无需要下载安装任何软件,更不需要付费订阅,只要连接网络,通过浏览器就可以随时随地访问。

它采用纯前端技术构建,结合了前端技术和后端代理功能,可以轻松部署在各种支持服务端功能的网站托管服务上。

LibreTV 的优势

免费使用:无需支付任何会员费用,即可畅享海量视频内容,真正实现了看片不花钱。

多源搜索:聚合了多个视频源,能更全面地搜索到电影、电视剧等各类影视资源,可轻松找到想看的内容。

跨多平台支持:无论电脑、平板还是手机设备,均能完美适配,随时随地满足观影需求。

静态部署:不需要后端服务器,部署简单快捷,大大降低了搭建和维护成本。

广告过滤:内置广告过滤功能,有效屏蔽广告干扰,提供更加干净、更优质的观影体验。

自定义 API 接口:用户可以根据自身需求添加或修改视频源,灵活性非常强,可以不断拓展影视资源。

LibreTV 的功能

多源视频搜索:覆盖丰富电影、电视剧等内容,支持多视频源自动聚合,一次搜索即可获取更多结果。

响应式 Web 设计:能够完美适配各种屏幕尺寸设备,无论是 PC 端还是移动端,都可以获得良好的观看体验。

本地存储搜索历史:将搜索历史存储在本地,方便用户下次快速查找之前看过影视内容。

快捷键的支持:播放器支持多种键盘快捷键,如全屏快进快退等,让操作更加的便捷。

HLS 流媒体支持:兼容 HLS 流媒体格式,确保视频播放更加流畅稳定。

可选密码保护:支持设置密码保护,增强访问控制,保障观影隐私。

LibreTV 的安装

  1. 用 Cloudflare Pages 部署

Fork 或者克隆 LibreTV 仓库 到 GitHub 账户。

登录 Cloudflare Dashboard 进入 Pages 服务。

点击创建项目,连接到 GitHub 仓库。

使用以下设置:构建命令「留空」(无需构建)输出目录「留空」(默认为根目录)

最后点保存并部署。

可选:在设置环境变量中配置密码保护。

  1. 用 Vercel/Netlify 部署

与 Cloudflare Pages 类似,只需要连接仓库并部署即可,无需特殊配置。

点击仓库中的部署按钮,按照提示完成部署流程。

  1. 用 Docker 部署
1
docker run -d --name libretv -p 8899:80 -e PASSWORD=your_password_here bestzwei/libretv:latest

注意:使用 Docker 运行 LibreTV,运行以上命令。然后打开浏览器输入 http://localhost:8899 即可访问。

  1. 用 Docker Compose 部署
1
2
3
4
5
6
7
8
9
10
version: '3'
services:
libretv:
image: bestzwei/libretv:latest
container_name: libretv
ports:
- "8899:80"
environment:
- PASSWORD=111111
restart: unless-stopped

注意:将上面内容保存到 docker-compose.yml 文件中,然后运行 docker-compose up -d 命令即可启动 LibreTV。

LibreTV 的使用

  1. 搜索视频:打开 LibreTV 的网页界面,直接在搜索框中输入想看的电影、电视剧关键词,点击搜索按钮或者按回车键,系统会自动聚合多个视频源。

  2. 可选择播放源:在搜索结果中,可以看到不同视频源提供的播放链接,根据喜好选择一个合适的播放源,点击进入播放页面。

  3. 播放控制:在播放页面可通过播放器的控制按钮进行播放、暂停、调整音量、可切换清晰度、拖动进度条等常规操作。此外,还可以使用键盘快捷键来进行屏、快进快退操作,提升观影体验。

  4. 查看历史记录:LibreTV 会将搜索历史存储在本地,可在搜索框下方或相应的历史记录区域查看和点击之前搜索过的内容,方便快速查找以及继续观看。

LibreTV 的效果

杜老师提供的免费平台:

LibreTV 以其丰富的功能、简洁的界面以及便捷的操作,为用户带来全新的在线观影体验。无论是在家中放松休息,还是在旅途中打发时间,它都能满足随时随地观看影视内容的需求:

Electerm 高效便捷的开源终端工具

2025年4月18日 00:00

在数字化工作时代,一款高效、便捷的终端工具对于开发者、系统管理员和网络工程师等人群来说至关重要。Electerm 作为一款开源免费的跨平台终端模拟器,凭借其丰富的功能和优秀的用户体验,成为了众多用户的首选。

Electerm 的简介

集终端模拟器、文件管理、远程连接、SFTP 客户端等功能于一体,支持 Windows/macOS 和 Linux 等多种操作系统。不仅功能强大,而且界面简洁直观,易于上手。

Electerm 支持在同一窗口中运行多个 SSH 会话,方便用户可同时管理多个远程服务器。同时,它还支持多种认证方式,包括密码、密钥、双因素认证等,充分满足不同用户安全需求。

安装方法

  1. Windows 系统的安装方法

访问 Electerm 的 官方网站,进入下载页面,找到 Windows 相关安装包。下载完成后双击安装包,进入欢迎界面,选择安装模式,浏览选择安装位置点击安装,等待安装完成即可。

另外,也可选择下载免安装版,解压到磁盘自定义目录,直接打开 electerm.exe 就能使用了。

  1. Linux 系统的安装方法

对于一些 Linux 发行版,如 Ubuntu、Kylin 等,用户可直接通过系统的内置软件商店进行安装:

使用方法

  1. SSH 连接项

打开 Electerm 后,在主界面点击左上角的加号,选 SSH。在弹出的对话框中输入主机地址、用户名以及密码等相关信息,点击连接按钮。

  1. 文件传输

在连接到远程服务器后,点击左侧边栏文件管理选项,进入文件管理界面。在该界面中用户可以看到本地和远程服务器的文件目录,通过简单拖拽操作,即可实现文件的上传和下载。

  1. 自定义快捷键

Electerm 允许用户自定义快捷键和主题,以满足个人操作习惯和视觉喜好。点击顶部菜单栏的设置选项,进入设置界面。在快捷键部分,用户可根据自己的需求对各种操作的快捷键进行修改和设置。在主题项部分,提供多种预设的主题供用户选择,同时用户也可以根据自己的喜好对主题的颜色、字体等进行自定义调整。

  1. 其它功能

Electerm 支持多语言,包括英语和中文等,用户可以在设置中进行语言切换。此外,它还具有自动完成、自动重连、透明窗口、终端背景图像等等功能,为用户提供更加便捷和个性化的使用体验。

效果截图

Electerm 支持 SFTP 功能,方便用户在本地和远程服务器间传输文件:

成功连接到远程服务器,进行相关的操作和管理:

Wave Terminal 多功能开源终端工具

2025年4月15日 00:00

在现代开发工作中,终端是我们必不可少的工具之一。今天要给大家介绍的 Wave Terminal,无疑是一款将传统终端功能与图形化能力完美融合开源终端,能够极大地提升我们的工作效率。

Wave Terminal 的简介

Wave Terminal 是一款支持 macOS/Linux 和 Windows 三大操作系统跨平台终端。

它不仅具备常规的终端功能,还集成了诸多高级特性,例如文件预览、网页浏览、AI 对话等。这使得开发者在使用终端时,无需频繁切换其它应用程序,即可完成多种任务。

下载安装

访问 Wave Terminal 的官方网站,下载安装包后,按照安装向导进行操作即可完成安装:

使用方法

界面布局模块操作:Wave Terminal 的默认界面左侧为终端命令行模块,中间区域分别是 CPU 性能、浏览器和本地文件路径模块,右侧则有帮助、提示和 AI 对话模块。这些模块均可根据个人需求随意拖动位置、多开、添加、删除。

多命令行窗口使用:可同时打开多个命令行窗口,方便在不同项目或任务之间切换。例如,在一个窗口中运行项目服务,另一窗口中执行相关命令进行调试等操作。

文件路径浏览操作:在文件路径模块中,用户不仅可以查看文档、图片,还能播放视频。直接输入文件路径或者通过图形界面浏览文件系统,快速定位到所需文件并进行编辑或者查看。

网页浏览功能:利用内置的浏览器模块,可以直接在终端中浏览网页。这在需要查阅技术文档、搜索解决方案等场景下非常方便,无需切换到其它浏览器,节省了时间和精力。

AI 对话的功能:借助右侧的 AI 对话模块,用户可以与 AI 进行交流。无论寻求编程建议、解决问题思路,还是进行其它知识性的问答,都能得到及时的回复和帮助。

远程连接功能:通过 Wave Terminal 可以方便地连接到本地内网的 Linux 服务器。以 Ubuntu 系统为例,先在 Ubuntu 系统安装 SSH 服务,执行 sudo apt -y install openssh-server 命令进行 SSH 安装,安装完成后执行 sudo systemctl status ssh 命令查看 SSH 的服务状态,若显示绿色 running 提示则表示服务已启动。然后在 Windows 系统 Wave Terminal 中,输入 ssh 用户名@服务器 IP 命令,输入密码后即可连接到远程 Linux 服务器。

工具截图

Wave Terminal 的强大之处在于它将多种实用功能整合到一个终端工具中,无需再频繁的切换应用程序,大大提高工作效率。无论是开发人员还是系统管理员,都能在这款工具中找到诸多便利之处,它无疑是现代终端工具中的一颗新星,值得大家尝试使用:

SimpleMindMap 开启思维可视化之旅

2025年4月12日 00:00

在信息爆炸的时代,思维导图已经成为高效整理知识、梳理思路必备工具。而 SimpleMindMap 作为一款强大的 Web 思维导图工具,凭借其独特的魅力,正吸引着越来越多用户目光。

SimpleMindMap 是什么

SimpleMindMap 既是思维导图的 js 库,也是一个完整思维导图工具。

功能丰富,能满足思维导图的各种需求,无论是简单的想法记录,还是复杂知识体系构建。

其插件化设计理念,使得除核心功能外的其它能力都作为插件提供,用户可以按需选择,避免了冗余代码的困扰。

而且易于使用,开箱即用,配置丰富,文档清晰,无论是编程新手还是有经验的开发者,都能快速上手。

安装方法

  1. 在线使用

最便捷的方式便是直接在线使用。这种方式适合临时使用或者快速尝试工具功能的场景。

访问 在线思绪思维导图,无需繁琐安装过程,即可立即开始创建思维导图。

  1. 本地部署
1
2
3
4
5
6
7
8
9
services:
mind-map:
image: hraulein/mind-map:latest
container_name: mind-map
restart: always
ports:
- "8080:8080"
environment:
- GIN_MODE=release # debug 为调试模式

注意:对于一些对数据安全和隐私有严格要求的用户,本地部署是最理想选择。将上面的内容保存为 docker-compose.yml 文件,然后用 docker-compose up -d 命令启动容器。

使用方法

  1. 创建思维导图

打开 SimpleMindMap 应用后,首先会看到一个简洁的界面。点击「新建」按钮,即可开启一张新的思维导图。

在中心出现一个根节点,这是思维导图起点。可双击根节点,为其输入主题名称,比如「我的学习计划」。

  1. 添加分支节点

确定好主题后,接下来就是添加分支节点来细化内容。先选中根节点,会发现有一些添加子节点的按钮或快捷键提示。

通常可以通过点击这些按钮或使用快捷键「如 Tab 键等」来创建子节点。例如,在「我的学习计划」根节点下,添加「语文」「数学」「英语」等学科子节点。

  1. 编辑节点内容

对于每个节点,不仅可以修改文字内容,还可以进行丰富的格式设置。在选中节点后,可通过顶部菜单栏或者右键菜单找到编辑选项。

比如,可以设置字体大小、颜色,加粗、倾斜文字,甚至可以插入图片、链接等多媒体元素。

  1. 调整布局

SimpleMindMap 提供了多种布局方式,以满足不同的展示需求。在菜单栏找到布局选项,有常见的思维导图布局。

可根据思维导图的内容结构和美观度考虑,随时切换布局,直观地看到不同的展示效果。

插件拓展

SimpleMindMap 的插件化特性是一大亮点。用户可根据自身需求安装各种插件来增强功能。

例如,有用于团队协作的插件,可让多个用户同时编辑一张思维导图,实时看到彼此修改;还有用于数据分析插件,能够对思维导图中的内容进行简单的统计分析,如节点数量统计、关键词频率分析等,为用户提供更好数据支持和决策依据。

Logseq 高效知识管理与协作利器

2025年4月9日 00:00

Logseq 以其出色的知识管理能力、便捷协作功能、强大的隐私保护以及灵活的可扩展性,成为了日常学习和工作中不可或缺的工具。不仅帮助高效地记录和整理知识,还激发了创造力和思考能力。

Logseq 的简介

Logseq 是一款开源的本地优先知识管理和协作平台,它完美融合了大纲笔记与双链笔记的优势,还注重用户的个人隐私保护。支持多种文件格式,包括 Markdown 等,满足不同用户写作习惯,同时提供了丰富的插件生态系统,用户可以根据自身需求扩展功能:

它不仅具备强大的笔记编辑能力,还内置了任务管理、日历视图、知识图谱功能,助力用户更好规划工作、学习、生活,无论整理学习资料、记录工作要点,还是进行团队协作,Logseq 都可以轻松胜任:

Logseq 的安装

Logseq 的安装十分便捷。电脑端用户可以从 官网,根据自身操作系统选择对应的安装包进行下载安装,如 Windows、Linux 等都有适配版本。首次打开会自动创建一个知识库,也可以根据需要自行创建新的知识库。

手机端用户同样可以在 App Store 或官网下载安卓端 Logseq 应用程序,实现移动端与桌面端的无缝同步,方便用户随时随地查看、编辑笔记。

Logseq 的使用

  1. 创建编辑笔记:在 Logseq 创建笔记非常简单,点击界面右下角的加号按钮,即可新建笔记。在编辑界面可以使用 Markdown 语法文本进行排版,例如设置标题、段落、列表、链接等等,还可插入图片、表格等等元素,让笔记内容更加的丰富多样。

  2. 添加标签属性:为更好地对笔记进行分类和管理,可为笔记添加标签。在笔记编辑界面中,点击右上角的「标签」按钮,输入相关标签名称即可。此外 Logseq 支持为笔记添加属性,如优先级、状态、日期等等,方便用户从不同维度对笔记进行筛选、查询。

  3. 双向链接:这是 Logseq 的核心功能之一。当在一篇笔记中提及另一个已存在的笔记内容,Logseq 会自动在两者间建立双向链接。也可以手动在笔记中入「笔记名称」的形式来创建链接,通过双向链接,可以轻松构建起一个有机的知识网络,方便在不同笔记间穿梭浏览,发现知识间的隐含关联。

  4. 知识图谱:借助知识图谱功能,可以直观地看到笔记之间的链接关系。点击界面左侧边栏「知识图谱」按钮,即可进入图谱视图。在这个视图中,节点之间的连线表示它们之间的双向链接关系。可以通过放大、缩小、拖拽等操作来浏览图谱,还可以查看某个笔记的关联笔记列表。

Logseq 的进阶

  1. 使用插件扩展功能:Logseq 的插件市场提供了丰富多样的插件,如增强的表格编辑插件、思维导图插件、PDF 注释插件等。可在 Logseq 的设置界面中找到件管理选项,浏览并安装需要的插件,以进一步提升工作效率。

  2. 数据同步备份:支持与多种云存储服务集成,如 GitHub、Google Drive 等,确保笔记数据在不同设备间实时同步。此外,还可以定期对数据进行本地备份,防止数据丢失。

1Panel 全新移动 APP 上线

2025年3月19日 00:00

1Panel 作为新一代的服务器管理面板,为 Linux 服务器运维提供了一个舒适便捷的 Web 图形界面。为了方便移动办公,1Panel 推出了 APP 移动端,目前还在测试阶段,不过足以满足大多数用户的需求。

功能满足多样需求

1Panel APP 拥有丰富且实用功能特性,涵盖服务器管理的多个重要方面。它支持 Android 和 iOS 系统,确保不同设备用户都能享受到一致的服务体验。用户可以方便地添加多个 1Panel 服务,实现对多台服务器集中管理:

首页全局概览表盘,以直观的方式展示服务器的关键信息,让用户一眼就能了解服务器整体运行状况:

应用管理方面,1Panel APP 表现得十分出色。用户不仅能够查看已安装的应用,还能轻松进行安装、配置、管理操作,极大地简化了应用部署和维护的流程:

对于网站管理,它提供专业的工具,方便用户对网站进行创建和编辑、删除操作,同时支持域名绑定和 SSL 证书配置,确保网站的安全性和稳定性:

Docker 容器管理是 1Panel APP 的一大亮点。用户可以方便创建、启动、停止、删除容器,还可以对容器的资源进行合理分配和监控,满足了开发者和运维人员在容器化部署方面的需求:

服务器状态监控功能则让用户实时掌握 CPU、内存、磁盘等资源的使用情况,及时发现潜在性能瓶颈,为服务器优化提供有力依据:

获取使用资格方式

目前 1Panel APP 正式版仅支持专业版用户使用,可以通过各大厂家应用商店安装手机端 APP。

如果还不是 1Panel 专业版用户,又感觉官方的价格太贵,欢迎选择《1Panel 专业版低价租用》数量有限,先到先得!

dynv6 免费二级域名申请及管理

2025年3月13日 00:00

自飞牛 OS 支持虚拟机后,很多使用飞牛的小伙伴会询问杜老师有关 DDNS 的问题。希望可以白嫖一个二级域名,支持 API 变更解析值,且支持 IPv6 解析。恰好杜老师发现了一个网站,支持多后缀的二级域名白嫖,这里分享给需要的小伙伴们!

什么是 dynv6

dynv6 是一款免费的动态 DNS 服务,其专为 IPv6 设计。

它允许用户将公共主机名轻松分配给私有主机,从而实现对私有主机的远程访问。

dynv6 对所有用户免费开放。可以选择一个免费的主机名开始使用,或者将自己的域名委托给 dynv6。

然而,需要注意的是,dynv6 目前并不提供企业级的 DDoS 防护和 SLA。因此,dynv6 适合用于非关键服务。

强大的 API 支持

dynv6 提供多种方式来更新区域,满足不同用户需求。

其中包括 REST API 和 SSH 以及 DNS 更新。这些 API 的存在,使得 dynv6 的使用更加灵活、方便。

无论是开发者还是普通用户,都可以根据自己的需求选择合适的 API 来更新 DNS 记录。

此外,dynv6 支持 Webhooks 功能。当 IP 地址发生变化时 Webhooks 可以用来更新外部服务。

官网地址

dynv6 的官网地址如下:

使用截图

打开上面的官网后,点击右上角 Sign up 进行账号注册:

完成账号登录后会自动登录,也可通过右上角 Sign in 进行登录。点击 Create new Zone 可白嫖免费二级域名:

点击下拉框后,可以看到有多个后缀可选择,同时填写 IPv4 或者 IPv6 地址:

若想托管顶级域名,可以点击导航栏 My Domains:

使用 Docker 部署 tinyMediaManager 刮削工具

2025年3月10日 00:00

杜老师使用 Emby 管理媒体文件,但刮削时经常报错。tinyMediaManager 是款功能强大的开源媒体管理工具,能够帮助轻松整理和管理媒体库。本文将详细介绍 tinyMediaManager 的搭建过程和基本使用方法。

什么是 tinyMediaManager

tinyMediaManager 简称 TMM 是一款用 Java/Swing 编写的媒体管理工具,能够为 Jellyfin、Emby 等媒体服务器提供元数据。

通过 TMM 可以抓取和整理影片详细信息、封面图像、演员列表、导演信息等元数据,让媒体库更加丰富、完整。

搭建准备

准备好想要管理的电影、电视剧等媒体文件,并将其存放在一个固定的目录中,方便 TMM 进行扫描和管理。

我们假设电影文件放入</path/to/movies>目录中,命令可参考 mkdir </path/to/movies>

电视文件放入</path/to/tv_shows/>目录中,命令可参考 mkdir </path/to/tv_shows/>

新建数据文件夹</path/to/local/data/>,命令可参考 mkdir </path/to/local/data/>

部署安装

这里我们使用 Docker 来部署,docker-compose.yml 的参考内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
version: "2.1"
services:
tinymediamanager:
image: tinymediamanager/tinymediamanager:latest
container_name: tinymediamanager
environment:
- USER_ID=1000
- GROUP_ID=100
- ALLOW_DIRECT_VNC=true
- LC_ALL=en_US.UTF-8 # force UTF8
- LANG=en_US.UTF-8 # force UTF8
- PASSWORD=<password>
- TZ=Asia/Shanghai
volumes:
- </path/to/local/data/>:/data
- </path/to/movies>:/media/movies
- </path/to/tv_shows/>:/media/tv_shows
ports:
- 5900:5900 # VNC port
- 4000:4000 # Webinterface
restart: unless-stopped

将上方代码中<password>改为 TMM 访问密码,配置好后执行如下命令即可:

1
docker-compose up -d

基本使用

第一次启动时,会进入 TMM 设置向导。需要选择媒体类型、设置媒体目录路径、选择元数据来源等。按照向导提示逐步完成设置即可:

设置完成后 TMM 会自动扫描指定的媒体目录,识别其中媒体文件,并尝试从在线数据库中获取相应的元数据:

TMM 会根据文件标题到电影资料网站上匹配电影信息,下载电影资料及图片到本地。可以查看和编辑这些元数据,确保信息的准确性和完整性:

TMM 还可按照一定的规则批量重命名和整理媒体文件,使文件名称更加规范和统一,方便管理、查找:

RSSHub 搭建指南打造个性化资讯中心

2025年3月7日 00:00

RSSHub 可以根据我们的需求生成个性化的 RSS 订阅源,让我们轻松地获取到各种平台的最新资讯。本文将详细介绍 RSSHub 搭建过程,快速搭建起属于自己的资讯中心。

RSSHub 的简介

RSSHub 是一个轻量、易于扩展 RSS 生成器,它基于 Node.js 开发,支持多种平台和类型订阅源,包括但不限于微博、知乎、B 站、GitHub 等。

通过简单的配置和路由规则,我们就能生成自己想要的 RSS 订阅链接,随时随地获取最新内容更新。

搭建前的准备

在开始搭建 RSSHub 之前,我们需做一些准备工作。需一台服务器,可以是云主机,也可以是本地的计算机。服务器需要具备公网 IP 地址,以便我们能够从外部访问搭建好的 RSSHub 服务。

RSSHub 基于 Docker 部署,因此需要在服务器上安装 Docker 环境。

RSSHub 支持缓存中间件,如 Redis。

为方便访问和使用,建议注册一个域名,并将其解析到服务器的 IP 地址上。

RSSHub 的搭建步骤

将下面的内容保存为 docker-compose.yml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
services:
rsshub:
# two ways to enable puppeteer:
# * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled
# * (consumes more disk space and memory) leave everything unchanged
image: diygod/rsshub
restart: always
ports:
- "1200:1200"
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: "redis://redis:6379/"
PUPPETEER_WS_ENDPOINT: "ws://browserless:3000" # marked
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:1200/healthz"]
interval: 30s
timeout: 10s
retries: 3
depends_on:
- redis
- browserless # marked

browserless: # marked
image: browserless/chrome # marked
restart: always # marked
ulimits: # marked
core: # marked
hard: 0 # marked
soft: 0 # marked
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/pressure"]
interval: 30s
timeout: 10s
retries: 3

redis:
image: redis:alpine
restart: always
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 5s

volumes:
redis-data:

使用下面命令来启动 RSSHub 服务:

1
docker-compose up -d

如需拉取新版 RSSHub 的镜像,可使用下面的命令:

1
docker-compose pull

如需停止服务,可使用下面的命令:

1
docker-compose down

如果不喜欢使用 Docker Compose 部署,可使用下面的命令运行有 Puppeteer 依赖的 RSSHub 服务:

1
docker run -d --name rsshub -p 1200:1200 diygod/rsshub:chromium-bundled

可使用下面的命令运行无 Puppeteer 依赖的 RSSHub 服务:

1
docker run -d --name rsshub -p 1200:1200 diygod/rsshub

为 Follow 添加实例

如果使用 Follow 调用 RSSHub 示例,需在 docker-compose.yml 中添加一些变量。其中 FOLLOW_OWNER_USER_ID 是指您的关注账户 ID 或用户名;FOLLOW_DESCRIPTION 指实例描述;FOLLOW_PRICE 指实例月费,如设为 0 表示免费;FOLLOW_USER_LIMIT 指实例用户限制,将其设置为 0 或 1 可将实例设为私有,留空则表示无限制;ACCESS_KEY 指访问密钥:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
rsshub:
image: diygod/rsshub:chromium-bundled
restart: always
ports:
- "1200:1200"
environment:
NODE_ENV: production
FOLLOW_OWNER_USER_ID=杜老师说
FOLLOW_DESCRIPTION=大带宽境外服务器
FOLLOW_PRICE=1
FOLLOW_USER_LIMIT=1000
ACCESS_KEY=ubzG7H3t9TJaFp
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:1200/healthz"]
interval: 30s
timeout: 10s
retries: 3

登录 Follow 后,点击头像,选择 RSSHub 项。在显示页面中,点添加新实例。依次输入 RSSHub 的地址,访问密钥,最后点击添加即可:

去不图床数据清理通知

2025年3月1日 00:00

近期发现外链流量激增,经分析了解并非是攻击导致,通过 URL 判断其来源是一些匿名及到期用户所上传的图片。因此决定发文公告:清理去不图床所有匿名用户所上传的图片,并周期检查已到期用户。

免费服务的初心与挑战

2019 年,去不图床怀着为各位小伙伴提供免费、便捷图片托管服务赤子之心,正式上线!

那会儿杜老师的目标就是给大伙儿搭个稳定可靠的平台,让大家轻轻松松的分享图片,舒舒服服存储图片。

这服务的确是受到了大家的一致好评,用户数量跟图片上传量,那叫一个节节攀升,直冲云霄!

可是好景不长,随着用户规模像滚雪球一样越滚越大,这流量成本也成了杜老师心头一块大石头。

图片托管需要海量的带宽和存储空间,这费用那是哗哗地往外流啊!

杜老师也是一直在绞尽脑汁优化成本,可那流量费用,像脱缰的野马,一发不可收拾,最终,在 2021 年不得不调整策略,从免费转向了收费,这都是为了咱这平台能继续坚挺地活下去!

流量成本与运营的压力

虽然 2021 年去不图床改成收费模式,但之前游客用户免费上传的图片,一直没有清理。

这些图片,虽然丰富了平台的内容,但是占用的存储空间和流量资源,那也是相当可观啊!

据统计游客上传的图片数量,那简直是天文数字,而且很多图片访问频率低得可怜,却依然霸占着咱宝贵的存储资源!

随着平台业务蒸蒸日上,对流量成本的控制也越来越严格。

现在运营环境,杜老师得精打细算,合理分配资源,保证已兑换容量的小伙伴能享受到更优质、更稳定的服务。

所以,经过一番深思熟虑,杜老师决定对游客用户的图片进行清理啦!

匿名用户上传图片清理

为了降低流量以及存储损耗,优化资源分配,杜老师将于 2025 年 3 月 1 日起,清理所有游客用户上传图片。

这个决定,杜老师也是万般的无奈,但这是目前运营环境下,必须采取的措施啊!

希望各位游客用户能够理解杜老师的苦衷,赶紧备份需要保存的图片吧!如有疑问,欢迎随时在评论区留言!

游客数据保留至本月中「2025 年 3 月 15 日」因为无法进行用户判定,所以杜老师已经整体打包备份了,需要的小伙伴可留言索要图片压缩包。

到期用户上传图片清理

为了进一步降低流量及存储损耗,优化资源分配,杜老师将于 2025 年 3 月 15 日起,清理所有到期用户上传图片。

已到期的用户数据清理规则如下:当月 15 日之前到期用户,数据保留至当月的最后一天;当月 15 日之后到期用户,数据保留至下个月月中。

数据清理之前,杜老师都会邮件通知用户进行再续费,通知七天后未续费则会清理数据「即当月 15 日之前到期的用户,会在当月 23 日发送通知;当月 15 日之后到期用户,会在次月 8 日发送通知」

注意图片清理是多节点同步执行,不会保留备份数据!最终解释权归去不图床所有。

使用 SlimToolkit 打造更小的容器镜像

2025年2月20日 00:00

现在容器技术很火,镜像又肥又大,部署较慢不说,安全风险还蹭蹭往上窜,简直让人头大!SlimToolkit 就像一位经验老道的镜像瘦身大师,能把镜像体积缩小到令人咋舌的程度,最多能瘦 30 倍!

到底是啥

简单来说,SlimToolkit 就是一个开源的镜像减肥专家,它能智能分析镜像,找出那些又大又没用的文件、库和依赖,然后干净利落地咔嚓下,统统删掉!

就像一位技艺精湛的雕塑家,将冗余的部分精雕细琢,留下最精髓的部分。

之前叫 DockerSlim,现在已经是云原生计算基金会沙盒项目了,实力是杠杠的!

它的核心思想就是原封不动优化,通过动态、静态分析,自动识别并移除镜像里垃圾文件。

支持 Docker 以及 Kubernetes,各种类云原生工具,妥妥全能选手!

不只瘦身,还可以提供命令行工具,方便检查、调试、管理镜像,简直贴心到家!

SlimToolkit 的绝活

  1. 镜像瘦身大法:这是它的看家本领!它能像一位经验丰富的裁缝,精准剪裁镜像,去除冗余部分。如一个基于 Ubuntu 的 Python 应用,原本约 438MB,经过它的一通操作,能瘦到 16.8MB,足足瘦了 26 倍!

  2. 安全防护专家:它不仅能瘦身,还可以增强安全性!它可以自动生成 Seccomp 和 AppArmor 安全配置文件,像给容器穿上了一层坚不可摧的盔甲,限制系统调用,防止各种安全漏洞入侵。再也不用担心容器被黑客攻破了!

  3. 动态分析、调试:它就像一位经验丰富的侦探,可以创建一个临时容器模拟运行环境,通过 HTTP 探针等方式收集运行数据,分析应用程序行为,确保瘦身后的镜像依然可以正常工作。而且,它还提供调试工具,在优化后的容器中运行调试命令,排查问题方便!

  4. 无缝集成:它就像一位老练的管家,能无缝集成到开发和部署流程中。不用改动 Dockerfile 或构建工具,只需在构建过程中添加 SlimToolkit 的优化步骤即可。还支持各种 CI/CD 工具,如 Jenkins、GitHub Actions 等,自动化部署 so easy!

上手玩转

先安装 SlimToolkit。SlimToolkit 提供了多种安装方式,含直接下载二进制文件、使用脚本安装或通过 Docker 运行。对于大多数的用户,使用脚本安装是最简单方式:

1
curl -sL https://raw.githubusercontent.com/slimtoolkit/slim/master/scripts/install-slim.sh | sudo -E bash -

优化容器镜像。假设已经有一个 Docker 镜像,如一个基于 Python 的 Web 应用。可使用以下命令对镜像进行优化:

1
slim build my/sample-python-app

SlimToolkit 会自动创建一个临时容器,运行动态分析,并生成优化后镜像。优化后的镜像名称会自动加上.slim 后缀,例如:

1
my/sample-python-app.slim

验证优化效果。优化完成后可以使用以下命令查看优化后镜像大小:

1
docker images

SlimToolkit 的优势

  1. 自动与智能化:它能够自动识别容器中不必要的部分,并且进行优化,无需开发者手动修改 Dockerfile 或者删除文件。这种自动化不仅节省了时间,还减少了人为错误的可能性。

  2. 安全:通过生成 Seccomp 和 AppArmor 的配置文件,SlimToolkit 为容器提供了额外的安全保障。这些配置文件能够限制容器系统调用,防止潜在安全威胁,而无需开发者深入了解安全框架细节。

  3. 无缝集成:SlimToolkit 设计目标是无缝集成到现有的开发和部署流程中。它支持多种容器运行时和 CI/CD 工具,能够轻松集成到自动化构建和部署流程中。开发者无需改变现有的工具链或工作流程,即可享受 SlimToolkit 带来的优化效果。

  4. 开源:完全开源,社区活跃,有问必答!

DPanel 让 Docker 管理变得轻松又高效

2025年2月14日 00:00

Docker 作为容器化领域的佼佼者,其强大的功能和灵活性,赢得众多开发者的青睐。然而,对于许多用户来说,Docker 的命令行操作可能显得有些复杂和繁琐。幸运的是,DPanel 的出现为 Docker 的管理和使用带来了全新的体验。

什么是 DPanel

DPanel 是一款轻量化的 Docker 可视化管理面板,专为简化容器的管理而设计。它提供一套完善的容器管理功能,让用户可通过直观的图形界面轻松管理 Docker 容器,无需深入复杂的命令行操作。

无论是初学者还是经验丰富的开发者,DPanel 都能帮助他们更高效地管理和部署容器。

DPanel 的优势

DPanel 的界面简洁直观,操作简单易懂,即使新手也能轻松上手。

DPanel 提供了丰富功能,涵盖了网站管理的各个方面,能够满足各种用户的需求。

基于容器设计,安装和部署都非常简单。用户无需复杂配置,只需通过简单步骤即可快速启动面板。其简洁直观操作界面让用户能够轻松上手,即使是第一次接触 Docker 的用户也能快速掌握基本操作。

DPanel 与 Docker 官方的兼容性非常好,能够无缝对接 Docker 的各项功能。支持多种操作系统和 Docker 版本,确保用户在不同环境下都能稳定使用。

服务安装

我们可以使用官方提供的集成脚本安装 DPanel。当宿主机没有 Docker 环境时,集成脚本会尝试安装 Docker 环境:

1
curl -sSL https://dpanel.cc/quick.sh -o quick.sh && sudo bash quick.sh

按照提示操作。安装完成后通过浏览器访问面板地址,即可进入管理界面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[DPanel Install Log]: 选择你需要安装的版本 
1. 标准版 (需要绑定 80 及 443 端口)
2. Lite版 (不包含域名转发相关功能)
3. 标准版 (Pro)
4. Lite版 (Pro)
5. Beta版 (内测版本)
输入你要安装的版本编号 [默认: 2]: 1
1. Docker Hub
2. ALiYun
选择镜像源 [默认: 1]: 2
[DPanel Install Log]: 你安装使用的镜像为 registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:latest
[DPanel Install Log]: 设置 DPanel 容器名称,更新面板时请配置为当前面板容器名称
请输入名称 [默认: dpanel]:
[DPanel Install Log]: 你指定的容器名称为 dpanel
设置 DPanel 容器挂载目录 [默认: /home/dpanel]:
[DPanel Install Log]: 您选择的面板容器挂载目录是 /home/dpanel
设置 DPanel 端口 [默认: 25128]:
[DPanel Install Log]: 您设置的端口是: 25128
[DPanel Install Log]: 如果端口已经被占用,请再次执行脚本更换端口后重新安装
Unable to find image 'registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:latest' locally
latest: Pulling from dpanel/dpanel
1f3e46996e29: Pull complete
b6dde5f749cd: Pull complete
459b8d93d51a: Pull complete
7d52a0c67d85: Pull complete
4b97f8a613e7: Pull complete
1d46bacd0854: Pull complete
3eac9a9b4fcb: Pull complete
2c5c0b90bb2b: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:9daa4f411b2bd7845cfd71e747ba2827797ea5fe9e754b8db475541c3700ba01
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:latest
d492b83d8c546297836a8735d73f0b3f8943f134065dea4ef5ffff834f028715
[DPanel Install Log]:
[DPanel Install Log]: =================感谢您的耐心等待,安装、升级已完成==================
[DPanel Install Log]:
[DPanel Install Log]: 请使用您的浏览器访问面板,并初始化管理员帐号:
[DPanel Install Log]: 外部地址: http://123.116.127.26:25128
[DPanel Install Log]: 内部地址: http://192.168.31.187:25128
[DPanel Install Log]: 如果您使用的是云服务器,请在安全组中打开端口 25128
[DPanel Install Log]:
[DPanel Install Log]: 官方网站及文档: https://dpanel.cc
[DPanel Install Log]: 代码仓库: https://github.com/donknap/dpanel
[DPanel Install Log]:
[DPanel Install Log]: ================================================================

面板效果

首页概览:

容器管理:

文件管理:

镜像管理:

创建镜像:

系统管理:

新版本去不图床免费公测开始啦

2025年2月8日 00:00

有不少的小伙伴为去不图床提供建议,包括但不限于增加支持格式、图片处理、水印功能等等。杜老师也收集了这些建议转交给程序的设计者,经过了几个月更新迭代,V2 版本已推出。由于使用了新框架,无论是操作逻辑和功能支持,都有较大改变,所以在正式上线前,杜老师决定免费公测下!

新版界面

新版主页相较老版而言更加简洁,仅包含站点名称及描述信息,还有图片托管数据。最下方是两个功能入口,一个是图片上传的窗口,一个是用户登录的界面:

在上传界面中,可以选择从本地计算机上传图片文件,也可接入到摄影头,拍摄照片后再上传。目前支持访客上传,所有图片会经过审核后存放在服务器:

用户可以通过邮箱、用户名两种方式来登录。目前程序强制要求注册用户进行邮件验证,不能关闭验证。但因 bug 收不到验证信息,所以杜老师提供了一些体验账号用需要的小伙伴们使用:

在用户的仪表盘中可看到当前拥有的存储容量,可以查看图片、相册、分享,可以购买订阅、查看订单,提交工单或申请 API Tokens:

体验账号

体验账号密码统一为 7bu.top,默认容量为 1G。如选择了账号,请在评论区中留下编号,杜老师会根据使用备注信息,避免有小伙伴重复选择账号:

编号账号邮箱备注
1dusays1dusays1@dusays.com已用
2dusays2dusays2@dusays.com暂无
3dusays3dusays3@dusays.com暂无
4dusays4dusays4@dusays.com暂无
5dusays5dusays5@dusays.com暂无
6dusays6dusays6@dusays.com暂无
7dusays7dusays7@dusays.com暂无
8dusays8dusays8@dusays.com暂无
9dusays9dusays9@dusays.com暂无
10dusays10dusays10@dusays.com暂无
11dusays11dusays11@dusays.com暂无
12dusays12dusays12@dusays.com暂无
13dusays13dusays13@dusays.com暂无
14dusays14dusays14@dusays.com暂无
15dusays15dusays15@dusays.com暂无
16dusays16dusays16@dusays.com暂无
17dusays17dusays17@dusays.com暂无
18dusays18dusays18@dusays.com暂无
19dusays19dusays19@dusays.com暂无
20dusays20dusays20@dusays.com暂无
21dusays21dusays21@dusays.com暂无
22dusays22dusays22@dusays.com暂无
23dusays23dusays23@dusays.com暂无
24dusays24dusays24@dusays.com暂无
25dusays25dusays25@dusays.com暂无
26dusays26dusays26@dusays.com已用
27dusays27dusays27@dusays.com暂无
28dusays28dusays28@dusays.com暂无
29dusays29dusays29@dusays.com暂无
30dusays30dusays30@dusays.com暂无
31dusays31dusays31@dusays.com暂无
32dusays32dusays32@dusays.com暂无
33dusays33dusays33@dusays.com暂无
34dusays34dusays34@dusays.com暂无
35dusays35dusays35@dusays.com暂无
36dusays36dusays36@dusays.com暂无
37dusays37dusays37@dusays.com暂无
38dusays38dusays38@dusays.com暂无
39dusays39dusays39@dusays.com暂无
40dusays40dusays40@dusays.com暂无
41dusays41dusays41@dusays.com暂无
42dusays42dusays42@dusays.com暂无
43dusays43dusays43@dusays.com暂无
44dusays44dusays44@dusays.com暂无
45dusays45dusays45@dusays.com暂无
46dusays46dusays46@dusays.com暂无
47dusays47dusays47@dusays.com暂无
48dusays48dusays48@dusays.com暂无
49dusays49dusays49@dusays.com暂无
50dusays50dusays50@dusays.com暂无
51dusays51dusays51@dusays.com暂无
52dusays52dusays52@dusays.com暂无
53dusays53dusays53@dusays.com暂无
54dusays54dusays54@dusays.com暂无
55dusays55dusays55@dusays.com暂无
56dusays56dusays56@dusays.com暂无
57dusays57dusays57@dusays.com暂无
58dusays58dusays58@dusays.com暂无
59dusays59dusays59@dusays.com暂无
60dusays60dusays60@dusays.com暂无
61dusays61dusays61@dusays.com暂无
62dusays62dusays62@dusays.com暂无
63dusays63dusays63@dusays.com暂无
64dusays64dusays64@dusays.com暂无
65dusays65dusays65@dusays.com暂无
66dusays66dusays66@dusays.com已用
67dusays67dusays67@dusays.com暂无
68dusays68dusays68@dusays.com暂无
69dusays69dusays69@dusays.com暂无
70dusays70dusays70@dusays.com暂无
71dusays71dusays71@dusays.com暂无
72dusays72dusays72@dusays.com暂无
73dusays73dusays73@dusays.com暂无
74dusays74dusays74@dusays.com暂无
75dusays75dusays75@dusays.com暂无
76dusays76dusays76@dusays.com暂无
77dusays77dusays77@dusays.com暂无
78dusays78dusays78@dusays.com暂无
79dusays79dusays79@dusays.com暂无
80dusays80dusays80@dusays.com暂无
81dusays81dusays81@dusays.com暂无
82dusays82dusays82@dusays.com暂无
83dusays83dusays83@dusays.com暂无
84dusays84dusays84@dusays.com暂无
85dusays85dusays85@dusays.com暂无
86dusays86dusays86@dusays.com暂无
87dusays87dusays87@dusays.com暂无
88dusays88dusays88@dusays.com已用
89dusays89dusays89@dusays.com暂无
90dusays90dusays90@dusays.com暂无
91dusays91dusays91@dusays.com暂无
92dusays92dusays92@dusays.com暂无
93dusays93dusays93@dusays.com暂无
94dusays94dusays94@dusays.com暂无
95dusays95dusays95@dusays.com已用
96dusays96dusays96@dusays.com已用
97dusays97dusays97@dusays.com暂无
98dusays98dusays98@dusays.com暂无
99dusays99dusays99@dusays.com已用
100dusays100dusays100@dusays.com已用

站点地址

公测站点地址如下,点击访问即可。因为公测站点是单线路,与图片外链同线路,所以访问速度较慢,请访问慢的小伙伴耐心等待页面加载:

公测规则

  1. 本站仅供测试使用,请勿用于非法用途;

  2. 原去不图床的账号无法在测试平台中使用,请使用提供的体验账号;

  3. 如选择好体验账号,请将编号留言至评论区,杜老师会备注信息,方便其它的小伙伴选择;

  4. 公测平台预计运营至三月底,届时所有数据将被释放,请勿保存重要数据;

  5. 在使用的过程中如发现有任何 bug,欢迎在评论区留言,杜老师会第一时间提交给程序开发者,尽量完善新版图床程序;

  6. 最终解释权归杜老师说所有。

2 月 5 日图床故障说明

2025年1月30日 00:00

这是篇补更文,所以发布时间不符。本文对 2 月 5 日的图床故障进行详细说明,并为了避免再次出现类似的问题,所做的一系列措施。如小伙伴们有任何问题,欢迎在评论区留言。

问题描述

根据监控服务平台数据显示,于 2 月 5 日上午十点左右发生了图床故障,导致所有图床服务「包括去不官网、图片外链、容量兑换」无法访问。

问题出现后很多小伙伴前往本站的评论区留言,反馈图床问题。杜老师收到反馈后,第一时间进行了问题的排查,并尝试了多种修复作业,但因为不在服务器附近,很多操作无法进行,最终只能暂时安抚小伙伴们。

问题原因

杜老师于当日 17 点返京,18 点到达服务器所在地,第一时间确认问题,开始进行修复工作,在短时间内恢复了图床相关服务的正常访问与使用,以减少对小伙伴们影响。

经排查是短期内产生大量的流量,达到家庭版光猫的性能瓶颈,产出较大热量,又因为光猫放置的地点问题,最终导致光猫宕机,影响了数据的正常传输。

解决方案

使用去不图床的小伙伴都很清楚,图床运营成本较大,为了减少成本,杜老师将服务器放置在家里的机柜中,通过家庭网络穿透公网,通过 CDN 反向代理来加速访问。

在重启光猫后,第一时间修正域名解析,在清理 CDN 域名解析缓存后,图床恢复正常。

后续措施

为了避免再次出现类似问题,杜老师已下单企业级的光猫,并选购了半导体制冷器,放置机柜中实现光猫和服务器的降温工作,保障在高流量下的稳定运行。

同时下单了新带宽安装,在双线路下即可保证图床的高速访问,又可防止单线路的故障问题。最后杜老师会尽可能的保障去不图床服务稳定运营,不会出现数据丢失,更不会出现跑路的问题!

今夜 20 点口令红包雨来袭手慢无

2025年1月28日 00:00

岁末钟声渐近,万家灯火可亲。值此辞旧迎新之际,杜老师怀着无比雀跃的心情,要在今夜晚 20 点整,为陪伴杜老师走过又一年的小伙伴们送上一份特别心意。快点进文章内,看看活动的细节吧!

感恩有您

蛇年已至,万象更新,愿小伙伴们在新的一年,生活如灵蛇般灵动,事业似祥蛇般腾飞,家庭像暖蛇般温馨。蛇年,愿小伙伴们皆行大运,岁岁顺心如意,年年福满乾坤:

活动细则

今年春节,杜老师想用最传统最有仪式感的方式,把这份心意装进红包里。不是冰冷抽奖程序,而是带着温度「暗号互动」

1 月 28 日「今晚」二十点整准时开启。

输入「杜老师祝蛇年快乐」

100 位锦鲤将获得随机的现金红包。

参与攻略

进入到支付宝,点击首页中的更多:

待页面刷新后,下拉界面,找到理财管理分类,点击红包:

在红包页面中,找到输入框并填写口令,点击确定即可领取红包:

注意不要弄错口令了哦:

温馨提醒

  1. 每位小伙伴仅限领一次;

  2. 口令有效期 24 小时「截止 1 月 29 日 20 点」

  3. 欢迎在评论区晒出领取金额,分享快乐;

  4. 活动最终解释权归杜老师说所有,如有雷同,一定是特别的缘分!

关于 Opengist 开源代码片段分享工具服务关闭的公告

2025年1月25日 00:00

Opengist 开源代码片段分享工具自上线以来,一直致力于为小伙伴们提供优质服务。然而,随着时间推移,我们发现平台的活跃用户数量非常少,综合考虑资源利用效率和运营成本等因素,我们做出了关闭服务的艰难决定。

关闭原因

长时间无人使用的情况日益突出。同时,平台占用服务器资源也相对较多,这给我们的运营带来了较大压力:

关闭流程

在关闭服务前,我们会对平台上的所有用户数据进行全面备份,包括但不限于用户信息、使用记录、上传的文件等,以保障已托管用户们的数据安全。

在本文发布后,我们将正式关闭 Opengist 开源代码片段分享工具服务,届时将无法再登录平台或者使用相关功能。为提供更充裕的时间进行数据下载和备份,我们会在关闭服务后一段时间内,提供数据下载服务。

数据备份与下载

为了方便获取和保存自己的数据,我们将提供数据备份文件的下载服务。可以通过下方链接进行数据下载:

下载地址

后续安排

关闭 Opengist 开源代码片段分享工具服务后,我们将对服务器的资源进行优化调整,以更好地支持我们的其它项目和服务。同时,我们也会继续关注用户的需求和反馈,努力提供更加优质的产品和服务。

再次感谢小伙伴们对 Opengist 开源代码片段分享工具的支持与理解。如在数据备份或下载过程中遇到任何问题,欢迎随时留言。

FreeFileSync 开源文件同步与备份利器

2025年1月22日 00:00

在数字化时代,文件管理和备份是每个用户都必须面对的重要任务。今天,向大家介绍一款开源的文件同步和备份软件 FreeFileSync。以其高效、免费和跨平台特点,成为众多用户在文件管理方面的首选工具。

写在前面

杜老师一直想自组个 NAS 主机,但苦于没有找到合适的系统,纠结于 Unraid 还是飞牛。Unraid 要收费,飞牛虽然免费,但很多功能的实现都是依托开源工具。就比如文件同步的功能,如需实现,还要借助第三方工具的。FreeFileSync 是非常好的选择,不仅开源免费,而且功能强大,可以帮助用户轻松完成各种文件同步任务:

什么是 FreeFileSync

FreeFileSync 是款功能强大的文件夹比较和同步软件,旨在帮助用户高效创建和管理重要文件的备份副本。与传统的备份工具不同,FreeFileSync 并不是简单地复制每一个文件,而是通过智能算法,确定源文件夹和目标文件夹之间差异,仅传输必要的数据。这种方法不仅节省了时间和带宽,还大大提高了同步效率:

开源与跨平台优势

FreeFileSync 是一款开源软件,这意味着它的代码是完全开放的,用户和开发者可以自由查看、修改、分发。开源优势在于,社区的力量可以不断优化和改进软件,使其更稳定和安全。此外,FreeFileSync 支持 Windows、macOS 和 Linux 三大主流的操作系统,无论桌面用户还是服务器管理员,都可以在自己的设备上无缝使用:

功能亮点

智能同步:FreeFileSync 的核心功能是其智能同步机制。它能够快速比较两个文件夹内容,识别出哪些文件被修改、删除、新增。用户可根据自己的需求选择同步模式,如单向同步或双向同步。这种灵活性使得 FreeFileSync 适用各种场景,从简单个人文件备份到复杂的多设备同步。

高效备份:对于备份任务,FreeFileSync 提供了多种选项。用户可以设置定时备份计划,确保重要文件定期自动备份。此外,软件支持增量备份,这意味着它只会备份自上次备份以来发生变化部分,从而节省存储空间。这种高效的备份方式对于那些需要频繁备份大量数据的用户来说非常实用。

易于使用:尽管 FreeFileSync 的功能强大,但它界面设计简洁直观,即使是新手用户也可以轻松上手。软件提供详细的教程和帮助文档,帮助用户快速掌握核心功能。此外,FreeFileSync 还支持拖放操作,用户可通过简单的拖放文件夹来设置同步任务,极大地提高了操作效率。

社区支持:作为开源软件,FreeFileSync 拥有一个活跃的社区。用户可以在社区论坛中寻求帮助、分享经验、参与开发。这种社区支持不仅为用户提供及时的技术支持,还为软件的持续改进提供了动力。许多用户反馈的功能和建议都被纳入后续版本的开发中。

适用场景

FreeFileSync 适用各种文件管理和备份场景。对于个人用户来说,它可用来备份重要文件,例如照片、文档、视频。对于企业用户,FreeFileSync 可帮助他们实现服务器之间的数据同步,确保数据的一致性和安全性。此外,FreeFileSync 还可以用于多设备之间的文件共享,例如在家庭网络中同步不同设备上的文件:

下载地址

杜老师为了方便小伙伴下载,已经打包好 14 版本的软件包。下面是 Windows、macOS 和 Linux 三大主流操作系统安装包:

下载地址

探索浏览器性能利器 Speedometer 3.0

2025年1月19日 00:00

在当今数字化时代,浏览器已成为我们日常生活中不可或缺的工具。如何衡量浏览器性能呢?Speedometer 3.0 正为此而生。它是一款专注于测试浏览器响应速度和性能的基准测试工具,通过模拟真实用户操作,帮助我们深入了解浏览器在处理复杂任务时的表现。

Speedometer 3.0 浏览器性能的试金石

Speedometer 3.0 是由 BrowserBench.org 开发的一款浏览器基准测试工具,旨在通过模拟真实 Web 应用场景来评估浏览器的响应能力。它通过一系列的演示 Web 应用程序,模拟用户常见操作行为,例如添加待办事项、编辑文档、浏览网页等等,从而量化浏览器在处理这些任务时的效率:

测试原理、方法

Speedometer 3.0 的测试原理是基于对 Web 应用的响应时间测量。它通过运行一系列预设的 Web 应用场景,记录浏览器在处理这些任务时的响应时间。这些场景涵盖从简单的页面加载到复杂的交互操作,例如在待办事项列表中添加任务、在文本编辑器输入文字、在表格中添加数据等等。通过这些多样化的测试场景,Speedometer 3.0 能够全面评估浏览器在不同负载的性能表现。

在测试过程中,Speedometer 3.0 会自动调整测试任务复杂程度,以确保测试结果准确性和可靠性。它还会根据浏览器性能表现动态调整测试参数,从而避免因浏览器性能差异而导致的测试偏差。这种自适应的测试方法使得 Speedometer 3.0 能够在不同类型的浏览器上获得一致的测试结果,为用户提供公平的比较基准。

如何进行测试

进行测试非常简单。用户只需访问官方网站,然后按照页面上的提示操作即可。在开始测试前,Speedometer 3.0 会自动检查浏览器窗口的大小,并提示用户调整窗口大小以确保测试结果的准确性。测试过程通常需几分钟时间,具体取决于浏览器的性能和测试设备硬件配置。在测试完成后,Speedometer 3.0 会生成一份详细测试报告,用户可将这份报告保存或分享给他人。此外,Speedometer 3.0 还支持跨设备和跨浏览器比较功能,用户可轻松地对比不同浏览器或不同设备上的测试结果,从而找到适合自己的浏览器:

测试结果解读

Speedometer 3.0 的测试结果以分数的形式呈现,分数越高表示浏览器的响应速度越快,性能越好。测试结果不仅包括总分,还会详细列出各个测试场景得分情况。这使得用户可深入了解浏览器在不同任务类型下的表现,如在处理文本编辑任务时是否更高效,或者在加载复杂网页时是否更快。此外,Speedometer 3.0 还提供了一些额外的性能指标,如帧率和延迟时间。帧率反映浏览器在处理动画和交互操作时的流畅度,而延迟时间则表示浏览器在接收到用户操作指令后响应速度。通过这些详细性能指标,用户可以更全面地了解浏览器的性能特点,从而做出更明智的选择:

宽带商 DNS 地址整理「仅 IPv4」

2025年1月16日 00:00

DNS 是互联网核心基础设施的关键组成部分,当计算机配置为使用距离最近 DNS 服务器时,可以显著提升域名解析效率,从而有效降低网络延时,优化网络服务响应速度,为用户带来更为流畅高效的网络体验。

中国电信 DNS 服务器地址大全

省市主 DNS备 DNS
安徽电信61.132.163.68202.102.213.68
北京电信219.141.136.10219.141.140.10
重庆电信61.128.192.6861.128.128.68
福建电信218.85.152.99218.85.157.99
甘肃电信202.100.64.6861.178.0.93
广东电信202.96.128.86202.96.128.166
广西电信202.103.225.68202.103.224.68
贵州电信202.98.192.67202.98.198.167
河南电信222.88.88.88222.85.85.85
黑龙江电信 DNS219.147.198.230219.147.198.242
湖北电信202.103.24.68202.103.0.68
湖南电信59.51.78.21159.51.78.210
江苏电信218.2.2.2218.4.4.4
江西电信202.101.224.69202.101.226.68
内蒙古电信 DNS219.148.162.31222.74.39.50
山东电信219.146.1.66219.147.1.66
陕西电信218.30.19.4061.134.1.4
上海电信202.96.209.133116.228.111.118
四川电信61.139.2.69218.6.200.139
天津电信219.150.32.132219.146.0.132
云南电信222.172.200.6861.166.150.123
浙江电信202.101.172.3561.153.177.196

中国联通 DNS 服务器地址大全

省市主 DNS备 DNS
北京联通123.123.123.123123.123.123.124
重庆联通221.5.203.98221.7.92.98
广东联通210.21.196.6221.5.88.88
河北联通202.99.160.68202.99.166.4
河南联通202.102.224.68202.102.227.68
黑龙江联通 DNS202.97.224.69202.97.224.68
吉林联通202.98.0.68202.98.5.68
江苏联通221.6.4.66221.6.4.67
内蒙古联通 DNS202.99.224.68202.99.224.8
山东联通202.102.128.68202.102.152.3
山西联通202.99.192.66202.99.192.68
陕西联通221.11.1.67221.11.1.68
上海联通210.22.70.3210.22.84.3
四川联通119.6.6.6124.161.87.155
天津联通202.99.104.68202.99.96.68
浙江联通221.12.1.227221.12.33.227
辽宁联通202.96.69.38202.96.64.68

中国移动 DNS 服务器地址大全

省市主 DNS备 DNS
安徽移动211.138.180.2211.138.180.3
山东移动218.201.96.130211.137.191.26
山西移动211.138.106.2211.138.106.3
江苏移动221.131.143.69112.4.0.55
浙江移动211.140.13.188211.140.188.188
湖南移动211.142.210.98211.142.210.99
湖北移动211.137.58.20211.137.64.163
江西移动211.141.90.68211.141.90.69
陕西移动211.137.130.3211.137.130.19
四川移动211.137.82.4
重庆移动218.201.4.3218.201.21.132
北京移动221.130.33.52221.130.33.60
天津移动211.137.160.50211.137.160.185
上海移动211.136.112.50211.136.150.66
广东移动211.136.192.6211.136.20.204
广西移动211.138.245.180211.136.17.108
贵州移动211.139.5.29211.139.5.30
福建移动211.138.151.161211.138.156.66
河北移动211.143.60.56211.138.13.66
甘肃移动218.203.160.194218.203.160.195
黑龙江移动 DNS211.137.241.34211.137.241.35
吉林移动211.141.16.99211.141.0.99
辽宁移动211.137.32.178211.140.197.58
云南移动211.139.29.68211.139.29.69
海南移动221.176.88.95211.138.164.6
内蒙古移动 DNS211.138.91.1211.138.91.2
新疆移动218.202.152.130218.202.152.131
西藏移动211.139.73.34211.139.73.35
青海移动211.138.75.123
香港移动203.142.100.18203.142.100.21

中国铁通 DNS 服务器地址大全

省市主 DNS备 DNS
广东铁通61.235.70.252211.98.4.1

中国广电 DNS 服务器地址大全

省市主 DNS备 DNS
广东广电、珠江宽频116.199.0.200116.116.116.116

中国长城宽带 DNS 服务器地址大全

省市主 DNS备 DNS
广东长城宽带211.162.78.1211.162.78.2

Follow 开启个性化信息汇聚的新时代

2025年1月13日 00:00

在信息爆炸的当下,我们每天都会被海量的内容包围,从新闻资讯到娱乐八卦,从专业文章到生活琐事,各种信息纷至沓来。如何在繁杂信息海洋中精准地筛选出自己真正感兴趣的内容,Follow 或许就是解决这一问题的神器。

打造专属信息空间

Follow 首先吸引杜老师的是它那定制化信息中心的理念。在这个平台上,用户可订阅海量的资讯源和精选列表。无论是热门的新闻频道,还是小众兴趣部落,只要是您感兴趣的,都可轻松订阅。更重要是,Follow 允许用户对这些订阅内容进行深度定制。您可以根据自己的喜好,将不同来源的信息进行分类整理,创建出一个个个性化的信息板块。比如,您可将所有关于科技前沿的资讯归为一类,将体育赛事的最新动态单独列出,甚至还可为自己的偶像创建一个专属的信息流,实时追踪他们最新动态。这样一来,您就可以在一个小小的收件箱里,轻松的掌握所有对您来说真正重要的信息,再也不用在多个网站间来回切换,浪费宝贵时间:

多媒体内容全覆盖

在这个多媒体盛行时代,信息的表现形式早已不再局限于文字。图片、视频、音频等元素的加入,让内容变得更丰富多彩。Follow 深知这一点,因此提供动态内容支持。无论是长篇的文章、精美的图片集,还是精彩视频、动听音频,Follow 都能够完美呈现。当您在浏览信息时,无需担心因为内容形式的差异而出现兼容问题。无论是想要欣赏一段优美的音乐,还是观看一场精彩演讲,Follow 都能让您流畅地享受其中。这种全方位的内容支持,满足了用户在不同场景下的多元需求,无论工作学习,还是休闲娱乐,都可以找到适合自己的内容形式:

助力提升浏览体验

科技飞速发展,让人工智能逐渐融入到我们的日常生活中。Follow 将 AI 技术巧妙地融入到了平台的各项功能中,为用户带来了 AI 尽在指尖的便捷体验。首先,AI 驱动的翻译功能,打破了语言的障碍。在这个全球化时代,许多优质资讯可能因为语言不通而被我们错过。而 Follow 的 AI 翻译,能够快速准确地将不同语言内容翻译成用户熟悉的语言,让我们能够轻松阅读来自世界各地的信息。其次,AI 摘要功能则为用户节省了大量时间。面对篇幅较长文章,AI 能够精准提炼出核心要点,让用户在短时间内快速了解文章主旨,帮助我们更高效地筛选有价值的内容。此外,还有诸如智能推荐等 AI 功能,根据用户的浏览历史和兴趣偏好,为用户推荐可能感兴趣的新内容,不断拓展我们信息视野:

赋能创作者与用户

在 Follow 的世界里,还有一个独特的存在 Power。这是一种全新的所有权经济模式,它赋予了用户和创作者更多的权力和价值。用户可以通过 Power 直接向自己喜欢的创作者打赏,表达对他们作品支持和喜爱。这种即时打赏机制,不仅能够激励创作者持续产出优质的内容,还可以让用户与创作者之间建立起更加紧密的联系。同时,创作者也能通过自己的内容获得相应的 Power 收益,实现内容商业价值转化。更重要的,Power 还能够让用户在自己的作品中解锁更多价值。当您在 Follow 上分享自己的见解、创作自己的内容时,也有可能获得他人的打赏和支持,让您的创意和智慧得到应有回报。这种经济模式创新,真正实现了内容的价值回归,让每一个参与者都能在这个生态中找到自己的位置,共同推动内容创作繁荣发展:

超越构建社区生态

Follow 不仅仅是一个简单的应用,它更是一个充满活力的社区。在这里用户不再是孤立的信息接收者,而是能积极参与到社区的互动中。您可以与其他用户交流心得、分享观点,甚至能参与到内容的共创中。Follow 鼓励用户之间的开放合作,共同打造一个更加丰富多元信息生态。社区中的每一个成员都可以为内容的质量和多样性贡献力量,通过大家共同努力,使得 Follow 成为一个真正属于用户自己的信息家园。在这里您不仅能够获取信息,还可以结交志同道合的朋友,拓展自己社交圈子,共同探索未知世界:

杜老师说订阅地址

如果您也有 Follow 账户,欢迎访问杜老师的订阅地址,可以第一时间获取本站博文更新。可惜无法同步评论功能,所以需要交流的话,还需访问原文地址,在评论区留言:

经常有小伙伴因侧边栏的随机图,谣传说杜老师喜欢美女、黑丝啥的。这里严肃声明杜老师从来不看侧边栏,这里分享一个图集,侧边栏仅随机一张,哪里够看:

Office 多版本产品激活密钥分享

2025年1月4日 00:00

之前有小伙伴问到是否有 Office 产品的激活密钥,杜老师在微软的官网上好顿搜索,终于是找到了!目前 Office 有两大版本,一个是年度版「如 2024」一个是订阅版「即 365」订阅版不可以破解使用,文中均为年度版的激活密钥。

GVLK for Office LTSC 2024

产品GVLK
Office LTSC 专业增强版 2024XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB
Office LTSC 标准版 2024V28N4-JG22K-W66P8-VTMGK-H6HGR
Project Professional 2024FQQ23-N4YCY-73HQ3-FM9WC-76HF4
Project Standard 2024PD3TT-NTHQQ-VC7CY-MFXK3-G87F8
Visio LTSC Professional 2024B7TN8-FJ8V3-7QYCP-HQPMV-YY89G
Visio LTSC Standard 2024JMMVY-XFNQC-KK4HK-9H7R3-WQQTV
Access LTSC 202482FTR-NCHR7-W3944-MGRHM-JMCWD
Excel LTSC 2024F4DYN-89BP2-WQTWJ-GR8YC-CKGJG
Outlook LTSC 2024D2F8D-N3Q3B-J28PV-X27HD-RJWB9
PowerPoint LTSC 2024CW94N-K6GJH-9CTXY-MG2VC-FYCWP
Skype for Business LTSC 20244NKHF-9HBQF-Q3B6C-7YV34-F64P3
Word LTSC 2024MQ84N-7VYDM-FXV7C-6K7CC-VFW9J

GVLK for Office LTSC 2021

产品GVLK
Office LTSC Professional Plus 2021FXYTK-NJJ8C-GB6DW-3DYQT-6F7TH
Office LTSC Standard 2021KDX7X-BNVR8-TXXGX-4Q7Y8-78VT3
Project Professional 2021FTNWT-C6WBT-8HMGF-K9PRX-QV9H8
Project Standard 2021J2JDC-NJCYY-9RGQ4-YXWMH-T3D4T
Visio LTSC Professional 2021KNH8D-FGHT4-T8RK3-CTDYJ-K2HT4
Visio LTSC Standard 2021MJVNY-BYWPY-CWV6J-2RKRT-4M8QG
Access LTSC 2021WM8YG-YNGDD-4JHDC-PG3F4-FC4T4
Excel LTSC 2021NWG3X-87C9K-TC7YY-BC2G7-G6RVC
Outlook LTSC 2021C9FM6-3N72F-HFJXB-TM3V9-T86R9
PowerPoint LTSC 2021TY7XF-NFRBR-KJ44C-G83KF-GX27K
Publisher LTSC 20212MW9D-N4BXM-9VBPG-Q7W6M-KFBGQ
Skype for Business LTSC 2021HWCXN-K3WBT-WJBKY-R8BD9-XK29P
Word LTSC 2021TN8H9-M34D3-Y64V9-TR72V-X79KV

Office 2019 的 GVLK

产品GVLK
Office 专业增强版 2019NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP
2019 Office Standard6NWWJ-YQWMR-QKGCB-6TMB3-9D9HK
Project Professional 2019B4NPR-3FKK7-T2MBV-FRQ4W-PKD2B
2019 Project StandardC4F7P-NCP8C-6CQPT-MQHV9-JXD2M
2019 Visio Professional9BGNQ-K37YR-RQHF2-38RQ3-7VCBB
2019 Visio Standard7TQNQ-K3YQQ-3PFH7-CCPPM-X4VQ2
Access 20199N9PT-27V4Y-VJ2PD-YXFMF-YTFQT
Excel 2019TMJWT-YYNMB-3BKTF-644FC-RVXBD
Outlook 20197HD7K-N4PVK-BHBCQ-YWQRW-XW4VK
PowerPoint 2019RRNCX-C64HY-W2MM7-MCH9G-TJHMQ
Publisher 2019G2KWX-3NW6P-PY93R-JXK2T-C9Y9V
Skype for Business 2019NCJ33-JHBBY-HTK98-MYCV8-HMKHJ
Word 2019PBX3G-NWMT6-Q7XBW-PYJGG-WXD33

Office 2016 的 GVLK

产品GVLK
Office Professional Plus 2016XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99
Office Standard 2016JNRGM-WHDWX-FJJG3-K47QV-DRTFM
Project Professional 2016YG9NW-3K39V-2T3HJ-93F3Q-G83KT
Project Standard 2016GNFHQ-F6YQM-KQDGJ-327XX-KQBVC
Visio Professional 2016PD3PC-RHNGV-FXJ29-8JK7D-RJRJK
Visio Standard 20167WHWN-4T7MP-G96JF-G33KR-W8GF4
Access 2016GNH9Y-D2J4T-FJHGG-QRVH7-QPFDW
Excel 20169C2PK-NWTVB-JMPW8-BFT28-7FTBF
OneNote 2016DR92N-9HTF2-97XKM-XW2WJ-XW3J6
Outlook 2016R69KK-NTPKF-7M3Q4-QYBHW-6MT9B
PowerPoint 2016J7MQP-HNJ4Y-WJ7YM-PFYGF-BY6C6
Publisher 2016F47MM-N3XJP-TQXJ9-BP99D-8837K
Skype for Business 2016869NQ-FJ69K-466HW-QYCP2-DDBV6
Word 2016WXY84-JN2Q9-RBCCQ-3Q3J3-3PFJ6

Windows 系统多版本产品激活密钥分享

2024年12月29日 00:00

有小伙伴问到关于 Windows 的产品激活密钥,杜老师收集了一些。这里分享有关桌面及服务器各个版本激活密钥,需要配合 KMS 服务器使用,如不知道如何操作,可在评论区中留言!

Windows Server LTSC 版

Windows Server 2025 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2025 StandardTVRH6-WHNXV-R9WG3-9XRFY-MY832
Windows Server 2025 DatacenterD764K-2NDRG-47T6Q-P8T8W-YP6DF
Windows Server 2025 Datacenter:Azure EditionXGN3F-F394H-FD2MY-PP6FD-8MCRC

Windows Server 2022 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2022 StandardVDYBN-27WPP-V4HQT-9VMD4-VMK7H
Windows Server 2022 DatacenterWX4NM-KYWYW-QJJR4-XV3QB-6VM33
Windows Server 2022 Datacenter: Azure EditionNTBV8-9K7Q8-V27C6-M2BTV-KHMXV

Windows Server 2019 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2019 StandardN69G4-B89J2-4G8F4-WWYCC-J464C
Windows Server 2019 DatacenterWMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 EssentialsWVDHN-86M7X-466P6-VHXV7-YY726

Windows Server 2016 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2016 StandardWC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
Windows Server 2016 DatacenterCB7KF-BWN84-R7R2Y-793K2-8XDDG
Windows Server 2016 EssentialsJCKRF-N37P4-C2D82-9YXRT-4M63B

半年频道版本

Windows Server 版本 20H2/2004/1909/1903/1809 产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server StandardN2KJX-J94YW-TQVFB-DG9YT-724CC
Windows Server Datacenter6NMRW-2C8FM-D24W7-TQWMY-CWH2D

Windows 11 和 Windows 10 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows 10/11 专业版W269N-WFGWX-YVC9B-4J6C9-T83GX
Windows 10/11 专业版本 NMH37W-N47XK-V7XM9-C7227-GCQG9
Windows 10/11 专业工作站NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J
Windows 10/11 专业工作站版 N9FNHH-K3HBT-3W4TD-6383H-6XYWF
Windows 10/11 专业教育版6TP4R-GNPTD-KYYHQ-7B7DP-J447Y
Windows 10/11 专业教育版本 NYVWGF-BXNMC-HTQYQ-CPQ99-66QFC
Windows 10/11 教育版NW6C2-QMPVW-D7KKK-3GKT6-VCFB2
Windows 10/11 教育版本 N2WH4N-8QGBV-H22JP-CT43Q-MDWWJ
Windows 10/11 企业版NPPR9-FWDCX-D2C8J-H872K-2YT43
Windows 10/11 企业版本 NDPH2V-TTNVB-4X9Q3-TJR4H-KHJW4
Windows 10/11 企业版本 GYYVX9-NTFWV-6MDM3-9PT4T-4M68B
Windows 10/11 企业版本 G N44RPN-FTY23-9VTTB-MP9BX-T84FV

早期版本的 Windows Server

Windows Server 版本 1803 产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server StandardPTXN8-JFHJM-4WC78-MPCBR-9W4KR
Windows Server Datacenter2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG

Windows Server 版本 1709 产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server StandardDPCNP-XQFKJ-BJF7R-FRC8D-GF6G4
Windows Server Datacenter6Y6KB-N82V8-D8CQV-23MJW-BWTG6

Windows Server 2012 R2 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2012 R2 StandardD2N9P-3P6X9-2R39C-7RTCD-MDVJX
Windows Server 2012 R2 DatacenterW3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
Windows Server 2012 R2 EssentialsKNC87-3J2TX-XB4WP-VCPJV-M4FWM

Windows Server 2012 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2012BN3D2-R7TKB-3YPBD-8DRP2-27GG4
Windows Server 2012 N8N2M2-HWPGY-7PGT9-HGDD8-GVGGY
Windows Server 2012 单语言2WN2H-YGCQR-KFX6K-CD6TF-84YXQ
Windows Server 2012 特定地区版4K36P-JN4VD-GDC6V-KDT89-DYFKP
Windows Server 2012 StandardXC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 MultiPoint 标准版HM7DN-YVMH3-46JC3-XYTG7-CYQJJ
Windows Server 2012 MultiPoint 高级版XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G
Windows Server 2012 Datacenter48HP8-DN98B-MYWDG-T2DCC-8W83P
Windows Server 2012 EssentialsHTDQM-NBMMG-KGYDT-2DTKT-J2MPV

Windows Server 2008 R2 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Server 2008 R2 Web 版6TPJF-RBVHG-WBW2R-86QPH-6RTM4
Windows Server 2008 R2 HPC 版TT8MH-CG224-D3D7Q-498W2-9QCTX
WindowsServer 2008 R2 标准版YC6KT-GKW9T-YTKYR-T4X34-R7VHC
WindowsServer 2008 R2 企业版489J6-VHDMP-X63PK-3K798-CPX3Y
WindowsServer 2008 R2 Datacenter74YFP-3QFB3-KQT8W-PMXWJ-7M648

Windows Server 2008 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows Web Server 2008WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 标准版TM24T-X9RMF-VWXK6-X8JC9-BFGM2
不带 Hyper-V 的 Windows Server 2008 标准版W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Server 2008 企业版YQGMW-MPWTJ-34KDK-48M3W-X4Q6V
不带 Hyper-V 的 Windows Server 2008 企业版39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 HPCRCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 数据中心版7M67G-PC374-GR742-YH8V4-TCBY3
不带 Hyper-V 的 Windows Server 2008 数据中心版22XQ2-VRXRG-P8D42-K34TD-G3QQC

早期版本的 Windows

Windows 8.1 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows 8.1 专业版GCRJD-8NW9H-F2CDX-CCM8D-9D6T9
Windows 8.1 专业版本 NHMCNV-VVBFX-7HMBH-CTY9B-B4FXY
Windows 8.1 企业版MHF9N-XY6XB-WVXMC-BTDCT-MKKG7
Windows 8.1 企业版本 NTT4HM-HN7YT-62K67-RGRQJ-JFFXW

Windows 8 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows 8 专业版NG4HW-VH26C-733KW-K6F98-J8CK4
Windows 8 专业版本 NXCVCF-2NXM9-723PB-MHCB7-2RYQQ
Windows 8 企业版32JNW-9KQ84-P47T8-D8GGY-CWCK7
Windows 8 企业版本 NJMNMF-RHW7P-DMY6X-RF3DR-X2BQT

Windows 7 多版本产品密钥如下:

操作系统版本KMS 客户端安装密钥
Windows 7 专业版FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
Windows 7 专业版本 NMRPKT-YTG23-K7D7T-X2JMM-QY7MG
Windows 7 专业版本 EW82YF-2Q76Y-63HXB-FGJG9-GF7QX
Windows7 企业版33PXH-7Y6KF-2VJC9-XBBR8-HVTHH
Windows 7 企业版本 NYDRBP-3D83W-TY26F-D46B2-XCKRJ
Windows 7 企业版本 EC29WB-22CC8-VJ326-GHFJW-H9DH4

Windows Vista 多版本产品密钥如下:

操作系统版本KMS 客户端产品密钥
Windows Vista 商用版YFKBB-PQJJV-G996G-VWGXY-2V3X8
Windows Vista 商用版本 NHMBQG-8H2RH-C77VX-27R82-VMQBT
Windows Vista 企业版VKK3X-68KWM-X2YGT-QR4M6-4BWMV
Windows Vista 企业版本 NVTC42-BM838-43QHV-84HX6-XJXKV

在线开源图片批量压缩工具

2024年12月26日 00:00

有人建议杜老师为去不图床添加压缩功能,这样可以减少图片体积,同时可以减少网络传输时间。但不少小伙伴还是有保留原版图片的需求,所以杜老师搭建了在线图片批量压缩图片平台。

工具介绍

支持多种图片格式,含 JEPG/PNG/WebP/GIF。

支持 20 兆以内图片压缩,最多支持 10 张图片同时操作。

支持压缩设置,可选缩小优先、普通压缩、清晰优先。

支持设置输出目标大小,及是否转换输出图片的格式。

在线平台

点击下方网址,即可访问搭建好的在线图片批量压缩工具:

部署过程

如不放心数据安全,可以使用下方源码自行部署。点击下方网址进入到 GitHub 源码页面,点击 Fork 复刻到自己仓库:

推荐使用 Vercel 部署与托管,部署过程参考下方配置。如果出现错误提示,可在评论区中贴图,杜老师看到后会第一时间回复的:

使用效果

部署完成后的效果如下:

在线开源图片处理工具

2024年12月23日 00:00

怕小伙伴们找不到趁手工具,杜老师找了款在线开源图片处理工具。文中介绍了该工具的部署及使用方法,虽然不如本地软件功能全面,但能够满足大部分需求,欢迎一试!

工具介绍

在线图像编辑器允许您使用 HTML5 技术创建和编辑图像,无需购买、下载、安装或者过时的 Flash,且无广告。

支持图层、滤镜,开源 Photoshop 替代品。

miniPaint 直接在浏览器中运行,可以通过从剪贴板粘贴或从计算机上传来创建图像。

不会向任何服务器发送任何内容,一切都保留在您的浏览器中。

在线平台

点击下方网址,即可访问搭建好的在线图片处理平台:

部署过程

如不放心数据安全,可以使用下方源码自行部署。点击下方网址进入到 GitHub 源码页面,点击 Fork 复刻到自己仓库:

推荐使用 Vercel 部署与托管,部署过程参考下方配置。如果出现错误提示,可在评论区中贴图,杜老师看到后会第一时间回复的:

使用效果

部署完成后的效果如下,如果默认不是中文界面,可以修改源代码文件 src/js/config.js,将其中 config.LANG 项改为 zh

这里有个可以白嫖三个一年 SSL 证书的网站

2024年12月20日 00:00

SSL 证书普及率很高,但目前只能申请到 90 天使用期限免费证书。虽然可以重复申请实现无限延期,但毕竟太麻烦。杜老师从淇云那里看到一个免费一年版的证书申请网站,感兴趣的小伙伴可以去领取!

网站介绍

DNSHE 是一个提供 SSL 证书服务的平台,为注册用户免费提供 3 个一年期单域名 SSL 证书。

SSL 证书对于网站安全性至关重要,它不仅能保护用户隐私,还能提升搜索引擎排名,增强网站的竞争力。

领取地址

下面是 DNSHE 官网地址,活动的截止时间为 2024 年 12 月 31 日:

在证书申请过程中,需生成 CSR 文件,可以使用以下网站在线生成:

申请步骤

点击上面的 DNSHE 官网地址,即可看到证书订购页面,确认金额为 0,点击立即订购:

在跳转的页面中找到并点击结账「可以返回之前页面,重复下单三次」

系统处理成功后会提示等待配置,点击页面下方立即配置进入申请页面:

在证书申请过程中,需生成 CSR 文件,我们通过上面网站在线生成:

返回配置页面,填写域名相关信息完成证书申请,中间需要根据提示填写域名验证信息:

填写完所有信息后,即可等待证书下发。下发后可进行重新签发、下载 SSL 证书等操作:

注意事项

用户可通过访问 DNSHE 官网,注册成为用户,然后按照提示绑定域名,完成 SSL 证书申请和安装。

每位注册的用户限领 3 个单域名证书。

证书有效期为一年,到期后可按需求续费或选择其它解决方案。

如有多个网站,可以将这些证书分别用于不同的域名。

图床审核出现误判解决方法

2024年12月17日 00:00

有小伙伴反馈在使用去不图床上传图片时,出现上传成功却提示图片的审核失败,还有一些正常图片被误判为违规等类似的情况发生。本文简单剖析出现的原因及问题解决方法。

数据流向

通过下图可以看到,当图片开始上传后,首先图床会将数据发送给审核 API 判定是否违规,如违规会反馈失败。反之则存放至节点,并返回外链的地址:

原因剖析

审核失败及误判的原因是 API 处理错误导致。通过日志反馈的信息可判断,是因图片格式标注错误导致审核失败。有小伙伴可能好奇,图片格式怎么还会标注错误?其实现在很多图片都是存放在类似 OSS 的存储空间中,这类服务会自动转换图片的格式,使其可以用更小的流量在网络中传输。而图床是根据文件后缀判断图片格式,如果实际格式和标注格式不一致,就会导致审核失败:

还有一个原因是不支持图片格式。虽然去不图床支持的图片格式有 JPEG/JPG/PNG/GIF/BMP/ICO/WEBP,但 API 仅支持 JPEG/JPG/PNG/GIF/BMP。杜老师已联系 API 的开发者建议支持新格式,期待可以尽快更新:

解决方法

除了前面的两个原因外,最直观的原因就是图片确实违规,这时可以针对图片进行修改,例如添加水印、区域截图等等,避免再次出现违规结果:

聊天广场中有小伙伴反馈过,可以尝试使用图片压缩工具进行处理,不仅可以减少图片大小,还可以提升审核成功及通过机率「暂未亲测」

工具地址

怕小伙伴们找不到趁手工具,杜老师找了款在线开源图片处理工具,访问下面的网址即可打开和使用。该工具类似 PS,支持中文界面:

下方的链接为在线开源图片批量压缩工具,最大支持 20 兆图片压缩,最多支持 10 张图片同时操作。可设置压缩的大小、质量、输出格式参数:

感谢来自 hehe 童鞋的礼品

2024年12月8日 00:00

杜老师说运营至今,认识了很多小伙伴。除在评论区交流外,大家也会通过导航栏处「点我在线聊天」沟通。近期收到来自 hehe 童鞋的礼品,这是他的爱人经营一家网上手工店铺,里面有很多的手工艺品,推荐给喜欢的小伙伴们!

有关于 hehe

认识 hehe 童鞋是在今年的年初,因为架设网站时遇到了一些问题,选择杜老师的增值技术支持。

在问题解决后,又帮忙解决了几个小的问题,渐渐熟络起来。

有幸因为出差去了 hehe 童鞋所在的城市,但因为工作及天气原因没能线下面基。

杜老师对这位老哥的评价就是又菜又爱玩,想认识的小伙伴可以去聊天广场,没准就能逮到他了!

礼品展示

hehe 童鞋表示为感谢杜老师长期的技术支持,送了两个由其爱人亲手制作的工艺品:

杜老师在众多小玩偶中,选择了一个加菲猫和一个牛肉果:

加菲猫大一些,被杜老师的爱人抢走了,不知道挂在了哪里:

牛油果小一些,杜老师挂在了书包上面,希望可以耐脏一些:

礼品官网

除了上面图片中的玩偶,还有挂件、包包、摆件、盆栽、发卡、帽子:

官网截图

如果有喜欢的玩偶,可以打开上面官网,点击右上角关于我,添加页面中的聊天方式,沟通下单即可:

感谢来自开往项目组的礼品

2024年12月5日 00:00

前段时间突然收到来自开往项目负责人的私信,说为了表示对开往项目支持,会赠送一个小礼品。杜老师告知地址后,没过几天就收到了一个礼品,礼物虽小但情谊重,这里再次推荐一下开往项目!

项目介绍

开往 Travellings 是一个友链接力项目,旨在通过网络跳转方式将流量引入那些鲜为人知的独立站点,从而推动网络的开放性和多元性。

该项目于 2020 年 3 月 12 日诞生,灵感来源于开放的网络。其 Logo 由代表世界的星环和代表穿梭的列车组成,寓意在网络世界中穿梭。

每当用户访问加入开往 Travellings 网页时,点击该网页上的开往按钮将随机跳转到另一个加入该项目的网页。无论再次点击开往还是后退网页,都会继续随机跳转到其他参与者网页。

随着越来越多的网页选择加入开往 Travellings 行列,友链网络也在不断扩大,这将进一步推动分享流量的增长,为本项目注入更多活力。

礼品展示

刚打开快递盒,感觉非常惊喜,小小的礼品包装很精致,还添加了纸条防止邮递损坏:

打开里面的礼品盒,首先映入眼帘是一封感谢信,简单说明了开往负责人交替关系:

小礼品是一个亚克力材质的徽章,上面是开往 Logo,背面有别针可以挂在衣服上「其实弄个贴纸或冰箱贴会更好些」

徽章正面有个薄膜,开始杜老师不清楚,怎么拍就感觉模糊,撕掉后的效果还是很不错的:

聊聊项目

开往是个以跳转功能为主的友链接力项目,其名字开往取自开放的网络。

将开往放入您网页,表示乐于分享并支持开放的网络。

每当有人访问加入开往的网页时,点击开往会随机跳转到另一个加入开往的网页。

之后,再次点击网页的开往或后退网页,将继续随机跳转到另一个加入开往的网页。

我们希望这个项目能让友链接力下去,让更多的网页获得流量。站长也可以用开往互相交友。

所以博主间的互动,可以带来流量,及创作的热情。而开往项目就提供一个平台,方便博主之间随机跳转,认识新朋友的同时,也会给自身的博客带来流量,在这里也祝福该项目能越办越好!

项目地址

开往项目官网地址:

1Panel 专业版低价租用

2024年12月2日 00:00

越来越多小伙伴开始选择 1Panel 面板,1Panel 专业版提供的 WAF 和网站监控报表等功能非常好用。不过官方已经不再提供永久版的购买渠道,目前只能按年订阅。杜老师这边囤积了几个专业版激活码,现提供低价格租用服务。

功能列表

以下是社区版和专业版通用功能:

  • 应用商店
  • 网站管理
  • 多种类数据库管理
  • 容器管理
  • 文件管理
  • 主机性能状态监控
  • 网页终端
  • 防火墙及端口转发
  • 进程管理
  • 远程连接管理
  • 计划任务
  • 日志审计

以下是专业版特有功能:

  • WAF 防火墙
  • 网站防止篡改
  • 自定义 Logo
  • 显卡监控
  • 网站监控报表
  • 定制主题配色
  • 内网代理模式
  • 定时病毒扫描

界面效果

激活专业版后,点击左侧面板设置,可看到主题颜色会多出一个自定义项:

如果激活专业版后,发现左侧没有高级功能,可以前往面板设置,找到高级功能菜单隐藏,将所需功能项设置显示即可:

租用价格

下面截图来自官网,可以看到官方的价格是每年 360 元,杜老师这边价格是 90 元一年:

杜老师收到支付款项后,会通过邮件或者聊天私信发送专业版激活文件,点击右上角升级专业版,上传激活文件即可:

租用规则

  1. 点击文章下方的给作者一杯咖啡,根据喜好选择支付宝或微信支付,金额 90 元,备注「1Panel 专业版」即可;

  2. 可通过邮件或者聊天广场私信杜老师,发送支付截图。杜老师收到后,会通过邮件或者聊天私信发送专业版激活文件,点击右上角升级专业版,上传激活文件即可;

  3. 激活码有效期 365 天,到期后会自动失效。期间可以随时按月退费,最终解释权归杜老师说所有;

  4. 激活码的数量有限,目前还剩四份名额「该信息会实时更新」

WAFPRO 防御加速 CDN 新版上线

2024年11月29日 00:00

上篇文章有小伙伴评论说无畏云没有限值,如果遇到被刷流量情况,很有可能会进入黑名单。本次为小伙伴们推荐的 WAFPRO 防御加速 CDN,其使用了流量包月机制,到达流量后即停止服务,防止额度欠费。

介绍

WAFPRO 防御加速 CDN 是一个基于云网站安全防护解决方案,通过 WAFPRO 防御加速 CDN,可以保护网站免受各种攻击。

包括跨站请求伪造、拒绝服务攻击、跨站脚本攻击。

价格

目前套餐价格如下:

套餐流量带宽月价季价年价
个人月 100GB20Mbps39 元88 元299 元
基础月 500GB30Mbps109 元320 元1090 元
标准日 3000GB50Mbps399 元1190 元3999 元
专业日 12000GB100Mbps998 元2900 元9888 元
标准日 45000GB300Mbps2999 元8990 元29999 元

WAFPRO 个人版年付优惠计划,原价基础优惠 200 元,现价 99 元,购买时填入下面优惠码:

wafprovip

官网

WAFPRO 有新旧两个版本,旧版本使用较复杂,这里提供新版本的官网链接:

截图

打开官网并登录后,可以看到网站概览,包括带宽、流量、请求数等信息:

WAFPRO 与后付费 CDN 不同,其使用流量套餐包月制,不会出现额度透支情况。对于不确定使用量,及经常被攻击的小伙伴,WAFPRO 是很不错的选择:

无畏云 CDN 加速免费依旧

2024年11月26日 00:00

在数字化时代,网站的访问速度和稳定性对用户体验至关重要,无畏云 CDN 正是针对这一需求而生,为广大站长提供高效且免费的 CDN 加速服务。本文将介绍无畏云 CDN 的功能、优势及在实际中的应用效果。

平台介绍

无畏云 CDN 是一家融合 CDN 的解决方案提供商,通过整合华为、阿里、火山和 AWS 等顶级厂商的资源,构建一个强大而稳定的节点网络。

无畏云 CDN 在全球范围内拥有几百个节点 IP,覆盖六大洲的主要区域,确保用户无论身在何处,都能享受到快速稳定的访问体验。

功能优势

无畏云 CDN 给予新注册用户每月 30GB 免费流量,这对于小型网站和个人博客来说无疑是一个巨大的福利大大减轻了流量费用的负担。

无畏云 CDN 利用融合的 CDN 技术,实现全球范围内的节点覆盖,这意味着用户的最终访问请求总能被引导至最近的节点,从而显著提高访问速度和稳定性。

无畏云 CDN 后端主要采用华为、阿里、火山和 AWS 基础设施,这些厂商在可靠性和性能上都有着极高的声誉,通过这样合作,无畏云 CDN 能够为用户提供 99.9%服务质量保障。

无畏云 CDN 提供一键开启 HTTPS 和 IPv6 的功能,使得用户可方便地提升网站的安全性和兼容性,控制面板设计简洁直观,即使是初学者也能轻松上手。

官网地址

已经恢复正常使用的无畏云官网:

平台截图

需要注意的是,无畏云使用境内的节点,这意味着用户需要实名验证,且域名需备案才可正常访问:

如果赠送流量不够,也可以购买流量包。支持自选流量包大小及有效时长,价格相比市面的 CDN 便宜很多:

新版本不蒜子统计平台使用说明

2024年11月23日 00:00

杜老师不蒜子统计平台运营至今,经过星辰童鞋版本迭代,增加了很多新功能。更为值得称赞的是,版本升级并没有 BREAKING CHANGE,新版本仍兼容旧版本的调用脚本。使用旧版本的小伙伴不升级脚本也可继续使用!

再次感谢

再次特别感谢星辰童鞋,杜老师自建的国内不蒜子统计平台使用的就是他的开源代码,并且在测试过程中,提供了大量的帮助。

通过 Golang+Redis 实现模仿不蒜子统计功能;UV 通过 IP+UA 统计,PV 通过 Referer 区分。

服务器的配置为 2H4G,下行带宽为 100M,上行为 5M。

主机位于北京,所有流量走境内 CDN。

食用方法

如果是 Volantis 主题:

1
2
3
4
############################# Analytics ############################# > start
analytics:
busuanzi: https://npm.onmicrosoft.cn/penndu@16.0.0/bsz.js # 修改这里即可
############################# Analytics ############################# > end

如果非 Volantis 主题:

1
2
3
4
5
<script defer src="https://npm.onmicrosoft.cn/penndu@16.0.0/bsz.js"></script>
本文总阅读量 <span id="busuanzi_page_pv"></span>
本文总访客量 <span id="busuanzi_page_uv"></span>
本站总访问量 <span id="busuanzi_site_pv"></span>
本站总访客数 <span id="busuanzi_site_uv"></span>

如果是 Butterfly 主题,需修改文件 layout/includes/additional-js.pug,位于 72 行左右:

1
script(async data-pjax src='//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js')

改为:

1
script(async data-pjax src='//npm.onmicrosoft.cn/penndu@16.0.0/bsz.js')

可选参数

在非 Volantis 主题使用方法基础上,可以添加如下参数:

属性默认阈值释义
data-apihttps://bsz.dusays.com:9001/api不蒜子 API 地址
pjaxfalse是否监听 Pjax 的变化
data-prefixbusuanzi标签前缀

使用示例

在一些启用了 Pjax 技术的网站, 可以在 js 标签中加入 Pjax 属性, 来实现当网站切换页面时自动更新页面计数的效果:

1
<script defer pjax src="https://npm.onmicrosoft.cn/penndu@16.0.0/bsz.js"></script>

可使用 data-api 属性, 指定后端 API 的接口:

1
<script defer data-api="https://bsz.dusays.com:9001/api" src="https://npm.onmicrosoft.cn/penndu@16.0.0/bsz.js"></script>

可使用 data-style 属性, 指定数据的显示样式。默认显示完整数据,short 显示短形式, 如 1024 显示为 1k;comma 以逗号分隔数据, 如 1024 显示为 1,024:

1
<script defer data-style="short" src="https://npm.onmicrosoft.cn/penndu@16.0.0/bsz.js"></script>

不同于原版本, 为了更加精简去除了 value 字符, 仍然可以通过指定 data-prefix 属性来进行兼容:

1
<script defer data-prefix="busuanzi_value" src="https://npm.onmicrosoft.cn/penndu@16.0.0/bsz.js"></script>

推荐一款文字修仙摸鱼页游

2024年11月17日 00:00

博文拖更好久,不知道发点什么好。刚好在 GitHub 上发现一款有趣的文字修仙网页游戏,可以直接托管在 Vercel,也可架设在个人服务器。杜老师已经部署好,欢迎小伙伴们前来体验!

游戏截图

游戏页面清爽直接,小伙伴们可以通过点击文字进行交互,部分选项标有注释,通过点击即可获取提示信息:

游戏方法

首先领取新手礼包,礼包的装备可刷新,装备的级别从大到小分别是天地玄黄。

装备好后,即可开始修练。

到一定级别后,需要探索秘境刷一定数量怪,才可继续修炼。

剩下的就请小伙伴们自行探索了!

在线摸鱼

如果感觉在页面中操作不便「该页面中无法使用右键」点击 这里 在独立页面中打开游戏:

注意事项

游戏数据存于浏览器本地缓存中,杜老师说不会保留任何用户数据,也请大家做好数据备份,避免因缓存清理等原因丢失游戏记录。

如需备份可以点击页面下方游戏设置——导出存档,再次导入即可恢复进度。

哪吒监控开源、轻量、易用的服务器监控

2024年11月8日 00:00

一天在聊天广场中分享了服务器监控截图,obaby 说感觉不错,想知道如何部署的。杜老师当时拍着 36A 的胸脯郑重承诺当天晚上会发表。然后……就没有然后了!但人不能言而无信,博客不能拖而不更,它来了它来了,它带着忏悔走来了!

工具特点

支持一键安装面板、监控服务,操作便捷。兼容主流系统,包括 Linux 等。

支持同时监控多个服务器的状态,提供历史网络状态、延迟图表,监控网页、端口可用性以及 SSL 证书状态。

支持故障和流量等状态告警,可通过 Telegram、邮件和微信等多种方式提醒。

提供 API 获取服务器状态,支持 WebSSH 和 DDNS 及流量监控。可设置定时和触发任务,并批量执行服务器任务。

服务端的部署

在面板服务器,运行安装脚本:

1
curl -L https://raw.githubusercontent.com/nezhahq/scripts/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

如面板服务器位于中国大陆,可以使用镜像:

1
curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh

等待 Docker 安装完毕后,根据实际的情况分别输入以下值:

1
2
3
4
5
6
7
OAuth 提供商
Client ID
Client Secret
用户昵称
站点标题
访问端口
Agent 的通信端口

安装结束后如一切正常,此时可以访问 IP+端口号查看面板:

1
http://IP:8008

客户端的安装

哪吒监控的被控端服务被称为 Agent,这里主要讲解如何在 Linux 中安装 Agent「支持大部分发行版」首先在管理面板添加一台服务器,然后在被控服务器中运行下面的脚本:

1
curl -L https://raw.githubusercontent.com/nezhahq/scripts/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

如被控服务器位于中国大陆,可以使用镜像:

1
curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh

脚本运行后选择安装监控 Agent,输入服务端的通信 IP 或者域名如:

1
nezha.dusays.com

输入服务端的通信端口,默认如下。之后再输入 Agent 密钥,Agent 密钥在管理面板添加服务器时生成,可以在管理面板中的服务器页中找到:

1
5555

效果展示

支持实时监控多台主机运行情况,含 CPU、内存、硬盘、网络、负载、进程等等:

可对各项服务状态进行监控,包括端口、网页、SSL 等:

可监控各主机网络状态,查看延迟:

支持多款主题切换,支持日间、夜间模式切换:

去不图床五周年蹭风 618 活动

2024年6月14日 00:00

不知不觉,去不图床即将运营了五周年「周年日 10 月 28」期间做过一些价格调整「大幅降价」但从未做过任何的活动,自杜老师自建 CDN 后,流量成本得到保障,虽依然有亏损,但不影响持续运营,今蹭风 618 开展优惠活动,感谢小伙伴们对去不图床的支持与活动的积极参与!

写在前面

去不图床从 2019 年 10 月 28 日始至今年即将满五年,期间由免费转为按量付费的图床。

相比其它平台高额的包月费,去不图床始终保持低价、年费、稳定、安全及高速等优势,广受博客圈小伙伴们支持与选择。

然而即便如此,去不图床依旧入不敷出,高昂的流量费是收入无法填补的。

好在今年杜老师开始自建 CDN,保障了流量费用的支出,虽然节点运营成本依旧高昂且超过了收入,但也减少了杜老师运营压力。

杜老师提供图床服务的初衷就是:为广大博客主提供低价、稳定、安全、高速图床服务,让博客主可以专注创作,而不是费心在管理图床。

去不图床从未做过推广、宣传,故此借助 618 这一风,开展优惠活动,感谢小伙伴们对去不图床的支持与活动的积极参与。不忘初心,方能始终!

活动规则

  1. 优惠活动限 2024 年 6 月 14 日 00:00:00 至 2024 年 10 月 28 日 23:59:59 期间;

  2. 优惠活动期间购买的兑换码,可在任意时间兑换;

  3. 优惠活动期间购买的兑换码,有效期至杜老师临终日;

  4. 如有小伙伴大量囤积兑换码,在未兑换之前,可以随时申请退款「每一个兑换码都会由支付宝收取一元的手续费」

  5. 优惠活动期间,仅限选购 5G 套餐可享受八折「24元」优惠,其它套餐皆不享受优惠;

  6. 优惠活动期间选购的 5G 套餐在当前套餐到期后生效;

  7. 优惠活动期间选购的 5G 套餐无法折算其它套餐;

  8. 最终解释权归去不图床所有。

图床架构

去不图床目前使用 16H32G 的配置,图床程序及缩略图存储在 512NVMe,图片数据存储在 1T 三星企业级 SSD,并周期同步至内网 RAID1 存储节点中。保障图床的安全性及稳定性:

杜老师自建 CDN 节点,所选节点皆为 8H8G 高配置,且上行带宽 30M,保障外链服务的高速性。目前暂为 9 个节点,其中境内 8 个,境外「上行千兆」 1 个:

写在最后

未来不知如何,图床前途未卜!

但杜老师会始终秉持着初心,为小伙伴提供低价且稳定的图床外链服务。

后面是否会有相似活动尚未可知,不过希望大家继续关注去不图床,期待更多小伙伴的参与!

图床容量兑换教程请见《去不图床容量兑换》一文,图床相关使用教程请见《去不图床新版升级计划》一文。

to do 工具 Vikunja 的安装与使用

2024年6月8日 00:00

应 LongHe 童靴需求,杜老师更新一篇 to do 开源工具 Vikunja 的安装与使用。本来是四月份应该更新,结果因为各种出差各种事情给耽误了,最后还给忘了~还好回访时看到了自己留言,趁空发出来供需要的小伙伴参考!

特性

  1. 列表视图类似待办事项列表、展示任务、其他属性;

  2. 甘特图可规划截止日期;

  3. 看板可组织任务以及确定优先级;

  4. 表格视图可以查看任务详细信息,标记任务;

  5. 可创建过滤器;

  6. 可确定任务优先级,分配任务;

  7. 可附加文件及关联不同任务;

  8. 可设置截止日期及通过链接共享项目。

部署

Vikunja 支持很多种安装方式,作为 Docker 的忠实用户,杜老师分享四个 docker-compose.yml 配置文件,区别是所使用的数据库不同,以下是 MariaDB 作为数据库的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version: '3'

services:
vikunja:
image: vikunja/vikunja
environment:
VIKUNJA_SERVICE_PUBLICURL: http://<the public url where vikunja is reachable>
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_PASSWORD: changeme
VIKUNJA_DATABASE_TYPE: mysql
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_DATABASE: vikunja
VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
depends_on:
db:
condition: service_healthy
restart: unless-stopped
db:
image: mariadb:10
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: supersecret
MYSQL_USER: vikunja
MYSQL_PASSWORD: changeme
MYSQL_DATABASE: vikunja
volumes:
- ./db:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER --password=$$MYSQL_PASSWORD"]
interval: 2s
start_period: 30s

以下是 PostgreSQL 作为数据库的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3'

services:
vikunja:
image: vikunja/vikunja
environment:
VIKUNJA_SERVICE_PUBLICURL: http://<the public url where vikunja is reachable>
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_PASSWORD: changeme
VIKUNJA_DATABASE_TYPE: postgres
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_DATABASE: vikunja
VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
depends_on:
db:
condition: service_healthy
restart: unless-stopped
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: changeme
POSTGRES_USER: vikunja
volumes:
- ./db:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"]
interval: 2s

如果仅是个人使用,没有那么大数据量,可考虑使用 SQLite:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vikunja:
image: vikunja/vikunja
environment:
VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
VIKUNJA_SERVICE_PUBLICURL: http://<your public frontend url with slash>/
# Note the default path is /app/vikunja/vikunja.db.
# This config variable moves it to a different folder so you can use a volume and
# store the database file outside the container so state is persisted even if the container is destroyed.
VIKUNJA_DATABASE_PATH: /db/vikunja.db
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
- ./db:/db
restart: unless-stopped

Vikunja 支持将数据存放在 Redis,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
vikunja:
image: vikunja/vikunja
environment:
VIKUNJA_REDIS_ENABLED: 1
VIKUNJA_REDIS_HOST: 'redis:6379'
VIKUNJA_CACHE_ENABLED: 1
VIKUNJA_CACHE_TYPE: redis
volumes:
- ./files:/app/vikunja/files
redis:
image: redis

截图

Vikunja 的默认主页:

使用列表模式展示任务:

使用甘特图的模式展示任务:

使用台子模式展示任务:

使用看板模式展示任务:

Vikunja 支持全局关键词搜索:

Vikunja 可修改背景图片:

Vikunja 支持切换至夜间模式:

终端

Vikunja 除了 Web 端外,还有其它平台终端。为了方便小伙伴们获取,杜老师已经把所有平台的 APP 转存到了网盘:

下载地址

Coolify 开源自托管的 Heroku/Netlify/Vercel 替代方案

2024年5月30日 00:00

Coolify 是一个开源、自托管应用程序部署和托管平台,旨在为开发人员提供类似 Heroku、Netlify 和 Vercel 的功能。它允许用户在自己的服务器上部署和管理各种应用程序、静态网站、API 后端服务和数据库等。

特点优势

自主托管:Coolify 允许部署资源到几乎任何服务器上,包括个人的服务器、树莓派等。只需要 SSH 连接,就能管理自己硬件资源。

多语言多框架支持:Coolify 与各种编程语言、框架兼容,可以部署和管理各种类型的应用程序。不论静态网站、API 后端服务还是数据库,Coolify 都能提供强大的支持。

SSL 证书和安全性:Coolify 会自动为自定义域名设置和更新 Let’s Encrypt 证书,确保应用程序的安全和加密连接。用户不需要担心证书繁琐设置和更新,Coolify 会自动处理这些问题。

监控、通知:Coolify 会监控部署、服务器磁盘使用情况等,并在发生任何问题时通过电子邮件等渠道通知。

安装脚本

1
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

注意:Coolify 支持通过源码及 Docker 等方式部署,上面是来自官方的一键部署脚本,可使用与生产环境。

运行要求


支持操作系统:

  1. 基于 Debian 的 Linux 发行版(Debian/Ubuntu 等)

  2. 基于 Redhat 的 Linux 发行版(CentOS/Fedora/Red Hat/AlmaLinux/Rocky 等)

  3. 基于 SUSE 的 Linux 发行版(SLES/SUSE/openSUSE 等)

    支持系统架构:

  4. AMD64 位架构;

  5. ARM64 位架构。

    所需的最低服务器配置:

  6. 双核心 CPU;

  7. 2048 兆内存;

  8. 30GB 以上的磁盘空间。

运行截图

控制面板:

项目列表:

项目设置:

服务堆栈:

环境变量:

命令执行:

运行日志:

后台设置:

节点设置:

通知功能:

Keys 以及 Tokens:

团队协作:

Web-Check 炫酷强大的网站测试工具

2024年5月27日 00:00

随着互联网普及和发展,Web 应用程序的数量越来越多,各种网络问题也是层出不穷,因而监测这些 Web 应用程序的性能和可用性变得非常重要。今天的文章和大家分享一款十分好用的的网站分析项目!

项目简介

Web-Check 是一款开源网站分析工具,能帮助我们快速的扫描网站,检测网站或主机的信息,发现网页性能和兼容性问题,包括 IP/SSL/DNS/Cookies 等信息。

比如,可帮助检测网页的语法错误、标签关闭、属性错误等等,确保网页的正确性;分析网页性能,提供优化建议,提升加载的速度和用户体验。

安装部署

1
docker run -p 3000:3000 lissy93/web-check

注意:项目支持非常多的部署方式,包括 Netlify/Vercel 的一键部署,Docker 部署和本地源码部署。这里仅以 Docker 部署的方式为例,使用上面的命令部署后,可通过 `IP:3000 访问。

配置设置

API 密钥和凭据:

变量说明
GOOGLE_CLOUD_API_KEYGoogle API 的密钥,这可用于返回网站质量指标。
REACT_APP_SHODAN_API_KEYShodan API 的密钥,这将显示给定域关联主机名。
REACT_APP_WHO_API_KEYWhoAPI 的密钥,这将显示比默认作业更全面的 WhoIs 记录。

配置设置:

变量说明
PORT运行 server.js 时提供 API 的端口(如 3000)
API_ENABLE_RATE_LIMIT为/api 端点启用速率限制(如 true)
API_TIMEOUT_LIMITAPI 请求的超时限制,以毫秒为单位(如 10000)
API_CORS_ORIGIN通过此处设置允许的主机名来启用 CORS(如 example.com
CHROME_PATHChromium 可执行文件路径(如/usr/bin/chromium)
DISABLE_GUI禁用 GUI 页,仅提供 API(如 false)
REACT_APP_API_ENDPOINTAPI 的端点,本地或者远程(如/api)

项目截屏

Web-Check 主界面截屏效果如下,在框中输入 URL,如 https://dusays.com,后点击 Analyze:

等待一会之后即可看到包括 IP/SSL/DNS/Cookies 等信息:

点击 Show Details 可查看详细加载信息:

页面的结尾处可以下载页面扫描报告,未来还支持更多的功能:

自建 CDN 联盟试运营

2024年5月9日 00:00

很多小伙伴感觉杜老师说的访问速度很快,去不图床外链比较稳定,经常会问杜老师用的是哪家的 CDN,这里统一回复:杜老师说及其旗下的所有服务用的都是自建 CDN。今日突发奇想打算弄个自建 CDN 的联盟,感兴趣的小伙伴可进来看看加入规则!

最低配置

所加入的服务器需满足以下最低配置:

项目配置
CPU1H
内存2G
硬盘50G
架构X86_64

系统版本

所加入的服务器需使用以下系统对应版本,并保证系统纯净度「指装好系统后,并未安装任何其它服务」

系统版本
Ubuntu18
Ubuntu20
Ubuntu22
Debian10
Debian11
Debian12
CentOS7
CentOS8
CentOS8 Stream
CentOS9 Stream
Rocky Linux8
Rocky Linux9

端口列表

所加入的服务器需开放以下端口:

端口说明
8000主控通信控制端口
80节点程序必用端口
443节点程序必用端口

入盟规则

  1. 满足以上配置、系统、端口需求;

  2. 节点名额仅有 40 个,当名额耗尽时,将根据服务器配置排位,将最低配置服务器移除联盟;

  3. 节点入联盟后需要完全托管,节点服务器上不能安装任何其它服务;

  4. 联盟根据节点带宽发放对应积分,按每兆一元积分来兑换;

  5. 平台使用积分兑换使用流量,费用为每 G 每小时 0.01 元积分「不足 1G 仍按 1G 计算」例如本日杜老师说 7-9 点流量消耗为 500M/1G/1.5G,则收费为 0.04 元;

  6. 本联盟为杜老师闲着没事突发奇想的,感兴趣的小伙伴可以考虑下,试运营的截止时间为文章发布日所在年的年底「即 2024-12-31」最终解释权归杜老师说所有。

Cloudreve 部署公私兼备的网盘系统「进阶配置」

2024年4月27日 00:00

别问,问就是没时间,问就是在水文。但杜老师保证,这是最后一篇,以后不再更新有关 Cloudreve 的教程,除非有小伙伴有所需求。之后得空杜老师会更新一些有意思的服务,但仅提供教材,服务器的资源有限,暂不提供服务平台。

配置文件

首次启动,Cloudreve 会在同级目录下创建名为 conf.ini 的配置文件,可以修改此文件进行一些参数的配置,保存后需要重新启动 Cloudreve 生效。也可在启动时使用如下命令指定配置文件路径:

1
./cloudreve -c ./conf.ini

一个完整配置文件示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
[System]
; 运行模式
Mode = master
; 监听端口
Listen = :5212
; 是否开启 Debug
Debug = false
; Session 密钥, 一般在首次启动时自动生成
SessionSecret = 23333
; Hash 加盐, 一般在首次启动时自动生成
HashIDSalt = something really hard to guss
; 呈递客户端 IP 时使用的 Header
ProxyHeader = X-Forwarded-For

; SSL 相关
[SSL]
; SSL 监听端口
Listen = :443
; 证书路径
CertPath = C:\Users\i\Documents\fullchain.pem
; 私钥路径
KeyPath = C:\Users\i\Documents\privkey.pem

; 启用 Unix Socket 监听
[UnixSocket]
Listen = /run/cloudreve/cloudreve.sock
; 设置产生的 socket 文件的权限
Perm = 0666

; 数据库相关,如果你只想使用内置的 SQLite 数据库,这一部分直接删去即可
[Database]
; 数据库类型,目前支持 sqlite/mysql/mssql/postgres
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = root
; 密码
Password = root
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = v3
; 数据表前缀
TablePrefix = cd_
; 字符集
Charset = utf8mb4
; SQLite 数据库文件路径
DBFile = cloudreve.db
; 进程退出前安全关闭数据库连接的缓冲时间
GracePeriod = 30
; 使用 Unix Socket 连接到数据库
UnixSocket = false

; 从机模式下的配置
[Slave]
; 通信密钥
Secret = 1234567891234567123456789123456712345678912345671234567891234567
; 回调请求超时时间 (s)
CallbackTimeout = 20
; 签名有效期
SignatureTTL = 60

; 跨域配置
[CORS]
AllowOrigins = *
AllowMethods = OPTIONS,GET,POST
AllowHeaders = *
AllowCredentials = false
SameSite = Default
Secure = lse

; Redis 相关
[Redis]
Server = 127.0.0.1:6379
Password =
DB = 0

; 从机配置覆盖
[OptionOverwrite]
; 可直接使用 `设置名称 = 值` 的格式覆盖
max_worker_num = 50

配置案例

数据库改为 MySQL。默认情况下 Cloudreve 会使用内置的 SQLite 数据库,并在同级目录创建数据库文件 cloudreve.db,如果您想要使用 MySQL,请在配置文件中加入以下的内容,并重启 Cloudreve。注意,Cloudreve 只支持大于或等于 5.7 版本的 MySQL,且更换数据库的配置后,Cloudreve 会重新初始化数据库,原有数据将会丢失:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Database]
; 数据库类型,目前支持 sqlite/mysql/mssql/postgres
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = root
; 密码
Password = root
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = v3
; 数据表前缀
TablePrefix = cd
; 字符集
Charset = utf8

使用 Redis 做缓存。可在配置文件中加入 Redis 相关设置,注意请为 Cloudreve 指定未被其它业务使用的 DB 以避免冲突。重启 Cloudreve 后,可注意控制台输出,以确定 Cloudreve 是否成功连接 Redis 服务器:

1
2
3
4
[Redis]
Server = 127.0.0.1:6379
Password = your password
DB = 0

覆盖从机节点的配置项。Cloudreve 的某些配置项是存储在数据库中的,但是从机节点并不会连接数据库,可以在配置文件中覆盖相应的配置项。比如,从机节点作为存储端运行时,可通过下面的配置设定从机生成的缩略图规格:

1
2
3
4
5
6
7
8
[OptionOverwrite]
thumb_width = 400
thumb_height = 300
thumb_file_suffix = ._thumb
thumb_max_task_count = -1
thumb_encode_method = jpg
thumb_gc_after_gen = 0
thumb_encode_quality = 85

如果从机节点作为离线下载节点使用,可以通过下面的配置覆盖默认的重试、超时参数,以避免默认的数值过于保守导致文件转存失败:

1
2
3
4
5
6
7
[OptionOverwrite]
; 任务队列最多并行执行的任务数
max_worker_num = 50
; 任务队列中转任务传输时,最大并行协程数
max_parallel_transfer = 10
; 中转分片上传失败后重试的最大次数
chunk_retries = 10

Cloudreve 部署公私兼备的网盘系统「单服务篇」

2024年4月24日 00:00

Cloudreve 除了支持 Docker 容器部署,官方还提供单服务部署方式。操作十分简单,仅需要一个文件即可搭建运行 Cloudreve。本文介绍了 Cloudreve 部署过程,及通过注册服务或守护进程方式实现后台运行。

部署过程

Linux 下,直接解压并执行主程序即可。这里以 3.8.3 版本为例,首先至官网下载压缩包,解压获取到主程序:

1
tar -zxvf cloudreve_3.8.3_linux_amd64.tar.gz

赋予执行权限:

1
chmod +x ./cloudreve

启动服务:

1
./cloudreve

Cloudreve 在首次启动会创建初始管理员账号,请注意保管管理员密码,此密码只会在首次启动出现。如忘记初始管理员密码,需删除同级目录下的 cloudreve.db,重新启动主程序以初始化新的管理员账户。Cloudreve 默认监听 5212 端口。可以在浏览器中通过下面地址访问 Cloudreve:

1
http://IP:5212

注册服务

通过上面的方式运行 Cloudreve,会一直占用着终端。为了不影响终端的使用,我们可将 Cloudreve 注册为服务,这样就算服务器重启后,Cloudreve 也可以自动启动。使用如下命令编辑配置文件:

1
vim /usr/lib/systemd/system/cloudreve.service

这里运行目录以/home/cloudreve 为例,参考配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target

[Service]
WorkingDirectory=/home/cloudreve
ExecStart=/home/cloudreve/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target

配置好文件后,使用下面命令使其生效:

1
systemctl daemon-reload

启动服务命令如下:

1
systemctl start cloudreve

设置开机启动命令如下:

1
systemctl enable cloudreve

停止服务命令如下:

1
systemctl stop cloudreve

重启服务命令如下:

1
systemctl restart cloudreve

查看状态命令如下:

1
systemctl status cloudreve

守护进程

首先要安装 supervisor,这里以 Ubuntu 系统为例,命令如下:

1
sudo apt-get install supervisor

初始化全局配置文件的命令如下:

1
2
sudo touch /etc/supervisord.conf
sudo echo_supervisord_conf > /etc/supervisord.conf

编辑全局配置文件:

1
sudo vim /etc/supervisord.conf

将文件底部的[include]分区注释符删除,加入新的配置文件包含路径:

1
2
[include]
files = /etc/supervisor/conf/*.conf

创建 Cloudreve 应用配置所在文件的目录,创建打开配置文件:

1
2
sudo mkdir -p /etc/supervisor/conf
sudo vim /etc/supervisor/conf/cloudreve.conf

根据实际情况填写以下内容:

1
2
3
4
5
6
7
8
[program:cloudreve]
directory=/home/cloudreve
command=/home/cloudreve/cloudreve
autostart=true
autorestart=true
stderr_logfile=/var/log/cloudreve.err
stdout_logfile=/var/log/cloudreve.log
environment=CODENATION_ENV=prod

配置好文件后,使用下面命令指定配置文件运行守护进程服务:

1
supervisord -c /etc/supervisord.conf

启动服务命令如下:

1
sudo supervisorctl start cloudreve

停止服务命令如下:

1
sudo supervisorctl stop cloudreve

查看状态命令如下:

1
sudo supervisorctl status cloudreve

反向代理

1
2
3
4
5
6
7
8
9
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5212;

# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
# client_max_body_size 20000m;
}

注意:如果需使用 HTTPS,亦或是需要与服务器上其他 Web 服务共存时,可能需使用主流 Web 服务器反向代理 Cloudreve。需要在 Web 服务器中新建一个虚拟主机,然后在网站配置文件中加入反代规则。这里以 Nginx 为例,在网站的 server 字段中加入如上代码。

Cloudreve 部署公私兼备的网盘系统「Docker Compose 篇」

2024年4月21日 00:00

Cloudreve 的一个特性,就是可以和 Aria2 整合实现离线下载功能。上篇教程仅说明了 Cloudreve 的部署,并没有说明如何部署 Aria2 以及如何整合。本篇教程说明如何通过 Docker Compose 部署 Cloudreve 及 Aria2。

部署脚本

在此之前,需要创建 data 等目录作为离线下载临时中转目录,可以使用下面命令创建目录结构:

1
2
3
4
5
6
mkdir -vp cloudreve/{uploads,avatar} \
&& touch cloudreve/conf.ini \
&& touch cloudreve/cloudreve.db \
&& mkdir -p aria2/config \
&& mkdir -p data/aria2 \
&& chmod -R 777 data/aria2

然后将下面的脚本保存为 docker-compose.yml,放置当前目录。同时修改文件中 RPC_SECRET

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
version: "3.8"
services:
cloudreve:
container_name: cloudreve
image: cloudreve/cloudreve:latest
restart: unless-stopped
ports:
- "5212:5212"
volumes:
- temp_data:/data
- ./cloudreve/uploads:/cloudreve/uploads
- ./cloudreve/conf.ini:/cloudreve/conf.ini
- ./cloudreve/cloudreve.db:/cloudreve/cloudreve.db
- ./cloudreve/avatar:/cloudreve/avatar
depends_on:
- aria2
aria2:
container_name: aria2
image: p3terx/aria2-pro
restart: unless-stopped
environment:
- RPC_SECRET=your_aria_rpc_token
- RPC_PORT=6800
volumes:
- ./aria2/config:/config
- temp_data:/data
volumes:
temp_data:
driver: local
driver_opts:
type: none
device: $PWD/data
o: bind

运行镜像

通过下面命令运行镜像,运行时的输出信息会直接显示在当前控制台中,可以看到管理员的账号及密码:

1
docker-compose up

为了不占用前台的使用,可使用下面的命令切换后台运行模式:

1
docker-compose up -d

如需关闭当前运行容器,可以运行以下命令。注意此步骤不会删除挂载的配置文件以及相关目录:

1
docker-compose down

如需升级 Cloudreve 容器的版本,可以使用以下命令获取最新镜像:

1
2
3
docker-compose down
docker pull cloudreve/cloudreve
docker-compose up -d

Cloudreve 部署公私兼备的网盘系统「Docker 篇」

2024年4月18日 00:00

之前发了一篇个人网盘工具搭建教程,有小伙伴反馈部分功能无法正常使用,还是希望杜老师能推荐其它网盘系统。纠结许久,杜老师还是决定把 Cloudreve 拿出来,至于纠结的原因嘛,毕竟很多小伙伴都写过类似教程。杜老师都想复制粘贴水文了~

什么是 Cloudreve

Cloudreve 可快速搭建起公私兼备的网盘系统。Cloudreve 在底层支持不同的云存储平台,用户在实际使用时无须关心物理存储方式。

可以使用 Cloudreve 搭建个人用网盘、文件分享系统,亦或针对大小团体的公有云系统。

工具特点

多样化的外部存储。支持对接多种外部存储的存储端,文件的上传和下载全部为客户端直传,无需经过服务器的中转。

虚拟文件系统。Cloudreve 基于 DBMS 构建了一层文件系统抽象,将用户文件和物理文件结构隔离,用户管理文件时无需关注底层的存储方式,也可同时管理多个外部存储。

从机存储节点。可以将多个 Cloudreve 实例组成主从集群,将文件离线下载任务分配到不同的服务器处理。

压缩文件支持。可在线解压缩文件,或是创建新的压缩文件。

打包下载。选择任意数量文件,直接下载打包后的文件,支持 Web 端打包和服务端打包。

安全登录。使用 FIDO2 物理验证器登录,或者为账号设定两因素登录验证。

管理后台。管理员可以通过后台面板图形化配置站点,审计站点内容。

文件检索。可通过自定义文件标签检索文件,或通过关键字搜索文件。

网盘部署

首先请确保运行 Cloudreve 之前创建目录结构,进入到部署目录中,运行下面命令:

1
2
3
mkdir -vp cloudreve/{uploads,avatar} \
&& touch cloudreve/conf.ini \
&& touch cloudreve/cloudreve.db

创建好上面的目录及文件后,运行下面命令即可自动下载 Cloudreve 容器并启动服务:

1
2
3
4
5
6
7
8
docker run -d \
--name cloudreve
-p 5212:5212 \
--mount type=bind,source=./cloudreve/conf.ini,target=/cloudreve/conf.ini \
--mount type=bind,source=./cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db \
-v ./cloudreve/uploads:/cloudreve/uploads \
-v ./cloudreve/avatar:/cloudreve/avatar \
cloudreve/cloudreve:latest

使用效果

待服务运行后,通过 http://IP:5212 可访问 Cloudreve 的登录页面,运行下面的命令可查询到管理员密码:

1
docker logs cloudreve | grep password

使用默认管理员账号 admin@cloudreve.org,及上面查询的密码,登录后即可看到网盘主页面:

使用 Docker 部署 JmalCloud 个人网盘

2024年4月12日 00:00

很多小伙伴习惯使用 Alist 和 Cloudreve 等软件来管理存储,今天杜老师为搭建推荐另外一款网盘工具。JmalCloud 是款私有云存储网盘项目,能够简单安全管理云端文件。

工具优点

  • 支持 OSS/COS 和 MinIO 等。

  • 支持图片、音频、视频等文件的在线预览。

  • 支持 Word/Excel/PPT 及流程图和思维导图的编辑和预览。

  • 可支持 X86/ARM64。

  • 提供强大的在线文本编辑器。

  • 支持超大文件上传、断点续传。

服务部署

将下面的代码保存为 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
version: "3"
services:
jmalcloud:
container_name: jmalcloud_server
image: jmal/jmalcloud:latest
environment:
MONGODB_URI: mongodb://mongo:27017/jmalcloud
TZ: Asia/Shanghai
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
mongo:
container_name: jmalcloud_mongodb
image: mongo:4.4
environment:
TZ: Asia/Shanghai
volumes:
- ./docker/jmalcloud/mongodb/data/db:/data/db
restart: unless-stopped
command: --wiredTigerCacheSizeGB 0.5
nginx:
container_name: jmalcloud_nginx
image: jmal/jmalcloud-nginx:latest
ports:
- 7070:80
- 7071:8089
environment:
TZ: Asia/Shanghai
links:
- jmalcloud
- office
- drawio-webapp
restart: unless-stopped
office: # Optional
container_name: jmalcloud_office
image: onlyoffice/documentserver:7.0.0.132
environment:
TZ: Asia/Shanghai
restart: unless-stopped
drawio-webapp: # Optional
container_name: jmalcloud_drawio
image: jgraph/drawio:20.2.3
environment:
TZ: Asia/Shanghai
restart: unless-stopped

使用下面命令即可创建并启动 JmalCloud:

1
docker compose up -d

重置密码

等待 JmalCloud 启动后,即可通过 http://IP 访问 JmalCloud。用户名 admin ,默认密码为 jmalcloud。如果密码遗失,可使用下面的命令重置:

1
docker exec -it jmalcloud_mongodb mongo jmalcloud --eval "db.getCollection('user').update({ 'creator': true }, {\$set: { 'password': '1000:c5b705ea13a1221f5e59110947ed806f8a978e955fbd2ed6:22508de12228c34a235454a0caf3bcaa5552858543258e56' }}, { 'multi': false, 'upsert': false })"

执行完重置命令后,还需重启容器才可生效,重置后的密码为 jmalcloud

1
docker restart jmalcloud_server

部分截图

JmalCloud 个人网盘的登录页面:

支持在线新建文本、思维导图、流程图等::

支持在线编辑文本文件:

支持 Word 等格式文件在线编辑:

支持在线新建及编辑流程图:

支持在线编辑思维导图:

可直接在页面中直接拖拽来上传或是移动文件:

支持各种类型文件识别:

Docker 自建超炫酷监控页面系统

2024年4月6日 00:00

Kener 是一款开源状态页面工具,旨在使服务监控和事件处理变得轻而易举。它提供了一个时尚和用户友好的界面,简化跟踪服务中断,并改善在事件发生时的沟通方式。最棒的是 Kener 与 GitHub 的无缝集成,使在协作和友好的环境中更轻松地跟踪和解决问题。

项目特征

监控跟踪:

  1. 实时监控;
  2. 为访问者处理时区;
  3. 将监控器分为不同部分;
  4. 基于计划任务的监控器调度;
  5. 使用 YAML 灵活配置监控器;
  6. 支持监控器的默认状态。

定制品牌:

  1. 使用 YAML 或代码定制状态页面;
  2. 为监控器的状态和正常运行时间生成徽章;
  3. 支持自定义域;
  4. 浅色、深色主题。

事件管理:

  1. 可使用 Github 创建事件;
  2. 或使用 API 创建事件。

用户体验:

  1. 易于安装、设置;
  2. 用户友好界面;
  3. 适合各种设备的响应式设计;
  4. 自动搜索引擎优化。

部署安装

创建配置文件目录:

1
mkdir -p /host/path/to/config

将下面代码根据实际需求修改后保存为 docker-compose.yml,然后执行 docker-compose -f docker-compose.yml up -d 即可创建和启动服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: '3.7'
services:
kener:
image: rajnandan1/kener:latest # assuming this is final namespace/image
container_name: kener
environment:
- TZ=Asia/Shanghai
#- GH_TOKEN=
#- API_TOKEN=
#- API_IP

# If running on a LINUX HOST and not podman rootless these MUST BE SET
# run "id $user" from command line and replace numbers below with output from command
#- PUID=1000 # gid
#- PGID=1000 # uid

### Most likely DO NOT need to change anything below this ###

#- PORT=3000 Port app listens on IN CONTAINER

### If any of the below are changed make sure the bound volume is correct as well ###
#- CONFIG_DIR=/config
#- PUBLIC_KENER_FOLDER=/config/static
#- MONITOR_YAML_PATH=/config/monitors.yaml
#- SITE_YAML_PATH=/config/site.yaml

ports:
- '3000:3000/tcp'
volumes:
- '/host/path/to/config:/config:rw'

定制监控

可使用 vim /host/path/to/config/monitors.yaml 命令编辑配置文件,参考模版如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- name: Google Search
description: Search the world's information, including webpages, images, videos and more.
tag: "google-search"
image: "/google.png"
api:
method: GET
url: https://www.google.com/webhp
- name: Svelte Website
description: Cybernetically enhanced web apps
tag: "svelte-website"
api:
method: GET
url: https://svelte.dev/
image: "/svelte.svg"
- name: Earth
description: Our blue planet
tag: "earth"
defaultStatus: "UP"
image: "/earth.png"
- name: Frogment
description: A free openAPI spec editor and linter that breaks down your spec into fragments to make editing easier and more intuitive. Visit https://www.frogment.com
tag: "frogment"
image: "/frogment.png"
api:
method: GET
url: https://www.frogment.com

修改好文件后,使用下面命令重启服务:

1
docker restart kener

效果截图

默认显示 90 天内的服务状态,最细粒度到分钟级:

支持 API 监控服务的状态:

可通过脚本调用在站内显示监控数据:

可直接在页面引用监控数据细节:

可在 GitHub 中直接创建事件:

监控数据支持各种调用方式:

部署完成后可通过 http://IP:3000 访问,支持反向代理:

支持浅色、深色模式切换:

MinIO 的部署及与 Memos 的整合

2024年4月3日 00:00

之前杜老师将说说广场资源转存至缤纷云,没想到刚用没两天,免费的资源就被用光了。对于 CDN 这种无底洞,杜老师还是决定买个服务器,自行部署存储服务。这里整理了部署和整合步骤,供需要的小伙伴们参考。

MinIO 的介绍

MinIO 是种高性能、S3 兼容的对象存储。

专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储。

无需购买任何专有硬件,就可以云上和普通硬件上拥有分布式对象存储。

MinIO 拥有开源 GNU AGPL v3 和商业企业许可证双重许可。

MinIO 的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
services:
minio:
command: server /data --console-address :9001 --address :9000
container_name: minio
deploy:
resources:
limits:
cpus: 0
memory: 0
environment:
MINIO_BROWSER: "on"
MINIO_BROWSER_LOGIN_ANIMATION: "on"
MINIO_BROWSER_REDIRECT_URL: http://127.0.0.1:9001
MINIO_BROWSER_SESSION_DURATION: "12h"
MINIO_ROOT_PASSWORD: "minioadmin"
MINIO_ROOT_USER: "minioadmin"
MINIO_SERVER_URL: http://127.0.0.1:9000
image: minio/minio:RELEASE.2024-02-26T09-33-48Z
labels:
createdBy: Apps
logging:
driver: json-file
options:
max-file: "10"
max-size: 5M
ports:
- 9001:9001
- 9000:9000
restart: always
volumes:
- ./data:/data
- ./certs:/root/.minio/certs
version: "3"

注意:将上面的内容,根据实际需求略作调整「因为自定义项较多,杜老师就不一一标注了.如有问题可以自行搜索,或在评论区中留言」保存为 docker-compose.yml,之后使用命令 docker-compose -f docker-compose.yml up -d 启用就行了。

初始设置

打开浏览器输入 http://IP:9000/,输入 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 的值 minioadmin,登录到控制台:

目前暂无中文界面,不过好在配置简单,且不需要太多配置。点击左侧的 Buckets,再点击右侧 Create Bucket。在 Bucket Name 框中输入存储桶的名称,后点击 Create Bucket 即可:

待页面刷新后,点击刚创建好的存储桶,点击 Summary->Access Policy 项,将值设置为 Public:

之后点击左侧的 Access Keys 创建一个密钥。这里需要注意的是 Secret Key 项仅创建时可见,请保持好!如有遗忘可以重新创建:

与 Memos 整合

参考下图中的参数配置即可。需要注意的是,9000 是控制台的端口,API 的端口是 9001

也许您的下一个主机应该是软云

2024年3月25日 00:00

在当今数字化时代,云主机服务成为企业和个人建设网站、部署应用重要选择。然而,面对众多云主机服务商,如何挑选到最适合自己需求的呢?今天,杜老师向小伙伴们推荐一家服务器提供商!

写在前面

一周前杜老师接到一个赞助邀请,是软云的工作人员,赞助杜老师说一台云服务器,说是希望可以帮忙推广一下。

在此之前杜老师也接到过其它服务器提供商的合作邀请,不过他们并没有像软云一样自信,又或者说福利很好。

其它服务器提供商都是扔出一篇软文,然后说首页置顶多少天就给多少钱之类的。杜老师要求先测试一段时间,再发文章之类要求,直接被拒绝了。

软云这边就比较自信了,直接给出一台云服务器,并仅要求挂个链接即可,至于文章的话并没有明确的要求。

当杜老师表示需测试后才会发文等一系列要求,软云这边都表示没问题。

经过一周高强度的性能、稳定性和安全性的测试,杜老师决定发文推荐下软云主机。

性能测试

为了让小伙伴们可以直观的看到服务器的数据,杜老师选了个通用性的测试脚本,运行下面命令即可:

1
wget -qO- bench.sh | bash

测试结果如下「杜老师的主机为定制款,没有出现在套餐列表中。另测速表中删掉了一些境外测试数据」

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-------------------- A Bench.sh Script By Teddysun -------------------
Version : v2023-10-15
Usage : wget -qO- bench.sh | bash
----------------------------------------------------------------------
CPU Model : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
CPU Cores : 8 @ 2294.684 MHz
CPU Cache : 46080 KB
AES-NI : ✓ Enabled
VM-x/AMD-V : ✓ Enabled
Total Disk : 130.9 GB (8.0 GB Used)
Total Mem : 7.8 GB (948.3 MB Used)
Total Swap : 4.0 GB (524.0 KB Used)
System uptime : 4 days, 1 hour 57 min
Load average : 0.02, 0.06, 0.02
OS : Ubuntu 22.04.4 LTS
Arch : x86_64 (64 Bit)
Kernel : 5.15.0-101-generic
TCP CC : cubic
Virtualization : KVM
IPv4/IPv6 : ✓ Online / ✗ Offline
Organization : AS58519 Cloud Computing Corporation
Location : Beijing / CN
Region : Beijing
----------------------------------------------------------------------
I/O Speed(1st run) : 225 MB/s
I/O Speed(2nd run) : 199 MB/s
I/O Speed(3rd run) : 213 MB/s
I/O Speed(average) : 212.3 MB/s
----------------------------------------------------------------------
Node Name Upload Speed Download Speed Latency
Speedtest.net 26.36 Mbps 196.86 Mbps 29.30 ms
Los Angeles, US 28.13 Mbps 87.58 Mbps 204.70 ms
Shanghai, CN 27.72 Mbps 190.41 Mbps 40.78 ms
Singapore, SG 27.79 Mbps 156.85 Mbps 220.28 ms
----------------------------------------------------------------------
Finished in : 8 min 32 sec
Timestamp : 2024-03-24 22:16:17 CST
----------------------------------------------------------------------

配置价格

软云主要提供主机和服务器,节点位于香港和内蒙古,以下是香港主机配置及价格:

以下是内蒙主机配置及价格,年付有八折优惠哦:

扶持活动

软云在 2024 年提供了站长扶持计划,可免费为站长们赞助服务器,所提供的主机可选香港节点或内蒙古节点,主机配置可以协商,可选范围如图:

计划规则以及主机购买地址如下,感兴趣的小伙伴可以去看看:

PostgreSQL13 升级 14 两种方法

2024年3月22日 00:00

经常会有小伙伴来聊天广场摸鱼,杜老师之前尝试直接更换 PostgreSQL 版本,结果差点导致数据丢失。最近整理了一些 PostgreSQL 版本升级方法,供有需要的小伙伴参考。

pg_upgrade 法

在开始升级前,请确保数据库已经完整备份。这可以通过使用 pg_dump 工具完成。

确保服务器已经安装 PostgreSQL14,包括客户端库。如果服务器上已经安装了 PostgreSQL13,需要先卸载它,然后再安装 PostgreSQL 14。

使用 pg_upgrade 工具来升级数据目录。例如,如果当前的数据目录位于/var/lib/postgresql/13/main,那么升级命令可参考 pg_upgrade -b /var/lib/postgresql/13/main -B /var/lib/postgresql/14/main -d /usr/local/pgsql/14/bin -u postgres

确保使用正确的路径和 PostgreSQL 14 的安装路径。

编辑主配置 postgresql.conf 文件,修改任何可能与新版本不兼容的设置。

使用 PostgreSQL14 启动服务器。

使用 psql 连接到数据库并检查版本信息,确保一切正常。

一旦确认升级成功,可以删除旧版本的数据目录。

pg_dump 法

在升级前,务必备份 PostgreSQL 数据库。可以使用 pg_dump 命令来创建数据库的备份:

1
pg_dump -h localhost -U postgres -Fc -f backup.dump mydb

安装新版本 PostgreSQL:

1
2
sudo apt-get update
sudo apt-get install postgresql-14

升级 PostgreSQL 的数据版本:

1
2
sudo pg_dropcluster --stop 13 main
sudo pg_upgradecluster 13 main

恢复数据:

1
pg_restore -h localhost -U postgres -d mydb backup.dump

删除旧版本 PostgreSQL:

1
sudo apt-get purge postgresql-13

重启 PostgreSQL 的服务:

1
sudo systemctl restart postgresql-14

Docker 搭建轻量高颜值个人导航页面

2024年3月19日 00:00

最近拜访博客圈的小伙伴时,发现很多博主习惯在主页内加一个导航页。之前杜老师也在纠结是否要添加,其实是因为没找到心仪的导航页。恰好近期在网上闲逛时,发现了这款轻量高颜值的导航页,分享给需要的小伙伴们!

工具介绍

Flare 是一款轻量、快速、美观个人导航页面,适用于 HomeLab 或其它注重私密的场景。

可支持 Docker 一键部署,维护方便。

无任何数据库依赖。应用数据完全开放透明。

支持在线编辑。支持 x86 及常见的 ARM 设备。应用资源消耗很低。

工具特点

服务资源消耗极低,可以跑在任何规格的机器上。

程序页面性能较好,渲染速度更快,支持同时渲染大量书签。

使用声明的配置来进行导航内容管理,无需担心数据迁移问题。

简化了天气数据的获取方式,不再需要申请天气网站的 API_KEY,避免不必要的成本开销。

内置大量风格统一、高质量的矢量图标,确保界面长期耐看。

默认使用免登陆的模式,避免了 HomeLab、本地使用的用户有额外登录操作。

工具部署

启动应用非常简单,如果您习惯使用 Docker,可以执行:

1
docker run -d -p 5005:5005 -v `pwd`/app:/app soulteary/flare

如果您习惯使用 docker-compose,只需要执行 docker-compose up -d

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3.6'

services:
flare:
image: soulteary/flare
restart: always
# 默认无需添加任何参数,如有特殊需求
# 可阅读文档 https://github.com/soulteary/docker-flare/blob/main/docs/advanced-startup.md
command: flare
# 启用账号登陆模式
# command: flare --nologin=0
# environment:
# 如需开启用户登陆模式,需要先设置 `nologin` 启动参数为 `0`
# 如开启 `nologin`,未设置 FLARE_USER,则默认用户为 `flare`
# - FLARE_USER=flare
# 指定你自己的账号密码,如未设置 `FLARE_USER`,则会默认生成密码并展示在应用启动日志中
# - FLARE_PASS=your_password
# 是否开启“使用向导”,访问 `/guide`
# - FLARE_GUIDE=1
ports:
- 5005:5005
volumes:
- ./app:/app

效果截图

部署完成之后,访问服务器 5005 端口,就能看到下面的界面啦:

在 Flare 启动之后,您可以随时访问/guide,获取 Flare 基础界面功能的介绍:

为满足随时随地编辑的需求,程序新增了在线编辑的页面。地址是/editor

为了减少不必要的地址记忆负担,程序新增一个帮助页面,默认展示所有程序内的工具页面。地址是/help

又一款开源且炫酷的多功能监控平台

2024年3月16日 00:00

之前为小伙伴们推荐了一款高颜值的监控工具,但其监控维度较少,不符合部分高需求用户。今天为小伙伴们推荐另一款监控工具,不仅可以监控服务器的状态,还可监控各类服务,甚至是应用程序等,感兴趣的小伙伴可点进文章查看。

工具介绍

phoenix 是一个灵活可配置的开源监控平台,主要用于监控应用程序、服务器各参数、容器、各平台数据库、网络、TCP 端口以及 HTTP 接口,通过实时收集、汇聚以及分析监控信息,实现在发现异常时立刻推送告警信息,并且提供了可视化系统进行配置、管理、查看。

工具特点

  1. 可分布式;

  2. 可跨平台;

  3. 可支持 Docker 部署;

  4. 实时监测告警;

  5. 数据加密传输;

  6. 灵活配置;

  7. 用户界面支持 PC 端、移动端等;

  8. 基于 HTTP 接口支持拓展实现监控其它编程语言编写的程序。

监控 UI 端部署

1
docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 443:443 --pid host --net host --name phoenix-ui phoenix/phoenix-ui /bin/bash

phoenix 服务端部署

1
docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 16000:16000 --pid host --net host --name phoenix-server phoenix/phoenix-server /bin/bash

phoenix 客户端部署

1
docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 12000:12000 --pid host --net host --name phoenix-agent phoenix/phoenix-agent /bin/bash

效果截图

推荐一款超高颜值开源服务器仪表盘

2024年3月13日 00:00

随着互联网技术的飞速发展,服务器已经成为现代社会不可或缺的基础设施。为了保障服务器的稳定运行,我们需对服务器进行有效的监控。传统的服务器监控工具往往功能复杂,配置繁琐,不太友好。今天给大家介绍一个高颜值开源项目,非常适合于个人服务器。

工具介绍

dash.是一款开源的服务器监控工具,旨在为用户提供简洁易用以及功能强大的监控体验。dash.采用 TypeScript 语言开发,可监控服务器的 CPU、内存、磁盘、网络等多种指标及维度。下面是该项目的 GitHub 地址:

工具安装

dash.支持 Docker 一键部署,可参考下面的命令:

1
2
3
4
5
docker container run -it \
-p 80:3001 \
-v /:/mnt/host:ro \
--privileged \
mauricenino/dashdot

如需要监控 GPU 数据,可使用下面的命令部署:

1
2
3
4
5
6
7
docker container run -it \
-p 80:3001 \
-v /:/mnt/host:ro \
--privileged \
--gpus all \
--env DASHDOT_WIDGET_LIST="os,cpu,storage,ram,network,gpu"
mauricenino/dashdot:nvidia

效果截图

dash.白天版页面效果截图,其中显示整体 CPU 使用率:

dash.夜间版页面效果截图,其中显示各核 CPU 使用率:

功能扩展

如有一些自定义的参数设置,可使用下面的代码:

1
2
3
docker container run -it \
--env DASHDOT_ENABLE_CPU_TEMPS="true" \
# ...

全部自定义的参数,可至官网 Wiki 页面中查看:

Tiny RDM 一个轻量优美的 Redis 客户端

2024年3月10日 00:00

可能在这之前大部分的人一直用的是 RedisDesktopManager 或者是 Redis 的官方可视化工具 RedisInsight 来对 Redis 进行操作和管理。前段时间不经意看到了颜值高且简约的 Redis 可视化工具 Tiny RDM。Tiny RDM 是一个现代化轻量级的跨平台 Redis 桌面客户端。

功能特性

  • 极度轻量,无内嵌浏览器。

  • 界面精美易用,提供浅色/深色主题。

  • 多国语言支持:英文/中文。

  • 更好用的连接管理。

  • 增删查改一应俱全。

  • 支持多种数据查看格式以及转码/解压方式。

  • 轻松处理数百万键列表。

  • 操作命令执行日志展示。

  • 支持命令实时监控。

  • 支持导入/导出数据。

  • 支持发布订阅。

  • 支持导入/导出连接配置。

效果截图

工具支持双语言的切换「中文、英文」默认会根据系统语言自动的切换:

可针对多数据库做查询、修改:

官网地址

Tiny RDM 的官网地址如下,默认为英文的界面,可在右上角切换为中文:

下载地址

Windows 绿色版:

下载地址

苹果系统 X86 架构版:

下载地址

苹果系统 ARM 架构版:

下载地址

DEB 安装包:

下载地址

YesPlayMusic 高颜值的第三方网易云播放器

2024年3月7日 00:00

之前发布了一篇高颜值的第三方网易云播放器部署教程,但随着版本的更新,原有的版本不可用。前几天刚好一个小伙伴有部署的需求,杜老师就重新编译了下,整理该篇教程,供有需要的小伙伴参考!

特性

  • 使用 Vue.js 全家桶开发。

  • 可扫码登录网易云账号。

  • 可支持 MV 播放。

  • 支持歌词显示。

  • 可支持私人 FM。

  • 每日推荐歌曲。

  • 没有任何社交功能。

  • 每日自动签到。

  • 支持音乐云盘。

  • 自定义快捷键和全局快捷键。

  • 可支持 PWA,在 Chrome/Edge 里点击地址栏右边的安装到电脑。

  • 可支持 Mpris。

部署

杜老师已经将最新版本编程成 Docker 并传至 Docker Hub,可使用下面的命令一键部署。注意-p 8080:80 中的 8080 可自定义,用于访问或者反代:

1
docker run -d --name YesPlayMusic -p 8080:80 penndu/yesplaymusic

如使用 Docker Compose 管理,可以将下面的内容保存为 docker-compose.yml 文件,并通过命令 docker-compose up -d 启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
services:
YesPlayMusic:
image: penndu/yesplaymusic
container_name: YesPlayMusic
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./docker/nginx.conf.example:/etc/nginx/conf.d/default.conf:ro
ports:
- 80:80
restart: always
depends_on:
- UnblockNeteaseMusic
environment:
- NODE_TLS_REJECT_UNAUTHORIZED=0
networks:
my_network:

UnblockNeteaseMusic:
image: pan93412/unblock-netease-music-enhanced
command: -o kugou kuwo migu bilibili pyncmd -p 80:443 -f 45.127.129.53 -e -
# environment:
# JSON_LOG: true
# LOG_LEVEL: debug
networks:
my_network:
aliases:
- music.163.com
- interface.music.163.com
- interface3.music.163.com
- interface.music.163.com.163jiasu.com
- interface3.music.163.com.163jiasu.com
restart: always

networks:
my_network:
driver: bridge

效果

歌词模式:

音乐库的夜间模式:

专辑详情页面:

首页界面:

歌手界面:

搜索界面:

首页页面:

发现界面:

下载

YesPlayMusic 支持 Windows/macOS 等平台客户端,下面是 Windows 版的下载地址:

下载地址

FileCodeBox 文件快递柜

2024年3月4日 00:00

很多时候,我们都需要将一些文件或文本传送给别人,或者跨端传递一些信息,但我们又不想为了分享,而去下载一些客户端的软件,这个时候,我们就可以使用口令传送箱。

主要特色

  • 轻松上传:复制粘贴,拖拽选择。

  • 多种类型:文本,文件。

  • 防止爆破:错误次数限制。

  • 防止滥用:可针对 IP 限制上传次数。

  • 口令分享:随机口令,存取文件,自定义次数以及有效期。

  • 匿名分享:无需注册,无需登录。

  • 管理面板:查看所有文件,删除文件。

  • 一键部署:可使用 Docker 一键部署。

准备工作

新建一个空白目录:

1
2
mkdir /opt/FileCodeBox
cd /opt/FileCodeBox

在上面的目录中新建一个.env 环境变量文件,将下列字段内容替换成您自己的「如没有新建此文件,将会使用系统默认配置」

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 端口
PORT=12345
# Sqlite数据库文件
DATABASE_URL=sqlite+aiosqlite:///database.db
# 静态文件夹
DATA_ROOT=./static
# 静态文件夹URL
STATIC_URL=/static
# 开启上传
ENABLE_UPLOAD=True
# 错误次数
ERROR_COUNT=5
# 错误限制分钟数
ERROR_MINUTE=10
# 上传次数
UPLOAD_COUNT=60
# 上传限制分钟数
UPLOAD_MINUTE=1
# 删除过期文件的间隔(分钟)
DELETE_EXPIRE_FILES_INTERVAL=10
# 管理地址
ADMIN_ADDRESS=admin
# 管理密码
ADMIN_PASSWORD=admin
# 文件大小限制,默认10MB
FILE_SIZE_LIMIT=10
# 网站标题
TITLE=文件快递柜
# 网站描述
DESCRIPTION=FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件,图片,视频,音频,压缩包等文件
# 网站关键词
KEYWORDS=FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件,图片,视频,音频,压缩包等文件
# 存储引擎
STORAGE_ENGINE=filesystem

一键部署

一键安装:

1
docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:beta

一键更新:

1
docker pull lanol/filecodebox:beta && docker stop filecodebox && docker rm filecodebox && docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:beta

后端地址:

1
/#/admin

后台密码:

1
FileCodeBox2023

效果截图

FileCodeBox 首页效果图:

点击首页左下角的上传图标,可以选择上传文件:

标签切换至文本后,即可粘贴文本:

在后台可对 FileCodeBox 网站名称、描述等配置项进行设置:

在文件管理页面中可对已上传的文件进行管理:

支持日间、夜暗模式切换:

密码托管服务各平台 APP 分享

2024年3月1日 00:00

为了方便小伙伴的使用,杜老师收集了常见平台的 APP。除正文的安装包外,还有各主流浏览器插件,请有需要的小伙伴自行前往各浏览器应用商店自行下载,如需要代下载某歌浏览器的插件,可在评论区中留言。

Windows 端

Windows 10/11 双平台标准安装程序:

下载地址

单文件免安装版本,可放置优盘中运行,但是需注意不支持自动更新:

下载地址

macOS 端

macOS Mojave 10.14 及更高版本,官方描述支持英特尔和 M 处理器:

下载地址

Linux 端

Linux 仅限 x64 标准安装程序,仅限图形界面:

下载地址

Ubuntu/Debian/Linux Mint 等,但是需注意不支持自动更新:

下载地址

Fedora/CentOS/RHEL/openSUSE 等,但是需注意不支持自动更新:

下载地址

Android 端

该版本为某歌商店转存官方版本,在国内环境不支持自动更新:

下载地址

杜老师说旗下免费密码托管平台

2024年2月27日 00:00

前端时间和小伙伴聊 LastPass 密码泄露问题,杜老师的宗旨就是数据一定要握在自己的手里,借着之前教程搭建了一个密码的托管平台,自己用着感觉浪费,准备分享出来供需要的小伙伴们一起使用!

平台功能

  • 组织支持。

  • 附件、发送。

  • 支持 Vault API 的功能。

  • 为 Vault 界面提供静态文件。

  • 网站图标 API 的支持。

  • 身份验证器和 U2F 的支持。

  • YubiKey 和 Duo 的支持。

  • 紧急通道。

食用方法

使用浏览器访问 bw.dusays.com,初次使用点击创建账户「该平台为去中心化管理,并没有管理员角色,无需担心杜老师会窃取所托管的密码」

平台使用非验证邮箱作为登录用户名「无需验证邮箱」需要注意的是,平台暂不支持登录密码找回功能,且平台无后台杜老师没办法协助找回,所以一定要记住设置的密码!一定要记住设置的密码!一定要记住设置的密码!

平台支持密码、设备授权登录两种方式,其中设备授权需终端设备安装对应 APP,请在注意事项中找到对应版本的 APP 安装包:

登录平台后点击右上方新增——项目,即可保存密码信息。杜老师推荐安装浏览器插件,可以快速实现密码保存、自动填写功能:

在工具页面中,可以生成高强度的密码「支持指定密码强度」且支持数据的导入、导出:

在报告页面中,可检测暴露的密码、重复使用密码、弱密码等,其余功能可以自行发掘:

注意事项

  1. 为运营该平台,杜老师特地买了台凉心云服务器,服务有效周期一年「至 2025 年 02 月 28 日止」截止日前,请小伙伴们记得导出自己的密码,避免数据丢失;

  2. 服务器到期后,杜老师会根据自己使用,及平台使用情况考虑是否要为服务器续费。但因杜老师看不到后台数据,所以在 2025 年 02 月 21 日时统计平台使用情况;

  3. 平台已做好相关的防护工作,但无法 100% 保障数据安全,毕竟连 LastPass 这种专业平台都出现了密码泄露问题,小伙伴们可以自行选择是否使用平台;

  4. 平台 APP 已适配 Windows/macOS/Linux 等系统,支持各主流浏览器,且支持手机端。如需下载可自行搜索 Bitwarden,下载对应版本即可。也可在评论区留言,杜老师会代下载转存至网盘中再分享出来。

自建脚本

1
docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 80:80 vaultwarden/server:latest

注意:如担心杜老师提供平台的稳定性和安全性,也可考虑自行搭建,运行上方命令即可。其中-v /vw-data/:/data//vw-data/为服务器对应的数据存储路径,根据实际情况修改。建议将-p 80:80 修改为-p 40031:8040031 为映射端口,可自行修改成未被占用端口。该容器并未内置 SSL,可使用 Nginx 反向代理实现。

如何更方便的管理和使用 OSS

2024年2月24日 00:00

当需要快速使用图形化工具上传文件、下载文件、删除文件、设置权限策略等时,可以下载并安装 ossbrowser 工具,使用多种方式登录工具,进行相关操作。希望能对 xaoxuu 童鞋和同样需要的小伙伴提供一些帮助!

安装登录

下载地址:

下载地址

直接解压,找到目录中的 oss-browser.exe 即可打开客户端工具:

快速使用

通过 AK 登录时,需按如下说明完成各配置项:

参数说明
Endpoint选择登录时的访问域名。
AccessKeyId/AccessKeySecret填写账号的 AccessKey 信息。
预设 OSS 路径如果当前账号仅拥有某个 Bucket 或 Bucket 下某个路径的权限,需填写预设 OSS 路径。
区域当 Endpoint 配置为默认时,需填写预设 OSS 路径对应 Bucket 所在的区域。
保持登录选中之后,ossbrowser 会保持登录状态,下次打开时将自动登录。
记住密钥选中可保存 AK 密钥。再次登录时单击 AK 历史,可选指定密钥直接登录。

ossbrowser 支持的 Bucket 或 Object 级别的操作与控制台支持操作类似,请按照 ossbrowser 界面指引完成 Bucket 或 Object 的相关操作:

操作说明
创建BucketBucket 是用于存储 Object 的容器。在上传任何文件到 OSS 前,必须创建存储空间。
删除Bucket如果不再需要 Bucket 请将其删除,以免产生额外费用。
上传文件ossbrowser 默认使用分片上传和断点续传上传文件,上传文件最大不可以超过 48.8T。若因意外中断了文件上传的过程,且未继续完成该文件的上传,则已上传的部分会以碎片的形式存储在 OSS 的存储空间中。
上传文件夹单击页面上方目录图标,可上传文件夹。
下载文件选中文件,然后单击操作列的下载进行下载。
下载文件夹先选中文件夹,然后单击页面上方下载图标进行下载。
预览文件直接单击文件名称进行预览。
复制文件在 Bucket1 选中文件单击复制,然后在 Bucket2 单击粘贴。
移动文件选中更多——移动进行操作。移动或复制文件最大不能超过 5G。
分享文件文件上传 Bucket 后,可以将文件 URL 分享给第三方,供其下载、预览。单击目标文件操作列的获取地址,生成文件分享地址。
设置软链接在设置软链接面板,设置软链接的文件目录,然后单击确定。

基于 Python 的站点漏洞扫描工具

2024年2月21日 00:00

Golden-hooped Rod 是一款对于 Web 站点进行漏洞扫描的工具。工具用 Python 语言编写,使用目录扫描字典均由真实环境而来。使用起来异常便捷。可以对 Web 站点进行漏洞扫描、设置代理、设置线程等等。

安装方法

下载地址:

下载地址

解压后使用 Python 运行里面的 GHR.py 文件即可,在运行前请先使用下面命令安装依赖模块:

1
pip install -r requirements.txt

使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
usage: GHR.py [-h] [-u URL] [-f filename] [--upgrade] [--nodir] [--proxy PROXY] [-t THREAD]

options:
-h, --help show this help message and exit

GHR 常用参数:
-u URL, --url URL url,例:--url http://127.0.0.1/,注:url中不能添加文件名,如index.html、index.php等,如需添加文件名,请禁用目录扫描
-f file, --file file 批量url文件名,例:--file url.txt,注:文件中的url不能添加文件名,如index.html、index.php等,如需添加文件名,请禁用目录扫描
--nodir 禁用目录扫描
--upgrade 更新
--proxy PROXY 代理设置,例:--proxy 127.0.0.1:10809(目前仅支持HTTP,暂不支持SOCKET)
-t THREAD, --thread THREAD
线程设置,例:--thread 10 默认线程数为:20

注意:直接运行 python GHR.py 会显示帮助信息,如果扫描站点,如 dusays.com,命令为 python GHR.py -u https://dusays.com/

运行效果

扫描执行过程如下截图:

报告截图

扫描执行结束后会生成报告文档,效果如下截图:

ShellCheck 静态代码分析的工具

2024年2月18日 00:00

ShellCheck 是一个用于静态代码分析工具,其专门针对 Shell 脚本语言进行检查。它可以帮助用户发现并纠正脚本中的常见问题、潜在错误和最佳实践不一致。新手必备工具,老手也经常通过该工具进行脚本排错。

功能特点

ShellCheck 可以检查 Shell 脚本语法,确保脚本中的命令、语法结构和语法规则的正确。可以识别和报告脚本中的各种错误,包括语法错误、拼写错误、变量使用错误、命令调用错误等等。

ShellCheck 提供了最佳实践建议,帮助用户编写更加清晰、可读性更高的脚本,避免常见的陷阱和错误。

ShellCheck 支持在多种操作系统运行,并支持各种常见的 Shell 解释器。

ShellCheck 允许用户定义自定义规则和过滤器,以适应特定项目或组织需求。

检查内容

  • 语法错误、警告。

  • 变量使用错误。

  • 命令调用错误。

  • 输入、输出错误。

  • 安全漏洞。

  • 代码风格建议。

安装步骤

如果是 Debian/Ubuntu 系统,执行以下命令:

1
apt -y install shellcheck

如果是 CentOS/RHEL 系统,执行以下命令:

1
2
yum -y install epel-release
yum -y install shellcheck

使用方法

1
shellcheck shell.sh

注意:对于一个 Shell 脚本 shell.sh 进行检查,则按上面命令执行即可。ShellCheck 将输出检查结果,并提示错误和建议,帮助用户改进脚本质量。

Fort Firewall 开源免费防火墙工具

2024年2月9日 00:00

Fort Firewall 是一款简单而功能丰富的开源 Windows 防火墙工具,当前互联网环境下,很多人依赖于 Windows 防火墙或路由器来维护个人隐私和系统安全。Fort Firewall 提供了对 Windows 防火墙进行简便修改的功能。

运行截图

主界面支持明暗双模式切换:

可针对单应用设置网络控制,保护应用同时,也可限制应用对带宽的占用:

可以设置应用群组,方便快速管理组内所有应用:

支持多国语言,翻译准确:

软件特点

  1. 安装配置:

Fort Firewall 软件安装和配置非常简单,可在几分钟内完成。在安装过程中,软件会提示用户选择所需保护功能和设置,可按照自己的需求进行配置。

  1. 防护安全:

该软件提供了强大的防火墙保护功能,可对入站和出站数据进行监控和过滤,防止未经授权的访问和攻击。

  1. 应用控制:

Fort Firewall 软件支持对应用程序进行控制、管理,可限制应用程序的网络访问权限,防止恶意应用程序对计算机造成损害。

  1. 网络监控:

该软件提供了实时网络监控功能,可监控网络流量和连接状态,并提供详细统计数据和报告,方便用户进行网络管理、优化。

  1. 用户界面:

Fort Firewall 软件的用户界面简洁明了,易于使用。软件提供了多种操作选项和设置,可满足用户的不同需求。

工具下载

下载地址:

下载地址

写在最后

通过免费下载 Fort Firewall 独立 Windows 脱机安装程序,用户可轻松管理防火墙设置。该防火墙工具旨在为用户提供简单而有效防护,具备多项丰富功能。Fort Firewall 的中文版发布使更多用户能够方便地利用其功能,以加强系统的安全性和隐私管理。

Fort Firewall 防火墙是一款小巧优秀的软件,用户可在 Fort Firewall 防火墙快捷的进行网络安全的防护,有效的预防病毒的侵害,同时还可以在 Fort Firewall 防火墙很好的进行网络的管理,保护电脑上的应用程序不被改写,感兴趣的小伙伴快来下载体验吧~

GoBackup 数据库备份工具

2024年1月28日 00:00

上一篇杜老师分享了 MySQL 备份脚本,在留言中,有小伙伴推荐了 GoBackup 数据库备份工具。简单了解之后发现这款工具确实不错,简单易用,一次部署后能持续运行数年无需任何维护,存储成本低且安全可靠。

工具特性

  • 没有依赖关系。

  • 多数据库支持。

  • 支持多种存储类型。

  • 将路径或文件归档到压缩包。

  • 将大型备份文件拆分为多个部分。

  • 作为守护程序运行以按计划进行备份。

  • 用于管理备份的 Web UI。

支持类型

支持的数据库类型如下:

编号名称
1MySQL
2PostgreSQL
3Redis
4MongoDB
5SQLite
6Microsoft SQL Server
7InfluxDB
8MariaDB

存储类型

支持存储类型如下:

编号名称
1本地
2FTP
3SFTP
4SCP - Upload via SSH copy
5Amazon S3
6Aliyun OSS
7Google Cloud Storage
8Azure Blob Storage
9Backblaze B2 Cloud Storage
10Cloudflare R2
11DigitalOcean Spaces
12QCloud COS
13UCloud US3
14Qiniu Kodo
15Baidu BOS
16MinIO
17Huawei OBS
18Volcengine TOS
19UpYun
20WebDAV

通知途径

备份通知类型如下:

编号名称
1Mail (SMTP)
2Webhook
3Discord
4Slack
5Feishu
6DingTalk
7GitHub (Comment on Issue)
8Telegram
9AWS SES
10Postmark
11SendGrid

安装配置

执行下面安装命令,即可使用 gobackup 进行数据库备份:

1
curl -sSL https://gobackup.github.io/install | sh

创建并编辑配置文件/etc/gobackup/gobackup.yml,模板内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
models:
gitlab_app:
databases:
gitlab_db:
type: postgresql
database: gitlab_production
username: gitlab
password:
gitlab_redis:
type: redis
mode: sync
rdb_path: /var/db/redis/dump.rdb
invoke_save: true
storages:
s3:
type: s3
bucket: my_app_backup
region: us-east-1
path: backups
access_key_id: $S3_ACCESS_KEY_Id
secret_access_key: $S3_SECRET_ACCESS_KEY
compress_with:
type: tgz

使用方法

如需备份,使用下面命令即可:

1
gobackup perform

如需命令完整路径,可调用/usr/local/bin/gobackup。分享一个实例配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
models:
my_backup:
before_script: |
echo "Before script"
after_script: |
echo "After script"
schedule:
# At 04:05 on Sunday.
cron: "5 4 * * sun"
storages:
local:
type: local
path: /path/to/backups
databases:
mysql:
type: mysql
host: localhost
port: 3306
database: my_database
username: root
password: password
other_backup:
# At 04:05 on every day.
schedule:
every: "1day",
at: "04:05"
storages:
local:
type: local
path: /path/to/backups
databases:
mysql:
type: mysql
host: localhost
port: 3306
database: my_database
username: root
password: password

该工具支持 Web UI,如需启动可执行下面的命令:

1
gobackup start

访问 http://IP:2703 就行了:

推一下 Vercel 加速节点

2024年1月22日 00:00

杜老师说友链中不少小伙伴都使用 Hexo 构建博客,其中大多数都选择托管在 Vercel。虽然选择了香港的节点,当访问的速度依旧不太理想。今天推荐加速节点使用方法,欢迎一试!

写在前面

Vercel 不仅可以部署 Hexo 博客,还能部署很多服务。

如本博的「文坛」就托管在 Vercel 上。

境内选择 Vercel 的站长很多,为了提升访问速度,自然选择了距离大陆最近的香港节点。

选的多了,节点压力自然就会增大,就算 Vercel 属于大平台,对陆带宽依旧有限,必然会出现互相影响的情况。

再加上滥用资源等问题出现,不少小伙伴反馈 Vercel 越来越慢。

今天为 Vercel 用户提供一个加速方案。

食用方法

将原来解析至 cname.vercel.com 改为 vercel.cdn.yt-blog.top「杜老师用的是另外一个,所以截图中的解析不同,但是加速效果相同」

加速原理

Vercel 在大陆周围还有很多节点,其中包含中国台湾、韩国、日本、新加坡等,这些节点的访问延迟在接受范围,且相对香港节点来说带宽更充足。

Vercel 的 Anycast 会自动将节点解析至距离最近的香港服务器,但如果手动解析则太过麻烦。

vercel.cdn.yt-blog.top 是 Fgaoxing 小朋友手动解析,并通过 D 监控检查状态,无法访问时会及时暂停节点。使用时自动解析至附近可用节点,尽可能的选择优质节点。

最终数据会回源至自己的 Vercel,所以不用担心数据安全。这项服务非杜老师提供,所以要注意稳定性。

测速截图

感谢 Fgaoxing 小朋友提供该项服务及测速效果图,大家测速效果可能会略有些不同,可酌情考虑是否选择该服务:

Ashampoo WinOptimizer 25 清理优化工具软件免费用

2024年1月13日 00:00

Ashampoo WinOptimizer 是由著名的 Ashampoo 出品的,一款集成系统维护、性能提升、安全防护、游戏加速、软件卸载以及文件处理等等多种功能于一身的系统优化防护软件,操作简单而且功能全面,一款软件就能搞定系统优化和安全防护等各种需求。原价 95 元每年,限时免费,快去白嫖~

特色功能

  • 对系统关键区域进行全面深度的清洁。

  • 查找删除旧 Windows 版本、更新、系统缓存。

  • 更精简更清晰用户界面。

  • 大幅加速、更加高效清洁工具。

  • 基于全新清洁工具模块超快一键优化。

  • 更快的清洁工具高达 75%。

  • 更新开始页面,带有 CPU 速度表和最新硬件的详情。

  • 访问 Windows 许可证密钥。

  • 基于 Windows Aero Snap 的窗口缩放、停靠功能。

  • 所有功能完全性兼容 Windows 11。

  • 针对全新 Windows 11 进行了多种调整,如任务栏、资源管理器等。

  • Link Checker 和 Context Menu Manager 预览的效果更佳,操作简单。

  • File Wiper 中新增确认对话框和删除方法选项。

  • System Information 中新增了对现代多核处理器的支持。

运行截图

系统分析页面效果如下:

扩展页面效果如下:

自动页面效果如下:

所有模块页面效果如下:

清洁页面效果如下:

优化页面效果如下:

GitHub 二次验证 APP 推荐

2024年1月4日 00:00

其实大概在一个多月前,在 GitHub 网页端及邮箱里都被提示要求开启 2FA,杜老师当时并未做理会,直到今天再次访问 GitHub 时,被提醒了截止日期,如到期未设置,则部分功能将会被限制。今天分享 GitHub 二次验证 APP。

什么是 2FA

2FA 是指两步验证的缩写。它是一种用于增强账户安全性的身份验证方法。传统的身份验证通常只需要输入用户名和密码,而 2FA 则要求用户在登录时提供额外的身份验证信息,通常是通过手机应用程序生成的一次性验证码。这种额外验证因素可以是手机短信验证码、手机应用程序生成的动态验证码、指纹识别等等。如使用 2FA ,即使黑客获得了用户的密码,他们仍然需要额外的验证信息才能成功登录用户的账户,从而提高了账户安全性。

引用 GitHub 在邮件中的说明: GitHub 是软件供应链的核心,确保软件供应链的安全要从保护开发人员开始。因此他们在推进 2FA 计划,通过提高账户安全性来保护软件开发。通常,开发人员的账户是社会工程和账户接管的攻击目标。保护开源生态系统的开发人员和消费者免受此类攻击是确保供应链安全第一步,也是最关键的一步。

软件下载

GitHub 主要提供应用和短信两种认证方式,一开始点进来默认是短信的方式,但是发现里面竟然没有中国大陆,就选择了使用 APP 的方式进行认证。

不过国内可选相关软件很少,这里推荐一个轻量的 APP,点击 这里 下载。解压后传输至手机,直接安装即可「此软件为谷歌应用商店直接下载,不放心可自行下载,软件名称见文件名」

如何开启

第一步中,用 APP 扫描二维码后,在 APP 上会有一个动态码「有 30 秒的时间限制」输入到网页端的验证码框里,点击右下角 Continue:

第二步中会显示恢复码,点击 Download 下载后点击 I have saved my recovery codes 就行了。这里需要注意的是,如 APP 不可用时,可以通过恢复码登录 GitHub,故请务必妥善保存:

到了第三步时,以为着已经可以正常使用了,这里杜老师建议添加 Passkeys,它允许您使用 Windows 系统的 PIN 码实现快速身份验证「且包含 Windows Hello」

写在最后

以上是 GitHub 开启 2FA 的流程,前提选择一个支持 2FA 的应用。常见的 2FA 应用包括 Google Authenticator、Authy 和 Microsoft Authenticator 等;这种方式的麻烦之处就是在手机上多装一个 APP。

另外杜老师推荐的工具,需要谷歌服务支持才能实现备份,所以再次提醒小伙伴们,务必妥善保存 GitHub 恢复码。

将 GPT 整合到 Mattermost

2023年12月5日 00:00

聊天室有小伙伴建议整合 GPT,本来没想着能实现,谁知道随手搜了下,在 GitHub 上面还真有相关的服务源码。恰好杜老师在国外的主机平台上还有余额,就尝试搭建了一下,并记录相关的步骤。最后要提示下,杜老师测试时并未成功~

服务添加

首先进入到 Mattermost 后台,在左侧列表中找到集成,点击进入到机器人账户页面,开启机器人账号创建的功能,然后点击机器人账号项:

点击右上角添加机器人,输入用户名 chatgpt「可自定义」其余为可选项,小伙伴们可以按需填写:

创建机器人后,需要先将其邀请到团队,才能正常对话。点击团队名称,选择成员管理,在弹出页面中点击邀请人员,输入 chatgpt 后点击邀请即可:

这里提示一下,私信机器人是没有任何反应,需要在频道中艾特机器人用户名,杜老师测试时并未成功,所以没有截图:

服务部署

1
2
3
4
5
6
docker run -d --restart unless-stopped \
-e MATTERMOST_URL=https://mattermost.server \
-e MATTERMOST_TOKEN=abababacdcdcd \
-e OPENAI_API_KEY=234234234234234234 \
--name chatbot \
penndu/chatgpt-mattermost-bot:latest

注意:请使用海外的主机部署,毕竟要连接 API。其中 MATTERMOST_URL 为 Mattermost 服务器地址,MATTERMOST_TOKEN 为 Mattermost 机器人生成的令牌 ID,OPENAI_API_KEY 为 GPT 的 KEY 值,penndu/chatgpt-mattermost-bot:latest 是杜老师编译的 Docker 服务端,如果想获得官方版,可以在评论区留言获取。

7bu 图床插件 For WordPress/Typecho 分享

2023年11月29日 00:00

前几天有小伙伴询问是否有 WordPress/Typecho 的相关插件,可惜杜老师能力有限不会弄,就只能求助于群里的小伙伴,果然有大神帮忙设计了出来。在此感谢 Xin Huai W L 帮忙制作了插件,分享给需要的小伙伴们!

WordPress 插件的食用教程

为了测试插件,杜老师特地安装 WordPress。进入后台进入到添加新插件页面,从下面的链接中下载 WordPress 插件,并上传到博客:

上传后直接启用就行了,但需要先设置 Token 才可以使用:

如您使用去不图床托管,请在网址设置框输入 https://7bu.top,Tokens 框中输入在图床获取的 TOKEN,并可以选择是否要公开图片:

写文章时可在右侧看到插件模块,直接拖拽上传图片即可:

WordPress 插件的下载地址

下载地址:

下载地址

Typecho 插件的食用教程

Typecho 需要手动上传到插件目录,后台刷新一下就能看到,直接启用即可:

在正式使用前,需要先设置下。如您使用去不图床托管,请在网址设置框输入 https://7bu.top,Tokens 框中输入在图床获取的 TOKEN,存储 id 为空就行了:

Typecho 插件的下载地址

下载地址:

下载地址

推荐一款开源的 Markdown 编辑工具

2023年11月20日 00:00

聊到 Markdown 编辑器,很多朋友可能会想到 Typora,奈何它收费了。今天推荐这款软件是免费开源的 Markdown 编辑器,好用而且开源免费,MarkText 凭借其强大特性和用户友好的界面脱颖而出,成为让人畅快写作利器。

实时预览与纯粹写作的沉浸体验

MarkText 的最大魅力之一是其实时预览功能,所见即是所得,让您在编辑的同时即时查看最终效果。它拥有干净简洁的用户界面,带来无干扰的写作体验,让您全身心投入到创作,而不会受到繁琐的界面干扰:

支持且无缝转换多种 Markdown 规范

MarkText 支持 CommonMark 规范和 GitHub Flavored Markdown 规范,保证了 Markdown 文本的正确显示和解析。它还提供选择性支持 Pandoc,让您的文本在不同平台间无缝转换保持统一的格式:

强大的 Markdown 扩展功能

除了基本的 Markdown 语法,MarkText 支持多种 Markdown 扩展功能。数学表达式 KaTeX、表情符号等功能的支持,使得您的文稿更加生动、丰富:

智能快捷键以提高写作效率

MarkText 内置许多段落和内联样式的快捷键,让您在写作过程中更加高效。同时,支持 HTML 和 PDF 文件的输出,无论分享还是保存,都能得心应手:

丰富的主题和编辑模式

MarkText 提供了多种主题选择,如 Cadmium Light、Material Dark 等,支持多种编辑模式,包括源码模式、打字机模式和专注模式。无论白天还是夜晚,都可以找到适合自己的编辑环境:

多平台支持可无缝切换

MarkText 覆盖 Linux、macOS 和 Windows 等多个操作系统,保证用户在不同平台上的使用一致性。无论您是在台式机还是笔记本上写作,都能无缝切换,持续流畅写作体验:

直接粘贴图片方便快捷

您可以直接从剪贴板粘贴图片到 MarkText 的编辑器中,省去了繁琐的插入步骤,让您更专注文本内容的创作:

支持 HTML 和 PDF 文件输出方便分享与保存

MarkText 不仅可以输出 HTML 文件,还可以生成 PDF 文件,无论您需要在网络上分享还是保存为文档,都能得心应手。下方为最新版下载地址:

下载地址

一款强大番茄工作法工具 Pomatez

2023年11月17日 00:00

这是一款健康的规律性工作学习管理利器,有效安排工作、学习、休息时间,提高工作效率,是考研党、办公室白领等必备神器。Pomatez 通过利用番茄工作法原理,帮助用户集中注意力提高专注力,有效管理工作时间。

写在文章前面

杜老师最近因为工作的关系,休息不是特别充足,导致脑力不够,效率很低。为了集中注意力提高专注力,杜老师经常会使用 Windows 自带的专注功能,奈何因为公司要求,需使用自己公司开发的操作系统,故找了款跨平台的操作系统:

下载地址

番茄工作简介

番茄工作法是一种时间管理技术,通过将工作时间划分为一段短暂的时间段,称为番茄时段,在每个番茄时段后休息一段时间,以提高专注力、工作效率。用户可以使用 Pomatez 设置和计时番茄时段,每个时段专注一项任务,避免分心、干扰。在每个番茄时段后,Pomatez 还提供休息时间,让用户休息和放松,以保持高效的工作状态:

任务管理提醒

Pomatez 提供任务管理和提醒功能,帮助用户更好地组织和追踪任务。用户可以创建任务列表,将任务按优先级和类别进行组织,清晰了解待办事项。Pomatez 可以发送提醒和通知,帮助用户记住重要的任务和截止日期,避免遗漏:

番茄统计报告

Pomatez 提供统计和报告功能,让用户了解自己的工作习惯、效率。Pomatez 记录用户的番茄时段、休息时间,生成工作时长统计报告,帮助用户了解自己的工作习惯和时间分配。用户可以标记任务完成情况,Pomatez 生成任务完成度报告,让用户清晰了解任务进展和完成情况:

定制化扩展性

Pomatez 具有一定定制化和扩展性,用户可根据自己的需求进行个性化设置和功能扩展。用户可根据自己的工作习惯和注意力集中度设置番茄时段的长度,以适应个人的工作节奏。Pomatez 提供不同主题和界面样式,用户可以选择适合自己的界面外观和使用体验:

写在文章最后

Pomatez 作为一款提高工作效率番茄工作法工具,无论个人学习、工作任务还是时间管理,Pomatez 都可以帮助用户更好地组织和管理工作流程,提高工作效率、成果产出。尝试用 Pomatez,让您的工作时间更加专注和高效:

ServerStatus 多服务器云监控

2023年11月2日 00:00

去不图床数据托管量已超过 23 万,有一些小伙伴反馈说外链速度慢了些,于是杜老师有增加几个节点。由于是自建 CDN,为了保障外链稳定,设置了云监控,同时将该工具分享给需要的小伙伴们!

工具介绍

通过下方截图可以看出,去不图床托管图片数超过了 23 万,数据占用超过了 93G。有一些小伙伴反馈说外链速度慢了些,于是杜老师有增加几个节点。由于是自建 CDN,为了保障外链稳定,设置了云监控,ServerStatus 中文版是一个酷炫高逼格的云探针、服务器云监控、多服务器探针:

配置文件

ServerStatus 在启用服务之前,需先通过配置文件设置监控对象,将下面的内容根据需求调整,保存为 serverstatus-config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
"servers":
[
{
"username": "s01",
"name": "vps-1",
"type": "kvm",
"host": "chengdu",
"location": "🇨🇳",
"password": "USER_DEFAULT_PASSWORD",
"monthstart": 1
},
],
"watchdog":
[
{
"name": "服务器负载高监控,排除内存大于32G物理机,同时排除俄勒冈机器",
"rule": "cpu>90&load_1>4&memory_total<33554432&name!='俄勒冈'",
"interval": 600,
"callback": "https://yourSMSurl"
},
{
"name": "服务器内存使用率过高监控",
"rule": "(memory_used/memory_total)*100>90",
"interval": 600,
"callback": "https://yourSMSurl"
},
{
"name": "服务器宕机告警,排出俄勒冈,排除s02",
"rule": "online4=0&online6=0&name!='俄勒冈'&username!='s02'",
"interval": 600,
"callback": "https://yourSMSurl"
},
{
"name": "DDOS和CC攻击监控",
"rule": "tcp_count>600",
"interval": 300,
"callback": "https://yourSMSurl"
},
{
"name": "服务器月出口流量999GB告警",
"rule": "(network_out-last_network_out)/1024/1024/1024>999",
"interval": 3600,
"callback": "https://yourSMSurl"
},
{
"name": "你可以组合任何已知字段的表达式",
"rule": "(hdd_used/hdd_total)*100>95",
"interval": 1800,
"callback": "https://yourSMSurl"
}
]
}

杜老师收集了几个参数作用,供小伙伴参考:

参数作用
! rule可设置为任何已知字段的表达式
! interval最小通知间隔
! callback可自定义为 POST 方法的 URL,告警内容将拼接其后并发起回调
! callback Telegramhttps://api.telegram.org/bot/sendMessage?parse_mode=HTML&disable_web_page_preview=true&chat_id=&text=
! callback Server酱https://sctapi.ftqq.com/.send?title=ServerStatus&desp=
! callback PushDeerhttps://api2.pushdeer.com/message/push?pushkey=&text=
! callback BasicAuthhttps://USER:PASS@URL/api/push?message=

部署方法

Server 服务端,首先在配置文件同级目录执行 mkdir serverstatus-monthtraffic 创建目录,然后执行下方命令即可启用服务:

1
docker run -d --restart=always --name=serverstatus -v ~/serverstatus-config.json:/ServerStatus/server/config.json -v ~/serverstatus-monthtraffic:/usr/share/nginx/html/json -p 80:80 -p 35601:35601 cppla/serverstatus:latest

Client 客户端,客户端不支持用 Docker 部署,直接使用下方命令即可自动部署:

1
wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.com/penndu/ServerStatus/master/clients/client-linux.py' && nohup python3 client-linux.py SERVER={$SERVER} USER={$USER} PASSWORD={$PASSWORD} > /dev/null 2>&1 &

不同主题

默认监控页面如下,点击服务器项可以查看详细信息,包含内存、硬盘、网络情况等等,页面每三秒会自动刷新:

这个是用户自定义模板,如需用该模板,需要手动部署 Server 服务端,无法使用 Docker 的方式部署:

这款是杜老师目前用的主题「目前部署在内网中,暂时无法公布演示链接」

Kutt 开源的网址缩短程序

2023年10月30日 00:00

Kutt 是一个开源的短网址程序,有了它可以在分享一些很长的链接的时候,进行缩短链接,使得分享 URL 更简洁。支持容器部署,虽是英文界面,但操作很简单,感兴趣的小伙伴可以试一下~

支持特性

  1. 开源免费;

  2. 自定义域支持;

  3. 缩短链接自定义 URL;

  4. 设置链接密码;

  5. 设置链接描述;

  6. 链接过期时间;

  7. 查看、编辑、删除、管理链接;

  8. 管理员帐户可查看、删除、禁止链接。

程序部署

如果常规安装的话需要安装 Node.js/PostgreSQL/Redis 等,所以用 Docker 来安装这个是最简单的。将下方的代码保存为.env

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# App port to run on
PORT=3000

# The name of the site where Kutt is hosted
SITE_NAME=Kutt

# The domain that this website is on
DEFAULT_DOMAIN=localhost:3000

# Generated link length
LINK_LENGTH=6

# Postgres database credential details
DB_HOST=postgres
DB_PORT=5432
DB_NAME=postgres
DB_USER=
DB_PASSWORD=
DB_SSL=false

# Redis host and port
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=

# Disable registration
DISALLOW_REGISTRATION=false

# Disable anonymous link creation
DISALLOW_ANONYMOUS_LINKS=false

# The daily limit for each user
USER_LIMIT_PER_DAY=50

# Create a cooldown for non-logged in users in minutes
# Set 0 to disable
NON_USER_COOLDOWN=0

# Max number of visits for each link to have detailed stats
DEFAULT_MAX_STATS_PER_LINK=5000

# Use HTTPS for links with custom domain
CUSTOM_DOMAIN_USE_HTTPS=false

# A passphrase to encrypt JWT. Use a long and secure key.
JWT_SECRET=securekey

# Admin emails so they can access admin actions on settings page
# Comma seperated
ADMIN_EMAILS=

# Invisible reCaptcha secret key
# Create one in https://www.google.com/recaptcha/intro/
RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=

# Google Cloud API to prevent from users from submitting malware URLs.
# Get it from https://developers.google.com/safe-browsing/v4/get-started
GOOGLE_SAFE_BROWSING_KEY=

# Your email host details to use to send verification emails.
# More info on http://nodemailer.com/
# Mail from example "Kutt <support@kutt.it>". Leave empty to use MAIL_USER
MAIL_HOST=
MAIL_PORT=
MAIL_SECURE=true
MAIL_USER=
MAIL_FROM=
MAIL_PASSWORD=

# The email address that will receive submitted reports.
REPORT_EMAIL=

# Support email to show on the app
CONTACT_EMAIL=

在同级目录下,将下方的代码保存为 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
version: "3"

services:
kutt:
image: kutt/kutt
depends_on:
- postgres
- redis
command: ["./wait-for-it.sh", "postgres:5432", "--", "npm", "start"]
ports:
- "3000:3000"
env_file:
- .env
environment:
DB_HOST: postgres
DB_NAME: kutt
DB_USER: user
DB_PASSWORD: pass
REDIS_HOST: redis

redis:
image: redis:6.0-alpine
volumes:
- redis_data:/data

postgres:
image: postgres:12-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: kutt
volumes:
- postgres_data:/var/lib/postgresql/data

volumes:
redis_data:
postgres_data:

启用服务

修改.envDEFAULT_DOMAIN=localhost:3000 值,将 localhost 改为域名,不然访问时会跳转出错。并确保邮箱相关的配置正确:

1
2
3
4
5
6
MAIL_HOST=
MAIL_PORT=
MAIL_SECURE=true
MAIL_USER=
MAIL_FROM=
MAIL_PASSWORD=

然后通过下方命令启动服务:

1
docker-compose up -d

注意事项

Kutt 默认是没有管理员用户的,需要通过邮箱注册,所以需要.env 里邮箱相关的内容都配置正确。

注册账号时始终提示失败 an error occurred,虽然不影响短链接的生成及使用,但无法登录管理员后台还是很难受的。

注册失败实际是没有发邮件激活成功,通过在作者的 Issues 里发现了有很多人大量反馈此问题,应该是对接 SMTP 服务的 bug。

这种方式可通过登录 PostgreSQL 容器,查找到对应用户验证 Token,再访问 URL 激活即可。

DBeaver 开源跨平台的数据库管理工具

2023年10月24日 00:00

数据库连接工具是后端程序员必须要用到工具,常用的 Navicat 但要收费。今天给大家推荐一款开源免费的数据库连接工具 DBeaver,界面简单易用,用户可轻松执行各种数据库操作,比如查询、修改、备份等等。

功能特性

  1. 几乎支持所有的数据库产品,包括MySQL等:
  1. DBeaver 采用 Eclipse 框架开发,支持插件扩展,可根据自己的需求安装插件。

  2. 提供直观的图形化用户界面,可以轻松管理数据表和进行增删改查:

  1. 支持 dark 等主题。

  2. 支持转储和恢复数据库。

  3. 编辑器支持 SQL 语法高亮、字段、表名提示,自动命名数据表名。

使用教程

首次使用需要下载驱动,在首选项中配置 Maven 地址:

连接 MySQL 数据库:

填写数据库连接信息及下载驱动:

执行 SQL 前要选择数据库:

工具下载

Windows 安装版:

下载地址

Windows 绿色版:

下载地址

苹果系统 X86 架构版:

下载地址

苹果系统 ARM 架构版:

下载地址

DEB 安装包:

下载地址

RPM 安装包:

下载地址

运行截图

dark 主题效果图:

classic 主题效果图:

erd 主题效果图:

mock 主题效果图:

neutrino-proxy 内网穿透更多的选择

2023年10月18日 00:00

自从上次 frp 因版本更新导致图床短时间无法访问后,杜老师一直在寻找其它内网穿透工具。机缘巧合遇到一个,看介绍很不错,但杜老师暂未进行性能测试,感兴趣的小伙伴可以试一下!

运行示例

首页可显示 License 统计、端口映射统计、今日流量、流量汇总、流量监控:

系统管理页面中包含用户管理端口池管理、用户管理、端口分组管理、调度管理:

端口池管理页面用于统一管理服务器内网穿透端口,方便统一设置安全组提高安全性:

License 是客户端连接服务端唯一合法凭证。一个 License 同时只可以被一个客户端使用,一个 License 可维护多条端口映射:

服务端 IP 端口对应客户端 IP 端口的四元组映射,是内网穿透的基本单元:

代理示意

当用户通过公网IP加端口访问时,服务端会通过指定端口回源到客户端随机端口,客户端会通过随机端口,反代本地服务端口,实现内网穿透:

服务部署

1.9.0 版本服务端配置格式有所调整。从之前版本升级的,需要注意。在服务器上创建目录/root/neutrino-proxy/config,以下是最新的服务端 app.yml 配置格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
server:
# 服务端web端口,用于支持HTTP接口,管理后台页面访问
port: ${WEB_PORT:8888}

neutrino:
proxy:
logger:
# 日志级别
level: ${LOG_LEVEL:info}
# 隧道相关配置-用于维持服务端与客户端的通信
tunnel:
# 线程池相关配置,用于技术调优,可忽略
boss-thread-count: 2
work-thread-count: 10
# 隧道非SSL端口
port: ${OPEN_PORT:9000}
# 隧道SSL端口
ssl-port: ${SSL_PORT:9002}
# 隧道SSL证书配置
key-store-password: ${STORE_PASS:123456}
key-manager-password: ${MGR_PASS:123456}
jks-path: ${JKS_PATH:classpath:/test.jks}
# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
transfer-log-enable: ${TUNNEL_LOG:false}
server:
tcp:
# 线程池相关配置,用于技术调优,可忽略
boss-thread-count: 5
work-thread-count: 20
# http代理端口,默认80
http-proxy-port: ${HTTP_PROXY_PORT:80}
# https代理端口,默认443 (需要配置域名、证书)
https-proxy-port: ${HTTPS_PROXY_PORT:443}
# 如果不配置,则不支持域名映射
domain-name: ${DOMAIN_NAME:}
# https证书配置
key-store-password: ${HTTPS_STORE_PASS:}
jks-path: ${HTTPS_JKS_PATH:}
# 是否开启代理服务报文日志(日志级别为debug时开启才有效)
transfer-log-enable: ${SERVER_LOG:false}
udp:
# 线程池相关配置,用于技术调优,可忽略
boss-thread-count: 5
work-thread-count: 20
# 是否开启代理服务报文日志(日志级别为debug时开启才有效)
transfer-log-enable: ${SERVER_LOG:false}
data:
db:
# 数据库类型,目前支持sqlite、mysql、mariadb
type: ${DB_TYPE:sqlite}
# 数据库连接URL
url: ${DB_URL:jdbc:sqlite:data.db}
# 数据库用户名
username: ${DB_USER:}
# 数据库密码
password: ${DB_PASSWORD:}

当前最新版本为 1.9.0,下面的脚本中,可使用 registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:1.9.0 指定版本安装,推荐使用 latest 直接安装最新版:

1
2
3
4
docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 \
-v /root/neutrino-proxy/config:/root/neutrino-proxy/config \
-d --restart=always --name neutrino \
registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest

客户部署

1.9.0 版本客户端配置格式有所调整。从之前版本升级的,需要注意。点击 这里 下载客户端软件包,并且在同级目录创建配置文件 app.yml,以下是最新客户端配置格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
neutrino:
proxy:
logger:
# 日志级别
level: ${LOG_LEVEL:info}
tunnel:
# 线程池相关配置,用于技术调优,可忽略
thread-count: 50
# 隧道SSL证书配置
key-store-password: ${STORE_PASS:123456}
jks-path: ${JKS_PATH:classpath:/test.jks}
# 服务端IP
server-ip: ${SERVER_IP:localhost}
# 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port)
server-port: ${SERVER_PORT:9002}
# 是否启用SSL(注意:该配置必须和server-port对应上)
ssl-enable: ${SSL_ENABLE:true}
# 客户端连接唯一凭证
license-key: ${LICENSE_KEY:}
# 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成)
client-id: ${CLIENT_ID:}
# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
transfer-log-enable: ${CLIENT_LOG:false}
# 重连设置
reconnection:
# 重连间隔(秒)
interval-seconds: 10
# 是否开启无限重连(未开启时,客户端license不合法会自动停止应用,开启了则不会,请谨慎开启)
unlimited: false
client:
udp:
# 线程池相关配置,用于技术调优,可忽略
boss-thread-count: 5
work-thread-count: 20
# udp傀儡端口范围
puppet-port-range: 10000-10500
# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
transfer-log-enable: ${CLIENT_LOG:false}

首先确保本地已安装 Java8 运行环境,执行下面的命令启动客户端,查看服务端 License 管理,刷新页面,对应 License 在线状态为在线,表明客户端已正常连接:

1
java -jar neutrino-proxy-client.jar config=app.yml

新版本 frp 参考配置分享

2023年10月15日 00:00

大好的星期六,杜老师本想安安静静睡到下午两点再醒来,结果被去不图床的用户疯狂召唤,一看原来是报障了,简单分析了下是 frp 问题。快进来看看杜老师分享的内容吧!

问题原因分享

去不图床报出了 502 错误,一般是反代或内穿出现问题才会如此报错。杜老师前端反代用的是长亭雷池,通过管理端口访问一切正常,同平台反代的统计平台访问正常,以此可以判断是内穿的问题。

内穿分为服务端以及客户端。通过服务端管理端口访问时页面无法打开;而客户端因为无管理页,只能通过查看日志方式判断其问题的原因,结果并无日志生成。

后尝试查看服务端日志文件,结果发现输出端口为 80,而记忆中并未使用该端口做反代,怀疑是配置文件的问题。重启服务后发现并未加载设置的配置文件,一看官方发现发布 0.52.0 版本后,取消了原有 INI 配置文件,改为 TOML 新格式。

配置文件部分参数值发生了改变,且格式与原来有很大的改变,在此分享一些参考配置,供需要的小伙伴们使用!

frps 端完整配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
# For single "bind_addr" field, no need square brackets, like "bind_addr = ::".
bindAddr = "0.0.0.0"
bindPort = 7000

# udp port used for kcp protocol, it can be same with 'bind_port'.
# if not set, kcp is disabled in frps.
kcpBindPort = 7000

# udp port used for quic protocol.
# if not set, quic is disabled in frps.
# quicBindPort = 7002

# Specify which address proxy will listen for, default value is same with bind_addr
# proxy_bind_addr = "127.0.0.1"

# quic protocol options
# transport.quic.keepalivePeriod = 10
# transport.quic.maxIdleTimeout = 30
# transport.quic.maxIncomingStreams = 100000

# Heartbeat configure, it's not recommended to modify the default value
# The default value of heartbeat_timeout is 90. Set negative value to disable it.
# transport.heartbeatTimeout = 90

# Pool count in each proxy will keep no more than maxPoolCount.
transport.maxPoolCount = 5

# If tcp stream multiplexing is used, default is true
# transport.tcpMux = true

# Specify keep alive interval for tcp mux.
# only valid if tcpMux is true.
# transport.tcpMuxKeepaliveInterval = 60

# tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps.
# If negative, keep-alive probes are disabled.
# transport.tcpKeepalive = 7200

# transport.tls.force specifies whether to only accept TLS-encrypted connections. By default, the value is false.
tls.force = false

# transport.tls.certFile = "server.crt"
# transport.tls.keyFile = "server.key"
# transport.tls.trustedCaFile = "ca.crt"

# If you want to support virtual host, you must set the http port for listening (optional)
# Note: http port and https port can be same with bind_port
vhostHTTPPort = 80
vhostHTTPSPort = 443

# Response header timeout(seconds) for vhost http server, default is 60s
# vhostHTTPTimeout = 60

# tcpmuxHTTPConnectPort specifies the port that the server listens for TCP
# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP
# requests on one single port. If it's not - it will listen on this value for
# HTTP CONNECT requests. By default, this value is 0.
# tcpmuxHTTPConnectPort = 1337

# If tcpmux_passthrough is true, frps won't do any update on traffic.
# tcpmuxPassthrough = false

# Configure the web server to enable the dashboard for frps.
# dashboard is available only if webServer.port is set.
webServer.addr = "127.0.0.1"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
# webServer.tls.certFile = "server.crt"
# webServer.tls.keyFile = "server.key"
# dashboard assets directory(only for debug mode)
# webServer.assetsDir = "./static"

# Enable golang pprof handlers in dashboard listener.
# Dashboard port must be set first
webServer.pprofEnable = false

# enablePrometheus will export prometheus metrics on webServer in /metrics api.
enablePrometheus = true

# console or real logFile path like ./frps.log
log.to = "./frps.log"
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3
# disable log colors when log.to is console, default is false
log.disablePrintColor = false

# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true.
detailedErrorsToClient = true

# auth.method specifies what authentication method to use authenticate frpc with frps.
# If "token" is specified - token will be read into login message.
# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token".
auth.method = "token"

# auth.additionalScopes specifies additional scopes to include authentication information.
# Optional values are HeartBeats, NewWorkConns.
# auth.additionalScopes = ["HeartBeats", "NewWorkConns"]

# auth token
auth.token = "12345678"

# oidc issuer specifies the issuer to verify OIDC tokens with.
auth.oidc.issuer = ""
# oidc audience specifies the audience OIDC tokens should contain when validated.
auth.oidc.audience = ""
# oidc skipExpiryCheck specifies whether to skip checking if the OIDC token is expired.
auth.oidc.skipExpiryCheck = false
# oidc skipIssuerCheck specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer.
auth.oidc.skipIssuerCheck = false

# userConnTimeout specifies the maximum time to wait for a work connection.
# userConnTimeout = 10

# Only allow frpc to bind ports you list. By default, there won't be any limit.
allowPorts = [
{ start = 2000, end = 3000 },
{ single = 3001 },
{ single = 3003 },
{ start = 4000, end = 50000 }
]

# Max ports can be used for each client, default value is 0 means no limit
maxPortsPerClient = 0

# If subDomainHost is not empty, you can set subdomain when type is http or https in frpc's configure file
# When subdomain is est, the host used by routing is test.frps.com
subDomainHost = "frps.com"

# custom 404 page for HTTP requests
# custom404Page = "/path/to/404.html"

# specify udp packet size, unit is byte. If not set, the default value is 1500.
# This parameter should be same between client and server.
# It affects the udp and sudp proxy.
udpPacketSize = 1500

# Retention time for NAT hole punching strategy data.
natholeAnalysisDataReserveHours = 168

[[httpPlugins]]
name = "user-manager"
addr = "127.0.0.1:9000"
path = "/handler"
ops = ["Login"]

[[httpPlugins]]
name = "port-manager"
addr = "127.0.0.1:9001"
path = "/handler"
ops = ["NewProxy"]

注意:上面为 frps 完整配置,在使用前请先更先根据需求修改对应设置,保持为 frps.toml 文件以供工具调用。

frpc 端完整配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
# your proxy name will be changed to {user}.{proxy}
user = "your_name"

# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
# For single serverAddr field, no need square brackets, like serverAddr = "::".
serverAddr = "0.0.0.0"
serverPort = 7000

# STUN server to help penetrate NAT hole.
# natHoleStunServer = "stun.easyvoip.com:3478"

# Decide if exit program when first login failed, otherwise continuous relogin to frps
# default is true
loginFailExit = true

# console or real logFile path like ./frpc.log
log.to = "./frpc.log"
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3
# disable log colors when log.to is console, default is false
log.disablePrintColor = false

auth.method = "token"
# auth.additionalScopes specifies additional scopes to include authentication information.
# Optional values are HeartBeats, NewWorkConns.
# auth.additionalScopes = ["HeartBeats", "NewWorkConns"]

# auth token
auth.token = "12345678"

# oidc.clientID specifies the client ID to use to get a token in OIDC authentication.
# auth.oidc.clientID = ""
# oidc.clientSecret specifies the client secret to use to get a token in OIDC authentication.
# auth.oidc.clientSecret = ""
# oidc.audience specifies the audience of the token in OIDC authentication.
# auth.oidc.audience = ""
# oidc_scope specifies the permisssions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "".
# auth.oidc.scope = ""
# oidc.tokenEndpointURL specifies the URL which implements OIDC Token Endpoint.
# It will be used to get an OIDC token.
# auth.oidc.tokenEndpointURL = ""

# oidc.additionalEndpointParams specifies additional parameters to be sent to the OIDC Token Endpoint.
# For example, if you want to specify the "audience" parameter, you can set as follow.
# frp will add "audience=<value>" "var1=<value>" to the additional parameters.
# auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/"
# auth.oidc.additionalEndpointParams.var1 = "foobar"

# Set admin address for control frpc's action by http api such as reload
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
# Admin assets directory. By default, these assets are bundled with frpc.
# webServer.assetsDir = "./static"

# Enable golang pprof handlers in admin listener.
webServer.pprofEnable = false

# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds.
# transport.dialServerTimeout = 10

# dialServerKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps.
# If negative, keep-alive probes are disabled.
# transport.dialServerKeepalive = 7200

# connections will be established in advance, default value is zero
transport.poolCount = 5

# If tcp stream multiplexing is used, default is true, it must be same with frps
# transport.tcpMux = true

# Specify keep alive interval for tcp mux.
# only valid if tcpMux is enabled.
# transport.tcpMuxKeepaliveInterval = 60

# Communication protocol used to connect to server
# supports tcp, kcp, quic, websocket and wss now, default is tcp
transport.protocol = "tcp"

# set client binding ip when connect server, default is empty.
# only when protocol = tcp or websocket, the value will be used.
transport.connectServerLocalIP = "0.0.0.0"

# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set proxyURL here or in global environment variables
# it only works when protocol is tcp
# transport.proxyURL = "http://user:passwd@192.168.1.128:8080"
# transport.proxyURL = "socks5://user:passwd@192.168.1.128:1080"
# transport.proxyURL = "ntlm://user:passwd@192.168.1.128:2080"

# quic protocol options
# transport.quic.keepalivePeriod = 10
# transport.quic.maxIdleTimeout = 30
# transport.quic.maxIncomingStreams = 100000

# If tls.enable is true, frpc will connect frps by tls.
# Since v0.50.0, the default value has been changed to true, and tls is enabled by default.
transport.tls.enable = true

# transport.tls.certFile = "client.crt"
# transport.tls.keyFile = "client.key"
# transport.tls.trustedCaFile = "ca.crt"
# transport.tls.serverName = "example.com"

# If the disableCustomTLSFirstByte is set to false, frpc will establish a connection with frps using the
# first custom byte when tls is enabled.
# Since v0.50.0, the default value has been changed to true, and the first custom byte is disabled by default.
# transport.tls.disableCustomTLSFirstByte = true

# Heartbeat configure, it's not recommended to modify the default value.
# The default value of heartbeat_interval is 10 and heartbeat_timeout is 90. Set negative value
# to disable it.
# transport.heartbeatInterval = 30
# transport.heartbeatTimeout = 90

# Specify a dns server, so frpc will use this instead of default one
# dnsServer = "8.8.8.8"

# Proxy names you want to start.
# Default is empty, means all proxies.
# start = ["ssh", "dns"]

# Specify udp packet size, unit is byte. If not set, the default value is 1500.
# This parameter should be same between client and server.
# It affects the udp and sudp proxy.
udpPacketSize = 1500

# Additional metadatas for client.
metadatas.var1 = "abc"
metadatas.var2 = "123"

# Include other config files for proxies.
# includes = ["./confd/*.ini"]

[[proxies]]
# 'ssh' is the unique proxy name
# If global user is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh'
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# Limit bandwidth for this proxy, unit is KB and MB
transport.bandwidthLimit = "1MB"
# Where to limit bandwidth, can be 'client' or 'server', default is 'client'
transport.bandwidthLimitMode = "client"
# If true, traffic of this proxy will be encrypted, default is false
transport.useEncryption = false
# If true, traffic will be compressed
transport.useCompression = false
# Remote port listen by frps
remotePort = 6001
# frps will load balancing connections for proxies in same group
loadBalancer.group = "test_group"
# group should have same group key
loadBalancer.groupKey = "123456"
# Enable health check for the backend service, it supports 'tcp' and 'http' now.
# frpc will connect local service's port to detect it's healthy status
healthCheck.type = "tcp"
# Health check connection timeout
healthCheck.timeoutSeconds = 3
# If continuous failed in 3 times, the proxy will be removed from frps
healthCheck.maxFailed = 3
# every 10 seconds will do a health check
healthCheck.intervalSeconds = 10
# additional meta info for each proxy
metadatas.var1 = "abc"
metadatas.var2 = "123"

[[proxies]]
name = "ssh_random"
type = "tcp"
localIP = "192.168.31.100"
localPort = 22
# If remote_port is 0, frps will assign a random port for you
remotePort = 0

[[proxies]]
name = "dns"
type = "udp"
localIP = "114.114.114.114"
localPort = 53
remotePort = 6002

# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02
[[proxies]]
name = "web01"
type = "http"
localIP = "127.0.0.1"
localPort = 80
# http username and password are safety certification for http protocol
# if not set, you can access this custom_domains without certification
httpUser = "admin"
httpPassword = "admin"
# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com
subdomain = "web01"
customDomains = ["web01.yourdomain.com"]
# locations is only available for http type
locations = ["/", "/pic"]
# route requests to this service if http basic auto user is abc
# route_by_http_user = abc
hostHeaderRewrite = "example.com"
# params with prefix "header_" will be used to update http request headers
requestHeaders.set.x-from-where = "frp"
healthCheck.type = "http"
# frpc will send a GET http request '/status' to local http service
# http service is alive when it return 2xx http response code
healthCheck.path = "/status"
healthCheck.intervalSeconds = 10
healthCheck.maxFailed = 3
healthCheck.timeoutSeconds = 3

[[proxies]]
name = "web02"
type = "https"
localIP = "127.0.0.1"
localPort = 8000
subdomain = "web02"
customDomains = ["web02.yourdomain.com"]
# if not empty, frpc will use proxy protocol to transfer connection info to your local service
# v1 or v2 or empty
transport.proxyProtocolVersion = "v2"

[[proxies]]
name = "tcpmuxhttpconnect"
type = "tcpmux"
multiplexer = "httpconnect"
localIP = "127.0.0.1"
localPort = 10701
customDomains = ["tunnel1"]
# routeByHTTPUser = "user1"

[[proxies]]
name = "plugin_unix_domain_socket"
type = "tcp"
remotePort = 6003
# if plugin is defined, local_ip and local_port is useless
# plugin will handle connections got from frps
[proxies.plugin]
type = "unix_domain_socket"
unixPath = "/var/run/docker.sock"

[[proxies]]
name = "plugin_http_proxy"
type = "tcp"
remotePort = 6004
[proxies.plugin]
type = "http_proxy"
httpUser = "abc"
httpPassword = "abc"

[[proxies]]
name = "plugin_socks5"
type = "tcp"
remotePort = 6005
[proxies.plugin]
type = "socks5"
username = "abc"
password = "abc"

[[proxies]]
name = "plugin_static_file"
type = "tcp"
remotePort = 6006
[proxies.plugin]
type = "static_file"
localPath = "/var/www/blog"
stripPrefix = "static"
httpUser = "abc"
httpPassword = "abc"

[[proxies]]
name = "plugin_https2http"
type = "https"
customDomains = ["test.yourdomain.com"]
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:80"
crtPath = "./server.crt"
keyPath = "./server.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "plugin_https2https"
type = "https"
customDomains = ["test.yourdomain.com"]
[proxies.plugin]
type = "https2https"
localAddr = "127.0.0.1:443"
crtPath = "./server.crt"
keyPath = "./server.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "plugin_http2https"
type = "http"
customDomains = ["test.yourdomain.com"]
[proxies.plugin]
type = "http2https"
localAddr = "127.0.0.1:443"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "secret_tcp"
# If the type is secret tcp, remote_port is useless
# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor
type = "stcp"
# secretKey is used for authentication for visitors
secretKey = "abcdefg"
localIP = "127.0.0.1"
localPort = 22
# If not empty, only visitors from specified users can connect.
# Otherwise, visitors from same user can connect. '*' means allow all users.
allowUsers = ["*"]

[[proxies]]
name = "p2p_tcp"
type = "xtcp"
secretKey = "abcdefg"
localIP = "127.0.0.1"
localPort = 22
# If not empty, only visitors from specified users can connect.
# Otherwise, visitors from same user can connect. '*' means allow all users.
allowUsers = ["user1", "user2"]

# frpc role visitor -> frps -> frpc role server
[[visitors]]
name = "secret_tcp_visitor"
type = "stcp"
# the server name you want to visitor
serverName = "secret_tcp"
secretKey = "abcdefg"
# connect this address to visitor stcp server
bindAddr = "127.0.0.1"
# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from
# other visitors. (This is not supported for SUDP now)
bindPort = 9000

[[visitors]]
name = "p2p_tcp_visitor"
type = "xtcp"
# if the server user is not set, it defaults to the current user
serverUser = "user1"
serverName = "p2p_tcp"
secretKey = "abcdefg"
bindAddr = "127.0.0.1"
# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from
# other visitors. (This is not supported for SUDP now)
bindPort = 9001
# when automatic tunnel persistence is required, set it to true
keepTunnelOpen = false
# effective when keep_tunnel_open is set to true, the number of attempts to punch through per hour
maxRetriesAnHour = 8
minRetryInterval = 90
# fallbackTo = "stcp_visitor"
# fallbackTimeoutMs = 500

注意:上面为 frpc 完整配置,在使用前请先更先根据需求修改对应设置,保持为 frpc.toml 文件以供工具调用。

图床同款配置

将下面的文件保持为 frps.toml,Docker 部署参考命令 docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps

1
2
3
4
5
6
7
8
9
10
bindAddr = "0.0.0.0"
bindPort = 7000
auth.method = "token"
auth.token = "12345678"
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
webServer.tls.certFile = "server.crt"
webServer.tls.keyFile = "server.key"

将下面的文件保持为 frpc.toml,Docker 部署参考命令 docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
serverAddr = "0.0.0.0"
serverPort = 7000
auth.method = "token"
auth.token = "12345678"

[[proxies]]
name = "web01"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80
transport.useEncryption = true
transport.useCompression = true

[[proxies]]
name = "web02"
type = "tcp"
localIP = "127.0.0.1"
localPort = 443
remotePort = 443
transport.useEncryption = true
transport.useCompression = true

为网站添加图片 WebP 自动转换功能

2023年10月12日 00:00

杜老师今天是出差归来,在返京高铁上因为无聊,就看了下近期比较热门的 GitHub 开源项目,正好发现这款工具。可以自动将图片自动转换为 WebP 的格式,同时保持原有的 URL。快点进来了解下吧!

什么是 WebP

WebP 是一种新型图片格式,是由 Google 于 2010 年开发推出。它旨在提供比传统图片格式更高的压缩率,同时保持高质量的图像。

WebP 的优势在于可以在不影响图片质量的情况下显著减小文件大小,从而加快网页加载速度,提高用户体验。

WebP 支持有损和无损压缩,以及动画和透明度。此外,WebP 支持元数据,如 Exif 和 XMP 信息。这使得 WebP 在各种应用场景中都能提供良好性能。

然而,WebP 采用率相对较低,因为它需要较新的浏览器和图像处理库的支持。尽管许多现代浏览器都支持,但一些旧版浏览器和设备可能无法显示 WebP 图像。因此,在部署 WebP 图像时需要考虑到这一点并确保提供适当回退机制。

工具介绍

webp_server_go 是一个基于 Golang 的服务,允许您即时提供 WebP 图像。

webp_server_go 可以将指定目录中的图片自动转换为 WebP 格式,而不更改其 URL。

例如原图为 https://bu.dusays.com/2023/10/12/6527eee969d45.png,新图仍然为 https://bu.dusays.com/2023/10/12/6527eee969d45.png。但后者实际为 WebP 的格式。

webp_server_go 官方介绍支持 JPEG/PNG/BMP/GIF/SVG/HEIC 格式图片文件,实际测试仅 JPEG 格式效果良好。

部署方式

这里推荐使用 Docker 来部署,docker-compose.yml 的参考内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'

services:
webp:
image: webpsh/webp-server-go
# image: ghcr.io/webp-sh/webp_server_go
restart: always
environment:
- MALLOC_ARENA_MAX=1
volumes:
- ./path/to/pics:/opt/pics
- ./exhaust:/opt/exhaust
- ./metadata:/opt/metadata
ports:
- 127.0.0.1:3333:3333

将上方代码中 ./path/to/pics 改为图片所在的路径,如/www/wwwroot/bu.dusays.com./exhaust 为转换后 WebP 图片保存路径,./metadata 为元数据的保存路径。配置好后执行如下命令即可:

1
docker-compose up -d

调用方法

如果使用独立域名调用图片,可直接反代 http://127.0.0.1:3333,配置参考下图:

如果像杜老师仅处理 JPEG 格式图像,则可以在站点配置文件中添加如下的配置:

1
2
3
4
5
6
7
8
location ~* \.(jpg|jpeg)$ 
{
proxy_pass http://127.0.0.1:3333;
proxy_set_header X-Real-IP $remote_addr;
proxy_hide_header X-Powered-By;
proxy_set_header HOST $http_host;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
}

开往项目推荐

2023年10月6日 00:00

很早时杜老师就是开往用户,杜老师认为博主间应该多多互动,毕竟大多访客都是博主之间产生,而开往是非常好的平台,方便大家在多博客之间随机跳转。本文受项目组成员邀请推荐开往项目,并分享官方文化衫穿着体验。

项目介绍

开往是个以跳转功能为主的友链接力项目,其名字开往取自开放的网络。

将开往放入您网页,表示乐于分享并支持开放的网络。

每当有人访问加入开往的网页时,点击开往会随机跳转到另一个加入开往的网页。之后,再次点击网页的开往或后退网页,将继续随机跳转到另一个加入开往的网页。

我们希望这个项目能让友链接力下去,让更多的网页获得流量。站长也可以用开往互相交友。

汗衫秀图

刚收到汗衫后,杜老师便迫不及待的换上了,并未熨烫,所以效果有些折皱。这也说明含棉系数较多,不仅穿着舒适,而且干爽吸汗:

前面胸口处的 Logo 非常契合,即使穿着出门也不会显尴尬。后面 Logo 的设计也很好看。很荣幸能成为首批试穿用户:

个人感受

先聊聊文化衫。

首先杜老师对纯色汗衫,有着迷般喜爱。该款汗衫设计简单,毫无违和,穿着出行不会引来过多瞩目,同时也为项目做出更好宣传。

缺点就是因为纯棉设计,所以容易产生折皱,好在杜老师家用常备熨烫机,操作之后效果还是非常好的。只是拍照时因为心急并未先熨烫。

再说说该项目。

可以说杜老师说的访客前期来自学生,后期来自其它博主。

所以博主间的互动,可以带来流量,及创作的热情。而开往项目就提供一个平台,方便博主之间随机跳转,认识新朋友的同时,也会给自身的博客带来流量,在这里也祝福该项目能越办越好!

项目地址

开往项目官网地址:

某度网盘批量转存工具分享

2023年10月3日 00:00

前两天樱花童鞋在聊天室中分享一份资源,那可是近千条小姐姐的写真分享链接,不过这么多的资源一条条的转存太麻烦了,刚好看到 obaby 小姐姐分享的小工具,方便之余正好水文一篇!

工具介绍

某度网盘批量转存软件,可用于批量转存网络上分享的某度网盘链接到自己的某度网盘上。运行截图如下:

食用步骤

使用 Chrome 或者类似浏览器「最好用无痕式窗口模式」登录某度网盘主页,完全载入后调出控制台。点击进入到网络选项卡,目前应该空空如也:

刷新页面,下面出现多条记录,单击名为 main 开头的记录,右边出现菜单,在标头页面往下翻,找到请求标头中以 Cookie 开头行,后面有一串以 XF 开头的内容,这就是需要找的 Cookie。全部选中,右键选择复制,粘贴到软件对应输入框内就行了:

注意事项

保存位置如果留空不填,文件会保存到根目录下,就是打开某度网盘主页便能看到。

输入文件的保存位置后,如目录不存在,则会自动新建目录。如目录已存在,则直接转存指定目录下。

保存位置不可以包含大多数英文特殊符号,如输入的特殊符号不被允许,软件会检测并中断运行。

如果保存路径加文件名一起路径长度超过 255 个字符,用某度网盘客户端下载文件时会失败。应尽量用有意义的英文加数字作为保存目录名。

下载地址

下载地址:

下载地址

slicer-gui 音频分片工具一键包分享

2023年9月30日 00:00

有个小伙伴找到杜老师,说上篇分享的工具中分片功能不好用。这里为需要的小伙伴提供另一款工具,可以很简单的实现音频切片,并对 So-VITS-SVC 工具兼容性很好,欢迎下载体验!

工具介绍

slicer-gui 软件名为 Audio Slicer,为 OpenVPI 团队制作。

工具可以根据音量、间隔等参数对音频进行切片,对 So-VITS-SVC 工具的兼容性很好,非常适合模型训练。

食用步骤

下载好压缩包,解压后打开软件包目录,找到并打开 slicer-gui:

点击 Add Audio File 添加需要切片的音频文件「这里强烈建议使用 WAV 的格式」点击右侧的 Browse 设置输出目录,最后点击 Start 就行了:

注意事项

切片完成后请检查一下每个切片时长,如果超过 15 秒,请调小 Maximum Silence Length 阈值。

然后将时长超过 15 秒的文件重新切片,直到所有音频文件时长低于 15 秒。这样训练效果最好。

下载地址

下载地址:

下载地址

So-VITS-SVC 一键安装包分享

2023年9月27日 00:00

杜老师找到了一款工具,可以通过自己音色训练模型,然后通过文字转换语音,之前关于 DDoS 文章中的语音就是通过该工具生成。已经整理成一键包,感兴趣的小伙伴可以尝试下。

食用步骤

先解压压缩包,这里需要注意的是,路径中尽量不要出现中文的字符。找到并打开启动webui

会弹出 CMD 窗口,根据脚本自动安装所需要的运行环境,带安装完成后,会自动弹出浏览器打开工具页面「如果没有自动打开,可根据窗口 URL 提示手动打开」

在训练前,先录制一段不低于十分钟的声音「时长越久越好,音质越高越好,背景音越纯净越好」对声音文件做切片:

将切割后的 WAV 文件放入 dataset_raw/OUT 目录中:

切换到训练项,先点击识别数据集,然后点数据预处理:

待预处理完成之后,点击写入配置文件,然后就可以开始训练了:

如果需要使用模型,则切换推理项:

最后切换到文字转语音,输入编辑好的文字,建议勾选中自动f0预测,点击下方的文本转语音即可:

下载地址

下载地址:

下载地址

用 Enhancer Speech 修复语音

2023年9月17日 00:00

有小伙伴私信问杜老师:家中噪音较多,且没有专业的录音设备,如何录制出高音质的效果呢?今天为有此需求的小伙伴们推荐一款工具,可以将音频处理成专业音质。

工具介绍

Enhancer Speech 是一个强大工具,专门进行语音音频修复。Enhancer Speech 属于 Adobe Podcast 的一部分。Adobe Podcast 是 Adobe 推出的在线播客制作平台,使用人工智能使音频听起来更加专业。Adobe Podcast 提供的编辑功能,主要针对语音,不适用于音乐创作。

Enhancer Speech 利用 AI 技术调整声音,消除检测到的任何背景噪音,将普通的录音提升到接近专业录音室品质。

它的设计简单、方便易用,无需成为音频专家或音乐制作人即可获得出色效果。

这样的设计在播客领域尤其适用,因为许多播客制作者都是业余爱好而不是专业制作。任何可提高音频质量而无需大量花费的工具都是好东西。

食用方法

点击 这里 进入 Adobe Podcast 的官网,点击下面的 Go to Enhance Speech:

该工具需要登录 Adobe 账号才能使用,找到并点击 Sign in,如果没有账号可点击 Sign up「该服务不收费,可以放心注册使用」

登录后点击 Choose files,需要注意格式及大小的限制:

处理的速度还是很快的,我们可以在线试听,并对比处理前后的效果,如果没有问题点 Download 下载:

工具优点

Enhancer Speech 的一大优势是用起来非常简单。要做的是前往网页,上传音频,然后让人工智能完成其工作。这真的是傻瓜到极致了。

通过简单的拖放上传音频文件后,人工智能处理需要一点时间,可以借机休息片刻。完成后把音频文件下载保存就好。无需调整任何内容,学习曲线为零。

与其它在线音频修复增强工具比,处理结果非常厉害。特别是面对由于录制环境录制质量较差的音频,修复结果可能会大大的提升。回声和背景噪音是 Enhancer Speech 最大的用武之地,都会得到有效处理。

其另一大优点就是免费!

工具缺点

因为完全没有控制选项,所以无法更改或调整最终的处理结果。只能接受人工智能做出的决定和处理,仅此而已。虽然效果通常很好,但没有控制选项意味着它的应用场景受到限制。

它对于质量不佳的录音效果最好。如果录音处于良好的环境并拥有高质量的设备,那 Enhancer Speech 用处不大。

Enhancer Speech 支持 wav/mp3/aac/flac/ogg 文件格式。如音频是其它格式,则在上传之前需要做个转换。

其它限制包括上传音频长度不超过半小时。如超过了则需要在处理之前将其分割上传。

文件大小要求不超过 500MB,这对于 mp3 来说一般够了,但 wav 无损格式会比较大。同样可以拆分文件可以解决,虽然有点麻烦。

最后,一个用户在 24 小时内只能处理一小时音频。

Whisper 语音转文字工具识别准确率非正规测评

2023年9月11日 00:00

今天问了影石官方客服视频转换进度,得知杜老师录制的视频有些问题,官方在导出操作时也遇到了错误,正在积极解决,因此近期无法发布骑行视频。在龙兄建议下,做一篇测评文,测试下之前为大家分享的工具识别准确率!

测试环境

杜老师通过 AI 生成两段文字,通过文字转语音的功能,分别生成时长约一分钟音频文件。

为什么不自己录制?因为担心口音问题降低了识别率。

中文识别

下面是 AI 生成文字,大家可以对照一下:

1
2
3
4
阳光在晴朗的蓝天上闪闪发光,微风吹过树林。鸟儿们唱着甜美的歌,花儿绽放着鲜艳的色彩。这是一个美丽的日子,非常适合在公园野餐。
约翰和玛丽计划了好几个星期的野餐,他们很高兴能一起度过这一天。他们装了一篮子美味的食物,包括三明治、水果和自制甜点。他们还带了一条毯子坐在上面,还有一只飞盘玩。
当他们到达公园时,在一棵大橡树下发现了一个阴凉的地方。他们铺开毯子,准备野餐。他们轮流把飞盘扔来扔去,笑着享受着彼此的陪伴。
当太阳开始落山时,他们收拾好东西,开始走回自己的车。他们度过了美好的一天,他们迫不及待地想一起计划下一次冒险。

语音试听:

识别后的文字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
陽光在晴朗的藍天上,閃閃發光,微風吹過樹林。
鳥們唱著甜美的歌,花綻放著鮮豔的色彩。
這是一個美麗的日子,非常適合在公園野餐。
約翰和瑪麗計劃了好幾個星期的野餐,
他們很高興,能一起度過這一天。
他們裝了一籃子美味的食物,包括三明治、水果、
和自製甜點。他們還帶了一條毯子,坐在上面,
還有一支飛盤丸。當他們到達公園時,
在一棵大香樹下,發現了一個陰涼的地方。
他們鋪開毯子,準備野餐。他們輪流把飛盤扔來扔去,
笑著享受著彼此的陪伴。當太陽開始落山時,
他們收拾好東西,開始走回自己的車。
他們度過了美好的一天,他們迫不及待地,
想一起計劃下一次冒險。

识别时长:

英文识别

下面是 AI 生成文字,大家可以对照一下:

1
2
3
4
The sun was shining brightly in the clear blue sky, as a gentle breeze blew through the trees. The birds were singing their sweet songs, and the flowers were blooming with vibrant colors. It was a beautiful day, perfect for a picnic in the park.
John and Mary had planned the picnic for weeks, and they were excited to spend the day together. They packed a basket full of delicious food, including sandwiches, fruits, and homemade desserts. They also brought a blanket to sit on, as well as a Frisbee to play with.
As they arrived at the park, they found a shady spot under a large oak tree. They spread out the blanket and set up their picnic. They took turns throwing the Frisbee back and forth, laughing and enjoying each other's company.
As the sun began to set, they packed up their things and started walking back to their car. They had had a wonderful day, and they couldn't wait to plan their next adventure together.

语音试听:

识别后的文字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
The sun was shining brightly in the clear blue sky, as a gentle breeze blew through
the trees.
The birds were singing their sweet songs, and the flowers were blooming with vibrant
colors.
It was a beautiful day, perfect for a picnic in the park.
John and Mary had planned the picnic for weeks, and they were excited to spend the day together.
They packed a basket full of delicious food, including sandwiches, fruits, and homemade
desserts.
They also brought a blanket to sit on, as well as a Frisbee to play with.
As they arrived at the park, they found a shady spot under a large oak tree.
They spread out the blanket and set up their picnic.
They took turns throwing the Frisbee back and forth, laughing and enjoying each other's
company as the sun began to set.
They packed up their things, and started walking back to their car.
They had had a wonderful day, and they couldn't wait to plan their next adventure together.

识别时长:

轻音乐背景音

杜老师使用 Audition 截取了 A Little Story 一分钟左右的音频,并降低了 10dB 的音量。语音试听:

识别后的文字:

1
2
3
4
5
6
7
8
9
10
11
12
13
陽光在晴朗的藍天上閃閃發光,微風吹過樹林
鳥們唱著甜美的歌,花綻放著鮮豔的色彩
這是一個美麗的日子,非常適合在公園野餐
約翰和瑪麗計劃了好幾個星期的野餐
他們很高興能一起度過這一天
他們裝了一籃子美味的食物
包括三明治、水果和自製甜點
他們還帶了一條毯子,坐在上面,還有一隻飛盤丸
當他們到達公園時,在一棵大象樹下,發現了一個陰涼的地方
他們鋪開毯子,準備野餐
他們輪流把飛盤扔來扔去,笑著享受著彼此的陪伴
當太陽開始落山時,他們收拾好東西,開始走回自己的車
他們度過了美好的一天,他們迫不及待地,想一起計劃下一次冒險

人声背景音乐

杜老师使用 Audition 截取了月无眠一分钟左右的音频,并降低了 10dB 的音量。语音试听:

识别后的文字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
陽光在晴朗的藍天上閃閃發光,微風吹過樹林
鳥們唱著甜美的歌,花綻放著鮮艷的色彩
這是一個美麗的日子,非常適合在公園野餐
約翰和瑪麗計劃了好幾個星期的野餐
他們很高興能一起度過這一天
他們裝了一籃子美味的食物
像三明治、水果和自製甜點
他們還帶了一條毯子,坐在上面還有一隻飛盤玩
當他們到達公園時,在一棵大香樹下
發現了一個陰涼的地方
他們鋪開毯子,準備野餐
他們輪流把飛盤扔來扔去,笑著享受著彼此的陪伴
當太陽開始落山時,他們收拾好東西,開始走回自己的車
他們度過了美好的一天,他們迫不及待地想一起計劃下一次冒險

测评结果

中文识别转换为繁体字,其次在断句方面较精准。

英文识别非常精准,且断句也非常准确。

Whisper 对背景音处理非常好,不管是在有无人声背景音情况下,识别都很准确。

不过字体准确性还有待提高,识别后需仔细检查是否有错别字!

Whisper 免费离线语音转文字工具

2023年9月8日 00:00

有小伙伴私信到杜老师,询问语音转文字的方法。其实网上有很多此类的工具,不过大多数的工具都有时长限制,需要开通会员才能转换长时间的语音。本次为大家分享的工具,可以免费离线转换文字。

工具介绍

Whisper 是 GitHub 上一款开源程序,杜老师也是机缘巧合遇到的。

此工具仅支持 64 位架构,分为 GPU 版和 CPU 版本。

本次为小伙伴们分享的是 GPU 版本「需要独立显卡才能运行」如果需要 CPU 版本可在评论区留言。

该工具不仅可以将录制语音转为文字,还支持实时的转换,并可翻译文字。

工具下载

下面是杜老师转存好的网盘地址「无需注册或者下载软件」如想获得原有下载地址,可在评论区中留言:

下载地址

语音模型

在说明使用前,需要先下载好语音模型。Model 为模型名称,Disk 为模型大小,Mem 为预计显存占用:

ModelDiskMem
tiny75MB390MB
base142MB500MB
small466MB1.0GB
medium1.5GB2.6GB
large2.9GB4.7GB

请根据自己显存选择对应的模型文件「模型越大识别的越精准」杜老师已将模型文件转存至网盘,小伙伴可打开链接后点击 ggml 目录,在右侧弹出的文件浏览框双击 ggml,选择模型右键下载即可:

下载地址

食用方法

打开工具后首先需加载模型,图中杜老师选择了最大那个,点击 OK 进入下一步「此步操作后可一劳永逸,再次进入软件会跳过这一步」

Language 选择 Chinese「中文识别」Translate 是转换后翻译成英文「这里不做勾选」Transcribe File 框选择要转换的语音文件,Output Format 选择输出的文本样式「其中 Text file 为普通文本,Text with timestamps 为带时间线,其余两个均为字幕文件」并在下方框中设置输出路径,点击 Transcribe 即开始转换:

转换后弹出完成提示框,关闭即可:

如需实时转换,可点击下方 Audio Capture,在切换的页面中点击 Capture,工具会弹出终端提示框,不断刷新转换后的文字「会有较长延迟」如需保存为文件需要勾选 Save to text file:

四款内网穿透工具对比

2023年8月27日 00:00

前几天去不图床离线了两个小时,本以为又是服务器受到攻击,结果是 frp 出了问题。本来想换成 nps,结果做了一下测试,发现其性能不如 frp,借此杜老师分别对四款内网穿透工具做了测试,对比结果详见正文。

问题说明

查询了服务端运行状态,提示是 too many open files,意思是打开了太多文件,这是 Linux 内核的限制。修复方式就是修改内核配置,但会影响系统的稳定性。查看了官方 Issues,听说可以用 Docker 的版本解决该问题,目前去不图床使用 Docker 版本 frp 实现内网穿透:

TCP 协议的转发

这里给出四款内网穿透工具在 TCP 协议转发性能对比「内网服务器为北京联通,上行 50M 下行 500M。外网服务器为内蒙古云主机,上下行对等 100M」

工具平均延迟吞吐速率
frp27.935ms3.94MB/s
gost14.942ms5.08MB/s
nps40.902ms2.05MB/s
ssh-tunnel19.023ms4.96MB/s

HTTP 协议的转发

这里给出四款内网穿透工具在 HTTP 协议转发性能对比「内网服务器为北京联通,上行 50M 下行 500M。外网服务器为内蒙古云主机,上下行对等 100M」

工具平均延迟吞吐速率成功几率
frp104.92ms13.03MB/s100%
gost55.02ms12.07MB/s100%
nps390.01ms2.951MB/s91.9%
ssh-tunnel61.91ms9.93MB/s98.7%

配置复杂及安全稳定性

配置复杂程度是按配置文件行数确定,行数越多则越复杂「不按单行配置项的数量」安全性则考虑是否支持通信加密,即加密的级别;稳定性则是在 2H4G 的 CentOS7 系统上运行,通过压测运行结果:

工具配置复杂安全性能稳定性能
frp中等中上高等
gost中等中等中上
nps最低最低低等
ssh-tunnel低等中下中等

加入无畏云联盟每月白嫖 60G 流量

2023年8月24日 00:00

首先感谢无畏云在杜老师周年活动时,提供了大量流量兑换码,为不少需要的小伙伴提供了帮助。本次再度发布福利,加入无畏云联盟可每月白嫖 60G 的流量,点进文章查看详情!

项目介绍

无畏云科技 CDN 是家融合 CDN 解决方案供应商,这意味着它拥有一个强大且多样化的节点网络。无畏云科技 CDN 在全球范围内拥有多达几百个节点 IP 数量,这使得他们的服务能够覆盖更广阔的地区,确保您的网站内容能够快速送到用户手中:

而且,无畏云科技 CDN 的后端主要采用华为云、阿里云等节点,这意味着您可以放心地依靠他们的高品质基础设施和可靠性。他们节点分布广泛,覆盖了世界各地的主要区域,确保您的用户无论身处何地,都能够享受到快速且稳定的访问体验:

联盟福利

首先,无畏云科技 CDN 给予了用户非常慷慨的福利。注册后每个月都会免费赠送 30GB 的流量,这对于小型网站和个人博客来说是个非常棒的优势。令人振奋的是,当您申请加入无畏云联盟并在网站底部添加无畏云的 Logo 和链接后,您将获得每月 60GB 的免费流量,这是一个非常棒的增值服务:

总而言之,如您正在寻找一个可信赖的 CDN 服务提供商,无畏云科技 CDN 绝对是一个明智的选择。它不仅为您提供每月免费的流量赠送,还有丰富节点覆盖和可靠的后端设施。无畏云科技 CDN 将成为您网站加速得力助手,助您打造出色在线用户体验:

邀请链接

无畏云注册即会每月送 30G 的免费流量,通过杜老师的 邀请链接,可在注册后再获得 30G 的免费流量「即首月 60G 免费流量」

按照要求添加页脚图标,即可申请加入联盟,点击进入 联盟申请 填写相关信息即可。需要注意的是,如去除无畏云联盟 Logo 及链接,资源赠送将会暂停:

使用方法

管理平台使用非常简单,在左侧找到站点管理项,进入我的域名,点击添加域名,根据页面提示填写相关信息点击创建即可。需要注意的是,节点位于国内,所以域名需要备案才可使用:

点击左侧套餐管理——我的流量包项,可以查看流量使用情况。大家可以通过服务概览页面的邀请链接获得更多的流量,每邀请一位可获得 10G 的免费流量,无上限哦:

推一波长亭雷池 WAF

2023年7月31日 00:00

WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。区别于传统防火墙,工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好防护效果,使其免于受到黑客攻击。

何为雷池

雷池 是长亭科技耗时近 10 年倾情打造的 WAF,核心检测能力是由智能语义分析算法驱动。

在 ZhangZ 童靴的推荐下,杜老师了解到这款产品。家里的服务器因为经常更换地址,所以无法绑定宝塔账号,导致无法使用专业版的 Nginx 防火墙,正好这款工具可以替代实现防御。

雷池特点

更加便捷:

  1. 采用容器部署,一条命令即可完成安装;
  2. 安全配置开箱即用,无需人工维护,可实现安全躺平式管理。

更加安全:

  1. 首创业内领先智能语义分析算法,精准检测、较低误报、更难绕过;
  2. 语义分析算法没有规则,面对未知特征的 0day 攻击不再手足无措。

更高性能:

  1. 没有规则引擎,线性安全检测算法,平均请求检测延迟在 1 毫秒级别;
  2. 并发能力更强,可单核轻松检测 2000+TPS,只要硬件足够强劲,可支撑流量规模无上限。

更高可用:

  1. 流量的处理引擎基于 Nginx 开发,性能与稳定性均可得到保障;
  2. 内置完善健康检查机制,服务可用性高达 99.99%。

部署架构

下图是一个简单的网站流量拓扑,外部用户发出请求,经过网络最终传递到网站服务器。此时,若外部用户中存在恶意用户,那么由恶意用户发出的攻击请求也会经过网络最终传递到网站服务器:

社区版雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。通过以上行为,最终确保外部攻击流量无法触达网站的服务器:

运行效果

登录后在数据统计页面,可以看到今日的请求数、今日的拦截数、访问来源地址、网址访问情况等等信息:

在攻击事件页面中,可以看到攻击来源、持续时间,也能看到攻击状态:

在防护站点页面中,可以添加回源站点,并可设置运行模式「防护、观察、维护」

在通用配置页面中,可以配置各种防护模块:

水文防喷小福利篇

2023年7月28日 00:00

最近实在想不出该写什么好,想水一篇又怕被喷,所以直接放出福利好了。本次的福利是尊云的国内云主机,使用期限为一个月,一共四台。杜老师会在文章内说明领取规则!

主机配置

三台郑州线路、一台深圳线路,配置皆为 4G 内存 80G 硬盘「分为系统、数据双盘」10M 带宽 2 核 CPU,可选系统有 RockyLinux/Anolis OS/Tencent OS/CentOS/Windows/Ubuntu/Debian「小版本不列举」

领取规则

  1. 请在评论区中留下申请用途;

  2. 待收到回复后,可至导航栏中「点我在线聊天」私聊杜老师获取云主机连接信息;

  3. 解析域名需要备案,若无备案域名,可找杜老师获取免费的二级域名;

  4. 正规平台限制严格,严禁搭建各类违规网站、服务;

  5. 如需长期使用可以申请过户,按照平台要求,最低需支付一块钱;

  6. 最终解释权归杜老师说所有。

关于 7 月 22 日去不图床故障说明

2023年7月25日 00:00

去不图床与当日出现了访问以及使用故障,差不多十几个小时无法正常使用,为了避免有小伙伴担心杜老师会跑路,并担心数据的安全,在此杜老师发文说明下情况。

故障描述

大致出现两个故障,一个是使用的故障,一个是访问的故障。

使用故障是程序升级导致的。杜老师于事件前一天得知图床所用的程序,推出了新版本。考虑到现有图床的代码做了很多改动,故版本升级时,需要手动合并代码。就导致部分代码合并时出现问题,造成故障。表现为购买套餐是最后无法提交订单。目前已由图床作者「七月」帮忙解决故障。

另外一个访问问题,是攻击导致的。杜老师一觉醒来后「当日 13 点」收到了小伙伴留言,提醒图床无法正常使用。上线后首先排查了服务器的状态,发现并无问题。使用手机时看到了无畏云的流量通知,登录后发现赠送的流量都用光了,经流量分析后判定是被刷流量了。

无畏云目前仅提供加速节点,如需防御节点,可以联系客服人员切换。杜老师得知后第一时间切换至天御云,很快解决了访问的问题。

问题跟进

天御云除加速外还提供防护功能,开启大盾后降低了攻击影响,但同时也影响部分小伙伴的正常使用。

更重要是为了不影响天御云其它用户正常使用,杜老师将反代节点,切换至了闲置服务器上,使用单节点来应对攻击。

图床分为主站以及存储节点,攻击者首先攻击了存储节点,再切换后又转向了主站,所以两者目前都使用反代的形式继续提供服务。

因为本次攻击没有造成损失,故杜老师也不用收集证据贴图分享了。但影响了小伙伴们正常使用图床,在此表示强烈谴责。

后期计划

这应该是一次有针对的攻击,分别针对去不图床主站以及存储节点,而针对存储节点的攻击,是通过从杜老师说中获取的图片链接。

目前杜老师已将两个节点 CDN,都切换到了闲置服务器,通过反代继续提供服务,所以无法提供加速服务,仅可保证图床持续可用。

待稳定运行一段时间后,会切换 CDN「目前计划下个月初切换,因为会赠送免费流量包」

目前已腾出四台闲置服务器,分别用作反代图床主站、存储节点、付费系统、杜老师说博客,极大可能保证节约成本同时,保证服务可用。

写在最后

杜老师的技术有限,以自身的知识了解,这种形式的攻击是有一定成本的。不知是动了谁的蛋糕而报复,还是仅仅为了练习技术,杜老师都想不到会攻击到自己的头上。

因为没有任何损失,所以也不考虑追责。只是耽误了小伙伴使用图床,再次表示强烈谴责。

还请小伙伴们放心,杜老师说及旗下的服务、平台不会跑路,也在极力保证数据安全。

最后感谢小伙伴们的理解和支持,杜老师会提供、推出更多贴心服务,帮助更多的小伙伴体验到优质的网络环境。

正式提供公益聊天广场托管平台

2023年7月22日 00:00

自上次公布后,不少的小伙伴都加入到杜老师说旗下聊天广场,也有小伙伴问到了搭建方式。不过很多小伙伴因为带宽和服务器配置的问题,表示无法长期运营,故杜老师在此提供免费托管平台。

写在最前

首先杜老师仅提供自有团队支持,并非提供独立实例支持。

简单来说,需使用杜老师提供聊天广场,在平台上自建团队,然后邀请其他小伙伴加入并使用。

其次,团队所有者需保证聊天内容的合规性,不要交流、分享违规内容。

最后声明,如发现任何违规性消息,或是大量占用服务资源,杜老师说有权在不通知情况下解散团队并封禁账号。

平台使用

平台访问地址如下,也可通过杜老师说博客导航「点我在线聊天」进入:

点击上方地址,即可打开聊天广场登录页面,若之前未注册,可以点击红框处的没有账号:

在注册页面中依次填写邮箱、昵称、密码即可。其中邮箱尽量保障准确,未在线时可以收到私信通知:

进入后可选择加入杜老师说团队,如需自建团队,可点击红框处的创建新团队,填写相关信息即可。需要注意的事,通过生成邀请链接注册的用户会默认加入您的团队:

一个用户可以加入多个团队,通过点击红框所在列的团队图标切换;点击黄框处的 Add channels 可创建频道,方便交流不同主题;点击蓝框处可在页面的右侧弹出当前频道成员列表,带有绿色对勾标识当前用户在线;点击黄框处的 Start call 可在线聊天,并且支持屏幕分享:

鼠标划过每天聊天记录都可弹出更多操作,包括针对单条回复等等;如需编辑个人内容,可点击右上角的头像处;更多功能期待大家自行发现,支持各种类型文件上传,限制 50M 内:


其它终端

如不习惯长期开启网页接受消息,也可下载 PC 版客户端在后台挂机,在此放出绿色版本,无需安装,点击下方地址下载解压即可使用「如需其它平台,如 Linux 等可在评论区留言」

下载地址

除 PC 版外,杜老师还提供安卓版本,点击下方链接即可下载安装。苹果手机可至软件商店搜索 Mattermost 下载并安装即可:

下载地址

平台规则

  1. 国内对于即时通信平台都有严格审核机制,杜老师的精力有限,还请各团队的所有人保障聊天及分享内容的健康度;

  2. 杜老师说旗下聊天广场托管平台不保证数据安全性,尤其服务器的资源有限,会定期归档旧数据「包括但不限于团队、频道、文件」

  3. 聊天广场仅供技术交流,平台仅供程序测试,所有用户发言均与杜老师说无关;

  4. 会不定期补充详细规则,解释权归杜老师说所有!

杜老师说五周年及无畏云 CDN 推荐

2023年7月10日 00:00

不知不觉,杜老师说已经建站五周年了,快点进来看看杜老师的感想,顺便了解下无畏云。这次杜老师是带了满满的诚意和福利来的,别再说文水了。再次强调结尾有福利哦~

五周年了

月初收到来自十年之约项目组的邮件,祝贺杜老师说已经建站了五周年。没想到时间过的这么快,转眼间五年过去了。有些小伙伴可能关注过杜老师建站史,本站 2018 年 7 月 10 日创建,于次年同日正式上线的:

五年运营期间,经历风风雨雨。最大的问题就是为了减少维护的成本,不断在各种平台上试错,最终还是选择了服务器。还有一个问题就是站点页面生成时间太长,之前考虑过更换博客的框架,最终因为 URL 问题而放弃:

运营感想

杜老师一直坚持互动是维持博客活力最佳方式,会经常拜访博客圈的小伙伴,对于每条评论都会回复以及回访,建站至今,留言量 28152「含杜老师回复」浏览量 1352859「自提供不蒜子服务后才开始统计」

感谢小伙伴们的支持和信任,杜老师说旗下图片托管平台「去不图床」至今已有 11500+ 用户量,图片托管量 207800+。虽说和大站完全没得比,但在杜老师的心中,这是大家对一个小博客站长的信任和支持:

无畏云 CDN

答应一位小朋友帮忙推广无畏云。了解杜老师的小伙伴应该都知道,杜老师推荐的不一定是精品,但一定是自己用过,而且使用体验比较好的。无畏云属于融合 CDN,后端主要使用华为云的节点,不仅高速而且稳定:

为了测试速度和稳定性,杜老师已经将去不图床外链加速节点,切换到了无畏云上,大家可以在评论区上传图片,体验加速后的外链效果。另外杜老师已经替换了家中的路由器,换成了性能更好的软路由器,同时稳定性也得到更好保障:

福利放送

重点来了,为了感谢小伙伴的支持,杜老师说斥资千元定制了 100 套小礼品,可以看下方效果图。欢迎点击 这里 留下您的信息,杜老师会尽快将礼品发过去「仅有 100 件,先到先得,提交截止 7 月 16 日」

接下来是第二个福利哦,无畏云的 邀请链接,使用邀请链接注册的小伙伴每月赠送 30G 的流量,且首月多赠送 30 的流量。还不够用?可以点击 这里 进入聊天广场,私信杜老师可获取「杜老师说五周年专属兑换码」私信方法可见下图,首先点击左侧成员列表,然后点击右侧发送私信即可「兑换码于 7 月 14 日截止」

Mattermost 开源社区部署及聊天广场推广

2023年7月1日 00:00

之前就有小伙伴问到杜老师有没有交流群。平时杜老师很少会使用到 QQ,微信也很少看,但为了能及时收到小伙伴反馈的信息,所以搭建交流社区「可惜没多少人」最近发现有个开源聊天社区,决定尝试一下!

服务介绍

Mattermost 是一个 Slack 开源替代品。Mattermost 采用 Go 语言开发,是一个开源的团队通讯服务。为团队带来跨平台消息、文件分享,提供归档以及搜索功能。运行界面如下:

部署过程

下面说下如何在 Linux 系统,通过 Docker 来部署,需要提前准备好 Git 运行环境。执行下面代码可实现一键部署 Docker 运行环境:

1
curl -fsSL https://get.docker.com | bash -s docker

使用 Git 下载 Mattermost 官方 Docker 部署代码库,并进入代码库:

1
2
git clone https://github.com/mattermost/docker
cd docker

复制环境变量模板文件,并修改其中的内容。将 DOMAIN 后的值改为自己的域名:

1
cp env.example .env

在上面的 docker 目录创建数据库映射目录,并修改目录所有者:

1
2
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

使用命令 mkdir -p ./volumes/web/cert 创建证书的保存目录,并自行申请 SSL 证书将其重命名放入以下路径中,注意上方是 CERT 证书、下方是 KEY 证书:

1
2
./volumes/web/cert/cert.pem
./volumes/web/cert/key-no-password.pem

使用命令 sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml up -d 完成服务的自动部署,即可通过之前绑定的域名访问了。如需停止服务,可以使用以下命令:

1
sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml down

服务推广

杜老师在一台临时服务器上搭建了该服务,方便小伙伴们体验,地址如下:

注意事项

国内对于即时通信平台都有严格审核机制,自行搭建平台可能触发运营商的监管,部署前请慎重考虑。

另外建议可使用境外云平台部署,部署时不要使用主域名,防止境内网络挟持。

需要的小伙伴也可直接使用杜老师的聊天广场托管,无意外会长期运行,

最后进行免责声明,以上内容仅供技术交流,聊天广场平台仅供程序测试,所有用户发言均与杜老师说无关!

1Panel 新一代 Linux 服务器运维管理面板

2023年6月19日 00:00

很多小伙伴都在用某塔控制面板,但随着商业化推进,越来越多的插件和服务,都开始收费了。近期杜老师发现了一款新一代的 Linux 服务器运维管理面板,主要是通过 Docker 来部署环境和服务,感兴趣的小伙伴可以试一下!

面板优点

  1. 快速建站:深度集成 WordPress 和 Halo 等,域名绑定、SSL 证书配置等一键搞定;

  2. 高效管理:通过 Web 端轻松管理 Linux 服务器,包括应用管理、主机监控、文件管理、容器管理、数据库管理等;

  3. 安全可靠:提供防火墙和安全审计功能;

  4. 一键备份:支持一键备份、恢复,备份数据云端存储,永不丢失。

环境要求

  1. 操作系统:支持主流 Linux 发行版;

  2. 支持架构:X86/ARM 等;

  3. 内存要求:建议可用内存在 1GB 以上;

  4. 访问要求:请使用 Chrome/Firefox/Edge 等现代浏览器。

面板安装

CentOS/RHEL 一键安装的命令如下:

1
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

Ubuntu 一键安装的命令如下:

1
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

Debian 一键安装的命令如下:

1
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

面板截图

面板安装速度很快,使用安装后提供的登录地址及相关信息进入到面板:

首页既是概览信息,包含网站、计划任务、数据库等数量,同时也显示了服务器的运行状态:

应用商店可以安装、升级、备份、恢复应用。在已安装列表,可对应用进行同步、升级、重启、启动、停止、删除、备份、恢复操作:

网站管理,主要用于管理和创建 Web 站点,快速创建各种架构网站。管理证书相关,包括申请证书、续约证书、ACME/DNS 账户管理等:

在数据库页面,支持 MySQL/Redis 数据库:

1Panel 的服务环境是通过 Docker 部署,可以通过该项管理所有服务,及查看其状态:

该页面主要用于管理需要定时执行的任务,如定期执行 Shell 脚本、定期备份、定期访问 URL 等,同时支持手动执行:

文件管理实现了很多实用的文件操作,除了基本剪切、复制、粘贴、删除操作,还支持上传和下载文件、压缩和解压缩、加密以及解密、批量操作。进入监控报表,直观了解服务器的运行状态,包含平均负载、性能监控、内存使用监控、磁盘监控、网络监控。进入终端页面,终端默认连接本地主机:

该页主要记录当前面板操作的日志及状态,如在面板上站点的添加,数据库的添加,支持资源、状态过滤:

支持面板一些基础设置,针对一些系统要求等级比较高的用户,支持设置是否开启服务器监控和监控日志保留天数,快照用于全量备份 1Panel 所产生数据:

又一款碾压 ChatGPT 的 AI 人工智能应用

2023年6月7日 00:00

在上一篇分享文中,杜老师介绍了 3 款免费的 GPT-4 平台,今天杜老师又遇到一款能碾压 ChatGPT 的 AI 人工智能应用,并支持多平台「含 Web、安卓端等」该平台同样支持 GPT-4,可惜的是需要科学上网才可访问。

访问地址

访问地址如下,再次强调一下,需科学上网才可以访问:

食用方法

在使用平台的服务之前,需要先同意平台的隐私协议,这里需点击 Accept:

页面支持语言切换,无需我们使用浏览器的翻译功能,点击右上角的 EN 可选择中文:

手机端的小伙伴们可以下载对应端 APP,杜老师还没有试过,体验过的小伙伴可留言评测:

该平台支持根据关键词生成图像,相比平时的 ChatGPT 功能更加齐全:

这里的名人栏,可以切换不同角色,平台会模仿名人语气与我们对话,还挺像的:

测试一下文字对话,效果如下:

免费使用 ChatGPT-4 的 3 种方法

2023年6月4日 00:00

最近在小伙伴们的博客乱串,发现洪兄会经常分享一些 AI 站的使用体验,今天杜老师也蹭波热度,水一篇分享文。大家都知道目前可白嫖的 ChatGPT 几乎都是 GPT-3.5 版,文字缺失零星,杜老师为小伙伴们介绍免费使用 ChatGPT-4 的 3 种方法,希望能帮到有需要的小伙伴!

免费站一

点击 这里 访问「注意需要科学访问」该站无需注册。在页面上方选择 GPT-4。Active persona 对应了 AI 的角色,可以选择不同身份记性对话,它们语气语态也会有所不同。Access internet 为在模型无法处理时,是否进行网络请求,Never 对应着从不,Auto 对应着自动,Always 对应着总是请求。在页面下方输入框键入关键词即可,对话效果可见下图:

免费站二

点击 这里 访问「注意需要科学访问」该站已经无需审核,且不需要登录即可使用「但对话有次数限制,可通过登录解决限制的问题」点击立即聊天,在新页面中选择更有创造力的对话样式,该样式使用 GPT-4 模型。在页面下方输入框键入关键词即可,对话效果可见下图:

免费站三

点击 这里 访问「此站无需科学访问」该站无需注册,但需要自定义身份模型。Name 为 AI 的名称「这是机器人的显示名称,当用户与之交互时,将显示给用户」Prompt 为 AI 的身份「添加说明,让聊天机器人记住,可以使用它根据自己的喜好自定义聊天机器人」Description 为可选「使用它来描述聊天机器人的作用,将在用户与之交互时显示给用户」输入完成后点击 Create Bot:

页面跳转后即可在下方输入框键入关键词进行对话,效果可见下图:

写在最后

ChatGPT 确实方便了我们的工作和生活,就比如杜老师每次工作需要编写文稿,都会使用 ChatGPT 来生成大纲,写好的文稿也会通过其润色,这样提升了效率的同时,也获得更好的工作成果。

但随着博友间日常拜访,杜老师发现很多小伙伴开始使用 ChatGPT 来生成文章,拓展其博客文章量。在个人主观的角度,还是不建议如此操作的,毕竟 ChatGPT 生成的文字客观性很大的,但并无明确的态度以及思想,建议适度使用。

杜老师近日也是特别的繁忙,服务器被攻击来不及去处理,导致图床几个小时无法访问;留言来不及去回复,堆积了几天的留言还未回访;文章来不及去编写,只能用口水文代替。但仍感谢小伙伴们不断地支持和帮助。

最后,今天是 bill 小朋友的生日,祝他生日快乐!

FreeDB 免费数据库托管服务

2023年5月29日 00:00

《Vercel 免费托管 Typecho 博客》一文中提到了免费的数据库托管,今天杜老师就来介绍下 FreeDB,它提供免费的远程 MySQL 数据库托管和优质的稳定服务,以满足项目的需求。本文详细说明其注册及使用方法!

什么是 FreeDB

FreeDB 是免费 MySQL 托管服务提供商,免费提供 50MB 数据库,可以通过获取专业计划进行扩展。

每小时最大查询数为 800,每小时最大更新数为 800,最大连接数 800。

服务条款:

  1. 数据库中不得包含任何非法内容;

  2. 数据库大小不应超过 50MB;

  3. 如滥用服务将导致终止;

  4. 如果数据库凭据在互联网上泄露,帐户将被终止;

  5. 每个人只允许拥有一个帐户;

  6. 一次性或者临时电子邮件帐户将自动终止.

服务配置

  1. 1 个 MySQL 数据库;

  2. 50MB 数据库存储空间;

  3. 允许远程连接 MySQL 数据库;

  4. MySQL 8数据库;

  5. phpMyAdmin 数据库管理面板;

  6. 每小时最大查询数为 800,每小时最大更新数为 800,最大连接数 800。

注册使用

点击 这里 访问 FreeDB 的官网,并点击 Get Started:

依次填入邮箱、昵称、密码,并进入邮箱内接收验证邮件:

通过验证邮件链接跳转页面,分别输入项目介绍、使用方式、用户名称:

在 FreeDB Free Database Panel 处依次输入数据库名称和数据库用户,并点击后面的创建:

完成创建即会显示连接信息,分别提供远程连接地址、连接端口、数据库名、用户名及密码:

如需管理,可点击下方的 PhpMyAdmin 5.1 进入到控制面板:

推荐一下 Fgaoxing 与武汉初柒公司提供的公益 CDN

2023年5月26日 00:00

杜老师一直都非常支持公益项目,近期发现博友圈内,又有小伙伴提供公益 CDN 服务。感谢 Fgaoxing 与武汉初柒公司提供的公益 CDN,杜老师亲测还不错,故发文推荐下!

项目官网

项目官网地址如下:

服务介绍

自从 jsD 被禁后,国内调用 GitHub 的文件愈发困难,虽然一些热心的小伙伴提供 NPM 公益镜像源,但调用时,仍然需要上传文件到 NPM 平台,操作十分不便。

CDNN 是一个独立于 jsDelivr 和 cdnjs 的公益 CDN,与 jsDelivr 用法类似,并且速度极快,可用于任何网站引用 GitHub/NPM/Gitee/cdnjs 等中的文件和图片。由 Fgaoxing 与武汉初柒公司合作搭建公益 CDN,使用数据库存储,缓存时长六个小时,部署于初柒云,目录结构于 jsD 类似。

使用规则

  1. 禁止大量请求,反复获取,对本站流量及带宽造成影响;

  2. 不得用其获得违法内容,否则本站概不负责;

  3. 如果存储隐私内容,并且使用使用 CDN 缓存后,导致无法删除,本站不会理睬。

  4. 如遇问题,可以前往官网支持群 115967669 获取帮助。

用脚本部署 Bitwarden 密码管理平台

2023年5月23日 00:00

应海阔蓝童鞋的需求分享如何使用 Docker 部署 Bitwarden 密码管理平台的教程。因杜老师近期出差时间紧张,没有精力细致整理排版,但确保可成功部署,需要的小伙伴可以参考,如有建议可在评论区中留言!

准备工作

在开始部署 Bitwarden 之前,请确保已经安装 Docker。这里以 Ubuntu 为例,更新软件包索引并安装软件包以允许使用基于 HTTPS 存储库:

1
2
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

添加 Docker 官方 GPG 密钥:

1
2
3
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

使用以下命令设置软件包存储库:

1
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新索引:

1
sudo apt-get update

安装 Docker Engine 等相关组件:

1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行映像以验证 Docker 引擎安装是否成功「可选」

1
sudo docker run hello-world

拉取源码

1
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod +x bitwarden.sh

注意:将 Bitwarden 安装脚本 bitwarden.sh 下载到计算机上。

部署项目

1 为设置访问域名;2 为是否申请安全访问证书「为了演示,杜老师这里选择否」3 为设置数据库的名称「可自定义」4 输入安装 ID「申请页见下图」5 输入安装 KEY;6 是否自定义安全证书「为了演示,杜老师这里选择否,如果遇到问题,可在评论区中留言」7 是否配置自签名证书:

1
2
3
4
5
6
7
8
penn@penn-virtual-machine:~$ sudo ./bitwarden.sh install
(1) Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com): bw.dusays.com
(2) Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n): n
(3) Enter the database name for your Bitwarden instance (ex. vault): bitwarden
(4) Enter your installation id (get at https://bitwarden.com/host):
(5) Enter your installation key:
(6) Do you have a SSL certificate to use? (y/n): n
(7) Do you want to generate a self-signed SSL certificate? (y/n): n

安装 ID 和 KEY 的申请页面如下:

启动服务

使用下面命令启动服务:

1
sudo ./bitwarden.sh start

其它指令列表如下:

指令作用
restart重新启动所有容器「与 start 相同」
stop停止所有容器
update更新所有容器和数据库
updatedb更新、初始化数据库
updaterun更新运行脚本文件
updateself更新此主脚本
updateconf在不重新启动正在运行实例的情况下更新所有容器
uninstall在执行此命令之前,系统将提示保存数据库文件。将创建数据库的 tar 文件,包括最新备份。停止容器,删除目录及其所有内容,并删除临时卷。执行后系统将询问是否要清除所有 Bitwarden 镜像
renewcert续订证书
rebuild从 config.yml 中重建生成的安装资产
help列出所有命令

访问页面

项目启动后根据之前设置的域名访问:

写在最后

前端建议用 Nginx 反向代理,并通过 SSL 加密,以保证密码的安全。

后期杜老师也会进一步整理此文,并尽可能增加应用实例。

Vercel 免费托管 Typecho 博客

2023年5月20日 00:00

应 bill 小朋友的需求分享如何使用 Vercel 免费托管 Typecho 博客教程。因杜老师近期出差时间紧张,没有精力细致整理排版,但确保可成功部署,需要的小伙伴可以参考,如有建议可在评论区中留言!

写在前面

Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴。Typecho 基于 PHP 开发,支持多种类型的数据库,是款内核强健﹑扩展方便﹑体验友好﹑运行流畅的轻量级开源博客程序。

Vercel 是一个用来部署前端应用的云平台,但也可以用来构建轻量级的事件驱动,并部署到它的全球边缘网络。很多小伙伴喜欢使用 Vercel 部署博客,但大家可能不知道,Vercel 还支持 PHP 源码的部署。今天我们就用 Vercel 免费部署 Typecho 博客!

准备工作

  1. Typecho 非最新版本源码「1.2.0 版会检测目录是否能写入,推荐使用 这个 源码,感谢小伙伴的提醒」

  2. GitHub 账号及相关工具「推荐用 GitHub Desktop」

  3. MySQL 或其它类型数据库的托管平台「本文用 FreeDB 演示」

  4. Vercel 的账号「推荐用 GitHub 账号登录」

操作步骤

在 FreeDB 申请免费 MySQL 数据库:

在 Typecho 源码目录下新建文件 config.inc.phpvercel.jsonapi/index.php 等文件,效果如下:

其中 config.inc.php 文件的内容如下「注意 host/user/password/database 请根据实际信息修改」

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
define('__TYPECHO_SECURE__',true);
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');
define('__TYPECHO_THEME_DIR__', '/usr/themes');
define('__TYPECHO_ADMIN_DIR__', '/admin/');
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);
require_once 'Typecho/Common.php';
Typecho_Common::init();
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
'host' => 'sql.freedb.tech',
'port' => 3306,
'user' => 'freedb_dusays',
'password' => 'sPyT&R#5NyFPSnP',
'charset' => 'utf8mb4',
'database' => 'freedb_dusays',
'engine' => 'MyISAM',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

vercel.json 文件的内容如下:

1
2
3
4
5
6
7
8
{
"functions": {
"api/index.php": {
"runtime": "vercel-php@0.4.0"
}
},
"routes": [{ "src": "/(.*)", "dest": "/api/index.php" }]
}

api/index.php 文件的内容如下:

1
2
3
4
5
6
7
8
9
10
<?php
$file= __DIR__ . '/..'.$_SERVER["PHP_SELF"];
if(file_exists($file))
{
return false;
}
else
{
require_once __DIR__ . '/../index.php';
}

在 GitHub Desktop 新建项目,并上传 Typecho 源码:

在 Vercel 导入刚新建的项目,部署后即可通过域名访问 Typecho 安装页面:

访问 Vercel 提供的域名,记得在域名结尾添加 /install.php

写在最后

杜老师首先要提醒使用这种方式的小伙伴,用于短期体验折腾没有问题,长期的话建议还是用服务器托管。

该种方式源码端的变更「例如上传文件」无法同步至 GitHub 仓库,这就会造成数据的丢失。

线上类工具是否需要 All In One

2023年5月8日 00:00

随着互联网技术的不断发展,线上类工具越来越多,由于新产品的不断涌现,市场竞争日趋激烈。对于生产者而言,如何满足用户不断变化的需求,成为了他们需要思考的问题之一。因此,不断有人提出,线上类工具是否需要具备 All In One 的功能,本文就此进行讨论。

降低使用门槛

作为一个在线工具,如果没有 All In One 的功能,那么大多数用户需要在不同的网站或应用之间进行切换,造成了不少不必要的时间浪费。

对于那些不太熟练使用电脑的人来说,这样的过程会更加繁琐,造成了用户的不好体验。因此,如果线上类工具能够提供 All In One 的功能,那么对于用户而言,使用起来就会更加简单、便捷。

易于掌握需求

在许多情况下,用户们往往需要使用多个工具来完成一件事情。如果工具不提供 All In One 的功能,那么在产品迭代升级过程中,还需要和其他厂商的产品协商、合作,才能实现用户所需的全部功能。

这样一来,就会大大增加迭代升级的复杂度,影响产品的上线效率。而如果工具具备 All In One 的功能,那么就非常便于掌握用户需求,扩展产品的功能,提高企业的竞争力。

利于数据分析

对于运营商而言,如果一个工具拥有 All In One 的功能,那么企业就可以更加全面、准确地了解用户行为,并对用户进行更好的分析和挖掘。

这对于企业来说,是一种非常好的机遇,因为通过数据分析,企业可以更加准确地把握用户的需求,调整产品的方向和策略。

All In One 的实践

许多线上类工具已经开始推行 All In One 的功能,例如腾讯文档,不仅支持文档编辑,还支持工作流、互动评论等多种功能;百度网盘不仅具有文件上传、下载功能,还支持文本编辑、音视频播放等多种功能。

这些工具的实践表明,All In One 功能的实现,能够极大地优化用户体验,增加工具的使用率,提高企业的竞争力。

杜老师的推荐

很多小伙伴都会推荐 Notion,杜老师也是 Notion 忠实用户,不过局限于境外的访问速度和稳定性,最终杜老师选择了国内的 FlowUs,可以说是最接近 Notion 的一款产品了,目前除了没有 API 外,几乎所有功能都可满足杜老师的日常、办公、学习、娱乐等方面的需求,感兴趣的小伙伴可点击 这里 前往注册页面「邀请链接是 bill 小朋友的,他希望能通过邀请积分兑换付费会员」

写在文章最后

本文经过分析发现,线上类工具是否需要 All In One 的功能,是企业在产品开发过程中需要思考的问题之一。

而从用户体验、企业竞争力、数据分析等方面分析,All In One 功能是一种非常好的功能,能够让企业更好地把握用户需求,提高产品的使用率和市场竞争力。

终极广告拦截器 Adguard「合购计划」

2023年5月5日 00:00

Adguard 是一款功能非常全面的广告拦截器,它保护您的隐私和安全,同时能够改善您的浏览体验。如果不想被广告所干扰,建议试试下 Adguard。担心官方价格过高,可以加入杜老师的合购计划,用更少费用体验更好的服务!

广告拦截功能

Adguard 能够在您浏览器和应用程序中拦截广告,让您浏览体验更加流畅。

同时,它还能够防止您被弹窗窗口或烦人的跟踪器所干扰。

隐私保护功能

Adguard 可以有效地保护您的隐私,它能够过滤掉那些会收集您个人信息的庞大数据集。

这个功能在防止广告系统跟踪您在线活动方面尤其重要,从而保障您的个人隐私。

安全保障功能

Adguard 还具有一系列的安全保障功能,防止您访问恶意网站和下载包含病毒或恶意软件的文件。

这是非常重要的,尤其是在使用公共 WiFi 时。

软件合租计划

Adguard 官方终身版本售价 169.99 美元,可为九台设备授权。杜老师计划合购的每份价格 30 元,目前已出一份,还剩八份「剩余信息实时更新」有需要的可以评论留言。注意一经售出,概不退款:

❌
❌