모든 시스템 정상 작동 중 21 종 암호화폐 지원 · 모네로 환영 KYC 없음 정책
ChainVPS

Crypto · KYC 없음

Bitcoin Core (bitcoind)를 해외 VPS에 호스팅

직접 비트코인 코어(Bitcoin Core) 풀 노드를 운영하는 것은 남의 서버를 신뢰하는 대신 체인을 스스로 검증할 수 있는 유일한 방법이며, KYC 없는 해외 VPS를 이용하면 신원과 노드를 연결하지 않고도 이를 실행할 수 있습니다.

설명

비트코인 코어(bitcoind)는 비트코인 프로토콜의 레퍼런스 구현체입니다. 모든 블록과 트랜잭션을 내려받아 독립적으로 검증하고, 이를 피어에게 전달하며, 지갑이나 앱이 신뢰할 수 있는 JSON-RPC 인터페이스를 제공합니다. 풀 노드를 운영하면 셀프 커스터디 수준의 검증, 공개 블록 익스플로러로부터의 프라이버시, 그리고 지갑·라이트닝 노드·Electrum 서버(Fulcrum/electrs)·BTCPay Server를 위한 백엔드를 확보할 수 있습니다.

왜 해외에서 호스팅해야 할까요

노드의 IP 주소는 연결되는 모든 피어에게 노출되므로, 암호화폐로 결제하고 신원 확인이 없는 VPS에서 운영하면 홈 네트워크와 실명으로부터 노드를 분리할 수 있습니다. ChainVPS는 KYC 없이 무제한 트래픽을 제공하는데, 이는 초기 블록 다운로드와 지속적인 피어 릴레이가 수백 기가바이트를 이동시켜 트래픽 제한이 있는 요금제라면 한도를 초과할 수 있기 때문에 중요합니다.

배포

실제로 작동하는 참고 설정

이 내용을 새 ChainVPS 인스턴스에 붙여넣으세요. 자리표시자를 실제 값으로 교체한 뒤 실행하세요.

docker-compose.yml
# docker-compose.yml — 비트코인 코어 풀 노드 (소형 VPS를 위해 기본값은 pruned)
# 1) 먼저 RPC 인증 정보를 생성하세요 (평문 비밀번호를 저장하지 마세요):
#      curl -sSL https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py \
#        | python3 - bitcoin
#    rpcauth=... 형식의 줄과 그에 대응하는 비밀번호가 출력됩니다. 아래에 rpcauth 줄을 붙여넣으세요.
# 2) docker compose up -d   그다음 IBD 진행 상황 확인:  docker compose logs -f
services:
  bitcoind:
    image: bitcoin/bitcoin:28.1
    container_name: bitcoind
    restart: unless-stopped
    stop_grace_period: 2m
    user: "1000:1000"
    ports:
      - "8333:8333"                 # P2P — 공개, 피어 서비스/수락 허용
      - "127.0.0.1:8332:8332"       # RPC — localhost에만 바인딩, 절대 외부에 노출 금지
    volumes:
      - ./bitcoin-data:/home/bitcoin/.bitcoin
    command:
      - -printtoconsole
      - -server=1
      - -listen=1
      - -prune=10000                # 블록 약 10GB; 완전한 아카이브 노드를 원하면 -prune=0 -txindex=1 설정
      - -dbcache=1024               # MB 단위; 사양이 좋은 서버라면 2048-4096으로 올려 IBD 속도 향상
      - -maxmempool=300
      - -maxconnections=40
      - -rpcbind=0.0.0.0            # 컨테이너 내부에서 바인딩; 호스트 매핑 덕분에 127.0.0.1로 유지됨
      - -rpcallowip=172.16.0.0/12   # 도커 브리지 대역, 호스트 측 도구가 RPC에 접근할 수 있도록 함
      - -rpcauth=bitcoin:REPLACE_WITH_GENERATED_HASH   # <-- 여기에 rpcauth 출력값을 붙여넣으세요
      - -disablewallet=1            # 노드 전용; 내장 지갑을 사용하려면 이 줄을 삭제하세요
# 최초 실행 시 ./bitcoin-data의 소유자를 uid 1000으로 설정해야 합니다:  mkdir -p bitcoin-data && sudo chown 1000:1000 bitcoin-data

방화벽

열어야 할 포트

포트프로토콜용도
8333TCP비트코인 P2P — 피어를 수락하고 서비스함; 외부에 공개해도 되는 유일한 포트
8332TCPJSON-RPC 제어 인터페이스 — 127.0.0.1에만 바인딩하고, SSH 터널이나 사설 네트워크로만 접근
28332/28333TCP라이트닝 노드나 Electrum 서버를 위한 선택적 ZMQ 블록/트랜잭션 알림; localhost 전용
9050TCP피어 수준의 프라이버시를 위해 bitcoind를 Tor로 운영할 경우 사용하는 선택적 로컬 Tor SOCKS 프록시

적정 규모 산정

필요한 요금제

가벼움 — pruned 노드

VPS Small (2 vCPU / 4 GB RAM / 60-80 GB NVMe)

prune=10000은 블록 약 10GB와 약 10GB의 chainstate를 유지합니다. 전체 체인을 검증하면서도 과거 블록 데이터가 필요 없는 지갑·라이트닝 백엔드로 이상적입니다.

중간 — 완전한 unpruned 노드

VPS Pro 또는 Storage VPS (4 vCPU / 8 GB RAM / 1 TB 디스크)

prune=0은 모든 블록을 저장합니다(2026년 기준 약 650GB이며 계속 증가). Storage 요금제는 저렴한 대용량 디스크 여유를 제공하고, 무제한 트래픽이 전체 IBD와 피어 릴레이를 감당합니다.

고사양 — 아카이브 + txindex / Electrum 서버

Dedicated 또는 대용량 Storage VPS (8+ vCPU / 16-32 GB RAM / 1.5-2 TB NVMe)

txindex=1과 Fulcrum/electrs를 함께 사용하면 대규모 주소 인덱스가 추가되어 다수의 지갑 클라이언트를 서비스할 수 있습니다. dbcache와 인덱스 재구축을 위해 빠른 NVMe와 충분한 RAM이 필요합니다.

추천 로케이션: ChainVPS는 트래픽이 무제한이므로 15개 로케이션 어디서든 문제없이 운영할 수 있으며, 이는 노드의 수백 기가바이트에 달하는 IBD와 지속적인 릴레이에 실제로 필요한 조건입니다. 신원과 연결되지 않는 운영을 원한다면 프라이버시 등급 로케이션인 아이슬란드, 스위스, 몰도바, 네덜란드, 루마니아, 룩셈부르크 중에서 선택하세요. 이들 지역에서는 노드가 당신의 실명과 아무런 연결점을 갖지 않습니다. Tor로 운영하면서 장기간 안정적으로 운영할 프라이버시 친화적인 거처를 찾는다면 아이슬란드와 스위스 같은 관할권도 좋은 선택입니다.

보안을 강화하세요

보안 강화 체크리스트

  • 8332 포트를 절대 인터넷에 노출하지 마세요. 위 예시처럼 RPC 매핑을 127.0.0.1로 유지하고 `ssh -L 8332:127.0.0.1:8332 user@server`로 접근하세요. 취약하거나 추측 가능한 인증 정보로 RPC에 접근할 수 있게 두는 것은 노드가 탈취되거나 자금이 빠져나가는 전형적인 원인입니다.
  • -rpcuser/-rpcpassword 대신 -rpcauth(솔트가 적용된 해시)를 사용하여 compose 파일이나 프로세스 목록에 평문 비밀번호가 남지 않도록 하세요. 서버를 공유하거나 스냅샷을 뜬 적이 있다면 반드시 갱신하세요.
  • 피어 수준의 프라이버시를 위해 Tor로 운영하세요: 호스트에 tor를 설치하고 -proxy=127.0.0.1:9050 -listen=1 -bind=127.0.0.1과 onion 서비스를 추가하면 피어들에게는 VPS의 IP 대신 .onion 주소만 보입니다. 클리어넷 피어를 아예 두지 않으려면 -onlynet=onion과 함께 사용하세요.
  • ufw로 방화벽을 잠그세요: 인바운드는 22번(SSH, 가급적 키 인증만 허용하고 포트도 변경)과 8333번만 허용하고 나머지는 모두 차단하세요. bitcoind는 어차피 자체적으로 아웃바운드 피어 연결을 엽니다.
  • 디스크 사용량을 주시하세요. pruned 노드는 약 20GB에서 안정적으로 유지되지만, unpruned 노드는 계속 증가합니다. 디스크 사용량 알림과 충분한 여유 공간을 마련하세요. 디스크가 가득 차면 검증이 멈추고, 하드 크래시 시 chainstate가 손상될 수 있습니다.
  • stop_grace_period(위 예시에서는 2m)을 설정하고 강제 종료 대신 반드시 `docker compose stop`을 사용하세요. bitcoind는 LevelDB chainstate를 깔끔하게 플러시할 시간이 필요하며, 그렇지 않으면 다음 시작 시 느린 리인덱스가 발생할 위험이 있습니다.

질문

호스팅 Bitcoin Core (bitcoind) — FAQ

디스크가 실제로 얼마나 필요한가요?

pruned 노드(설정에서 prune=10000)는 약 15-20GB를 유지하면서도 전체 체인을 그대로 검증합니다. 완전한 아카이브 노드는 모든 블록을 저장하므로 2026년 기준 약 650GB이며 매년 약 50-70GB씩 증가하니 1TB 이상을 계획하세요. txindex=1이나 Electrum 서버를 추가하면 1.5-2TB의 고속 NVMe가 필요해집니다.

초기 블록 다운로드(IBD)는 얼마나 걸리나요?

무제한 트래픽과 dbcache=2048 이상을 갖춘 최신 VPS에서는 CPU와 디스크 속도에 따라 제네시스 블록부터 완전히 동기화 및 검증하는 데 몇 시간에서 하루 정도가 걸립니다. 초기 동기화 중 -dbcache를 높이는 것이 가장 큰 속도 향상 효과를 줍니다. 이는 일회성 비용이며, 이후에는 노드가 새 블록만 내려받습니다.

이 노드로 라이트닝 노드나 Electrum 서버를 운영할 수 있나요?

네. ZMQ를 활성화하고(28332/28333 포트에 -zmqpubrawblock과 -zmqpubrawtx 추가) LND, Core Lightning, Fulcrum, electrs를 로컬 Docker 네트워크를 통해 RPC 및 ZMQ 엔드포인트에 연결하면 됩니다. 다만 Fulcrum/electrs는 txindex=1이 필요하므로 pruned 노드와는 함께 사용할 수 없습니다.

pruned 노드는 보안이나 프라이버시 측면에서 더 취약한가요?

아니요. pruned 노드도 아카이브 노드와 완전히 동일하게 모든 블록과 트랜잭션을 검증합니다. 단지 검증이 끝난 오래된 블록 데이터를 폐기할 뿐이며, 지갑의 보안과 프라이버시는 동일합니다. 잃는 것은 다른 피어에게 과거 블록을 제공하거나 임의의 오래된 트랜잭션을 다시 스캔하는 기능뿐입니다.

내 노드의 IP가 노출되나요?

네 — 연결되는 모든 피어는 설계상 노드의 IP를 볼 수 있습니다. 바로 그렇기 때문에 KYC 없는 해외 VPS에서 운영하는 것이 도움이 됩니다. 이 IP는 당신의 신원이나 홈 네트워크와 아무런 연결점이 없는 서버에 속하기 때문입니다. 완전한 피어 수준의 프라이버시를 원한다면 하드닝 팁에서 설명한 대로 bitcoind를 Tor로 운영하여 피어에게 .onion 주소만 보이도록 하세요.

생성하기 Bitcoin Core (bitcoind)
60초 안에 배포하세요.

무제한 트래픽 · 디도스 방어 포함 · 21종 암호화폐 · KYC 없음.