저는 시골에 살고 있어서 인터넷을 "항상 연결된" 상태로 신뢰할 수 없습니다. 거센 뇌우가 한 번 치거나, 지역 기지국의 예비 배터리가 버틸 수 있는 시간보다 긴 정전이 발생하면 저는 순식간에 석기 시대로 돌아가게 됩니다. 최소한으로 말해도 정말 답답한 일이며, 인터넷이 복구되기를 기다리는 동안 그 공백을 메울 해결책이 필요했습니다.

그래서 저는 노트북에 오프라인 미니 인터넷을 구축하기로 했습니다. 이 프로젝트는 자연재해로 인해 강제로 오프라인 상태가 되었을 때 유용한 Linux 명령어와 읽을거리에 접근할 수 있는 방법으로 시작되었습니다. 하지만 당연하게도, 이 프로젝트는 곧 자체 운영 체제와 가상 머신이 필요할 정도로 거대한 프로젝트로 커졌습니다.

그렇게 저만의 "OfflineNet"이 탄생했습니다. 저는 Debian Trixie VM 내부에 Apache 웹 서버, 무료 오프라인 위키 파일을 위한 Kiwix, 방대한 로컬 라이브러리, 그리고 빠르고 색인화된 로컬 검색을 위한 Recoll을 사용하여 이를 구축했습니다. 완성 후에는 수천 개의 정리되지 않은 파일들을 VM과 호스트 머신 모두에서 작동하는 완벽한 오프라인 미니 인터넷으로 탈바꿈시켰습니다.

관련 기사

저는 의도적으로 빌드를 가볍고 지루하게 유지했습니다

Debian과 XFCE는 화려하지는 않지만 빠르고 실용적입니다

저는 이미 ESXi에서 게스트를 실행 중이고 마이그레이션이 가능한 어플라이언스를 원했기 때문에 VirtualBox 대신 VMWare Workstation을 사용했습니다. 운영 체제로는 예쁘고 리소스를 많이 잡아먹는 것보다 지루하더라도 빠른 것이 필요했기에 XFCE 데스크톱이 포함된 Debian Linux를 선택했습니다.

Debian과 XFCE 조합은 미인 대회에서 우승할 일은 없겠지만, 생존용 VM으로서는 그 지루함이 확실히 장점입니다. 4GB 메모리에서도 충분히 가볍고, 익숙하며, 다크 테마와 멋진 폰트를 적용해 조금 덜 못생기게 만드는 것도 쉽습니다.

VM을 생성하고 Debian을 설치한 후 배포판 자체에 대한 유일한 업데이트는 VMware 통합이 필요하다는 것이었습니다. 그래서 데스크톱 크기 조정 및 클립보드 지원을 활성화하기 위해 OpenVMware tools를 설치했습니다:

CODEBLOCK_0_ENDBLOCK 필요한 소프트웨어를 설치하기 전 마지막 단계는 /var/www/html로 전송되기 전 초기 파일들이 위치할 /home 디렉토리에 폴더를 만드는 것이었습니다:

이 글도 확인해 보세요:  제품 사진 촬영을 위한 창의적인 소품 아이디어 9가지(그리고 각 소품의 사용 시기)

CODEBLOCK_1_ENDBLOCK 미니 인터넷처럼 느껴지려면 먼저 로컬 홈페이지가 필요했습니다

간단한 Apache 웹 서버와 빠른 HTML 페이지로 모든 것을 연결했습니다

프로젝트가 단순히 파일과 폴더로 가득 찬 거대한 디렉토리가 되는 것을 막기 위해 첫 페이지가 필요했습니다. 저는 Apache 웹 서버를 설치하고 간단한 로컬 홈페이지를 구축하여 프로젝트의 나머지 부분을 위한 대시보드 및 랜딩 페이지로 사용했습니다:

Kiwix(Wikipedia, StackExchange, Gutenberg와 같은 교육용 콘텐츠 다운로드 및 제공). PDF 파일 참조 라이브러리. 복구 노트. Recoll 검색. 시작 스크립트. 조금 더 그럴듯하게 만들기 위해 PowerShell을 사용하여 Windows hosts 파일에 호스트 이름을 추가했습니다:

CODEBLOCK_2_ENDBLOCK 또한 Linux hosts 파일에도 추가했습니다:

CODEBLOCK_3_ENDBLOCK 이렇게 하면 VM 내부와 Windows 브라우저 모두에서 myofflinenet.local을 열 수 있었습니다. 이 설정 하나만으로도 훨씬 깔끔하고 세련된 느낌을 주었으며, 이제는 작은 로컬 네트워크 서비스처럼 작동합니다.

Kiwix는 전체 인터넷을 다운로드하지 않고도 오프라인 위키를 만드는 핵심이었습니다

일부 ZIM 파일은 매우 크기 때문에 선택적으로 다운로드하는 것이 요령이었습니다

Kiwix는 이 프로젝트가 실제 미니 인터넷처럼 느껴지게 만드는 데 필수적인 플랫폼이었지만, 합리적으로 접근해야 했습니다. Kiwix를 사용하면 오프라인에서 볼 수 있도록 설계된 방대한 양의 웹 콘텐츠를 저장하는 압축된 ZIM 파일을 다운로드할 수 있습니다.

상상하시겠지만, 이러한 파일들은 매우 커질 수 있습니다. VM이 독립적으로 작동해야 했기 때문에 무엇을 다운로드할지 신중하게 선택해야 했습니다. 저는 20GB 제한을 두고 Kiwix 라이브러리 웹사이트에서 의학, 오프라인 지도, DIY, 그리고 몇 가지 Linux 치트 시트와 같은 유용한 ZIM 파일을 골랐습니다.

Kiwix 설치는 놀라울 정도로 간단했습니다:

CODEBLOCK_4_ENDBLOCK 설치 후, ZIM 파일들을 ~/OfflineNet/zim 폴더로 복사했습니다. Kiwix는 파일을 로컬에서 제공하므로 8080 포트에서 Kiwix를 시작하면 바로 열 수 있었습니다:

CODEBLOCK_5_ENDBLOCK 그러면 http://myofflinenet.local:8080에 로컬 위키가 생성되며, 저는 해당 링크를 로컬 홈페이지에 추가하고 Apache에서 다시 게시했습니다.

저는 라이브러리 폴더를 단순하게 유지했습니다

인터넷이 없을 때는 정신을 잃지 않도록 잘 정리된 폴더 구조가 필요합니다

Kiwix 위키는 매우 화려했지만, 일반 폴더들도 중요한 정보를 담고 있었기에 똑같이 중요했습니다. 저는 /var/www/html에 /library, /notes, /downloads를 만들고 각 디렉토리에 내용을 나열하는 정적 HTML 페이지를 생성했습니다.

이 글도 확인해 보세요:  캔버스로 만든 디자인을 판매할 수 있나요? 알아야 할 사항은 다음과 같습니다.

핵심은 모든 것을 단순하게 유지하는 것이었습니다. 화려한 HTML 효과는 배제하고, 최적화 도구 없이도 저에게 이해가 잘 되고 탐색하기 쉬운 폴더 구조를 만들었습니다. 폴더 구조는 의도적으로 기본 수준으로 유지했습니다:

CODEBLOCK_6_ENDBLOCK Apache는 이러한 간단한 로컬 경로를 통해 디렉토리를 제공했습니다:

http://myofflinenet.local/library/ http://myofflinenet.local/notes/ http://myofflinenet.local/downloads/ Apache의 기본 디렉토리 목록은 여전히 1998년의 FTP 서버처럼 보였기 때문에, 라이브러리, 노트, 다운로드 폴더를 위해 CSS가 적용된 정적 인덱스 페이지로 교체했습니다. 여전히 단순함은 유지하면서 보기에는 조금 더 나아졌습니다.

Recoll은 수천 개의 제멋대로인 파일들을 검색 가능한 오프라인 플랫폼으로 바꾸었습니다

아무리 좋은 의도라도 색인 없이는 수천 개의 PDF를 추적하기 어렵습니다

파일을 저장하는 것은 쉽습니다. 인터넷이 없는 상태에서 이미 짜증이 난 상황에 6개월 뒤에도 파일을 찾을 수 있도록 정리하는 것은 다른 문제입니다. 저는 이 프로젝트에 색인 기능과 키워드로 파일을 검색할 수 있는 방법이 필요하다고 판단했습니다. Recoll은 폴더 구조를 완전히 삭제하더라도 파일을 찾고 정리할 수 있기 때문에 이 프로젝트에 완벽하게 들어맞습니다.

저는 다음 명령어로 Recoll을 설치했습니다:

CODEBLOCK_7_ENDBLOCK 그런 다음 애플리케이션 메뉴에서 실행하여 ~/OfflineNet을 직접 지정하고 모든 노트, PDF, 저장된 페이지 및 로컬 문서를 찾게 했습니다. Recoll은 키워드 목록을 생성하며 오프라인 상태에서도 검색 쿼리를 자동 완성할 수 있습니다. 그 후에는 필요한 것을 검색하기만 하면 Recoll이 키워드가 포함된 모든 파일을 불러왔습니다.

Recoll은 기본적으로 제 오프라인 인터넷 프로젝트에 자체 검색 엔진을 제공했으며, 데이터베이스 서버나 웹 앱, 혹은 관리가 필요한 그 어떤 것도 필요하지 않았습니다. 이 시점에서 VM은 향후 사용을 위해 OVF로 내보낼 준비가 되었고, 다음번의 불가피한 장기 인터넷 중단을 대비해 외장 하드 드라이브에 저장되었습니다.

오프라인에서 테스트할 첫 번째 기회는 예상보다 빨리 찾아왔습니다

인터넷은 사라졌지만, 저의 로컬 지식 허브가 상황을 구했습니다

프로젝트의 최종 빌드를 마치자마자 인터넷 중단 사태가 발생했습니다. 악천후 때문이 아니라 지루한 정기 점검 때문이었습니다. 미니 인터넷 프로젝트를 테스트할 완벽한 기회였고, 저녁 식사 메뉴를 찾기 위해 사용하는 것보다 더 좋은 방법이 있을까요?

이 글도 확인해 보세요:  엠마분투스: 구형 하드웨어를 위한 친숙한 데비안 파생 버전

저는 VM을 부팅하고 자동화된 스크립트가 Kiwix를 실행할 때까지 기다린 후 요리법을 찾기 시작했습니다. 홈페이지는 즉시 로드되었고, Kiwix는 로그인 후 몇 초 만에 사용할 준비가 되었습니다. 이는 프로젝트가 견고하고, 더 나아가 번개처럼 빠르다는 것을 보여주는 훌륭한 테스트였습니다. Recoll은 제가 이전에 색인화한 로컬 문서를 여전히 검색할 수 있었습니다. 인터넷 연결에 의존하는 Windows 시작 메뉴 검색과 달리, 시스템은 인터넷이 끊겼다는 사실조차 눈치채지 못했습니다.

저는 곧 Kiwix의 퍼블릭 도메인 레시피 중 하나에서 에어프라이어 주키니 요리법을 찾았고, 책을 읽으며 즐거운 저녁 시간을 보냈습니다. 전 세계의 월드 와이드 웹은 아니었지만, 어쨌든 저에게 필요한 것은 딱 그 정도였습니다.

다음번에는 다르게 만들겠지만, 이 버전은 계속 유지할 것입니다

작고, 지루하며, 검색 가능한 것이 미니 오프라인 프로젝트의 성공 조합이지만, 더 큰 것을 원합니다

이 버전의 프로젝트는 작고 민첩했기 때문에 개념 증명으로서 잘 작동했습니다. 아주 잘 작동하고 있지만, 확실히 개선하고 더 발전시켜야 할 필요성을 느낍니다. 다음번에는 VM에 추가 스토리지를 연결하고 전용 개인 LLM을 통해 오프라인 챗봇을 추가할 것입니다.

지금은 더 작은 파일들을 계속 추가하고 더 나은 오프라인 라이브러리를 구축하면서, 뇌우나 유지 보수, 혹은 누군가 굴착 전 신고 번호를 사용하는 것을 잊어버려 발생할 다음 인터넷 중단을 차분히 기다릴 것입니다.

관련 기사

By 이지원

상상력이 풍부한 웹 디자이너이자 안드로이드 앱 마니아인 이지원님은 예술적 감각과 기술적 노하우가 독특하게 조화를 이루고 있습니다. 모바일 기술의 방대한 잠재력을 끊임없이 탐구하고, 최적화된 사용자 중심 경험을 제공하기 위해 최선을 다하고 있습니다. 창의적인 비전과 뛰어난 디자인 역량을 바탕으로 All Things N의 잠재 독자가 공감할 수 있는 매력적인 콘텐츠를 제작합니다.