2P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • 이 블로그는 재활용된 Google Pixel 5에서 운영됨
  • Termux와 같은 툴을 사용하여 모바일 기기 위에 서버 환경 구축 및 블로그 운영 실현
  • 100W 태양광 패널과 Jackery 160W 파워스테이션 조합을 통해 블로그를 완전히 오프그리드(Offgrid) 환경에서 구동
  • Blog는 Hugo 기반으로, 패키지 설치 및 운영 자동화, 파일 백업/관리를 ssh, rsync, cron 등으로 손쉽게 지원
  • Android 스마트폰에서도 일반 리눅스 서버처럼 안정적이고 빠른 동작 및 효율적인 전력 소비 달성

소개 및 동기

  • 본 블로그는 Google Pixel 5재생 에너지(태양광)만으로 운영됨
  • 여러 Mastodon 사용자들이 ESP32, 안드로이드 기기, 라우터 등 기발한 하드웨어로 웹사이트를 직접 호스팅하는 사례에서 영감 받음
  • 저전력 소비를 고민하며 중고 하드웨어를 새로운 용도로 살리는 실험에 직접 착수함

하드웨어 및 네트워크 환경

  • 보관 중인 여러 디바이스 중에서 밀착 연결된 이더넷(USB-OTG 및 도크 지원)과 최신 보안 업데이트 적용이 가능한 Google Pixel 5 선택
  • Verizon 락으로 인해 커스텀 롬 설치는 불가했으나, 안드로이드 환경 그대로 활용함
  • 무선 연결(와이파이)이 아니라 물리적 유선 이더넷 네트워크를 반드시 사용해야 한다는 점을 중시

태양광 전력 기반 오프그리드 블로그

  • Harbor Freight Tools의 100W 모노크리스탈라인 태양광 패널과 Jackery 160W 파워스테이션으로 전력 공급
  • 해당 셋업을 통해 퍼마컴퓨팅(영구적으로 지속 가능한 컴퓨팅) 및 재생 에너지 실험 경험 축적
  • 중고 부품만으로 독립된 오프그리드 웹사이트 운영 가능성 확인

사이트 구축: Termux와 Hug o

  • 일반적인 리눅스 환경 구축을 고려했으나, Android 터미널 에뮬레이터인 Termux와 자체 패키지 시스템 활용
  • ssh, git, hugo 등 필수 패키지들이 Termux 저장소에 이미 오래전부터 존재
  • Hugo를 직접 Termux에 설치후 기존 Hugo 기반 블로그 마이그레이션

운영 경험

  • 사이트는 기대 이상으로 빠르고 신뢰성 높은 동작을 보임
  • 초기에는 Hugo 버전 차이, 태양광 배터리 관리 등의 소소한 문제 일부 경험
  • 안드로이드 스마트폰 상에서 동작한다는 사실을 접속자가 구분하기 어려울 정도로 완성도 있는 환경 구현

단순한 구축 및 관리

  • git, screen, 텍스트 에디터, hugo 설치만으로 빠르게 서버 구축 가능
  • 파일 업로드 및 신규 포스팅은 dufs 패키지(브라우저 기반 정적 파일 서버) 또는 scp 활용
  • dufs 역시 Termux 저장소에서 쉽게 설치 가능

기본 유틸리티 패키지 리스트

  • rsync, openssh, git, wget, curl, fish shell, cronie, termux-services, iperf3, speedtest-go, screen, helix, hugo

서비스 자동화 및 SSH 접속

  • Termux 내에서는 서비스 단위(sv-enable)로 sshd/cronie 기동
  • 공식 문서 참고로 ssh 공개키 등록, 고정 포트(8022), 자동 생성 사용자명 등 주의 필요

Hugo 기반 블로그 운영 자동화

  • hugo serve 실행 명령을 fish shell별칭으로 등록해 관리
  • 이전 screen 세션 종료, 캐시 삭제, 신규 세션 생성 등의 작업을 자동화 스크립트(~/scripts/blog_reload.sh)로 구현
  • cronie를 통한 cron 작업 등록(*/5 * * * * ...)으로 주기적 블로그 재시작 및 리로드 처리

백업 및 데이터 관리

  • Termux 상에서 ssh로 원격 접속 후 rsync로 전체 디렉터리 백업 가능
  • 데스크탑 및 NAS에 대한 cron 연동 자동화 포함
  • 자체 git 인스턴스로도 추가 백업 가능하며, Github 등 다른 forge 사용도 자유로움

마무리 및 전달

  • 모바일 기기와 재생 에너지를 결합한 저렴하고 효율적이며, 환경친화적인 블로그 운영 가능성 입증
  • 관련 문의 및 피드백은 Mastodon 또는 이메일을 통해 환영
Hacker News 의견
  • 예전 스마트폰을 인프라스트럭처-라이트 용도로 활용하는 아이디어가 마음에 듦, 낮은 전력 소모와 내장 UPS(물론 단점도 있으나 어느 정도 보완 가능) 덕분임. 나도 몇 대의 오래된 안드로이드 기기를 가지고 있어 이런 멋진 실험을 해보고 싶음. 이미 가동 중인 홈랩 인프라는 VM이나 컨테이너로 손쉽게 기능 추가 가능하니 전력 소모가 거의 없을 것 같지만, 그래도 이런 시도 자체가 멋지고 나도 해보고 싶음. 한 가지 궁금증은 왜 WiFi를 쓰지 않았는지임. 도킹->유선랜 장치는 전력 소모만 늘리는 불필요한 추가 장치로 느껴짐. 구형 폰에서 충분한 대역폭이 필요하지 않을 것 같은데, 저자가 이렇게 유선랜을 굳이 택한 이유가 궁금함. 참고로 Pixel 5도 홈랩 인벤토리에 추가해야 할 것 같음. 사이트 레이아웃과 정보도 아주 멋짐
    • 나도 Pixel 3를 키보드 왼쪽에 자기적으로 부착해서 쓰는 중임. 버튼 그리드가 표시된 웹페이지를 띄워두고, 버튼을 누르면 커서 위치에 타임스탬프 입력, 모니터 온오프 토글, 특정 앱 실행 등 다양한 작업을 함. 원래 Elgato Stream Deck을 사고 싶었는데, 남는 폰이 있길래 이렇게 활용 중임
    • 오래된 모바일 기기용 "서버화" 키트를 보고 싶음. 예전에 Game Boy Advance용 콘솔화 키트[https://fingercramp.com/portfolio/…] 같은 느낌으로, 폰 메인보드를 추출해 외장 스토리지, 더 좋은 전원공급장치, 물리적 네트워크 인터페이스 등으로 확장하는 식임
    • 블로그 작성자임, 고마움. 이미 돌아가는 홈랩에 VM이나 컨테이너 추가해도 전력 소모는 늘지 않는다는 점에 동의함. 본인은 재미 삼아, 그리고 태양광에서 전원 공급해보고 싶어서 이 프로젝트를 시작함. 원래 밤에는 홈랩을 꺼두고, 폰만 배터리로 계속 돌릴 계획이었지만 홈랩이 이제 필수 인프라가 되어 항상 켜둬야 함. 유선랜이 필요한 이유는 안정적인 대역폭 때문임. 내 WiFi 네트워크는 성능이 썩 좋지 않음
    • WiFi는 대기 시간이 높고 일정하지 않음. 서버에서 나가는 요청의 느린 1%는 1초 가까이 더 걸릴 수도 있음. 블로그를 폰에서 돌릴 거라면 무척 빠르게 응답해야 한다고 생각함. 구형 안드로이드 폰은 최신 WiFi 표준에 대응하지 못할 수 있고, HN 메인에 뜨는 트래픽 감당도 어려울 수 있음
    • 스마트폰에서 WiFi는 절전 기능 때문에 외부에서 예기치 않게 들어오는 연결 성능이 매우 불안정하고 지연이 큼. 커널 파라미터로 끌 수 있을지 모르겠지만, 가능해도 루팅이 필요할 것임
  • 스마트폰의 전력 효율성이 정말 흥미로움. 요즘 폰들은 배터리 사용량에 최적화된 ARM 서버와 같음. Pixel 5는 풀로드시에도 5W 미만, 일반적인 x86 서버는 50~100W 소모함. 개인 블로그만 해도 연간 400~800kWh 절감임. 전자제품을 재활용하는 것보다 재사용이 환경에 끼치는 영향은 생각보다 큼
    • 정적 사이트라면 S3나 Github Pages에 배포하는 게 훨씬 효율적임. 요청 없을 때는 자원 소비가 0임. 집에서 정적 사이트 운영에 x86 서버 쓰는 건 매우 비효율적임
    • x86도 저전력 세팅 가능함. n100 시스템은 10W 미만으로 대기, 최대 부하도 20-30W 수준임
    • 2020년 폰이 가능한 작업에 x86 CPU가 50~100W 썼던 건 10년 전쯤 이야기임. 몇 개의 정적 파일 호스트에 75W를 태우는 건 이제 흔치 않음. 결국 집에 남는 옛날 스마트폰을 초저전력 Pi 대신 쓰는 것도 좋은 아이디어임
    • 400~800kWh 연간 절감이면 미국 평균 전기요금(킬로와트시당 13.2센트 기준)으로 최대 105.60달러, 한 달 약 8.8달러임. 1인가구 빈곤선(2025년 기준 15650달러)의 1%도 안 됨. 에너지 효율성은 좋지만 거시적으론 큰 차이는 아님
  • 정확하게는 재사용된 Google Pixel 5임. 완전히 분해되어 재생산된 건 아님. Reduce, Reuse, Recycle 순이 환경에 미치는 영향 순서, 재사용이 한 단계 업그레이드임
    • 그래도 전체적으로 재사용이라면 “재활용”도 틀린 표현은 아님. [https://en.wiktionary.org/wiki/recycle/…]
    • recycle도 문법적으로 맞는 표현임. reuse와 별 의미 차이 없음
  • RPi나 다른 보드스를 재활용하는 시도와 비교해볼 때도 Pixel 5 활용은 합리적임. 오히려 더 성능 좋을 수도 있고, 화면만 전력 소모가 큼. 고부하 작업에서 발열 문제가 있을 것 같아 전력 최적화 방법이 궁금함. 블로그가 사용하는 Hugo는 Go로 개발된 정적 사이트 생성기로 콘텐츠 서빙에 적합해 보임. 참고로 요즘 SSG를 좋아하게 되었고, 마크다운 기반 블로그 에디터를 Tauri/Rust + React/MUI로 만들어 git 연동 및 Cloudflare로 배포하는 걸 기획 중이지만 실천은 아직임. 예전에 MS가 GUI 블로그 에디터를 만들었는데 지금은 없어진 게 아쉬움
  • 제일 걱정되는 부분은 ‘spicy pillow(배터리 팽창 및 화재)’ 문제를 어떻게 피할 수 있냐는 점임. 배터리 없이 USB로만 실행된다면 아주 좋을 것 같음
    • 요즘엔 80%까지만 충전 제한 옵션이 제공되는 폰도 있음. 없다면 스마트 플러그와 타이머, 혹은 IFTTT로 배터리 잔량에 맞춰 전원을 자동 제어하는 것도 방법임. 예를 들어 40% 이하에서 켜고 60% 이상이면 끄게 세팅 가능함
    • 제일 짜증나는 건 배터리 셀을 빼내서 BMS에 전원 직접 공급해도 Android는 일정 시간 후 “배터리가 다 닳았다”며 셧다운할 수 있다는 점임. 이건 루팅 후에야 막을 수 있고 굉장히 번거로움. 벽에서 바로 전원 주입이 되면 이런 문제도 없어짐
    • 나는 오래된 안드로이드 기기 여럿을 USB 멀티충전기에 물려두고, 이것 자체를 스마트 스위치에 연결해서 밤에 몇 시간만 충전함. 롬 교체 및 루팅 후 ACCA 앱으로 80%까지만 충전 제한을 설정함. 2015년 출시된 Samsung Note 5가 반년 전쯤 팽창했지만, Samsung S9과 Nokia 6.1은 LineageOS 올리고 6년째 무리 없이 동작 중임
    • [https://www.instructables.com/Power-an-Android-Phone-Without-Battery/] 이런 방법 참고할 수 있음, 모델별 가짜 배터리도 온라인에서 구입 가능함
    • 그냥 내화상자에 넣어두고 망가지면 새로 놓는 것도 한 방법임
  • 어딘가 Google 임원이 "왜 이렇게 Google 기기를 재사용하는 걸 허락하는가, 여기에 광고를 붙일 방법이 없을까?"라고 궁금해할 것 같음
  • 이 댓글은 여전히 상태 좋은 Pixel 5에서 보냄. 내가 써본 최고의 폰임. 적당한 크기, 뒷면 지문 인식 등등 다 좋음. 이후 나온 폰들은 죄다 만족스럽지 않았음
    • 나도 리퍼 Pixel 5를 약 250달러에 구입해 사용 중임. 역시 내가 가진 최고의 폰임. 2020년 디자인은 단순 실속 위주(예: 화면 내장 지문 인식 같은 보여주기 식 기능 배제)로 오래도록 만족할 수 있음. 앞으로도 2~3일 충전에 사진 품질 역시 ‘괜찮음 수준’ 계속 기대함
    • 내 Pixel 5는 배터리 교체가 필요할 것 같음. 지금은 하루에도 두세 번씩 충전해야 할 만큼 배터리가 닳았음
    • 나도 비슷함. iPhone SE2를 끝날 때까지 쓸 예정임(같은 연식, 크기, 무게, 터치ID 등)
  • 이런 셋업에서 DNS 처리는 어떻게 하는지 궁금함. ISP가 일반적으로 가정용 회선에서 서버 운영을 달가워하지 않을 것 같음
    • NAT가 진짜 문제임. tailscale 관련 이슈 [https://github.com/tailscale/tailscale/issues/11563] 트래킹 중임. 또, ISP에 직접 연락해(혹은 경쟁사로) 소정의 비용(예: +5유로/월) 내고 static IP를 받는 방법도 있음. 예시로 친구와 Factorio 멀티도 가능함
    • 대부분의 ISP가 사실상 ‘동적’ IP지만 거의 변하지 않음. 내 경우는 1년에 한 번 랜덤하게 바뀌는 정도, 그때그때 수동으로 DNS 갱신하면 됨. 자동화도 할 수는 있지만 자주 안 하니 그냥 수동 처리 중임. 트래픽이 업로드 쪽으로 계속 포화될 때만 ISP에서 신경 쓸 것 같고, Comcast/XFinity 같은 곳은 업/다운 비대칭이 심하니 참고해야 함
    • 동적 DNS 솔루션이 다양하게 나옴. TP-link 등은 앱에서 간편하게 설정 가능함
    • 난 2.5기가비트 인터넷 쓰는데도 고정 IP 없음. 대신 라우터가 IP 변할 때마다 DNS 설정을 업데이트하는 스크립트를 돌림. DNS 제공업체가 ttl 변경 허용해주면 자동화 가능함
  • 관련 링크: [https://fairphone.com/en/2024/…]
  • 음, 여기가 내 블로그임. 그냥 잡스러운 글을 쓰는 평범한 사람일 뿐인데, 우물 밖에 튕겨나온 기분임. HN 계정도 오늘 처음 만듦. 질문에 답하자면 1) 여전히 Pixel에서 블로그 운영 중임. 바꿀 이유가 없음 2) 그냥 집 인터넷에 올린 이유는 애초에 트래픽이 거의 없을 거라고 생각했음 3) 평일 저녁마다 집에서 이런저런 실험하는 사람임, 업계 종사자도 아님. 사실 건설 계약회사 사장임
    • 너의 사고방식이 엔지니어와 같아서 이곳에서 잘 어울릴 것 같음. 블로그 다른 포스팅도 살펴봤는데 재미있는 글 많음, 레이아웃도 가독성이 좋아 다시 방문할 예정임. “혼자 있고 싶다” 포스트도 HN에서 인기 있었음
    • 흥미롭게 읽었음. 한 가지 궁금한 점: hugo serve로만 돌리지 말고, hugo로 파일 빌드한 뒤 nginx 같은 웹서버를 쓰지 않은 이유가 있는지 물어보고 싶음