1P by GN⁺ 8일전 | ★ favorite | 댓글 1개
  • FediMeteo는 4유로짜리 FreeBSD VPS에서 시작된 전 세계 기상 정보 서비스로, Fediverse를 통해 각 도시의 날씨를 자동 게시함
  • 각 국가는 FreeBSD jail로 분리되어 관리되며, snac 소프트웨어와 Open-Meteo API를 이용해 데이터를 가져와 Markdown 형식으로 게시
  • 시스템은 6시간마다 자동 업데이트, 39개의 jail, 38개국 2937개 도시를 지원하며, 팔로워 수는 7700명 이상으로 성장
  • API 키 유출, 좌표 계산 오류, 언어 번역 문제 등 다양한 운영상의 문제를 겪었으나, 캐싱과 다국어 지원 개선으로 안정화
  • 저비용 인프라에서도 효율적이고 자율적인 글로벌 서비스 구축이 가능함을 보여주는 사례로 평가됨

프로젝트 개요

  • FediMeteo는 개인적 관심에서 출발한 Fediverse 기반 자동 기상 알림 서비스
    • 창작자는 자신의 도시 날씨를 타임라인에서 직접 보고 싶다는 생각에서 시작
    • 서비스는 도시별 계정(bot) 을 생성해 각 도시의 날씨를 주기적으로 게시
  • 운영체제로 FreeBSD를 선택, 국가별로 jail을 분리해 관리 및 보안성 확보
  • 초기 테스트는 독일 VPS에서 진행되었으며, 현재는 이탈리아 밀라노의 4유로 VPS에서 운영 중

설계 원칙

  • 국가별 인스턴스 분리로 관리와 보안성 강화, 필요 시 개별 이동 가능
  • 데이터 출처는 wttr.in과 Open-Meteo 중 선택, 오픈소스 친화성과 신뢰성 중시
  • 접근성 강화: 현지 언어, 텍스트 브라우저 호환, 이모지 사용, JavaScript 비의존
  • Unix 철학에 따라 작은 구성요소들이 협력하는 구조 유지
  • snac을 핵심 소프트웨어로 채택, ActivityPub 지원, RSS 생성, 낮은 자원 사용, 빠른 컴파일 속도 보유

기술 구현

  • 각 jail은 독립적으로 동작하며, Python 스크립트가 도시별 데이터를 가져와 Markdown으로 변환
    • geopy로 좌표 계산 후 Open-Meteo API 호출
    • snac의 note 명령으로 게시물 전송, 외부 API 키 관리 불필요
  • post.sh 스크립트가 모든 도시를 순회하며 게시물 자동 생성 및 게시
    • cron이 6시간마다 실행, Uptime-Kuma로 상태 모니터링
  • 도시명은 파일(cities.txt)로 관리되며, 새 도시 추가 시 자동 반영

성장과 반응

  • 초기에는 이탈리아 중심으로 테스트 후, 유럽 각국으로 확장
  • FediFollows가 프로젝트를 소개하면서 팔로워 급증, 각국 사용자 요청 증가
  • 다국어 지원, 이모지 표현, 비공개 게시(unlisted) 기능 추가
  • 개발자 커뮤니티의 빠른 피드백으로 기능 개선이 지속됨

확장과 기술적 도전

  • 단위 변환(섭씨/화씨) , 시간대 차이, 동명이 도시 구분 등 글로벌 확장 시 문제 발생
  • 미국·캐나다 진출 시 1200개 이상의 도시 추가, 주별 구분을 위해 __ 구분자 사용
  • Open-Meteo 무료 API 한도 초과 문제 발생 후, 전용 API 키 제공받음
  • FreeBSD와 snac의 효율성 덕분에 단일 VPS에서도 다수 국가 운영 가능

시스템 성능 및 인프라

  • VPS 사양: FreeBSD 14.3-RELEASE, BastilleBSD로 jail 관리
    • 39개 jail, ZFS 스냅샷 15분마다, 외부 백업 매시간 수행
    • RAM 사용량 501MB, 업데이트 시 약간 증가
  • CPU 부하 평균 10% 이하, 대규모 업데이트 시 70~75%까지 상승
  • 미국 인스턴스는 도시 간 5초 간격으로 게시, 전체 처리 약 2시간 반 소요

문제 해결 사례

  • API 키 유출: 디버그 코드로 인해 노출, 즉시 수정 및 새 키 발급
  • geopy 오류: Nominatim 응답 실패 시 좌표 캐싱 도입으로 해결
  • 언어 문제: 다국어 번역 누락 및 현지 언어 선택 오류 수정

현재 상태 (2025년 12월 기준)

  • 지원 국가: 38개국, 도시 수 2937개
  • Fediverse 팔로워 수 7707명 이상, RSS 구독자 수는 추정 불가
  • 유럽, 북미, 아시아, 오세아니아 주요 도시 포함
  • 시스템 안정적으로 운영 중이며, 추가 국가 확장 여력 존재

결론

  • FediMeteo는 저비용 인프라에서도 글로벌 서비스를 구축할 수 있음을 입증
  • 데이터 주권, 단순한 구조, 오픈소스 협력의 가치를 보여주는 사례
  • 창작자는 프로젝트를 통해 날씨가 사람들을 연결하는 사회적 매개체가 되었음을 강조
Hacker News 의견들
  • 이런 작은 프로젝트가 성공적으로 성장하는 걸 보는 게 정말 즐거움
    FreeBSD가 Linux 배포판보다 불필요한 요소가 적고 지연이 낮은 느낌을 받음
    Vultr에서 월 4달러짜리 FreeBSD VM(1GB RAM, 1vCPU)을 설정했는데, Caddy를 돌려도 RAM 사용량이 12%밖에 안 됨
    4GB RAM, 4vCPU VM이면 꽤 많은 트래픽을 감당할 수 있을 것 같음
    개인용 블로그를 레트로 BBS 스타일의 텍스트 기반 웹앱으로 만들고 싶음 — Nim 멀티스레드 서버 + sqlite 조합으로, 컨테이너나 JS 라이브러리 없이 4MB짜리 바이너리 하나로 FreeBSD에서 돌리는 식으로
    이 글 덕분에 FreeBSD로 가는 길에 확신이 생김

    • Linux는 배포판과 설정에 따라 다름
      오늘 mkosi(https://github.com/systemd/mkosi)로 테스트해보니, 최소 설치 기준 Fedora 43은 약 130MiB, Debian은 100MiB 정도 RAM을 사용함
      예전에 FreeBSD 최소 설치를 해봤을 때도 비슷하거나 ZFS 설정에 따라 약간 더 썼던 기억이 있음
    • 20년 전에는 Linux가 지금보다 자원 사용량이 절반이었던 걸로 기억함
      아마 x64 전환이 원인 중 하나일 수도 있음
      같은 일을 하는데 RAM을 두 배로 쓰게 된 게 신기했지만, 대신 이제는 사실상 무제한 RAM을 쓸 수 있게 되었음
    • Alpine 같은 가벼운 배포판도 존재함
      SSH 로그인조차 Ubuntu보다 훨씬 빠르고, apk 패키지 매니저도 매우 신속함
    • BSD 유틸리티는 내부 동작을 이해하기에 GNU 유틸보다 훨씬 읽기 쉬움
      라이선스 모델은 GNU 쪽을 선호하지만, 코드 자체는 BSD 스타일이 더 마음에 듦
    • “retro BBS-like web app”이라면, 옛날 다이얼업 BBS를 말하는 건지, 아니면 포럼형 게시판을 말하는 건지 궁금함
      후자라면 FlaskBB를 참고해볼 만함
  • 나도 비슷하게 open-meteo를 이용해 개인용 서핑 예보 시스템을 만들고 있음
    한 지역만 다루지만 확장도 쉬움
    open-meteo의 해양 데이터를 단기·장기 기상예보와 결합하고, 그 결과를 LLM으로 정량 데이터를 정성적 설명으로 변환
    내가 머릿속으로 하던 일을 자동화한 셈임
    아이디어가 있다면 알려주면 좋겠음
    https://surfrash.xyz/

    • 멋짐. 어떤 해변에도 유용할 것 같음
      데이터 벽 대신 설명 중심 인터페이스가 마음에 듦
      Manly(NSW, Australia) 지역도 추가 요청함
  • 재미있게 읽었음
    젊을 때 *BSD에 더 관심을 가졌다면 좋았을 텐데, 지금은 Linux에 너무 익숙해져서 쉽게 바꾸기 어려움
    ZFS와 jail 기능 덕분에 관리가 매끄럽게 된 것 같음
    나는 podman을 쓰지만, Linux에서 ZFS는 아직 안 써봤음
    개인용 아카이브를 만들 계획이라 ZFS의 deduplication 기능을 활용해볼 예정임

    • 나도 같은 생각임
      Docker 같은 복잡한 스택을 줄이려 노력 중이고, systemd가 있긴 하지만 jail이나 sandbox 개념이 꽤 매력적임
      기본 설정만으로도 잘 작동하는 도구를 선호함
  • “4유로 VPS” 스펙이 놀라움
    예를 들어 Hetzner의 최저가 VPS는 2 vCPU, 4GB RAM, 40GB NVMe SSD인데, 1Gb/s 연결은 없음
    내가 찾은 가장 저렴한 건 Contabo였음

    • LowEndBox가 이런 VPS 정보를 모아둔 인기 사이트임
    • Netcup VPS 500 G11s도 참고할 만함
    • VPS 제공업체 간 vCPU 성능 비교에 주의해야 함
      저가형 서버는 세대가 오래됐거나 과도하게 공유된 경우가 많음
      4 vCPU가 최신 서버의 2 vCPU보다 느릴 수도 있음
      다만 RAM 중심의 앱이라면 좋은 선택일 수 있음
    • Oracle Cloud는 무료로 4 oCPU(ARM), 24GB RAM, 200GB NVMe SSD, 4Gb/s 대역폭을 제공함
      인스턴스 확보가 어렵다는 말도 있지만, 나는 2년 넘게 잘 쓰고 있음
      무료 계정이 종료될 수 있으니 유료로 전환하는 게 안전함
    • 예전에 buyvm에서 1년에 5달러짜리(256MB RAM) VPS를 썼었는데, 단순한 용도로는 꽤 유용했음
  • 거대한 인프라(Kubernetes, AWS, DynamoDB 등) 없이 단순한 프로젝트를 직접 구축하는 모습이 보기 좋음

  • Hacker News 자체도 FreeBSD 기반 4코어 서버에서 돌아감
    관련 링크

    • 실제로는 2개의 CPU 패키지 × 4코어 × 2스레드 구조라 총 16스레드임
    • 그래도 전용 코어라서 다른 테넌트와 공유되지 않음
  • 나도 비슷한 스펙의 서버를 5달러 정도에 구입했음
    400~500GB 저장공간이 있고, 3개월간 8달러 프로모션으로 시작했음
    이후 월 5달러로 전환될 예정인데, VPS를 직접 운영하는 재미와 몰입감이 큼
    OVH는 가격이 저렴하고 무제한 egress 정책이 장점임
    Upcloud도 지원팀이 훌륭했음
    OVH 지원은 트위터나 Discord를 통해 문의하는 게 좋다는 팁도 들었음
    서버 가격과 지원 품질을 비교하며 최적화하는 과정 자체가 즐거움

  • “freeofcharge.org”라는 도메인을 사서, RAM 안에 들어가는 무료 서비스들을 서브도메인으로 제공하는 아이디어를 생각한 적 있음
    월 10달러 이하로 운영 가능한 유용한 서비스들을 모으는 개념이었음

  • 나도 비슷하게, 특정 지역의 기상 특보를 HTML/Markdown 형태로 보기 쉽게 변환하는 도구를 만들고 싶음
    fediverse용은 아니고, 단순히 접근성 좋은 날씨 알림용임

  • “현지 언어로 예보를 제공해야 한다”는 의견에 대해,
    현지 언어를 모르는 사용자도 많으니 브라우저의 기본 언어 설정을 덮어쓰는 건 불필요하다고 생각함

    • 프로젝트는 다국어 지원이 아니라 사용자에게 직접 예보를 전달하는 게 목적임
      대신 이모지로 직관적인 표현을 제공해 언어 장벽을 줄임