남는 기기로 홈서버 만들기 — 안드로이드 폰부터 구형 노트북까지

게시일: 2025년 8월 15일 · 15분 읽기

서랍에 잠든 갤럭시 S10으로 실제 웹서버를 돌리고 있다

이건 농담이 아니다. 2년 전 쓰던 갤럭시 S10이 서랍에서 잠을 자고 있었는데, 어느 날 생각해보니 이 기기도 프로세서가 있고 메모리가 있다. 왜 못 쓰지?

그렇게 시작한 실험이 지금까지 계속되고 있다. 남는 기기들로 홈서버 환경을 만드는 법을 정리했다.

안드로이드 폰 웹서버 — Termux 활용

Termux는 안드로이드 폰을 리눅스 환경으로 변신시키는 도구다. 구글 플레이에서 받을 수 있다.

설치 단계:

  1. Google Play에서 Termux 설치 (또는 F-Droid에서 받기)
  2. 앱 실행
  3. 기본 패키지 업데이트: apt update && apt upgrade
#!/bin/bash
# Node.js 설치
apt update
apt install -y nodejs npm

# 간단한 웹서버 만들기
npm init -y
npm install express

# app.js 생성
cat > app.js << 'EOF'
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello from Galaxy S10! ' + new Date());
});

app.listen(3000, '0.0.0.0', () => {
  console.log('Server running on port 3000');
});
EOF

# 실행
node app.js

이제 폰의 IP 주소를 확인하고, 같은 네트워크의 다른 기기에서 http://PHONE_IP:3000 으로 접속하면 웹서버에 도달한다.

갤럭시 S10 사양:

이것은 2019년 기준 하이엔드 폰이다. 지금도 웹서버로는 충분하다.

Termux의 장점과 단점

장점:

단점:

나는 이 문제를 해결하기 위해 S10을 거치대에 고정하고, 항상 WiFi와 충전에 연결되어 있게 했다. 그러면 꽤 안정적이다.

구형 노트북으로 홈서버 만들기

안드로이드 폰은 안정성 문제가 있지만, 구형 노트북은 진짜 홈서버가 될 수 있다.

내 경우 2015년 MacBook Pro를 홈서버로 쓰고 있다:

설정 단계:

  1. Ubuntu 20.04 설치 (또는 기존 OS 사용)
  2. SSH 서버 설정
  3. Docker 설치
  4. PM2 또는 systemd로 자동 시작 설정
#!/bin/bash
# Ubuntu에서 홈서버 초기 설정
sudo apt-get update
sudo apt-get upgrade -y

# SSH 활성화
sudo apt-get install -y openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh

# Docker 설치
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

# PM2 설치
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g pm2

# Node.js 애플리케이션 예제
mkdir -p ~/myapp
cd ~/myapp
npm init -y
npm install express

cat > app.js << 'EOF'
const express = require('express');
const os = require('os');
const app = express();

app.get('/', (req, res) => {
  res.send(`
    <h1>Welcome to Home Server</h1>
    <p>Uptime: ${Math.floor(process.uptime())} seconds</p>
    <p>Free Memory: ${Math.floor(os.freemem() / 1024 / 1024)} MB</p>
  `);
});

app.listen(3000, () => console.log('Server running on 3000'));
EOF

# PM2로 시작
pm2 start app.js --name myapp
pm2 startup
pm2 save

전기요금 비용

홈서버를 24/7 돌리려면 전기요금이 얼마나 들까?

전기요금이 이 정도라면, 무료 호스팅(GitHub Pages, Vercel)도 좋지만 홈서버도 충분히 가능하다.

네트워크 설정 — 외부에서 접속하기

집 안에서만 사용한다면 문제없지만, 외부에서 접속하려면 어떻게 할까?

옵션 1: ngrok (간단하지만 느림)

npm install -g ngrok

ngrok http 3000
# https://random-string.ngrok.io 형식의 URL이 생성됨

ngrok은 터널링 서비스로, 자신의 로컬 서버를 인터넷에 노출시킨다. 설정이 간단하지만 무료 계정은 매번 URL이 바뀐다.

옵션 2: 공인 IP + 포트 포워딩 (더 안정적)

ISP에서 공인 IP를 받았다면:

  1. 공유기 설정에서 포트 포워딩 설정
  2. 예: 외부 포트 8080 → 내부 IP 192.168.1.100:3000
  3. 방화벽 규칙 확인

다만 가정용 인터넷은 공인 IP가 자주 바뀐다. DNS를 동적으로 업데이트해야 한다. (duckdns, noip 등 무료 DDNS 서비스 사용)

옵션 3: VPS 프록시 (가장 안정적)

작은 VPS를 빌려서 프록시로 사용한다. Oracle Cloud Always Free나 Linode 나노 인스턴스(월 $5)를 쓰면 된다.

# VPS에서 리버스 프록시 설정 (nginx)
server {
  listen 80;
  server_name myapp.com;

  location / {
    proxy_pass http://home-server-ip:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

보안 고려사항

홈서버를 인터넷에 노출하려면 보안이 중요하다:

모니터링 및 유지보수

홈서버가 24/7 돌아야 하므로 모니터링이 필요하다:

#!/bin/bash
# healthcheck.sh - cron으로 매 5분마다 실행
#!/bin/bash

if ! curl -f http://localhost:3000 > /dev/null 2>>&1; then
  # 서버가 다운되었으면 재시작
  pm2 restart myapp

  # 메일 발송 (선택사항)
  echo "Server restarted at $(date)" | mail -s "Alert" your-email@example.com
fi

crontab에 추가:

*/5 * * * * /home/ubuntu/healthcheck.sh

나의 홈서버 구성

현재 내 홈서버 설정:

총 전기요금: 월 약 6,000원

언제 홈서버, 언제 클라우드?

홈서버가 좋은 경우:

클라우드가 좋은 경우:

결론: 남는 기기가 있다면, 꼭 새로 사지 말고 활용해보자. 예상보다 더 오래 사용할 수 있다.

iL
ian.lab

실무 개발자입니다. 현장에서 겪은 문제와 해결 과정을 기록합니다. 오류 제보는 연락처로 보내주세요.