집 PC 24시간 대신 놀던 맥북으로 — 월 고정비 0원 서버 운영 이야기

soongbly.com에 올려 둔 데모와 봇은 전부 집 PC에서 돌고 있었다. 포트폴리오 본체는 클라우드에서 서빙되지만, 서브도메인 뒤의 실험실 앱들은 터널을 통해 집 안의 컴퓨터로 이어진다. 그러니 집 PC를 24시간 켜 둬야 했다. 계산해 보니 전기세가 월 1.5~2.9만원쯤 나갔고, 무엇보다 작업용 PC를 서버로 겸하니 내가 뭘 건드릴 때마다 서비스가 흔들렸다. 2026년 8월 6일부터 8일까지 사흘 동안 이걸 뜯어 옮겼다. 대상은 서랍에서 놀던 2013년형 13인치 맥북이었다.

서버 이전 — 개념 사진 (사진: Pixabay / Pexels)
서버 이전 — 개념 사진 (사진: Pixabay / Pexels)

왜 하필 맥북이었나

먼저 돈 드는 대안부터 훑었다. 무료 클라우드 VPS는 가입 단계에서 계정 생성이 거부됐다. 해외 VPS는 월 6,800원이면 되지만 해외 IP라 법원경매·나라장터 같은 국내 공공 사이트가 막힐 위험이 있었다. 옥션렌즈와 비즈렌즈가 그 데이터로 돌아가니 치명적이다. 국내 클라우드는 월 3만원, 미니PC는 17만원, 중고 폴더블폰을 서버로 쓰는 안까지 봤는데 배터리를 24시간 충전하는 게 불안했다.

맥북은 이 조건을 다 피해 갔다. 이미 있으니 0원, x86이라 표준 리눅스가 그대로 올라가고, 소비전력 1020W라 전기세는 월 2,6004,900원 수준이다. 한국 IP가 유지되고, 배터리가 붙어 있어 순간 정전에 UPS 노릇까지 한다. 그래서 제목의 “0원"은 정확히는 고정비 0원이다. 전기세는 든다. 다만 집 PC를 켜 둘 때의 5분의 1쯤이다.

우분투를 올리고 화면은 꺼서 텍스트 모드로만 돌렸다. 그것만으로 메모리가 1GB 넘게 돌아왔다. 메모리 7.6GB짜리 기계에서 서비스 12개를 띄우면 2.5GB 정도를 쓴다.

무엇을 옮겼나

옮긴 것은 크게 세 덩어리다.

웹 데모 12개. 옥션렌즈, 비즈렌즈, 매거진, 스토리 스튜디오, 성장렌즈, 여행 동행, 두뇌 오락실, 접수함 두 종 등. 각각을 systemd 서비스로 등록하고, 집 PC에서 쓰던 자체 감시 스크립트는 폐기했다. 프로세스가 죽으면 systemd가 다시 띄운다. 강제로 죽여 봤더니 8초 만에 복구됐고, 전원을 껐다 켜도 12개가 손대지 않고 전부 올라왔다. 그다음 공개 터널을 맥북 쪽으로 돌렸다.

봇 두 개. 실거래 중인 코인봇과 주식봇. 코인봇은 같은 계좌에 두 대가 동시에 주문을 넣으면 안 되니 집 PC 봇을 먼저 우아하게 세우고, 거래 상태 파일을 동기화한 뒤 맥북에서 실거래 모드로 켰다. 주식봇은 집 PC의 예약작업 9개를 끄고 맥북의 crontab으로 옮겼다.

배치 작업. 야간 자동 에이전트, 매거진 아침 발행, 옥션 새벽 배치, 방문통계, 운영일지, 품질 점검 등 스무 개 남짓. 이건 한 번에 끝나지 않고 2주에 걸쳐 하나씩 넘겼다.

데이터는 전체 34.3GB 중 약 10GB만 골라 옮겼다. 모델 가중치, 렌더된 영상, 안드로이드 빌드 결과물 같은 건 뺐다. 윈도우 경로가 박힌 곳 89군데를 리눅스 경로로 바꿨다.

막힌 것들

순조롭지 않았다. 기록해 둔 걸림돌만 적는다.

  • 데이터 이전을 다섯 번 반복했다. “git에 있는 것 → 커밋 안 된 것 → git이 무시한 것"처럼 분류를 하나씩 쫓아가며 옮긴 게 원인이었다. 분류에서 샐 때마다 누락이 생겼고, 사이트에서 빈 화면을 보고서야 알았다. 결국 양쪽 파일 목록을 통째로 비교하고 폴더별 개수를 대조하는 스크립트로 바꾸고서야 끝났다. 그 방식이 한글 파일명 누락 31개를 공개 전에 잡아냈다.
  • 한글 파일명. 윈도우의 tar와 scp가 한글 이름을 옮기지 못했다. 따로 zip으로 묶어 리눅스에서 풀어야 했다.
  • 숨어 있던 의존성. 집 PC에는 우연히 깔려 있어서 가려져 있던 패키지 세 개가 깨끗한 환경에서 드러났다. 그중 하나는 공용 모듈이 쓰는 것이라 서비스 전부에 영향을 줬다.
  • 경로 안의 제어문자. 서비스 목록 파일의 경로 하나가 \a를 벨 문자로 해석해 깨져 있었다. 윈도우에서도 존재하지 않는 경로였으니, 그 서비스는 원래부터 감시 밖이었을 가능성이 크다.
  • 별도 저장소. 사이트 소스는 다른 git 저장소라 맥북에 없었고, 방문통계와 자동 카드 발행이 거기에 커밋하니 따로 클론해야 했다.
  • AI CLI 로그인. 옥션 새벽 배치가 쓰던 CLI는 맥북에 없어서, 코드는 그대로 두고 환경변수 하나로 다른 CLI로 갈아 끼웠다.

이전이 끝난 뒤에도 사고가 두 번 있었다. 8월 15일 맥북에서 git reset --hard를 한 번 친 것이 화근이었다. 로컬에서만 고쳐 둔 패치와 스크립트 실행 권한이 날아갔고, 야간 배치가 16일부터 22일까지 한 번도 돌지 않았다는 걸 일주일 뒤에야 알았다. 8월 22일에는 경로 고치는 스크립트가 놓친 파일 두 개가 윈도우 경로를 그대로 품은 채 돌아서, 접수함이 원장을 못 읽어 전부 0건으로 보였다. 둘 다 고쳤고, 교훈은 문서에 박았다. 맥북에서는 reset 금지, 맥북에만 있는 것은 전부 목록화해서 레포로 옮길 것.

지금 상태

8월 8일 터널을 돌린 뒤로 공개 트래픽은 전부 맥북이 받는다. 운영일지를 보면 등록 서비스 15개 중 13개가 가동 중이고, 옥션렌즈 새벽 배치는 매일 두 시간 동안 신건 수십 건을 분석하고 있다. 코인봇도 맥북에서 실거래 중이다. 집 PC의 서비스들은 공개 트래픽 없이 대기만 하는 상태로 남겨 뒀다.

배포 방식은 단순해졌다. 작업 PC에서 커밋하고 푸시하면, 맥북에서 받아서 해당 서비스를 재시작한다. “재시작이 곧 배포"라는 규칙은 그대로다.

배운 것

기술적으로 어려운 일은 없었다. 어려운 건 내 습관이었다. 한 번에 끝낼 수 있는 일을 다섯 번에 나눠서 했고, 검증을 “됐겠지"로 넘겼다가 사이트에서 문제를 발견했다. 지금은 시작 전에 측정하고, 옮긴 뒤 숫자로 대조하는 걸 원칙으로 삼고 있다.

그리고 하나 더. 집에 안 쓰는 노트북이 한 대쯤 있다면 그게 서버다. 특히 한국 공공 데이터를 쓰는 서비스라면 해외 VPS보다 집 안 네트워크의 구형 노트북이 더 안전한 선택일 수 있다. 매일 아침 자동으로 쓰이는 운영일지와 그 위에서 도는 실험실의 앱들이 그 증거다.

이 글은 제 여행 기록과 작업 로그를 바탕으로 초안을 AI와 함께 정리하고, 직접 편집했습니다.