我住在乡下,所以互联网对我来说并不是一种可以可靠地视为“始终在线”的东西。只要一场猛烈的雷暴,或者停电时间比当地信号塔的备用电池撑得还久,就能把我打回石器时代。说真的,这挺让人抓狂的,所以我得想个办法,在等网络恢复的这段时间里顶上。
于是,我决定在我的笔记本电脑上搭建一个离线的迷你互联网。这项目一开始,其实就是想让我在老天爷逼我断网的时候,还能查查有用的Linux命令,看看阅读材料。但当然,这玩意儿很快就越搞越大,变成了一个正经项目,甚至值得给它配个专属的操作系统和虚拟机。
就这样,我的“OfflineNet”诞生了,我把它构建在一个Debian Trixie虚拟机里,配了Apache网络服务器、用来搞免费离线维基文件的Kiwix、一个大型本地图书馆,还有Recoll来做索引和快速本地搜索。搞完之后,我把几千个乱七八糟的文件,整成了一个完全离线的迷你互联网,虚拟机和我自己的电脑都能用。
我故意把这套系统搞得又轻又土
Debian和XFCE这俩虽然不花哨,但胜在跑得快、够实用
这次我用了VMWare Workstation,没用VirtualBox,因为我已经在ESXi上跑着几个虚拟机了,想要个能随便迁移的玩意儿。操作系统我选了Debian Linux配XFCE桌面,因为我就要个又土又快的,不要那种花里胡哨还吃资源的。
Debian配XFCE这组合,肯定拿不了选美冠军,但作为一台“保命”虚拟机,它的土气反而是个加分项。它轻量得很,4GB内存就能跑,用起来也熟,而且弄个深色主题、换几个好字体,就能让它没那么丑。
虚拟机开起来、Debian装好之后,系统本身唯一要动的就是装个VMware集成,所以我装了OpenVMware工具,这样桌面就能自适应大小,剪贴板也能用了:
sudo apt install open-vm-tools open-vm-tools-desktop
安装所需软件前的最后一步,是在 /home 目录下建一个文件夹,用来暂存初始文件,之后再移到 /var/www/html 目录:
mkdir ~/OfflineNet
想让它有点迷你互联网的感觉,首先得有个本地主页
一个简单的 Apache Web 服务器和一个快速的 HTML 页面将所有内容串联起来
这项目不能光是一堆文件和文件夹堆成的大目录,得有个首页撑场面。我安装了一个 Apache Web 服务器,构建了一个简单的本地主页,并将其用作项目其余部分的仪表板和着陆页:
- Kiwix,用于下载和提供教育内容,如维基百科、StackExchange 和 Gutenberg。
- PDF 参考资料库。
- 恢复笔记。
- Recoll 搜索。
- 启动脚本。
为了让它更靠谱点,我用 PowerShell 在 Windows 的 hosts 文件里加了个主机名:
Add-Content -Path "$env:windir\System32\drivers\etc\hosts" -Value "`n192.168.226.134 myofflinenet.local"
同时也在我的 Linux hosts 文件中添加了:
echo "127.0.0.1 myofflinenet.local" | sudo tee -a /etc/hosts
这样,我就可以从虚拟机内部以及我的 Windows 浏览器中打开 myofflinenet.local。就这么一个设置,立马感觉高大上了,现在它还真像个微型本地网络服务了。
Kiwix 是打造离线维基的关键,根本不用下载整个互联网
我发现窍门就是得挑着来,因为有些 ZIM 文件大得吓人
Kiwix 这玩意儿,是让整个项目像个小互联网的关键,但我得悠着点用。Kiwix 能让我下载压缩的 ZIM 文件,里面存着一大堆专门给离线看的网页内容。
你想啊,这些文件能大到没边儿,而且虚拟机得自己搞定一切,所以我下载时就得挑挑拣拣。我给自己定了 20GB 的上限,然后从 Kiwix 库网站上挑了些有用的 ZIM 文件,比如医学、离线地图、DIY 还有几张 Linux 速查表。
装 Kiwix 简单得让人意外:
sudo apt install kiwix-tools
装好之后,我把 ZIM 文件拷到 ~/OfflineNet/zim 文件夹里。因为 Kiwix 是在本地跑文件的,所以我只要在 8080 端口启动它就能直接打开:
kiwix-serve --port=8080 ~/OfflineNet/zim/*.zim
这样就在 http://myofflinenet.local:8080 弄了个本地维基,我把这个链接加到本地主页上,然后在 Apache 上重新发了一遍。
html
我特意把库文件夹设计得很简单,这是有原因的
没网的时候,你得把文件夹结构整理得井井有条,免得你抓狂
Kiwix 维基特别炫酷,但那些不起眼的文件夹同样重要,因为它们也存着关键信息。我在 /var/www/html 里建了 /library、/notes 和 /downloads,并在每个目录里放了一个静态 HTML 页面,把里面的内容列出来。
关键就是一切从简,不要花哨的 HTML 效果,文件夹结构我自己看着顺眼,不用什么优化工具也能轻松找到东西。我是故意把文件夹结构弄得这么简单的:
mkdir -p ~/OfflineNet/{zim,library,web,notes,scripts}
然后 Apache 就直接用这些简单的本地路径来访问这些目录了:
- http://myofflinenet.local/library/
- http://myofflinenet.local/notes/
- http://myofflinenet.local/downloads/
因为 Apache 默认的目录页面还跟 1998 年的 FTP 服务器一个样,我就给 library、notes 和 downloads 文件夹换成了加了点 CSS 的静态页面。还是那么简洁,就是看着顺眼多了。
Recoll 把数千个乱糟糟的文件变成了能搜索的离线平台
就算想法再好,没个索引工具,也很难管理数千个 PDF 文件
存文件容易。但要把它们整理好,让你在六个月后、没网、而且本来就烦得要死的时候还能找到,那就是两码事了。我决定这项目得加个索引功能,还得能按关键词搜文件。Recoll 特别合适,因为它就算你把文件夹结构整个删了,也能把文件找出来并整理好。
html
我通过以下命令安装了 Recoll:
sudo apt install recoll
然后我从应用程序菜单中运行它,并直接让它扫描 ~/OfflineNet 文件夹,让它找到所有的笔记、PDF、保存的网页和本地文档。Recoll 还会创建关键词列表,并且即使在离线状态下也能自动补全你的搜索查询。之后,我只需搜索我需要的任何内容,Recoll 就能把含关键词的文件全给你翻出来。
Recoll 基本上为我的离线互联网项目提供了自己的搜索引擎,而且压根不用什么数据库服务器、网页应用,也不用你操心去维护。此时,虚拟机已准备好导出为 OVF 格式以备将来使用,并塞进一个移动硬盘里,以应对下一次不可避免的长时间断网。
没想到,离线试用的机会这么快就来了
互联网消失了,但我的本地知识中心拯救了这一天
我刚完成该项目的最终构建,就遭遇了断网。不是因为任何恶劣天气事件,而就是那种特没劲的例行维护。这是测试这个迷你互联网项目的绝佳机会,正好用它来搜搜晚饭做啥,这不就是最好的测试吗?
我启动了虚拟机,等自动化脚本把 Kiwix 跑起来,然后开始寻找要尝试的食谱。主页立即加载,Kiwix 在登录后几秒钟内就准备好了。这是一个很好的测试,因为它表明该项目是稳健的,更重要的是,那速度,快得飞起。Recoll 仍然可以搜索我之前索引的本地文档。而且,与仍然依赖互联网连接的 Windows 开始菜单搜索不同,系统压根就没察觉到断网了。
html
我很快在Kiwix上的一个公共版权食谱中找到了空气炸西葫芦的配方,并享受了一个安静读书的愉快夜晚。虽然那不是完整的互联网,但正是我需要的。
下次我肯定会换个方式来做,但这个版本我还是会留着
小而简单、还能搜索,这才是迷你离线项目的王道,但我想要更牛的东西
这个版本的项目作为试水效果不错,主要是因为它小巧又灵活。虽然它运行得很好,但我确实觉得得改改,再往前推一步。下次,我会给虚拟机加点存储空间,再搞个离线聊天机器人,用专门的私有LLM。
现在,我会继续加些小文件,把离线图书馆建得更好,同时耐心等着下次断网,不管是雷暴、维护,还是有人忘了打“先挖先打”电话。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.