1P by GN⁺ | ★ favorite | 댓글 1개
  • 탈옥한 Kindle용 Tailscale에 기본 Tailscale SSH, 앱별 프록시, 일부 기기를 위한 TUN 모드가 추가됨
  • 일반적인 Kindle에서는 사용자 공간 모드의 한계로 KOReader가 100.x.y.z 같은 tailnet 주소에 직접 연결할 수 없었음
  • 새 프록시 모드는 로컬 포트의 SOCKS5·HTTP CONNECT 요청을 tailscaled가 받아 Calibre, Wallabag 등 다른 tailnet 노드로 전달함
  • 별도 KOReader 플러그인은 Kindle뿐 아니라 Kobo와 PocketBook에서도 콘텐츠 서버 접근에 필요한 프록시 인터페이스를 자동 생성함
  • 비공식 탈옥 환경의 커뮤니티 코드인 만큼 기기별 호환성 차이가 있으며 직접 설치하고 설정해야 함

KUAL 기반 Tailscale의 새 연결 방식

  • 기존 클라이언트도 Kindle을 tailnet에 등록해 Tailscale IP로 접근하거나 SSH로 접속할 수 있었지만, 기기의 모든 트래픽을 tailnet으로 라우팅하지는 못했음
  • 탈옥 Kindle에서는 일반적으로 사용자 공간 네트워킹을 사용해 기기 자체의 네트워크 라우팅 계층인 TUN 모드를 이용할 수 없음
    • KOReader가 100.x.y.z 연결을 요청해도 Kindle OS에 해당 Tailscale IP로 향하는 경로가 없어 연결이 끊어짐
  • greywolf1499의 KUAL 앱 업데이트는 이를 우회하는 여러 모드를 추가함
    • 프록시 모드로 Tailscale을 시작한 뒤 KOReader 등의 프록시 주소를 127.0.0.1:1055로 지정함
    • 포트 1055에서 대기하는 tailscaled가 요청을 받아 다른 tailnet 기기로 전달함
    • SOCKS5HTTP CONNECT를 모두 지원해 앱에 맞는 방식을 선택할 수 있음
  • Tailscale SSH가 기본으로 활성화되므로, 명백한 기본 사용자명과 비밀번호를 사용하는 USBnetworking SSH를 따로 켤 필요가 없음
  • 일부 Kindle에서는 전체 TUN 모드를 이용해 기기 수준에서 Tailscale 네트워킹이 가능함
  • 프록시를 활용하면 다음 작업을 수행할 수 있음

KOReader 전용 플러그인

  • Tailscale KOReader 플러그인은 KOReader 밖에서 Tailscale 기능이 필요하지 않은 사용자를 위한 대안임
    • KUAL 앱과 달리 기기 자체를 tailnet에서 접근할 수 있게 만들지는 않음
    • 대신 KOReader가 콘텐츠 서버에 접속하는 데 필요한 프록시 인터페이스를 자동 생성함
    • Kindle PW5·PW6, Kobo, PocketBook에서 테스트됨
  • 11세대 일반 Kindle은 현재 호환성 문제가 있어 정상 동작이 확인되지 않음
  • 설치와 설정은 다음 순서로 진행함
    • 플러그인을 KOReader의 플러그인 디렉터리에 복사
    • KOReader 메뉴에서 Install/Update Tailscale 실행
    • Tailscale 인증 키를 지정 디렉터리에 복사한 뒤 메뉴에서 Tailscale 활성화
    • KOReader 프록시를 SOCKS5용 127.0.0.1:1055 또는 HTTP CONNECT용 127.0.0.1:1056으로 설정
    • 다른 플러그인에는 접속할 서버의 Tailscale IP 입력
  • 이 플러그인은 KOReader용 SyncThing 플러그인과도 함께 사용할 수 있음

댓글과 토론

Hacker News 의견들
  • KOReader는 대부분의 전자책 단말기에 설치할 수 있는 훌륭한 오픈소스 인터페이스임. 처음에는 Kobo 배터리가 빨리 닳을까 걱정했지만 아무 문제도 없었고, 원하는 대로 끝없이 맞춤 설정할 수 있어 독서 편의성의 종착점에 도달한 느낌임
    전자책 단말기를 쓴다면 강력히 추천하며, 보수 없이 개발하고 유지하는 분들에게 감사함

    • 모든 것을 세세하게 바꾸려는 사람에게는 좋겠지만, 내게는 설정 구조가 지나치게 어려웠음. 글꼴·여백·하이픈 연결 설정이 톱니바퀴, 문서, 렌치, 길게 누르는 책 설정 중 어디에 있는지, 다시 타이포그래피·화면·스타일·텍스트·기타 중 어디로 가야 하는지 알기 힘듦
      장거리 비행 중 Project Gutenberg 책의 표시 문제를 해결하려고 써봤지만, 하이픈 연결을 끄는 메뉴를 찾는 데만 10분가량 걸렸고 올바른 메뉴에도 1~3쪽에 걸쳐 수십 개의 옵션이 있었음. 반면 Kobo 기본 리더는 필요한 설정이 예상한 첫 위치에 한데 모여 있음
      개인 취향이지만 파일 탐색기 화면보다 Kobo나 Kindle 기본 화면 같은 라이브러리 방식을 선호함
    • KOReader와 BookOrbit 조합이 훌륭하며, Calibre 등 원하는 도구를 함께 써도 좋음. 설정은 까다롭지만 한번 맞춰 놓으면 최고의 독서 환경이 됨
      주 화면에는 BookShelf, 머리말과 꼬리말 설정에는 BookEnds를 쓰며, 선택한 텍스트를 대규모 언어 모델에 보내 설명·번역·사용자 지정 요청을 실행하는 KOAssistant도 사용 중임. Horatio Hornblower 시리즈의 옛 표현이나 생소한 항해 용어를 선택하고 Explain을 누르면 Kindle에서 몇 초 만에 답을 받아 사전처럼 쓸 수 있음
      BookOrbit로 독서 진도와 주석, 전자책을 관리하고, Claude로 ESP32 기반 전자잉크 화면을 설정해 KOReader에서 표시한 문구를 번갈아 보여주게 했음. 자가 호스팅 맞춤형 독서 환경의 정점이며, 이 길을 권한 동료에게 감사함
    • 돈을 받지 못하는 건 후원하지 않기로 선택했을 때뿐
      https://liberapay.com/KOReader
    • 기본 소프트웨어에 별다른 문제가 없어 아직 KOReader를 설치할 필요를 느끼지 못했는데, 어떤 기능이 그렇게 좋은지 궁금함. 있으면 좋겠다고 생각한 기능은 TheStoryGraph와 독서 진도 동기화 정도임
    • Kobo에서도 비슷하게 만족하고 있음. 깊게 중첩된 폴더의 책까지 모두 보여주는 Kobo식 홈 화면이 아쉬웠지만, 이를 위한 플러그인이 있음: https://github.com/AndyHazz/bookshelf.koplugin
      이제 남은 건 핸즈프리 독서용 외장 페이지 넘김 장치가 오른쪽 가장자리의 글자를 가리지 않도록 본문 여백을 비우는 스타일시트 같은 기능이며, 방법을 아는 사람이 있다면 알려주길 바람
  • 이번 주에 7세대 Kindle Paperwhite를 탈옥했음. 가장 큰 불만은 다크 모드가 없다는 것이었는데, 알고 보니 Amazon이 제공하지 않기로 했을 뿐이었음. KOReader는 다크 모드를 문제없이 지원하고 Kindle 기본 소프트웨어보다 훨씬 빠르고 즉각적으로 반응함
    아들과 아내 모두 10세대 Paperwhite를 쓰지만, 같은 기기인데도 구매 시점에 따른 소프트웨어 차이로 아내의 기기에만 다크 모드가 있음
    또 KOReader는 플러그인을 통해 DRM을 처리할 수 있어 마침내 도서관 전자책을 대출할 수 있게 됐음. 새 기기를 살 필요 없이 10년 된 기기도 적절한 소프트웨어만 있으면 아주 잘 작동함

  • 이 정도면 기준을 넘었으니 Kindle을 탈옥할 때가 됐음. 바이브 코딩을 하지 않거나 적게 한 날에는 도파민 부족 같은 금단감을 느껴 X의 쓸모없는 게시물을 보거나 신경을 자극할 무언가를 찾는 데 시간을 너무 많이 씀
    그 시간에 밀린 RSS 목록을 읽는 편이 낫겠음

  • KOReader, SSH, Tailscale 중 하나가 Kindle Oasis의 배터리 수명을 완전히 망가뜨리고 잦은 재부팅과 충돌을 일으켰음. 예전 구현에서 겪은 일이라 지금은 나아졌을 수도 있음

    • 가장 의심되는 건 Tailscale임. iOS에서도 배터리를 꽤 많이 소모하고 Android에서도 마찬가지임
  • Kindle의 오래된 펌웨어에 Tailscale이 TUN 형태의 네트워크 인터페이스를 만드는 데 필요한 커널 확장이 없더라도, 사용자 공간 네트워킹 모드에서 -tun -userspace-networking으로 어느 정도 작동시킬 수 있음
    KOReader의 Calibre 설정이 localhost:8081을 가리키는 걸 보면 프록시도 사용했던 듯함. 설정한 지 오래됐지만 구현은 가능함

  • RSS가 나온 김에, 전자책 단말기에 적합한 피드 추천을 받고 싶음. r/longreads 같은 콘텐츠를 떠올리고 있음

  • 이 스크립트에서 tailscaled를 실행할 때, 다소 공포를 조장하는 이름이지만 --no-logs-no-support도 추가하는 편이 좋음: https://github.com/victoria-riley-barnett/koreader-tailscale...
    그렇지 않으면 Tailscale이 Kindle 사용 때마다 접속한 호스트와 포트, 연결 시작·종료 시각 같은 행동 메타데이터를 수집함: https://tailscale.com/docs/features/logging#opt-out-of-clien...
    연결 내용 자체는 암호화되지만, 메타데이터만으로도 개인에 관해 상당히 많은 것을 알아낼 수 있음: https://kieranhealy.org/blog/archives/2013/06/09/using-metad...

    • 메타데이터 기록이 걱정된다면 Headscale로 제어 서버를 직접 호스팅할 수도 있음. 수집 거부 약속에 의존하는 대신 Tailscale을 경로에서 완전히 제외할 수 있음
  • 첫 Kindle을 거의 10년 사용하다 배터리가 부풀어 중고 Kindle을 샀고 만족하고 있음. 사용성이 좋고 휴대전화 앱으로 책을 공유하면 Kindle에 동기화되므로 아직 탈옥하고 싶지는 않음
    Tailscale은 좋아하므로, 이를 설치할 수 있는 완전한 오픈소스 전자책 단말기를 사야 할지도 모르겠음

  • 개발자가 Imiron의 위치를 빠르게 파악할 수 있도록 기존 정형 기법 도구와 비교하면 유용하겠음

  • Kindle이나 Kobo에서 WireGuard를 실행하는 방법이 있으면 좋겠음