分类: Github项目

GitHub是全球最大的开源社区​​:
•​​海量开源项目​​:数百万的开源项目托管于此,涵盖了几乎所有编程语言和技术领域。
•​​参与和贡献​​:任何开发者都可以轻松地 Fork 项目,进行修改并通过 Pull Request 贡献代码。
•​​探索与学习​​:开发者可以通过 GitHub 发现新技术、学习最佳实践并了解行业趋势

  • 告别环境冲突:在Docker中轻松构建可移植的Hexo博客

    告别环境冲突:在Docker中轻松构建可移植的Hexo博客

    任何存在,都渴望一种不依附于他者的“自在”状态。一个博客也是如此。直接安装Node.js,如同让博客的灵魂与服务器的肉身紧密捆绑,是为“不自在”。

    本文LeePoet将演示如何用Docker为Hexo博客构建一个“自洽的孤岛”。我们不仅讨论“拉取镜像”、“挂载目录”这些“术”,更探讨其背后的“道”——如何通过隔离实现和谐,通过约束获得自由。最终,博客将如LeePoet所追求的精神一般,独立、洁净,且便于迁徙,在任何新的“宿主”上都能瞬间重生。不欲让Node.js的烟火气沾染我清净的宿主机。于是,LeePoet决定效仿古人,为Hexo博客,造一座独立的园林。这篇随笔,记录了LeePoet如何用Docker这“芥子纳须弥”之术:先于宝塔面板迎回Docker这位“造园师”,再请来Node.js作为园中“嘉宾”。不仅要在容器这片“净土”内为Hexo“筑巢”,更妙的是,通过一扇名为“目录挂载”的月亮门,使园中之景(博客源码)与园外世界(宿主机)虚实相生,永不丢失。

    先给宝塔面板安装DOCKER模块

    安装完毕刷新面板

    在DOCKER里安装NODEJS容器

    一.先查看一下docker的版本,验证一下

    docker --version

    通过DOCKER拉取NODEJS镜像到本地(直接拉的是latest版的)

    1.通过终端安装

    docker pull node

    2.或者通过面板安装

    这里可以自定义版本,比终端安装要方便些

    3.查看本地像镜是否安装成功

    方案解析:可以把 Docker 想象成一个“集装箱”系统:

    • 宿主机:是码头。
    • Docker 镜像:是放在码头仓库里的、一个装满特定程序(Node.js)的“集装箱蓝图”。
    • Docker 容器:是根据“蓝图”启动的一个正在运行的“集装箱”。

    现在的情况是:码头(宿主机)本身没有 Node.js 程序,只是仓库里有一个装满 Node.js 的集装箱(镜像),但这个集装箱还没被打开和运行。

    *NODEJS也是可以直装宿主机的,如:apt install nodejs,在这之前建议先apt update更新软件包,但LeePoet的选择是在 Docker 容器中运行 Node.js,因为这样的环境和管理更方便。刚刚操作就相当于码头(宿主机)本身没有 Nodejs 程序,只是仓库里有一个装满 Nodejs 的集装箱(镜像),但这个集装箱还没被打开和运行。

    二、基础篇**

    下面就基于已经拉取的node镜像启动一个容器在这个容器内安装HEXO,并将宿主机的一个目录“映射”到容器内,作为 Hexo 的工作目录。这样,所有 Hexo 项目文件都会保存在宿主机上,即使容器被删除,你的博客源码也不会丢失。更方便管理。

    步骤一:准备宿主机工作目录

    在宿主机上创建一个目录,用于存放 Hexo 博客项目。例如:

    mkdir -p /home/leepoethexo
    

    步骤二:创建并运行 Docker 容器

    使用以下命令启动一个交互式容器,并将刚才创建的目录映射到容器内的一个路径(例如 /app)。

    docker run -it --name leepoet-hexo -v /home/leepoethexo:/app node:latest /bin/bash
    
    • --name leepoet-hexo:为你创建的容器起一个有意义的名字,比如我取的是 leepoet-hexo
    • -v /home/leepoethexo:/app:这是最关键的部分!-v参数将宿主机的 /home/leepoethexo目录“挂载”到容器内的 /app目录。两者内容完全同步。
    • node:latest:指定使用你已有的 node 镜像。
    • /bin/bash:启动容器后运行 shell,让你可以输入命令。

    执行完这个命令后,会直接进入容器的命令行界面(提示符会变成 root@容器ID:/#)。

    步骤三:在容器内安装 Hexo

    现在,已经在容器内部了。接下来的操作都在容器内进行。

    1.安装 Hexo 命令行工具:
    npm install -g hexo-cli
    
    2.(可选,但推荐)检查安装是否成功
    hexo -v
    

    如果成功,会显示 Hexo 和 Node.js 的版本信息。

    步骤四:初始化你的博客

    重要:确保在容器内的 /app目录下操作,因为只有这个目录与宿主机是联通的。

    1.进入挂载目录
    cd /app
    
    2.初始化 Hexo 项目
    hexo init .
    

    (注意命令最后有一个点 .,这表示在当前目录 /app初始化。)

    3.安装依赖包
    npm install
    

    步骤五:测试运行

    在容器内,使用 Hexo 命令启动本地服务器:

    hexo server -s -p 4000
    
    • -s:静态模式。
    • -p 4000:指定端口为 4000。

    但是,此时还无法在宿主机上访问,因为容器的 4000 端口还没有映射到宿主机。

    步骤六(重要):退出并重新创建容器以映射端口

    现在需要一个更完善的容器,它既能持久化文件,又能映射端口。

    1.退出当前容器:在容器命令行中输入 exit
    2.删除刚才创建的容器(别担心,博客文件在 /home/leepoethexo里很安全):
    docker rm leepoet-hexo
    

    *因为刚刚的容器名字我取的是“leepoet-blog”

    *在docker rm leepoet-hexo我们可以通过docker ps -a参数查看所有容器。

    3.重新创建一个“终极版”容器,同时映射端口和挂载目录:
    docker run -it --name leepoet-hexo -p 4000:4000 -v /home/leepoethexo:/app node:latest /bin/bash
    
    • 新增了 -p 4000:4000参数,将容器的 4000 端口映射到宿主机的 4000 端口。
    4.再次进入容器后,切换到 /app目录,启动服务器:
    cd /app
    npm install -g hexo-cli
    hexo server -s -p 4000
    

    现在,你可以在宿主机的浏览器中访问 http://你的服务器IP:4000来查看 Hexo 博客了!

    日常使用指南

    • 启动已停止的容器docker start -i leepoet-hexo
    • 进入正在运行的容器(另开一个终端):docker exec -it leepoet-hexo /bin/bash

    这个方案的优势在于:

    1. 环境隔离:Hexo 和 Node.js 环境完全封装在容器内,不污染宿主机。
    2. 文件持久化:HEXO博客源码通过目录挂载安全地保存在宿主机上。
    3. 便于移植:只需拷贝 /home/hexo目录和 docker run命令,就可以在任何有 Docker 的机器上快速恢复整个博客环境。

    三、进阶篇

    如果是服务器环境,解决权限问题:当使用 sudo或 root用户创建了网站目录 /www/wwwroot后,用普通用户账号登录去上传文件或修改网站内容时,系统可能会提示 “权限不足”。这是因为目录的所有者还是 root,普通用户没有写入权限。需要使用 /www/wwwroot作为宿主机的工作目录,来创建一个用于运行 Hexo 的 Docker 容器。这样在不使用 sudo的情况下,自由地在这个目录里创建、删除、修改文件和文件夹,大大方便了日常的网站维护工作。

    整个流程的核心思路是:通过目录挂载,将宿主机的 /www/wwwroot目录与 Docker 容器内的 Hexo 工作目录关联起来,从而实现环境隔离、数据持久化和便捷管理。

    详细操作步骤

    1. 准备宿主机目录

    首先,确保宿主机上存在 /www/wwwroot/leepoethexo目录。如果不存在,可以创建它并设置适当的权限:

    sudo mkdir -p /www/wwwroot/leepoethexo
    sudo chown $USER:$USER /www/wwwroot/leepoethexo # 将目录所有者改为当前用户,方便操作
    或者
    sudo chmod -R 755 /www/wwwroot/leepoethexo #目录所有者可完全读写执行,其他用户只能读和执行。这是Web目录更常用的安全权限
    cd /www/wwwroot/leepoethexo
    

    2. 创建并运行Docker容器

    这是最关键的一步。我们将使用 docker run命令,并通过 -v参数将宿主机目录挂载到容器内,同时用 -p参数映射端口,方便调试和访问。

    执行以下命令来创建并运行一个名为 leepoet-hexo的容器:

    docker run -d -it \
      --name leepoet-hexo \
      -p 4000:4000 \
      -v /www/wwwroot/leepoethexo:/app \
      node:latest \
      /bin/bash -c "tail -f /dev/null"
    

    参数解释:

    • -d -it: 以交互式终端并在后台运行容器。
    • --name leepoet-hexo: 为容器起个名字,方便后续管理。
    • -p 4000:4000: 将容器的4000端口(Hexo服务器默认端口)映射到宿主机的4000端口。这样就能通过 http://你的服务器IP:4000访问博客了。
    • -v /www/wwwroot/leepoethexo:/app: 这就是目录挂载。它将宿主机的 /www/wwwroot/leepoethexo目录关联到容器内的 /app目录。你在容器内 /app下的所有操作,都会实时同步到宿主机的 /www/wwwroot/leepoethexo下。
    • node:latest: 使用已有的 Node.js 镜像。
    • tail -f /dev/null: 一个让容器保持运行的小技巧。

    3. 在容器内安装和初始化Hexo

    现在,容器已经在后台运行了。我们需要进入容器内部完成Hexo的安装。

    a. 进入容器

    docker exec -it leepoet-hexo /bin/bash
    

    执行后,你的命令行提示符会变成类似 root@容器ID:/#的样子,表示你已经进入了容器内部。

    b. 全局安装Hexo命令行工具

    npm install -g hexo-cli
    

    c. 初始化Hexo项目

    cd /app  # 这是挂载点,务必在此目录下操作!
    hexo init .  # 注意最后有个点,表示在当前目录初始化
    npm install  # 安装Hexo所需的依赖包
    

    初始化完成后,你会在宿主机的 /www/wwwroot/leepoethexo目录下看到Hexo的项目文件。

    d. 生成静态文件并启动本地服务器(在容器内执行):

    hexo generate
    hexo server -s -p 4000 &
    

    现在,你应该可以在宿主机的浏览器中访问 http://localhost:4000看到默认的Hexo博客页面了。

    日常使用指南

    当环境搭建好后,你通常会进行以下操作:

    操作场景命令说明
    启动已停止的容器docker start leepoet-hexo容器停止后,用它重新启动。
    进入容器docker exec -it leepoet-hexo /bin/bash进入容器内部执行命令(如写作、安装插件)。
    停止容器docker stop leepoet-hexo正常停止容器。
    查看容器日志docker logs leepoet-hexo排查问题时查看输出信息。
    在宿主机上编辑用你的IDE直接编辑 /www/wwwroot/leepoethexo下的文件所有更改会实时同步到容器内。
    • exec:表示在容器内执行命令。
    • -it:这是两个选项的组合。-i(--interactive) 保持标准输入流开放,允许你输入命令;-t(--tty) 分配一个伪终端,让你获得一个格式良好的交互式 Shell 体验。
    • leepoet-hexo:是你的容器名称。如果你当时创建时用了其他名字,这里需要替换掉。 /bin/bash:指定在容器内运行的 Shell 程序(这里指 Bash)。
    • 重要优点:使用 exec方式进入容器,当你输入 exit退出时,只会结束当前的 Shell 会话,而不会导致你的 Hexo 容器停止运行。这对于需要长期运行的服务(比如你的博客服务器)至关重要。

    常用Hexo命令(在容器内执行)

    hexo new "我的新文章"   # 创建一篇新文章
    hexo clean             # 清理缓存
    hexo generate          # 生成静态文件
    hexo deploy            # 部署到服务器
    hexo server -s -p 4000 # 启动本地服务器进行预览
    hexo generate --debug  # 启用调试模式
    hexo g --debug   # 或简写
    hexo g --verbose  # 查看每个文件的处理情况
    hexo g --debug --verbose   # 同时启用调试和详细模式
     

    方案优势与注意事项

    这个方案的优势在于:

    数据持久化:你的所有Hexo博客源文件都安全地保存在宿主机的 /www/wwwroot/leepoethexo目录下。即使你删除了Docker容器,你的博客源码也不会丢失。

    环境隔离:Hexo的运行环境被封装在容器内,不会污染宿主机系统。

    便捷开发:你可以在宿主机上用熟悉的编辑器修改 /www/wwwroot/leepoethexo下的文件,更改会立刻在容器中生效,无需反复进入容器。

    需要注意的事项:

    权限问题:如果遇到容器内进程没有权限写入挂载目录的情况,可能需要检查宿主机目录( /www/wwwroot/leepoethexo)的权限设置

    端口占用:确保宿主的4000端口没有被其他程序占用。

    备份:虽然源码已在宿主机上,但定期备份整个 /www/wwwroot/leepoethexo目录是一个好习惯。


    往期有关HEXO教程:

    LeePoet实操快速上手:Hexo静态博客搭建全攻略

    为Hexo博客铺路:Windows匠心配置NodeJS环境的安装

  • 使用Ventoy制作Windows To Go:一个U盘搞定所有系统,随身携带你的PC

    使用Ventoy制作Windows To Go:一个U盘搞定所有系统,随身携带你的PC

    (清了清嗓子,拍了拍桌子)哎,各位朋友,我是李哥!今天咱们不聊虚的,就说说怎么把Windows系统塞进U盘里,让你走到哪儿都像带着“移动网吧”——这玩意儿叫Windows To Go,绝对是打工人、学生党的救命神器!

    为啥要搞这玩意儿?​想象一下:公司电脑卡成PPT、学校机房软件不全、出差不敢用酒店公共电脑……这时候你掏出U盘,插上任何电脑,直接启动自己熟悉的Windows系统——软件、文件、浏览器记录全在兜里,隐私安全还拉满!李哥当年就是靠这招,在网吧边吃泡面边改完了毕业论文(别问,问就是热血青春)

    准备家伙事儿!(硬件门槛)

    1. U盘别抠门:至少64GB起步,读写速度要快(推荐USB 3.0以上),否则装系统慢到你想砸电脑。李哥用过某顿的普通U盘,结果安装6小时,开机转圈半小时……(血泪教训!)
    2. 系统镜像:去微软官网下个正经的Windows 10/11企业版或教育版ISO文件(其他版本可能不支持)。
    3. 工具软件:推荐WTG辅助工具ventoy,小白也能一键操作,比老辈分的“命令行敲代码”省心一百倍

     


    • 一、怎么在u盘上跑完整的windows呢?
      我们都知道,操作系统一定要操作……哦不对,常见的操作系统一定要在硬盘上跑。无论是固态硬盘也好,还是机械硬盘也罢,我们概念中的系统一定是装在电脑里的那个固定不动的硬盘上的。一般windows的默认安装位置就是机内的存储介质,并不能像linux那样直接在livecd里就能直接装在u盘上。
      其实windows to go的历史很久了,可以追溯到2011年:2011 年 4 月,Windows to go就已包含在泄漏的 Windows 8 Build 7850 版本中。同年 9 月,微软在 Build 大会上正式公布了此功能,并分发了预装该系统的 32GB 启动 U 盘。它起初适配 Windows 8 企业版,后续拓展支持 Windows 8.1 及 Windows 10 的企业版、教育版,Windows 10 1607 版本及之后的专业版也纳入适配范围。
      但是,到了 2019 年 的 Windows 10 1903 版本发布时,微软宣布停止对其开发,2020 年 Windows 10 2004 版本中该功能被正式移除,缘由是它不支持功能更新,且所需的特定类型 USB 设备也逐渐不再被 OEM 厂商支持。
      不过这个功能确实非常方便,也吸引很多大佬来研究、发展Windows to go。其中最具有代表性的就是萝卜头IT论坛的WTG辅助工具,以及edgeless工具。今天我们暂时不用这两个工具,教大家直接手动在ventoy上部署windows to go!
      今天我们就来制作一个既能用ventoy,还能启动完整windows的u盘。了解了我们今天的任务,我们现在就可以开始教学了!
      哦对了,在看完文章后,如果手痒难耐想要实践一把,不要忘记领取文末的关键词哦!

    • 二、制作wintogo镜像并导入u盘
      首先,我们先需要下载想要安装的windows版本镜像。这里我推荐各位使用企业版windows的ltsc2019版本,ltsc企业版的镜像包相对于家庭版、专业版的镜像而言会精简一些,而且这些被精简掉的功能——比如xbox中控、microsoft商店等——基本不会影响正常的使用。假如你在ltsc上运行某些软件,碰到了诸如“xxx.dll”缺失的问题,一般直接百度就可以了,一般都很容易找到答案。
      如果你和我一样是个懒人,那么直接用现成的iso镜像包就可以了。如果你是个有极客精神的弗雷尔卓德人,把电脑当哥们,就喜欢折腾它,那么你可以使用一些经过民间优化的wim、esd格式的优化版本镜像,甚至你可以把自己正在用的操作系统封装成一份wim做成wintogo——虽然我并不推荐这么做,很有可能出现驱动冲突的情况。
      这里我们就先来点简单的,直接用现成的LTSC2019来进行演示。
      不想开网页下镜像也不要紧,罗某人为各位整理了一些常用的windows版本镜像包,在文末就能看到关键词了哦!
      好,现在我们打开电脑,右键此电脑——显示更多选项——管理,点击磁盘管理。
      来到这个页面没有?我们点开右侧的更多操作,选择创建VHD,将硬盘格式改为VHDX,类型设为“动态扩展”,然后随便把它放到哪里,大小随便设,别太小就行。这里我就设个100g就行了。
      然后你的窗口底部就会出现一个新的磁盘了!右键那个新建的磁盘x,选择初始化,初始化成GPT分区表,点击确定。
      接下来再右键磁盘x右侧的黑色条条,点击“新建简单卷”,这里我建议新手直接全部按照默认参数创建分区,无脑点下一步直到分区创建完成即可。
      这样就能看到那个黑色的框框变成蓝色的框框了!
      好,创建虚拟磁盘这一步我们就完成了。下一步我们要用到一个新工具,是俄罗斯人做的一个windows系统安装工具,叫做winntsetup。使用它,我们就可以非常方便地安装windows了。同样,这个工具会一并放在文末的关键词里。
      一看这个网页风格就非常程序员,一点多余的装饰都没有:
      打开程序后,我们首先点击第一行“选择windows安装源”,选择我们下载好的镜像,第二行选择一个EFI System(ESP)分区类型的分区即可;第三行就是我们的系统安装位置,选择虚拟磁盘即可。
      接下来我们点击安装,将引导代码切换为“不更新引导代码”,点击确定,坐着等就行了。
      好,在安装完成后,会跳出一个弹窗,询问你要不要重启,这时候我们重启,进行一下系统的初始化。
      这个应该不用我教吧?
      在激活系统后,我们可以进行下一步了:导入ventoy。

    • 三、配置ventoy,启动wintogo
      安装ventoy的流程就不再赘述了,各位可以乘坐文章开头的传送门前往学习。首先,我们在ventoy的根目录下创建一个名为“ventoy”的文件夹,然后在官网下载ventoy用以启动vhd的插件:ventoy_vhdboot.img。找不到也不要紧,文末有的。
      如果各位在官网下的话,会得到一个压缩包,里面有2个版本的插件文件,一般我们选win10based的那个版本即可。
      解压完后,我们直接把解压得到的ventoy_vhdboot.img放到我们刚刚创建的ventoy文件夹里——注意,一定是文件夹里面,而不是外面。
      然后呢?快点想想我们刚刚做了什么?对了!创建了个vhdx虚拟磁盘嘛!此时我们把这个vhdx文件复制粘贴到ventoy盘里面——不是文件夹里面!然后……重启电脑,启动ventoy!
      在ventoy里面找到我们的vhdx文件,启动它!不出意外的话……会不出意外地,成功了!
    • 四、enjoy!记得装驱动哦。
      对了,不要学我用一半拔u盘,容易蓝屏,我是为了拍封面才拔的。哦对了,拔下来一会再把u盘插上,系统就会继续正常工作哦。

     

  • LeePoet实操快速上手:Hexo静态博客搭建全攻略

    LeePoet实操快速上手:Hexo静态博客搭建全攻略

    HEXO是一个基于Node.js的快速、简洁且高效的博客框架。它使用Markdown(或其他渲染引擎)解析文章,在几秒内即可利用靓丽的主题生成静态网页,非常适合搭建个人博客网站。超快速度,Node.js 所带来的超快生成速度。 上百个页面在几秒内完成渲染。Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 Octopress 的大多数插件。只需一条指令即可部署到 GitHub Pages, Heroku 或其他平台。强大的 API 带来无限的可能。 支持数种模板引擎(EJS,Pug,Nunjucks等)。 可以与现有的NPM包 (Babel, PostCSS, Less/Sass 等) 轻松地集成。

    安装 Hexo 相当简单,只需要先安装下列应用程序即可:

    • Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)
    • Git

    如果您的电脑中已经安装上述必备程序,那么恭喜您! 你可以直接前往 安装 Hexo 步骤。

    如果您的电脑中尚未安装所需要的程序,请根据以下安装指示完成安装。

    • Windows:下载并安装 git
    • Mac:使用 Homebrew, MacPorts 或者下载 安装程序
    • Linux (Ubuntu, Debian):sudo apt-get install git-core
    • Linux (Fedora, Red Hat, CentOS):sudo yum install git-core

    Mac 用户

    如果在编译时可能会遇到问题。 请先到 App Store 安装 Xcode。 Xcode 完成后,启动并进入 Preferences -> Download -> Command Line Tools -> Install 安装命令行工具。

    Node.js 为大多数平台提供了官方的 安装程序

    其它的安装方法:

    • Windows:通过 nvs(推荐)或者 nvm 安装。
    • Mac:使用 HomebrewMacPorts 安装。
    • Linux(DEB/RPM-based):从 NodeSource 安装。
    • 其它:使用相应的软件包管理器进行安装。 可以参考由 Node.js 提供的 指导

    对于 Mac 和 Linux 同样建议使用 nvs 或者 nvm,以避免可能会出现的权限问题。

    Windows

    使用 Node.js 官方安装程序时,请确保勾选 Add to PATH 选项(默认已勾选)

    Mac / Linux

    如果在尝试安装 Hexo 的过程中出现 EACCES 权限错误,请遵循 由 npmjs 发布的指导 修复该问题。

    Linux

    如果您使用 Snap 来安装 Node.js,在 初始化 博客时您可能需要手动在目标文件夹中执行 npm install

    安装 Hexo

    我现在是用WINDOWS安装,所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。

    $ npm install -g hexo-cli
    

    还是使用用管理员身份运行,这条命令随便在哪个盘运行都无所谓。这相当于是HEXO的脚手架,只要安装了这个框架之后,后续安装HEXO随便在哪个盘使用npm install hexo安装,安装几个,都是独立的HEXO环境。

    HEXO的脚手架安装成功

    进阶安装和使用

    对于熟悉 npm 的进阶用户,可以仅局部安装 hexo 包。

    $ npm install hexo
    

    比如我现在要在E盘的WEB文件夹里安装一个HEXO:

    安装完后就有HEXO的文件了。

    验证安装

    hexo -v
    

    初始化博客项目

    创建并初始化项目

    hexo init my-blog  # 创建名为my-blog的博客项目
    cd my-blog
    npm install        # 安装项目依赖
    

    遇到了个问题,应该是我的Git没有配置环境变量,下面我配置一下

    打开控制面板 → 系统与安全 → 系统 → 高级系统设置

    点击”环境变量”,在系统变量中找到Path变量

    添加Git安装路径,如:E:\Program Files\Git\cmd

    重启命令行验证配置

    cd到leepoetnote并使用npm install安装依赖,注:以后使用HEXO管理leepoetnote时,都要先cd到这个文件夹之后才能执行以下的操作。

    项目结构解析

    初始化后的项目包含以下主要文件和文件夹:

    • _config.yml:站点配置文件,包含博客的基本设置
    • package.json:应用程序信息和依赖配置
    • scaffolds/:模板文件夹,用于新建文章的模板
    • source/:资源文件夹,存放文章(_posts目录)和其他资源
    • themes/:主题文件夹,存放博客主题文件9

    常用命令

    基础命令

    hexo new "文章标题"    # 创建新文章
    hexo clean            # 清理缓存文件
    hexo generate         # 生成静态文件(缩写:hexo g)
    hexo server           # 启动本地服务器(缩写:hexo s)
    hexo deploy           # 部署到远程平台(缩写:hexo d)
    

    组合命令

    hexo clean && hexo g && hexo s  # 清理、生成并启动本地预览
    hexo clean && hexo g && hexo d  # 清理、生成并部署
    
    .
    ├── _config.yml       # 站点的核心配置文件,网站标题、描述等都在这里设置
    ├── package.json      # 项目信息和依赖列表 
    ├── scaffolds         # 模板文件夹,新建文章时的默认格式 
    ├── source            # 源文件存放目录,你的文章就在这里!
    │   └── _posts        # 你的所有 Markdown 博客文章都放在这个文件夹内 
    ├── themes            # 主题文件夹,所有安装的主题都放在这里 
    └── public            # 执行生成命令后,Hexo 创建的静态网站文件会放在这里(此目录初始可能不存在)
    

    在这些文件和文件夹中,你最需要关注的是:

    • _config.yml:博客的“大脑”,大部分设置在这里修改。
    • source/_posts/:你写的文章(.md文件)都存放在这里,注:方便文章管理,可以自己在这个文件夹里手动新建对应文章的分类。如下图所示,以后通过HEXO G去生成文章。这些是不会被识别的,只是方便我们自己管理文章的一个小技巧。

    source/:这个文件夹下除了有_posts文件夹即:文章md文件之外之外,在source的目录下还可以放图片,通过/image/***.jpg即可以直接调用,同样是方便管理的小技巧。

    我们一般备份只需要拿以下这些文件即可:

    Tip:如果有需要也可以加上package.json以及db.json,其实也可有可无

    本地预览

    启动本地服务器后,在浏览器中访问 http://localhost:4000即可查看博客效果。

    为HEXO安装一个主题:

    先找到主题对应的开源仓库通过介绍安装

    使用 NPM 包进行安装如:

    使用 NPM 包进行安装 npm i hexo-theme-solitude

    应用主题 theme: solitude

    这里已经多出了一个_config.landscape.yml文件,基本上这样就可以了,有些主题是需要自己手动把主题配置改名为 _config.主题名.yml的之后再手动移到根目录的。具体还得看主题作者的介绍。下面就是修改HEXO的核心配置文件 _config.yml让主题生效。

    保存即可。然后通过hexo clean && hexo g && hexo s重新启动服务。

    其它的设置全在_config.landscape.yml这个主题配置文件里修改。


    其它配置

    本地搜索

    本地搜索是实现起来最快捷的方案。

    安装插件

    在Hexo博客的根目录下打开终端,执行以下命令安装核心插件。常用的插件有 hexo-generator-searchhexo-generator-searchdb

    npm install hexo-generator-searchdb --save
    
    1. 配置站点文件 打开博客根目录下的 _config.yml文件,在末尾添加以下配置(具体参数可根据插件文档和需求调整): search: path: search.xml # 生成的索引文件路径和名称 field: post # 搜索范围:post(文章)、page(页面)、all(全部) content: true # 是否包含文章全文,建议true以提高搜索命中率 format: html # 内容格式
    2. 启用主题的搜索功能 打开你正在使用的主题的配置文件(如 _config.[theme-name].yml),找到本地搜索相关的选项并启用它。例如,在流行的Next主题中: local_search: enable: true 对于Butterfly主题,配置类似。完成以上步骤后,执行 hexo clean && hexo g重新生成博客,然后启动本地服务器 hexo s预览,通常可以在页面右上角或侧边栏找到搜索图标。

    Hexo 有三种默认布局:postpage 和 draft,它们分别对应不同的路径,而自定义的其他布局和 post 相同,都将储存到 source/_posts 文件夹。

    布局路径
    postsource/_posts
    pagesource
    draftsource/_drafts

    如果你不想你的文章被处理,你可以将 Front-Matter 中的layout: 设为 false 。

    模版(Scaffold)

    在新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件,例如:

    $ hexo new photo "My Gallery"

    在执行这行指令时,Hexo 会尝试在 scaffolds 文件夹中寻找 photo.md,并根据其内容建立文章,以下是您可以在模版中使用的变量:

    变量描述
    layout布局
    title标题
    date文件建立日期

     Front-matter

    Front-matter是文件最上方以 --- 分隔的区域,用于指定个别文件的变量,举例来说:

    ---
    title: Hello World
    date: 2013/7/13 20:46:25
    ---

    注意:一般Front-matter使用的yaml语法,yaml语法需要注意空格,如title: Hello World冒号需要有一个空格,当然除YAML 外,你也可以使用 JSON 来编写 Front-matter。

    以下是预先定义的参数,您可在模板中使用这些参数值并加以利用。

    参数描述默认值
    layout布局
    title标题
    date建立日期文件建立日
    updated更新日期文件更新日期
    comments开启文章的评论功能true
    tags标签(不适用于分页)
    categories分类(不适用于分页)
    permalink覆盖文章网址

    分类和标签

    只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性而标签没有顺序和层次

    categories:
    - Diary
    tags:
    - PS3
    - Games

    WordPress支持对一篇文章设置多个分类,而且这些分类可以是同级的,也可以是父子分类。但是Hexo不支持指定多个同级分类。下面的指定方法:
    categories:

    • Diary
    • Life

    会使分类Life成为Diary的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类.

    文章摘要

    设置文章摘要,我们只需在想显示为摘要的内容之后添 <!-- more --> 即可。像下面这样:

    ---
    title: hello hexo markdown
    date: 2016-11-16 18:11:25
    tags:
    - hello
    - hexo
    - markdown
    ---

    我是短小精悍的文章摘要(๑•̀ㅂ•́)و✧

    <!-- more -->

    紧接着文章摘要的正文内容

    这样,<!-- more --> 之前、文档配置参数之后中的内容便会被渲染为站点中的文章摘要。

    注意!文章摘要在文章详情页是正文中最前面的内容。

    资源引用

    写个博客,有时候会想添加个图片或者其他形式的资源等等。有以下两种方式进行解决:

    1. 使用绝对路径引用资源,在 Web 世界中就是资源的 URL
    2. 使用相对路径引用资源

    对于使用相对路径引用资源的,我们可以使用 Hexo 提供的资源文件夹功能。

    使用文本编辑器打开站点根目录下的 _ config.yml 文件,将 post_asset_folder 值设置为 true

    post_asset_folder: true

    修改之后会开启 Hexo 的文章资源文件管理功能。Hexo 将会在我们每一次通过 hexo new <title> 命令创建新文章时自动创建一个同名文件夹,于是我们便可以将文章所引用的相关资源放到这个同名文件夹下,然后通过相对路径引用。例如,你把一个 example.jpg 图片放在了这个同名文件夹中,使用相对路径的常规 markdown 语法 ![](./example.jpg)即可访问 。


    其它

    Linux 用户可以将 Hexo 所在的目录下的 node_modules 添加到环境变量之中即可直接使用 hexo <command>

    echo 'PATH="$PATH:./node_modules/.bin"' >> ~/.profile

  • GitHub开源神器Angry IP Scanner:一键扫描,网络设备尽在掌握​

    GitHub开源神器Angry IP Scanner:一键扫描,网络设备尽在掌握​

    各位街坊邻居,有没有试过在某个深更半夜,盯着路由器管理界面里一长串陌生设备名直挠头?“小米电视”、“iPhone(15)”、“Unknown”……哪个是自家娃的新手机,哪个又是隔壁老王家“借用”Wi-Fi的智能灯泡?反正,作为资深捡垃圾(指数码硬件)爱好者,我家网络环境之复杂,堪称“设备博览会”。每当网速卡成PPT,想揪出那个“蹭网贼”或者排查问题设备时,那种面对一团乱麻的无从下手感,真让人火大。

    直到我在GitHub这座宝库里,挖到了这个存在了N年、累计下载超3000万次的镇宅神器——Angry IP Scanner。这名字起得就传神,“愤怒”二字,精准表达了咱们面对混沌网络时的那点小情绪。今儿这篇,就带大伙儿盘盘这个Java写的轻量级小工具,看它如何用最直接的方式,帮你一键“理清”网络,让所有连接设备都无所遁形。开源、免费、跨平台,堪称网络界的“户籍警察”,绝对是管家和维护人员的必备神器。走起,扫描!

    在GitHub上有一个存在了好多年的开源项目——Angry IP Scanner,就是为了解决这个问题而生的。这个用Java编写的小工具,凭借其简单直接的设计,已经成为世界各地许多网络管理员甚至好奇用户的必备神器,累计下载量超过了2300万次,最近它刚刚发布了3.9.3版本。

    Angry IP Scanner是啥

    一个开源的跨平台网络扫描工具,它能快速扫描IP地址和端口,帮你找出网络中正在使用的设备

    开源成就

    • Star数  GitHub 上已经吸引了 4.7k 星
    • 主开发语言   Java

    核心功能

    快速扫描IP范围你只需要设置好起始和结束的IP地址,启动后等待结果就行,它会通过Ping每个IP来检查其活动状态,并在界面中用蓝色高亮显示正在使用的工作IP,用红色标记失效或无效的IP

    端口与服务识别除了基本的IP扫描,它还能识别远端主机的名称、目前开启的通信端口,以及IP的运作状况等详细信息,让你完全掌握对方主机的运作状况

    多种导出格式扫描完成后,你可以将结果导出为TXT、CSV、XML或IP端口列表文件,方便进一步分析或存档,这个功能对需要做文档记录的网络管理员特别有用

    跨平台运行它可以在Linux、Windows和Mac OS X上运行,而且不需要安装,下载后直接就能使用,这对经常在不同系统环境下工作的人来说非常方便

    插件扩展功能任何懂Java编程的人都可以为它编写插件,扩展其功能,这种开放性设计让它可以适应各种特殊的扫描需求

    命令行支持除了图形界面,它还提供命令行界面,这让自动化扫描和集成到脚本中成为可能,适合高级用户和系统管理员

    安装指南

    • Windows用户,可以直接从官方站点下载可执行文件,无需安装,解压后运行exe文件即可
    • Ubuntu/Debian用户,可以使用命令
      sudo dpkg -i ipscan_3.0-beta6_i386.deb
      

      来安装deb包,如果遇到依赖问题,执行sudo apt install -f来解决

    开源地址https://github.com/angryip/ipscan
    

     

     

  • 探索Linkwarden:一款能自动截图存档的开源书签管理器

    探索Linkwarden:一款能自动截图存档的开源书签管理器

    在平时工作学习中,我们总会遇到一些值得收藏的网页,但头疼的是,很多链接没过多久就失效了,辛苦保存的信息说没就没

    最近在 GitHub 上发现一个叫 Linkwarden 的开源项目,它不仅仅是个书签管理器,更像一个私人网页档案馆,能自动给每个网页截图、保存 PDF,即使原链接挂了,你的内容也丢不了。对于喜欢自己部署服务、注重数据隐私,或者需要团队协作整理资料的朋友来说,这款自托管的工具可能正是你找了很久的解决方案

    Linkwarden是什么

    Linkwarden 是一个开源的、自托管的协作式书签管理器,致力于通过自动存档网页截图与PDF的方式,对抗“链接失效”问题,帮助用户一站式收集、整理和永久保存网络上有价值的链接

    开源成就

    • Star数 GitHub 上已经吸引了 15.4k 星
    • 主开发语言 TypeScript

    核心功能

    全方位网页存档添加链接时,Linkwarden 会自动捕获该网页的截图、PDF和HTML文件并本地保存,即使原始网页因各种原因无法访问,你依然能查看当时保存的内容

    高效的整理与协作你可以用集合、标签来分门别类地整理链接,支持与团队成员共享集合并协作,共同收集和管理资料

    沉浸式阅读与标注提供干净的阅读视图,让你专注于内容,你还可以在保存的页面上高亮文本、添加注释,方便后续回顾和提炼重点

    强大的检索能力支持全文搜索,你可以通过关键词、标签、集合等多种条件快速定位到你想要的链接,再也不用在杂乱的书签堆里大海捞针

    便捷的浏览器集成提供了浏览器扩展,让你在浏览网页时能一键将链接保存到自己的 Linkwarden 库中,非常方便

    灵活的数据掌控支持从其他平台导入书签,也允许你随时导出自己的数据,完全掌控自己的信息,避免被服务绑定

    安装指南

    • 基础依赖:Linkwarden 需要 PostgreSQL 数据库作为后端支撑,在部署前请确保你已准备好可用的数据库环境

    • 推荐部署方式:官方推荐使用 Docker Compose 进行部署,你只需准备好一个包含数据库和服务设置的 docker-compose.yml 文件,通过一条命令即可启动所有服务

      git clone https://github.com/linkwarden/linkwarden
      cd linkwarden
      docker compose up -d
      
    开源地址https://github.com/linkwarden/linkwarden
    

  • 资源搜索效率翻倍,用Docker给NAS装个PanHub一键聚合全网资源

    资源搜索效率翻倍,用Docker给NAS装个PanHub一键聚合全网资源

    还在为找资源翻遍几十个网站?还在为切换不同网盘反复搜索而烦恼?PanHub的出现,让这一切成为过去式。
    PanHub是一款聚合网盘资源的搜索工具,支持百度网盘、阿里云盘、夸克、迅雷、115、天翼云盘、123网盘、移动云盘、UC网盘等众多网盘平台。它不需配置网盘授权信息,开箱即用,主打一个”资源采集”,可以轻松实现网盘资源一键搜索与分类跳转。

    今天,「lee poet」就带你部署一个堪称 “网盘资源界超级搜索引擎” 的Docker神器——PanHub!它的口号简单粗暴:一次搜索,全网网盘,直接给你结果!

    零配置即用:内置海量网盘频道,无需手动配置授权或Cookie,开箱即用。无需映射文件,直接搜索资源并跳转转存,搜索结果可快速跳转转存,无需繁琐操作。支持十余种主流网盘资源分类展示,一次搜索即可覆盖阿里云盘、夸克、百度网盘、115、迅雷等热门网盘资源。默认先给出”快速结果”,随后自动补全”深度结果”并覆盖显示,按相关度和速度排序。不依赖网盘账号授权,避免敏感信息泄露,轻量部署,无广告、无追踪,使用更安心。

    【 PanHub 

    PanHub是啥?它是你的“资源猎手”!

    简单说,PanHub 是一个免费、开源、聚合了众多优质网盘资源站和公开频道的搜索工具

    PanHub原生支持Cloudflare Workers,0服务器运维成本,免费起步。同时支持Docker部署,无论是VPS、NAS还是云服务器,都能轻松部署。采用MIT License开源许可,免费开源、零广告、轻量部署。内置多插件,支持按需启用/禁用,参数化并发与缓存,可根据实际需求灵活配置。

    【不正经比喻时间】

    你传统的找资源方式:像在一个巨大的跳蚤市场里瞎逛。每个摊位(搜索网站)都得问一遍,大部分摊主还爱答不理(链接失效/要你关注)。

    你用PanHub之后:像拥有了一个专属的、神通广大的“采购助理”。你只需要下达一个指令(关键词),他就会瞬间问遍市场上所有靠谱的摊位,然后把阿里、夸克、百度、115、迅雷…的现货(有效链接)整齐地摆在你面前,任君挑选。

    说人话就是: 它帮你把那些散落在互联网角落的、专门分享网盘资源的网站和频道全部打包,做了一个统一的、干净的、无广告的搜索接口。你,就是资源的终点站。无论你是NAS用户、影视爱好者,还是需要频繁查找资源的普通用户,PanHub都能为你提供高效、便捷的网盘搜索体验。接下来,让我们一步步学习如何在Docker环境下部署和使用PanHub。

    实战:一键部署,召唤你的“资源猎手”

    部署过程依旧是我们最爱的、优雅的Docker-Compose大法。

    第一步:创建它的“小单间”

    • 在你的NAS上,比如在 docker 文件夹里
    • 新建一个 panhub 目录。

    第二步:编写 docker-compose

    • 打开飞牛桌面上的Docker界面 -> Compose
    • 写一个项目名称,选择储存路径

      (例如你之前创建的目录/vol2/1000/docker/panhub

    • 创建 docker-compose.yml 文件,把下面的“咒语”复制粘贴进去
    services:
      panhub:
        image: wu529778790/panhub.shenzjd.com:latest
        container_name: panhub
        ports:
          – “3021:3000”
        # 左边3021是你访问的端口,随便改!右边别动!
        restart: unless-stopped

    参数精讲(为啥这么搞):

    • 端口映射:3021 可以换成任何你喜欢的端口,避免冲突。
    • 极简设计:它本身只是一个“搜索中转站”,不存你的数据,所以连 volumes 挂载都可以省略,真正做到 用完即走,不沾身

    第三步:启动!!

    • 启动 -> 自动拉取镜像并构建坐等完成。
    • 打开浏览器,访问:http://你的飞牛NAS IP:3021

    恭喜! 一个干净、极简的搜索页面已经加载完毕!那个孤零零的搜索框,就是你通往资源新世界的大门!

    灵魂操作:如何像“资源大佬”一样优雅搜刮

    界面极其简单,但功能极其凶残。

    1. 输入关键词,见证魔法

    • 搜索框里,输入任何你想找的东西,比如 《名侦探柯南》、《哪吒之xxx》、《罗小黑战记》等。
    • 按下回车或点击搜索。

    2. 观察“智能排序”的威力

    • 第一波:“快速结果”:几乎在瞬间,屏幕上就会弹出第一批资源。这是PanHub从响应最快的源里抓取的结果,让你不用等待
    • 第二波:“深度结果”:稍等几秒钟,更多、更全面的资源会陆续加载出来,并自动覆盖掉之前可能不完整的结果。这种感觉,就像撒了一张大网,先捞上来小鱼,再等大鱼入网

    3. 享受“分门别类”的便捷

    • 所有的结果会清晰地按照 阿里云盘、夸克网盘、百度网盘、115、123、uc、迅雷 等 来源分好类。
    • 找到你想要的结果,点击内容直接调整指定页面。
    • 然后……你就可以打开对应的网盘APP,享受秒存的快乐了!

    整个流程,从搜索到复制链接,不超过10秒钟。你再也无需打开N个浏览器标签页,忍受各种弹窗广告了。

    • 外网访问(非必须):配合我们之前教过的 Lucky反向代理,给它分配一个如 panhub.abc.com 的域名,你在全世界任何一个角落,都能畅听你库里的所有歌曲!

    “但是”时间:保持清醒,做守法公民

    PanHub虽强,但我们必须认清它的边界和风险:

    • 【资源来源】: 它搜索的是互联网上公开分享的资源。资源的准确性、完整性、安全性(尤其是可执行文件)需要你自己判断。下到葫芦娃里不一定是葫芦娃!
    • 【版权风险】: 这是一个灰色地带。请务必尊重版权,用于搜索学习和已获授权的内容,不要用于商业用途和传播盗版。支持正版,才是长久之计。
    • 【链接时效】: 网盘链接是有生命周期的。PanHub不保证每个链接都有效,但它能帮你用最快的方式找到当前最可能有效的链接。
    • 【轻量工具】: 它就是一个搜索聚合器,没有会员、没有加速、不能破解网盘限速。该开网盘会员还得开。

    结论: 把它当作一个效率工具,它能极大提升你“找资源”的效率。但它不生产资源,它只是资源的搬运工。

    行动号召:是时候提升你的资源搜索效率,告别信息乞丐了

    技术存在的意义,是让你生活得更爽,而不是更复杂。

  • 揭秘“空壳”网站:用Cloudflare免费全家桶,聚合全网影视资源

    揭秘“空壳”网站:用Cloudflare免费全家桶,聚合全网影视资源

    你大概率在网上刷到过一些界面精美、资源看起来很全的影视网站。点开即播,没有广告,体验甚至比一些正规 App 还要好。一个普遍的疑问是:维护这样的网站,服务器和带宽成本应该是个天文数字,站长们是怎么做到的?

    答案可能让你意外:他们根本没有服务器,甚至连视频资源在哪都未必知道。

    “空壳”网站是一种创新的建站理念——它不存储任何视频文件,而是通过智能聚合技术,实时抓取和解析全网影视资源,实现”万物皆可播”的效果。这种”采播分离”的架构,让你无需购买昂贵的服务器和存储设备,仅需一个浏览器就能搭建起功能完整的影视聚合平台。

    借助 Cloudflare 提供的免费全家桶,任何人都可以搭建一个类似的“空壳”网站。今天,我们不谈代码部署(因为像 MoonTV、LibreTV 这样的开源项目已经把步骤写得非常简单了),我们来深入聊聊它背后的魔法:这个“空壳”是如何撬动全网资源的?以及,你该如何像一个专业站长那样,让你的“片库”实现自动化、无限地扩充?

    为什么选择Cloudflare?

    Cloudflare作为全球领先的CDN和边缘计算服务商,提供了完整的免费解决方案:

    • loudflare Workers:零服务器成本的边缘计算平台,支持JavaScript和WASM,可运行复杂的聚合逻辑
    • loudflare Pages:免费静态网站托管服务,支持自动部署和全球CDN加速
    • loudflare R2:兼容S3的免费对象存储,适合存储配置文件和元数据
    • loudflare DNS:免费且快速的DNS解析服务,支持IPv6和智能路由

    核心优势

    零成本运营:无需购买服务器、存储和带宽,Cloudflare全家桶完全免费,真正实现零成本建站。全球加速:Cloudflare的全球CDN网络,确保用户无论身处何地,都能获得快速稳定的访问体验。自动更新:通过定时任务和Webhook,自动抓取最新影视资源,保持内容持续更新。隐私安全:不存储用户数据,不记录观看历史,保护用户隐私。技术门槛低:无需复杂的服务器运维知识,只需掌握基础的JavaScript和HTML即可上手。

    适用场景

    • 人影视库:搭建专属的影视聚合站,告别剧荒
    • 术学习:学习Cloudflare Workers和边缘计算技术
    • 目演示:快速搭建演示项目,展示技术能力
    • 容聚合:聚合特定领域的视频资源,提供一站式服务

    无论你是技术爱好者、影视迷,还是希望学习Cloudflare技术的开发者,本指南都将带你从零开始,一步步搭建属于自己的”空壳”影视网站。接下来,让我们开始这段奇妙的建站之旅。

    MoonTV: https://github.com/samqin123/MoonTV

    LibreTV: https://github.com/LibreSpark/LibreTV

    image-20251021090614075

    核心模式:采播分离,网站只做“搬运工”

    理解这类网站的关键,在于四个字:采播分离

    • 采集(采):指的是内容的收集、整理和更新。这是最脏最累的活。
    • 播放(播):指的是内容的展示和播放。这是我们看到的网站。

    传统模式下,一个站长需要自己做所有事。但在今天的生态里,这两件事已经由完全不同的人分工完成了。有一批专业“资源站”,他们负责搞定所有采集工作,然后通过标准化的API接口,把整理好的数据提供出来。

    image-20251021090928028

    而我们用 Cloudflare 搭建的网站,其本质就是这个生态里的“播放”端。它本身不生产内容,只是API数据的“搬运工”和“展示柜”

    它的工作流程是这样的:

    1. 搭建前端“展示柜”:我们看到的网站界面,用 Vue 或 React 构建,部署在 Cloudflare Pages 上,保证全球秒开。
    2. 设置API“中间人”:使用 Cloudflare Workers 作为一个轻量级的后端。它的唯一任务,就是去调用上游“资源站”的API。
    3. 对接数据“总仓库”:网站启动时,Workers 向指定的资源站API发送请求(比如“请给我最新的20部电影”)。
    4. 渲染内容:Workers 拿到API返回的JSON数据(包含了片名、海报、播放地址等),稍作处理,再喂给前端“展示柜”,用户就能看到琳琅满目的内容了。

    整个过程,视频流量完全不经过你的网站,API请求的消耗也极低。Cloudflare 的免费额度,绰绰有余。

    如何找到“资源站”API?

    这才是这篇文章的精髓。让你的网站从一个玩具变成一个真正可用的工具,关键在于你能否找到稳定、高质量的“资源站”API,并把它对接到你的“管道”里。

    普通人找资源是找片子,而一个站长的思路是找“提供片子列表”的人

    以下是几个寻找API的有效思路:

    • 思路一:关键词搜索,进入专业圈子搜索引擎是你最好的朋友,但关键在于用对词。不要搜“XX电影在线看”,而要用站长和开发者的黑话去搜,例如:

    image-20251021090551495
      • “苹果CMS 资源站”
      • “免费影视API接口”
      • “JSON影视数据源”
      • “视频采集API” 
      • 通过这些关键词,你找到的不再是消费内容的网站,而是提供数据接口的“上游供应商”。这些网站通常会直接提供API的接入文档。
    • 思路二:逆向工程,分析现有网站
    • 这是最直接有效的方法。随便找一个你觉得不错的同类网站,打开浏览器的“开发者工具”(F12),切换到“网络(Network)”面板,然后进行一些操作(比如翻页、搜索)。 在网络请求列表里,重点关注 XHR/Fetch 类型的请求。你会发现一些规律性的API调用,比如 …/api.php?ac=videolist&t=… 或 …/api/v1/videos?page=…。
    • 这个请求的URL,就是这个网站正在使用的API接口。你可以尝试直接在浏览器里打开这个URL,如果能看到返回一大堆JSON格式的数据,恭喜你,你找到了它的“数据动脉”。
    image-20251021090752814
    • 思路三:混迹于站长社区和交流群
    • 很多API资源并不是完全公开的,而是在一些小圈子里流传。你可以去一些技术论坛、站长社区(比如搜索与“建站”、“源码”相关的论坛),或者Telegram上的相关技术群组。在这些地方,信息交换更为频繁,你可能会发现一些不对外宣传的优质资源站。

    一旦你找到了API接口,接下来要做的就很简单了:根据 MoonTV 或 LibreTV 这类项目的配置说明,把你找到的API地址填进去,重新部署即可。

    通过这种“采播分离”的模式,你的网站内容就实现了自动化更新。上游资源站更新了什么,你的网站就自动显示什么。这才是零成本、高效率运营这类网站的真正秘诀。

  • 告别链接失效:开源工具 ArchiveBox 的完整网页存档方案

    告别链接失效:开源工具 ArchiveBox 的完整网页存档方案

    在瞬息万变的互联网时代,你是否曾经历过这样的场景:精心收藏的网页链接,几天后却变成了冰冷的”404 Not Found”;那份至关重要的研究资料,在你最需要时却显示”内容已被删除”。在信息爆炸却又转瞬即逝的数字海洋中,我们每天都在面临宝贵内容消失的风险。ArchiveBox作为一款开源的自托管网页归档工具,正是为解决这一痛点而生。它能够将任何有价值的网页完整地保存到本地,包括文字、图片、PDF甚至音视频内容,建立你自己的私人数字图书馆。简单来说,它就像是一个”时光机器”,能够捕捉网页在某一时刻的完整状态,让你在任何时候都能重新访问当时的内容。

    以前经常用 Internet Archive 来保存网页内容,但也有不少问题,存下来的页面内容经常缺东少西,视频播放不了,图片加载不出来。

    所以需要集中工具配合着用,单靠一个不太够。

    直到最近,在 GitHub 看到一个叫 ArchiveBox 的开源项目,狂揽了 25000+ Star,专门用来保存网页内容。

    ArchiveBox是一款开源自托管网页归档工具,支持HTML、PDF、PNG截图、视频等多种格式永久保存网页内容。通过Docker或pip快速部署,支持浏览器扩展一键保存、定时自动抓取、全文搜索等功能,让你彻底掌控自己的数字记忆,告别404链接失效。GitHub已收获25K+ Star,是个人知识管理和网页内容备份的终极解决方案。

    相当于给每个网页做了多重备份,就算某个格式以后打不开了,还有其他方式能看。

    img

    多格式存档,怎么都能打开

    ArchiveBox 存档一个网页的时候,会同时生成多份不同格式的备份。

    比如用浏览器渲染后生成 PDF 和截图,用 wget 下载完整的 HTML+CSS+JS 文件,还会用 SingleFile 把整个页面压缩成单个 HTML 文件。

    这样做的好处就是,十年后就算某个技术淘汰了,你还有其他格式可以查看。

    Screenshot of ArchiveBox dashboard

    视频音频都能下载

    如果是 YouTube、Bilibili 这类视频网站,ArchiveBox 还能把视频文件直接下载下来,甚至连字幕和封面图都不漏。

    另外像 SoundCloud 的音频、Twitter 的帖子和评论,也都能完整保存。对经常想要收藏教程视频或者音乐的朋友来说真的很实用。

    img

    代码仓库一键克隆

    如果碰到 GitHub 或 GitLab 的链接时,ArchiveBox 会自动克隆整个代码仓库到本地。

    不光是当前版本,连历史提交记录都在,相当于把整个项目搬回家了。

    img

    另外几个值得一说的实用功能:

    浏览器扩展:提供插件安装,可以一边浏览网页一边随手保存,不用每次都复制链接;

    定时抓取:可以从 Pocket、RSS 订阅源自动导入链接,设置成每天或每周定时存档;

    Web 管理界面:除了命令行,还有个网页界面可以打标签、搜索、查看日志;

    数据格式通用:存的都是 HTML、JSON、PDF 这些标准格式,不需要专门软件就能打开,放十几年都不怕。

    三步安装,轻松上手

    项目提供了 Docker 快速部署方式,只需要三步就能搞定:

    1、建个目录,下载配置文件:

    mkdir-p ~/archivebox/data && cd ~/archiveboxcurl-fsSL'https://docker-compose.archivebox.io' > docker-compose.yml

    2、初始化一下:

    docker compose run archivebox init --setup

    3、启动服务:

    docker compose up

    打开 http://localhost:8000 就能用了。

    不想用 Docker 的话,pip 本地安装也可以,并且支持 Linux、macOS、Windows 系统。

    image-20251021105940137

    写在最后

    经常收藏链接的人可以试试这工具,特别是做研究、写文章需要引用资料的时候。

    项目开源免费,数据全存自己电脑上,不用担心第三方服务哪天倒闭了。

    就是比较占硬盘空间,特别需要保存视频的可能不动就是几个 G。还有一些需要登录才能看的内容,设置起来会稍微麻烦点。

    不过话说回来,与其担心某天链接失效找不回来,不如提前存一份在本地。

    就像给重要内容买了个备份,用不用得上另说,起码心里踏实。

    GitHub 项目地址:https://github.com/ArchiveBox/ArchiveBox

    今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!

  • Ventoy美化:从寻找GRUB2主题到界面优化,打造个性化启动盘

    Ventoy美化:从寻找GRUB2主题到界面优化,打造个性化启动盘

    还在忍受Ventoy默认的“技术直男”界面吗?​ 只需简单几步,你就能让手中的启动盘颜值飙升,变身个性十足的科技潮品!众所周知,Ventoy是制作多功能启动盘的神器,但它的默认界面却朴实无华。别担心,其基于GRUB2的底层架构,恰恰为我们打开了海量美化资源的大门。本文将手把手带你完成从 “寻找主题”​ 到 “完美应用”​ 的全过程。你将了解到:

    • 极简原理:为何Ventoy能轻松换肤?一句话为你讲透。
    • 宝藏资源:推荐一个可直观预览海量高颜值GRUB主题的网站,告别盲目下载。
    • 保姆级教程:详解如何下载、解压主题,并通过官方插件工具一键应用,真正做到零基础上手。
    • 进阶优化:教你如何通过树形菜单分类管理,让众多系统镜像井井有条,提升使用效率。

    还记得之前介绍过的全能开源启动盘制作工具Ventoy吗?不少朋友反馈说Ventoy的默认界面太过朴素,想知道如何美化。今天就来手把手教大家打造个性化的Ventoy主题界面!无需复杂代码,不用高深技术,跟随本文指引,十分钟即可打造一个既美观又高效的专属启动盘。现在,就让我们一起开始这场简单的美化之旅吧!

    要美化Ventoy,首先需要了解它的技术架构。Ventoy是一个开源项目,其引导系统基于广为人知的GRUB2。对于Linux用户来说,GRUB2再熟悉不过了——它是多数Linux发行版的默认引导程序。正因为Ventoy建立在GRUB2之上,所以我们可以直接使用丰富的GRUB2主题资源来美化它。这就让我们的美化任务变得异常简单:只需找到合适的GRUB2主题并应用到Ventoy即可。


     一、原理

    要diy ventoy,我们就首先要知道ventoy的内部组成,这样我们才好知道到底要修改它的什么地方,才能够下手。这一点很方便,因为ventoy是一个开源软件,官网也自己列出了ventoy的内部组成所用到的其他开源项目,在此感谢各位开源大佬的付出,才让我们用上了如此好用的系统安装工具。 我们来看ventoy官网对ventoy原理的相关说明:

    欸,我看到了一个熟悉的东西,熟悉linux的朋友应该都知道,就在第一行——没错,就是grub2! 给不了解的朋友简单介绍一下这个grub,简单来说,它是一个操作系统的通用引导加载程序,常作为于linux系统的默认引导加载方式。又由于grub是一个GPL开源项目,所以它是完全开源的;再由于它足够常用,受众广,内部结构并不复杂,就使得有很多大佬着手美化它,也就使得grub有一大堆美化的主题可选。 而ventoy就是一个基于grub2的引导加载器,所以它自然是可以原封不动地套用grub2的美化主题。所以接下来我们的任务,就变成了“寻找grub2美化主题”


    • 二、下载grub主题

    github上自然是有很多grub主题了,一搜就是一堆:

    但有的兄弟就要问了:哎呀,这又不能直接看到这个主题长啥样,我还得一个个点进去看,有没有能直接预览的网站呢?有的兄弟,有的,这就是我接下来要给大家介绍的网站:gnome-look。

    这个gnome-look,正如其名,主要是一个分享gnome——一个linux桌面环境——主题的网站,但它也有其他linux组件的美化主题,grub就是其中之一。 我们点开界面左侧的grub themes,就能看到网站分享的grub主题了。

    这时候有兄弟又要问了:哎呀,我都翻了好几页了,怎么没有一个看对眼的?别急兄弟,我们看到最上方的“latest”那一行,我们点rating,就能看到按照评分排序的grub主题了。

    据我观察,大概前10页的grub主题都还不错。看好所需要的主题后,我们点进所选主题对应的标题,往下翻动,看到“FILES”字样后,点击它,就可以看到主题文件的压缩包了。像这种有多种二刺螈角色主题样式可选的,记得看清楚文件名对应的角色名,别下错了。直接点文件名或者旁边的DL下载按钮都可以。

    封面中的主题叫下面这个名字:

    我自己平时用的是这个主题:

    等待5秒后,就可以开始下载了!

    下载完成后,你会得到一个.tar.gz为结尾的压缩文件。如果你是linux用户的话,不用我教解压吧?就算不会也别说出来,你不嫌丢人,我都嫌丢人。 windows用户就使用7z解压,解压两遍即可,也即.tar.gz——>.tar——>文件。解压出来是这样的。

    我们只需要最后提取出的文件夹。确认无误后,我们可以继续推进了。


    • 三、将主题文件夹导入ventoy

    我们打开之前在电脑上下载的ventoy安装工具,找到文件夹中的“VentoyPlugson.exe”,插上已安装了ventoy的u盘,然后双击它,在新弹出的窗口中点击“启动”,你的浏览器就会打开一个本地网站,它就是一个在web上运行的ventoy图形化管理工具。

    浏览器弹出的页面长这样:

    这一步我们先将主题导入ventoy。首先,我们点击左侧的“主题插件”,然后找到file —— 主题配置文件,点击右侧的“新增”按钮。

    之后在新弹出的文本框中输入theme.txt所在u盘中的位置。比如,我的ventoy盘目前在系统中被挂载为E盘,那么我就需要在E盘中找到我的主题文件夹中的theme.txt文件。

    啊!在这里,我们直接右键theme.txt,复制它的路径就可以了。

    粘贴完成后,点击确定,就能看到一个新的选项卡。如果右侧的状态栏显示“文件有效”,那么恭喜你,你已经打败了90%的人,现在只差临门一脚,就能打败99%的人:只需要点一下旁边的默认选择单选框,就能将你刚刚导入的主题设为默认了! 这里我建议在ventoy分区中新建一个文件夹,专门用以存放主题文件夹,而且这样做还有一个好处:你可以很方便地管理多个ventoy主题,可以选择随机主题,每次用ventoy都是不一样的feeling,而且无论是增加还是删除都非常方便。 好!到此我们的主题就已经导入完成了。这里我们打开ventoy,看一下效果:

    图片

    欸,主题导入完了,好像兄弟们还是有一点疑问:我的ventoy一打开就是一堆镜像,看都看不过来,怎么能精简一下呢?别急,接下来就教你们。


    • 四、一点小优化

    这一步是为了方便各位管理、查找ventoy中存放的操作系统镜像。你可以像我这样管理你的镜像:设置一个大的专门存放系统镜像的文件夹,windows一个、linux一个、macos一个——没错,这玩意还能用来装黑苹果,不过只是理论上,实际并没有试过。这样分就差不多了。

    然后我们来到VentoyPlugson页面的全局控制插件这里,找到VTOY_DEFAULT_SEARCH_ROOT —— 指定搜索目录这一栏,跟上面输入theme.txt的路径方法一样,将你新建的系统文件夹目前的绝对路径输进去就可以了。比如我的总镜像文件夹的相对路径是/Systems,那么我就输入”E:Systems”即可。 点击确定后,我们来到VTOY_DEFAULT_MENU_MODE —— 菜单显示模式选项栏,将值设为1,这样的话,在下次使用ventoy时,你的所有镜像就会以树形结构——也就是层层递进的结构呈现出来。这一点对于需要用到很多镜像的兄弟来说很重要,如果你的ventoy中没有几个镜像,那使用默认参数也可以。


    好了,关于ventoy的美化咱们就讲到这里!

    相关文章:使用Ventoy制作Windows To Go:一个U盘搞定所有系统,随身携带你的PC

    Ventoy终极美化指南:从寻找GRUB2主题到界面优化,打造个性化启动盘

    打造个人移动系统库!用Ventoy打造万能系统U盘,Windows/Linux/PE随启随用

  • 一键存档网页:SingleFile,让完整网页离线保存为单个HTML文件

    一键存档网页:SingleFile,让完整网页离线保存为单个HTML文件

    是否曾遇到过这样的窘境:在网上看到一篇干货满满的文章或教程,点击“另存为”后,离线打开却发现样式错乱、图片丢失,甚至页面变成一堆乱码?传统的网页保存方式在面对现代复杂的网页时常常力不从心。本文将为您介绍一款堪称“网页保存终极方案”的神器——SingleFile。这款免费的浏览器扩展能将网页上的所有元素(HTML、CSS、图片、字体等)完美地打包进一个独立的HTML文件中,实现真正的“所见即所得”式离线存档。无论是用于知识管理、资料收藏还是永久存档,SingleFile 都能轻松搞定。

    日常浏览网页的时候,有时候看到一篇文章、一个教程或者一个小工具网页,想要保存到本地留着慢慢看。最直观的方式就是 Ctrl+S,或者右键“另存为”。然而这个方法真的有点尴尬:很多时候保存下来的 HTML 文件,丢失了样式表、图片,或者字体错乱,甚至脚本不加载,打开后和原网页差别巨大。最惨的是,有些页面完全靠 JS 渲染,直接保存就是一堆空白或者乱码。

    偶尔会想,如果能把网页里的所有资源都打包成一个文件就好了。单文件保存,这听起来简单,但浏览器本身并没有原生支持。而 SingleFile 就完美解决了这个问题。

    SingleFile 简介

    SingleFile 是一个浏览器扩展(Web Extension),支持 ChromeEdgeFirefox 等主流浏览器。它的核心功能非常直接:把网页上的 HTML、CSS、JS、图片、字体,全都打包进一个单独的 HTML 文件里。保存后,你完全可以离线打开,和在线时几乎一模一样。

    SingleFile 可以从以下商店安装:

    •  Chrome
      https://chrome.google.com/extensions/detail/mpiodijhokgodhhofbcjdecpffjipkle
    •  Firefox
      https://addons.mozilla.org/firefox/addon/single-file
    •  Firefox for Android
      https://addons.mozilla.org/android/addon/single-file
    •  Safari(macOS 和 iOS)
      https://apps.apple.com/us/app/singlefile-for-safari/id6444322545
    •  Microsoft Edge
      https://microsoftedge.microsoft.com/addons/detail/efnbkdcfmcmnhlkaijjjmhjjgladedno

    功能使用

    通过在扩展工具栏或网页上右键点击 SingleFile 按钮打开上下文菜单,你可以保存:

    • 当前标签页
    • 选中的内容
    • 选中的框架

    你还可以一键处理多个标签页并保存:

    • 选中的标签页
    • 未固定的标签页
    • 所有标签页

    在上下文菜单中选择 “标注并保存该页面…” 可以:

    • 高亮文本
    • 添加笔记
    • 删除内容

    上下文菜单还允许你激活自动保存

    • 当前标签页
    • 未固定的标签页
    • 所有标签页

    启用自动保存后,每次页面加载完成后(或者页面未卸载前)都会自动保存。

    适用场景与局限

    SingleFile 特别适合几个场景:

    • 收藏博客文章或者教程,需要离线阅读
    • 做网页资料存档,方便归档或分享
    • 保存一些文档型网页,例如 MDN、开发者文档

    不过,它也不是万能的。如果你想保存一个动态网页,比如 SaaS 应用或者需要实时数据交互的页面,SingleFile 就无能为力了。保存后虽然页面看起来完整,但交互功能基本不能用。另外,页面过大(几十 MB 甚至更多)时,保存和打开都会很吃力。

    我的理解是,把它当作“网页快照”工具最合适,而不是“网页长期运行环境”。

    高级命令行用法

    SingleFile 不只是浏览器扩展,它还有一个 CLI(命令行工具)版本,适合批量保存网页。比如你想每天把一组教程或者博客存档,可以写一个简单脚本:

    npx single-file https://example.com/tutorial1
    npx single-file https://example.com/tutorial2 --output ~/Downloads

    参数还可以指定:

    •  --compression 压缩 HTML
    •  --delay 延迟加载 JS/图片
    •  --user-agent 模拟不同浏览器

    配合定时任务或者 CI/CD,完全可以实现网页批量归档,几百个网页轻松搞定。

    不过需要提醒的是,Windows 下使用 CLI 时坑比较多,路径分隔符、权限和环境变量可能会让命令报错,需要稍微调试一下…

    有没有更好的方案

    市面上还有一些类似工具:

    •  WebScrapBook:功能更强大,支持分层目录管理,但操作略复杂
    •  HTTrack:可以完整镜像网站,适合下载整个站点,但生成的文件分散
    •  Wget/curl:偏向命令行,适合下载静态资源

    相比之下,SingleFile 就是方便、直观、干净,尤其是只想保存单篇文章或者网页时,体验几乎无可替代。

    写在最后

    SingleFile 真正解决了“网页保存”的痛点。以前保存文章总是乱七八糟,现在只需要一个扩展,单文件搞定,离线阅读不掉链子。偶尔看到自己收藏的网页还能完整打开,还是蛮有成就感的。