초기 동기화 도중 가득 찬 디스크
데몬이 멈추고, 데이터베이스는 다시 열리기 전에 복구 과정을 거쳐야 할 수도 있습니다. 동기화 중에는 매일 여유 공간을 확인하고, 오늘의 체인이 아니라 3년 후 체인 크기에 맞춰 티어를 정하십시오.

맨 상태의 Nordic VPS에서 나만의 monerod까지, 여섯 단계 — 검증된 바이너리, 강화된 설정, 풀 또는 프루닝, SSH·WireGuard·v3 onion을 통한 접속. 원격 노드는 여러분의 잔액을 읽을 수 없지만, 여러분의 IP가 트랜잭션을 전파하는 모습은 볼 수 있습니다 — 이 가이드는 바로 그 하나의 격차를 좁힙니다. Debian 12, v0.18 라인에서 테스트되었습니다.
프로비저닝
디스크가 먼저, 그다음 보안 강화
검증
서명 확인, 그다음 설치
구성하기
monerod.conf + systemd
동기화
하루 이틀, 지켜보며
연결
SSH, WireGuard 또는 onion
익명화
Tor를 통해 전파
거의 모든 Monero 지갑은 출시 시점부터 남의 데몬을 가리키고 있습니다. 그 대안이 4분의 1테라바이트와 이틀간의 대기이기 때문입니다. 이 기본값 자체는 납득할 만하지만, 그로 인한 프라이버시 손실은 양쪽 방향 모두에서 흔히 잘못 설명됩니다 — 원격 노드가 자신의 잔액을 읽는다고 생각하는 사람들, 그리고 아무것도 알아낼 수 없다고 생각하는 사람들 모두요. 그 유출의 실체를 정확히 파악하는 것이야말로 이 가이드가 오후 한나절을 들일 가치가 있는지를 알려줍니다.
할 수 없는 것. 노드는 여러분의 잔액도, 주소도, 키도 볼 수 없습니다. Monero 지갑은 무엇을 찾아야 하는지 노드에게 알려주지 않습니다 — 블록 범위 전체를 통째로 받아온 뒤, 기기를 벗어난 적 없는 프라이빗 뷰 키로 각 출력을 로컬에서 복호화해 볼 뿐입니다. 노드는 누구에게 건네든 똑같은 바이트를 건넬 뿐입니다. 어떤 출력이 — 있다고 해도 — 여러분의 것이었는지 노드는 알 수 없습니다 — 이는 서버가 감시할 주소를 직접 건네받아 무엇을 보고 있는지 정확히 아는, 다른 곳에서 쓰이는 라이트 지갑 모델과의 진짜 구조적 차이입니다.
할 수 있는 것. 노드는 접속해 온 IP 주소를 봅니다. 그 IP가 요청한 블록 범위를 보는데, 이는 그 뒤에 있는 지갑이 언제 생성되었는지를 좁혀 줍니다. 새로고침의 리듬을 보는데, 이는 사용 패턴입니다. 그리고 여러분이 송금할 때, 네트워크의 나머지 부분이 받기 전에 서명된 트랜잭션을 가장 먼저 건네받습니다 — 그러니 이 트랜잭션이 이 주소에서, 이 순간에 네트워크에 진입했다는 사실을 기록할 수 있는 위치에 있는 셈입니다. Monero의 다른 모든 설계는 바로 그런 종류의 연결 고리를 끊기 위한 것입니다. 그것을 안정된 IP와 함께 낯선 사람에게 공짜로 넘겨주는 것, 그 부분이야말로 고칠 가치가 있습니다.
그리고 아무도 말하지 않는, 그것이 할 수 있는 일. 거짓말을 할 수 있습니다. 악의적이거나 그저 고장 난 노드는 오래된 체인 팁을 보여줘서 여러분의 지갑이 실제로는 일어나지 않은 입금을 받았다고 보고하게 만들거나, 분명히 보냈다고 믿는 트랜잭션의 릴레이에 실패할 수 있습니다. 그 무엇도 자금을 훔치지는 못합니다 — 지갑은 자신이 복호화한 것을 직접 검증하기 때문입니다 — 하지만 여러분이 거짓된 세계상을 근거로 행동하게 만들며, 입금 확인을 기다리는 판매자에게는 그 자체로 하나의 손실입니다. 직접 운영하는 노드는 그 답을 일일이 저울질할 필요가 없는 노드입니다.
| 노출되는 것 | 퍼블릭 원격 노드 | 여러분의 노드, 클리어넷 | 여러분의 노드, Tor 경유 |
|---|---|---|---|
| 여러분의 잔액과 주소 | 전혀 없음 | 전혀 없음 | 전혀 없음 |
| 여러분의 IP, 노드 운영자에게 | 예 — 낯선 사람이 | 예 — 여러분이 | 아니오 |
| 지갑 생성 시점 | 예 — 낯선 사람이 | 예 — 여러분이 | 예 — 여러분이 |
| IP ↔ 발신 트랜잭션 | 예 — 낯선 사람이 | 여러분의 서버 IP, 그 피어들에게 | tx proxy로 끊김 |
| 잘못된 체인 팁을 보여줄 수 있음 | 예 | 아니오 | 아니오 |
"지갑 생성 시점"은 여전히 자신의 노드에서는 보입니다 — 요청 자체는 그대로 일어나기 때문이며, 다만 다른 누구에게도 더 이상 보이지 않을 뿐입니다. 이 작업의 목적은 메타데이터를 사라지게 하는 것이 아니라, 그것을 쥐고 있는 유일한 당사자가 자기 자신이 되도록 만드는 데 있습니다.
프루닝된 Monero 노드는 오래된 블록의 링 서명 데이터 중 8분의 1만 남기고 나머지는 버립니다. 그럼에도 모든 블록을 직접 내려받아 검증하는 것은 동일합니다 — 프루닝은 신뢰가 아니라 확인 후의 망각입니다 — 그리고 지갑이 요청하는 모든 것과 다른 프루닝 피어가 필요로 하는 모든 것은 온전히 보관합니다. 절약되는 용량은 디스크의 약 3분의 2입니다. 자신의 지갑을 뒷받침하는 것이 임무인 노드라면, 체감할 수 있는 기능적 차이는 전혀 없습니다.
풀 노드를 운영해야 할 이유는 좁지만 실재합니다: 완전히 새로운 노드에게 체인을 처음부터 검증하는 데 필요한 전체 이력 데이터를 건네줄 수 있는 것은 오직 풀 노드뿐이며, 그래서 프루닝 노드로만 이루어진 네트워크는 작동하지 않습니다. 디스크 여유가 있다면 풀 노드 운영은 하나의 기여입니다. 그렇지 않다면 프루닝 노드 운영은 참여의 열등한 형태가 아닙니다 — 오히려 대다수 셀프 호스터가 골라야 할 구성입니다.
데몬을 시작하기 전에 결정하십시오. 첫 실행 시 --prune-blockchain을 넘기면 동기화하면서 함께 프루닝되며, 빠르고 비용도 들지 않습니다. 나중에 풀 데이터베이스를 전환하려면 데몬을 멈추고 별도의 monero-blockchain-prune 도구를 돌려야 하는데, 몇 시간이 걸리고 작업할 여유 공간도 필요합니다. 처음부터 제대로 하면 설정 파일 한 줄이면 되지만, 잘못하면 저녁 시간을 통째로 잡아먹습니다.
| 형태 | 디스크, 2026년 중반 | 적합한 티어 | 적합한 경우 |
|---|---|---|---|
| 프루닝 · 빠듯함 | ~90 GB | Sentinel · 2 vCPU / 4 GB / 120 GB · $3.90 | 가장 저렴하게 작동하는 노드를 원하고, 나중에 디스크를 다시 손볼 것을 감수한다면 |
| 프루닝 · 여유 | ~90 GB | Garrison · 4 vCPU / 8 GB / 240 GB · $7.90 | 기본 추천 — 수년치 여유 공간, 데이터베이스 캐시도 충분 |
| 풀 | 240 GB+ | Ravelin · 8 vCPU / 16 GB / 480 GB · $16.90 | 아카이브 사본을 원하거나, 새 노드의 초기 동기화를 도와주고 싶다면 |
| 풀 노드 + 퍼블릭 서비스 | 240 GB+ | Bulwark · 16 vCPU / 32 GB / 960 GB · $32.90 | 실제 피어 트래픽을 감당할 생각이라면 — 여기서는 무제한 대역폭이 중요합니다 |
체인 크기는 2026년 중반 기준 추정치이며 한 방향으로만 움직입니다. 티어를 결정하기 전에 현재 수치를 확인하십시오 — NordBastion의 모든 플랜은 무제한 대역폭을 제공하며, 피어 슬롯을 열어 둔 노드가 실제로 소비하는 것이 바로 그것입니다.
이 표에 없는 한 가지: RAM입니다. 데몬 자체는 가볍고, 4 GB만으로도 노드는 실제로 돌아갑니다. 추가 메모리로 얻는 것은 데이터베이스 앞단의 페이지 캐시이며, 이는 일상적인 운영보다는 초기 동기화 도중이나 지갑의 첫 전체 재스캔 도중에 체감됩니다. 같은 예산으로 RAM을 늘릴지 NVMe를 늘릴지 고른다면 NVMe를 택하십시오 — 그리고 결정하기 전에 티어 목록을 한번 살펴보십시오.
패널에서: 주문 → VPS → 프루닝 노드라면 Garrison, 풀 체인을 원한다면 Ravelin, 이미지는 Debian 12. 계정을 여는 데 이메일 주소가 필요하지 않고, 어느 단계에서도 신분증을 요구하지 않으며, 청구서는 Monero로 정산됩니다 — 만족스러운 대칭이자, 우리가 아는 한 지갑에서 부팅된 서버까지 가장 짧은 경로이기도 합니다. 요새는 네트워크가 아니라 자신과의 지연 시간을 기준으로 고르십시오: 피어 연결은 비동기라 신경 쓰지 않지만, 지갑 새로고침은 신경 쓸 것입니다.
그다음 첫 한 시간은 방화벽에 쏟으십시오. Monero 노드는 태생적으로 퍼블릭 서비스입니다 — P2P 포트에서 수신 대기하며 낯선 이들과 대화합니다 — 그러니 기본기는 선택 사항이 아닙니다: 기본 포트가 아닌 곳에서의 키 전용 SSH, 기본적으로 거부하는 방화벽, 무인 보안 업데이트, fail2ban. 첫 시간 보안 강화 체크리스트가 짝이 되는 문서이며, 데몬이 존재하기도 전에 처음부터 끝까지 실행해 볼 가치가 있습니다.
이 노드의 방화벽 형태는 유별나게 단순합니다. 외부에서 접근 가능해야 할 것은 정확히 두 가지뿐입니다: SSH 포트, 그리고 Monero P2P 포트. 그 외에는 아무것도 없습니다 — 특히 RPC 포트는 아니며, 이는 대신 step 05에서 터널을 통해 접근합니다.
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # or your relocated SSH port
ufw allow 18080/tcp # Monero P2P — the only service port
ufw enable
ufw status numbered
4분의 1테라바이트를 동기화하기 전에 실제로 받은 디스크 용량을 확인하십시오. 초기 동기화 40시간째에 용량 부족을 발견하는 것은 특별한 종류의 불쾌함이기 때문입니다:
df -h /
# → the "Avail" column is your real budget, not the tier name
이제 여러분의 지갑들이 신뢰하게 될 네트워크 시야를 쥐게 될 프로그램을 설치하려는 참입니다. 변조된 monerod는 지갑에게 거짓말을 하기에 더없이 좋은 위치이므로, 여기서의 검증 단계는 형식적인 의례가 아닙니다 — 애초에 Monero 프로젝트가 서명된 해시 파일을 게시하는 이유가 바로 이것입니다. 딱 한 번, 제대로 하십시오.
공식 다운로드 페이지에서 Linux x86-64 CLI 아카이브와 서명된 해시 파일을, 그리고 그 페이지에 게시된 관리자의 공개 키를 함께 내려받으십시오. 포럼 게시물에서 찾은 제3자 키서버 미러에서 키를 가져오지 마십시오 — 그 키를 명시한 바로 그 페이지에서, TLS를 통해, 프로젝트로부터 직접 가져오십시오.
apt update && apt install -y gnupg curl bzip2
cd /tmp
curl -LO https://downloads.getmonero.org/cli/linux64 # the release archive
curl -LO https://www.getmonero.org/downloads/hashes.txt # the signed hash list
# Import the signing key named on getmonero.org, then:
gpg --verify hashes.txt
# → "Good signature from ..." — anything else, stop here.
서명이 검증되어야만 체크섬도 의미를 갖습니다. 내려받은 아카이브를 해시하고, 방금 검증한 파일 안에서 정확히 같은 문자열을 찾으십시오:
sha256sum linux64
grep -F "$(sha256sum linux64 | cut -d' ' -f1)" hashes.txt
# → one matching line. No output means no match: do not install it.
그런 다음 압축을 풀어 필요한 두 바이너리를 배치하십시오. 아카이브에는 버전이 표시된 디렉터리가 들어 있습니다. monerod는 데몬이고, monero-blockchain-prune은 프루닝에 대한 마음이 바뀔 경우 있어서 다행일 오프라인 도구입니다.
tar -xjf linux64
cd monero-x86_64-linux-gnu-*/
install -m 0755 monerod monero-blockchain-prune /usr/local/bin/
monerod --version
그 명령이 출력하는 버전 문자열을 나중에 다시 찾을 수 있는 곳에 기록해 두십시오. 네트워크 업그레이드가 공지되면 정확히 어떤 버전에서 업그레이드하는지 알아야 하는데, "latest"는 답이 되지 못합니다.
데몬에게는 전용 비특권 사용자와 전용 디렉터리를 부여하십시오. 일단 실행된 이후 Monero 노드에 root 권한이 필요한 부분은 전혀 없으며, 온종일 공인 인터넷과 대화하는 서비스야말로 root로 돌리고 싶지 않은 바로 그런 서비스입니다.
useradd --system --home /var/lib/monero --shell /usr/sbin/nologin monero
mkdir -p /var/lib/monero /var/log/monero
chown -R monero:monero /var/lib/monero /var/log/monero
/etc/monerod.conf — monerod가 명령줄에서 받는 것과 같은 옵션들을, 앞의 대시 없이 적은 것입니다. 풀 노드로 결정했다면 prune-blockchain 줄을 제거하십시오 — 되돌릴 수 없는 유일한 줄입니다.
# ── storage ────────────────────────────────────────────────
data-dir=/var/lib/monero
log-file=/var/log/monero/monerod.log
log-level=0
max-log-file-size=104857600
prune-blockchain=1
sync-pruned-blocks=1
# ── P2P: the only port the firewall opens ─────────────────
p2p-bind-ip=0.0.0.0
p2p-bind-port=18080
out-peers=32
in-peers=48
no-igd=1
# ── RPC A: unrestricted, loopback only, for you ───────────
rpc-bind-ip=127.0.0.1
rpc-bind-port=18081
# ── RPC B: restricted, what a wallet is allowed to ask ────
rpc-restricted-bind-ip=127.0.0.1
rpc-restricted-bind-port=18089
# ── misc ──────────────────────────────────────────────────
zmq-pub=tcp://127.0.0.1:18083
db-sync-mode=safe
이해할 가치가 있는 부분은 RPC 리스너가 두 개라는 점입니다. 18081번 포트는 관리용 호출을 포함해 모든 것에 응답하며, 있어야 할 곳인 루프백에 묶여 있습니다. 18089번 포트는 제한된 인터페이스입니다: 조회 전용 호출만 가능하고 프라이버시에 민감한 내부 정보는 없으며, 네트워크의 모든 퍼블릭 노드가 노출하는 것이 바로 이것입니다. 여기서는 의도적으로 둘 다 127.0.0.1에 두었습니다 — step 05는 18089를 여는 대신 터널을 통해 접근합니다.
/etc/systemd/system/monerod.service
[Unit]
Description=Monero full node
After=network-online.target
Wants=network-online.target
[Service]
User=monero
Group=monero
Type=simple
ExecStart=/usr/local/bin/monerod --config-file /etc/monerod.conf \
--non-interactive
Restart=on-failure
RestartSec=30
TimeoutStopSec=300
KillSignal=SIGINT
StandardOutput=journal
StandardError=journal
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
[Install]
WantedBy=multi-user.target
KillSignal과 TimeoutStopSec은 장식이 아닙니다. 데이터베이스는 깔끔하게 닫히기를 원하며, 쓰기 도중 강제로 종료된 데몬은 복구가 — 혹은 재동기화가 — 필요한 상태로 되돌아올 수 있습니다. SIGINT는 데몬에게 제대로 종료하라고 요청하는 신호이고, 5분은 그것을 마칠 수 있게 해 주는 유예 기간입니다. 이 두 줄을 빠뜨린 가이드는 재부팅 한 번의 불운으로 주말을 통째로 날릴 위험을 안고 있습니다.
systemctl daemon-reload
systemctl enable --now monerod
systemctl status monerod --no-pager
이제 데몬은 제네시스 블록부터 체인을 따라가며, 만나는 모든 링 서명과 모든 레인지 프루프를 확인합니다. 코어 몇 개를 갖춘 NVMe라면 하루 이틀이 걸립니다 — 대역폭이 아니라 CPU와 디스크에 좌우되므로, 회선이 빨라진다고 해서 짧아지지 않습니다. 이 작업이야말로 결과물의 전부입니다. 이를 건너뛴 노드는 그저 남을 신뢰하는 더 느린 방법에 지나지 않을 것입니다.
두 번째 셸에서 지켜보십시오. 상태 표시줄이 높이, 피어 수, 예상 남은 시간을 알려주며, 대부분의 노드에게는 이것이 유일하게 필요한 모니터링입니다:
monerod --rpc-bind-port 18081 status
journalctl -u monerod -f --no-pager
df -h /var/lib/monero # check this one more often than you think you need to
내려받은 블록체인을 가져오지 마십시오. 인터넷에는 대기 시간을 건너뛸 수 있다고 약속하는 아카이브들이 있으며, 그것을 가져오는 순간 여러분이 검증한 노드는 낯선 사람이 건네준 파일을 그대로 믿는 노드로 바뀝니다. 이는 여기까지 온 이유 하나를 무너뜨립니다. 동기화 시간이 정말로 받아들이기 어렵다면, 정직한 해결책은 검증을 우회하는 지름길이 아니라 코어가 더 많은 서버입니다.
부트스트랩 데몬 함정. monerod는 자신의 동기화가 따라잡히는 동안 퍼블릭 노드로부터 지갑 조회에 응답해 줄 수 있는데, 이는 날카로운 이면을 가진 편의 기능입니다: 이것이 활성화되어 있는 한, 여러분의 지갑 트래픽은 이 가이드가 애초에 없애려는 바로 그 종류의 제3자가 대신 처리하고 있는 셈입니다. 첫 시간 안에 작동시키기 위해 이를 켜 두었다면, 캘린더에 알림을 걸어 두고 자신의 높이가 팁에 도달하는 순간 꺼 버리십시오. 아무도 끝낼 것을 기억하지 못하는 임시방편은 그저 이름만 바꾼 예전 설정에 지나지 않습니다.
높이가 더 이상 움직이지 않고 신뢰하는 블록 탐색기와 일치하면, 노드가 살아난 것입니다. 이 시점부터 데몬이 요구하는 것은 하루 몇 기가바이트의 트래픽과 약간의 CPU뿐이며, 업그레이드 외에는 더 이상 신경 쓸 일이 없습니다.
제한된 RPC 인터페이스는 루프백에 묶여 있으며, 이는 현재 그 무엇도 여기에 접근할 수 없다는 뜻입니다. 이것이 올바른 기본값이며, 이 단계의 나머지 내용은 그 격차를 어떻게 건널지 고르는 것입니다. 하나만 고르십시오 — 여러 개를 함께 쓰면 궁합이 나쁘고, 어차피 하나면 충분합니다.
옵션 A · SSH 터널 — 기기 하나, 설정 제로. 노트북 한 대만 쓴다면 정답입니다. 새로 설치되는 것도, 새로 수신 대기를 시작하는 것도 없으며, 터널은 세션과 함께 사라집니다. 이후 지갑은 마치 노드가 로컬에 있는 것처럼 127.0.0.1:18089를 가리키게 됩니다.
ssh -N -L 18089:127.0.0.1:18089 monero-vps
# leave it running; point the wallet at 127.0.0.1:18089
옵션 B · WireGuard — 여러 기기, 상시 연결. 휴대폰과 데스크톱과 노트북까지 함께 쓴다면 정답입니다. 노드가 여러분의 프라이빗 네트워크에 합류하고 지갑들은 터널 IP로 노드를 찾아가므로, 인터넷에는 포트가 전혀 노출되지 않습니다. WireGuard 가이드에서 터널을 구축하며, 여기서 추가로 할 일은 데몬이 그 위에서 응답하도록 하는 것뿐입니다.
# in /etc/monerod.conf
rpc-restricted-bind-ip=10.8.0.1 # the node's WireGuard address
confirm-external-bind=1
# and in the firewall, only on the tunnel interface
ufw allow in on wg0 to any port 18089 proto tcp
옵션 C · v3 onion — 어디서나, 포트 없이, 고정 IP 없이. 여행을 자주 다니거나, 어디서든 인바운드 포트 없이 노드에 접속하고 싶다면 정답입니다. Tor가 서비스를 게시해 주므로 포워딩할 것도, 스캔당할 것도 없습니다. 히든 서비스 가이드에서 torrc 전체를 다루며, 노드에 특화된 부분은 단 세 줄입니다.
# /etc/tor/torrc
HiddenServiceDir /var/lib/tor/monero-rpc/
HiddenServiceVersion 3
HiddenServicePort 18089 127.0.0.1:18089
# then read the address Tor generated for you
cat /var/lib/tor/monero-rpc/hostname
어떤 문을 만들었든, 지갑 쪽에서 할 일은 똑같이 세 항목입니다. Feather에서는: Settings → Node → add a custom node에서 호스트와 포트를 입력하고, onion을 선택했다면 Tor 프록시를 활성화합니다. 공식 Monero GUI에서는: Settings → Node → Remote node에서 "connect to a remote node"를 선택합니다. Cake Wallet에서는: Settings → Nodes → add node에서 onion 주소를 바로 입력할 수 있습니다. RPC 인터페이스에 사용자 이름과 비밀번호를 설정했다면, 세 지갑 모두 이를 입력할 필드가 있습니다.
그런 다음 제대로 작동했는지 확인하십시오. 지갑은 여러분의 노드와 같은 높이를 보여줘야 하고, 노드는 RPC 클라이언트가 하나 늘어난 것을 보여줘야 합니다. 지갑이 여전히 1초 만에 새로고침된다면, 아마 기본 퍼블릭 노드와 계속 통신하고 있는 것입니다 — 대부분의 지갑은 목록에 예전 노드를 남겨 두고 조용히 그쪽으로 돌아가기 때문입니다.
이제 여러분의 지갑은 트랜잭션을 낯선 사람이 아니라 여러분 자신의 데몬에게 건넵니다. 하지만 그 데몬은 다시 여러분 서버의 IP 주소로 피어들에게 이를 알리고, 피어들은 기록을 남깁니다. Monero는 새 트랜잭션을 퍼뜨리기 전에 이미 무작위화된 릴레이 단계를 거치게 하여 첫 홉을 식별하기 어렵게 만들지만, 대신 Tor로 내보내면 그 질문 자체가 통째로 사라집니다.
한 줄이면 됩니다. 데몬은 계속 클리어넷을 통해 블록을 동기화하고 — 이것이 동기화 속도를 유지해 주는 부분입니다 — 발신 트랜잭션 전파만 로컬 Tor SOCKS 포트로 보냅니다:
# in /etc/monerod.conf, with tor running locally
tx-proxy=tor,127.0.0.1:9050,16
한 걸음 더 나아가 Tor를 통한 피어 접속까지 받고 싶다면, P2P 쪽을 위한 두 번째 히든 서비스를 공개하고 데몬에게 어떤 onion 주소를 알릴지 지정하십시오. 포트 번호는 양쪽이 서로 일치하고 박스 안의 다른 무엇과도 충돌하지 않는 한 자유롭게 정해도 됩니다:
# /etc/tor/torrc
HiddenServiceDir /var/lib/tor/monero-p2p/
HiddenServiceVersion 3
HiddenServicePort 18084 127.0.0.1:18084
# /etc/monerod.conf
anonymous-inbound=YOUR_ONION_ADDRESS.onion:18084,127.0.0.1:18084
그 단계는 여러분보다 네트워크에 더 도움이 되며, 그것만으로도 충분히 취할 만한 이유가 됩니다. 약간의 지연 시간과 일부 피어 슬롯을 대가로 치르지만, 대신 Tor 전용 노드들이 접속할 곳이 생깁니다.
선택 사항: 퍼블릭 노드를 기부하십시오. 대역폭과 디스크에 여유가 있다면, 제한된 RPC 엔드포인트를 공개해서 다른 사람들의 지갑이 쓸 수 있게 할 수 있습니다. 이는 네트워크에 실질적으로 기여하는 일입니다 — 이 네트워크의 가장 약한 지점은 바로 자신의 데몬을 직접 운영하는 사람이 너무 적다는 것이기 때문입니다 — 다만 그에는 여느 퍼블릭 서비스와 같은 책임이 따릅니다: 다른 사람들의 트래픽을 짊어지게 되고, 노드 운영자로서 노출됩니다. 여기서는 모든 플랜에 무제한 대역폭이 제공되므로, 그중 첫 번째 문제는 비용이 아니라 결정의 문제일 뿐입니다.
# only if you mean it: expose the RESTRICTED port, never 18081
rpc-restricted-bind-ip=0.0.0.0
confirm-external-bind=1
public-node=1
# and open it: ufw allow 18089/tcp
노드는 다른 셀프 호스팅 인프라와 나란히 두기에도 좋습니다 — 예를 들면 같은 랙에 Lightning 노드를 두는 식입니다. 예산이 허락한다면 서로 다른 박스에 분리해 두십시오: 둘은 가동 시간 요구 사항이 다르고, 복구 시나리오도 상당히 다릅니다.
데몬이 멈추고, 데이터베이스는 다시 열리기 전에 복구 과정을 거쳐야 할 수도 있습니다. 동기화 중에는 매일 여유 공간을 확인하고, 오늘의 체인이 아니라 3년 후 체인 크기에 맞춰 티어를 정하십시오.
18081번 포트는 관리용 호출에 응답합니다. 이 포트는 영원히 127.0.0.1에 있어야 합니다. 외부의 무언가가 노드에 도달해야 한다면, 터널을 통해 18089번의 제한된 리스너로 도달합니다.
노드를 목록에 추가하는 것만으로는 선택되지 않으며, 대부분의 지갑은 연결이 안 될 때 조용히 다른 노드로 전환합니다. 높이를 비교하고, 노드가 RPC 클라이언트 연결을 보고하는지 확인하십시오.
나중에 추가한다고 해서 기존 데이터베이스가 줄어들지는 않습니다. 전환하려면 데몬을 멈추고 monero-blockchain-prune을 실행해야 하며, 여기에는 몇 시간과 작업 공간이 필요합니다. 첫 시작 전에 결정하십시오.
네트워크 업그레이드가 지나갔는데 데몬은 한 번도 업데이트되지 않았습니다. 요란하게 알려주지 않습니다 — 높이가 조용히 현실과 어긋나기 시작할 뿐입니다. 릴리스 공지를 주시하고 포크 높이가 오기 전에 업그레이드하십시오.
쓰기 도중의 SIGKILL, 대개 KillSignal이 없고 정지 타임아웃이 짧은 systemd 유닛에서 비롯됩니다. SIGINT를 사용하고 5분의 여유를 주어, 데몬이 스스로 데이터베이스를 닫도록 하십시오.
직접 운영하는 데몬으로 지갑을 옮기기 전, 도중, 후에 발생하는 열 가지 질문.
아니요. Monero 지갑은 클라이언트 측에서 스캔합니다: 지갑이 노드에 블록 범위를 요청하고, 그것을 통째로 내려받은 뒤, 여러분의 프라이빗 뷰 키로 각 출력을 로컬에서 복호화해 봅니다. 노드는 여러분의 뷰 키도, 스펜드 키도, 주소도 받지 않으며, 방금 건네준 출력 중 어느 것이 여러분 것인지 알 수 없습니다. 이는 서버가 대개 어떤 주소나 스크립트를 감시할지 지시받는 Bitcoin 라이트 지갑과의 진짜 구조적 차이입니다. 원격 노드가 실제로 알게 되는 것은 네트워크 계층입니다: 여러분의 IP 주소, 그 IP의 지갑이 동기화 중이라는 사실, 요청한 블록 범위 — 이는 지갑의 복원 높이를 좁혀 줍니다 — 그리고 무엇보다도, 전파를 맡긴 트랜잭션입니다. 그 마지막 항목이야말로 막을 가치가 있는 유출입니다.
그러지 않을 이유가 없다면 프루닝으로 운영하십시오. 프루닝 노드는 오래된 블록의 링 서명 데이터 중 8분의 7을 버리고, 지갑이나 새 피어가 실제로 필요로 하는 모든 것은 그대로 보관하며, 체인 전체를 여전히 스스로 검증하고, 용량은 풀 노드의 약 3분의 1 수준입니다. 개인 지갑의 백엔드로서는 동작상 구분이 되지 않습니다. 처음부터 초기 동기화를 하는 새 노드에 데이터를 제공하고 싶거나, 임의의 과거 트랜잭션 데이터를 읽는 블록 탐색기 형태의 도구를 운영하거나, 그저 완전한 아카이브 사본을 원한다면 풀 노드를 운영하십시오. 최초 동기화 전에 결정하십시오: --prune-blockchain은 동기화하면서 함께 프루닝하지만, 이미 동기화된 풀 데이터베이스를 전환하려면 데몬을 멈추고 별도의 monero-blockchain-prune 도구를 돌려야 합니다.
풀 노드는 2026년 중반 기준 240GB를 넘으며 연간 수십 기가바이트 단위로 늘어나므로, 오늘 필요한 체인이 아니라 3년 후 갖게 될 체인 크기에 맞춰 산정해야 합니다. 프루닝 노드는 대략 그 3분의 1 수준으로, 지금 기준 85~95GB 정도입니다. 실제로는 Garrison(240GB NVMe)이 수년치 여유 공간을 가진 프루닝 노드에 편안한 보금자리가 되고, 풀 노드에는 Ravelin(480GB)이 적합한 사양입니다. 120GB의 Sentinel은 지금 당장은 프루닝 노드를 담을 수 있지만, 원하는 것보다 더 빨리 다시 용량을 고민하게 만들 것입니다. 디스크를 구매하기 전에 현재 체인 크기를 확인하십시오 — 이 가이드에서 유일하게 곧 낡은 값이 될 수밖에 없는 숫자입니다.
최초 동기화에는 NVMe 기준으로 하루 이틀이 걸리며, 이는 회선이 아니라 CPU와 디스크에 의해 좌우됩니다. 데몬은 제네시스 블록부터 모든 링 서명과 모든 레인지 프루프를 검증하고 있으며, 이것이 바로 그 작업의 실체이자 노드를 운영할 가치가 있는 이유입니다. 이를 눈에 띄게 악화시키는 두 가지 요인이 있습니다: NVMe 대신 회전식 HDD를 쓰는 것 — 이틀이 일주일로 늘어날 수 있습니다 — 그리고 도중에 디스크 공간이 바닥나는 것입니다. 반대로 사람들이 기대하는 만큼 도움이 되지 않는 두 가지도 있습니다: 더 많은 대역폭, 그리고 데이터베이스 페이지를 따뜻하게 유지하는 데 필요한 수준을 넘어서는 RAM입니다. 대기 시간을 건너뛰기 위해 제3자가 배포한 블록체인 아카이브를 내려받아 가져오지 마십시오 — 그렇게 하면 애초에 신뢰하지 않으려던 바로 그 대상을 신뢰하는 셈이 됩니다.
제한 없는 쪽은 절대 안 됩니다. 제한 없는 RPC 인터페이스는 관리용 호출까지 노출하므로, 노드가 존재하는 내내 127.0.0.1에 묶어 두어야 합니다. 제한된 인터페이스는 전혀 다른 대상입니다: 지갑에 필요한 조회 전용 호출에만 응답하며, 네트워크의 모든 퍼블릭 노드가 노출하는 것이 바로 이것입니다. 그렇다 해도, 이를 클리어넷 포트에 공개하는 것은 주소 공간을 스캔하는 누구에게나 "여기 Monero 사용자가 있다"고 알리는 셈입니다. 이 가이드에서 선호하는 순서는 첫째 v3 onion 서비스, 둘째 WireGuard 터널, 셋째 단일 기기용 SSH 터널이며, 순수한 퍼블릭 포트는 오직 퍼블릭 노드를 네트워크에 기부하기로 의도적으로 결정했을 때만 선택합니다.
노드는 어떤 키도 보관하지 않고, 어떤 자금도 커스터디하지 않으며, 누구의 돈도 옮길 수 없습니다. 노드는 블록을 검증하고 이미 다른 사람이 서명한 트랜잭션을 릴레이할 뿐입니다 — 읽을 수 없는 메시지를 실어 나르는 메일 릴레이와 같은 위치입니다. 이것이 기술적 현실이며, 법적 현실은 관할권에 따라 달라지고 이 가이드는 법률 자문이 아닙니다. 관할권이 실제로 바꾸는 것은 누가 무엇을 강제할 수 있는가입니다: 네 개 Nordic 관할권 가이드에서는 스톡홀름, 헬싱키, 오슬로, 레이캬비크에 위치한 서버에 적용되는 법령을 다룹니다.
업데이트를 해 줄 때만 그렇습니다. Monero는 예정된 네트워크 업그레이드를 진행하며, 오래된 합의 규칙을 쓰는 데몬은 포크 높이에서 메인 체인을 따라가지 못하게 됩니다 — 요란하게 경고하지 않고, 그저 멈추거나 갈라져 나갈 뿐이며, 여러분의 지갑은 더 이상 현실과 맞지 않는 높이를 조용히 보고하게 됩니다. 릴리스 공지를 구독하고, 계속 바뀌는 태그를 따라가는 대신 설치한 버전을 고정하며, 공지된 업그레이드 높이에 맞춰 캘린더 알림을 걸어 두십시오. 셀프 호스팅 노드가 쓸모없어지는 가장 흔한 방식은 바로 이것입니다: 다운이 아니라, 그저 공지를 더 이상 읽지 않게 된 운영자입니다.
발신 트랜잭션 전파를 Tor로 돌리십시오 — 이것이 확실하면서도 저렴한 프라이버시 이득을 주는 단 하나의 설정입니다. "이 트랜잭션이 네트워크에 진입했다"는 사실과 "이 IP 주소가 존재한다"는 사실을 분리해 주기 때문입니다. Tor를 통한 인바운드 피어까지 받아들이는 것은 한 걸음 더 나아간 조치로, 여러분보다 네트워크에 더 도움이 되며 약간의 지연 시간이 듭니다. 피어 트래픽 전체를 Tor로 돌리는 것은 공격적인 선택지입니다: 작동은 하지만 초기 동기화가 상당히 느려지므로, 대부분의 사람들은 클리어넷으로 동기화한 뒤 트랜잭션 경로만 Tor로 전환합니다. Tor 히든 서비스 가이드에서 torrc 쪽을 더 깊이 다룹니다.
거의 항상 복원 높이 때문입니다. 복원 높이가 없거나 0으로 설정된 지갑은 복원할 때마다 제네시스 블록부터 체인을 다시 스캔하는데, 이는 아무 의미 없이 몇 시간을 로컬에서 소모하는 셈입니다. 복원 높이는 지갑이 생성되던 시점의 블록으로 설정하십시오. 두 번째 원인은 네트워크 경로입니다: 다른 나라에서 포화 상태인 onion 회로를 통해 여러분의 노드와 통신하는 지갑은, 바로 옆에 있는 퍼블릭 노드를 쓰는 것보다 느릴 수밖에 없습니다 — 이것이 프라이버시의 대가이며, WireGuard 터널을 쓰면 대개 속도 대부분을 되찾을 수 있습니다. 세 번째, 그리고 사람들이 흔히 놓치는 원인은 노드 자신의 초기 동기화가 아직 끝나지 않아 여전히 부트스트랩 데몬을 통해 응답하고 있는 경우입니다.
노드는 오랫동안 존재하며 외부에서 접근 가능한 대상이고, 여러분의 트랜잭션이 그곳을 거쳐 가기 때문입니다. 풀 노드를 두면 지갑과 낯선 사람의 노드 사이의 유출은 막히지만 — 대신 노드와 그 기계를 빌려준 쪽 사이에 더 작은 유출이 새로 열립니다. 그 기계를 신청할 때 여권 스캔과 본인 명의 카드를 제출했다면, 상관관계를 없앤 것이 아니라 옮긴 것에 불과합니다. 자신의 Monero 노드를 돌리는 서버를 Monero로 결제하는 것은 구호가 아닙니다 — 두 계층이 서로 어긋나지 않는 유일한 구성입니다. 익명 VPS 호스팅 필라 가이드에서 세 계층을 처음부터 끝까지 다룹니다.
Garrison(4 vCPU, 8 GB, 240 GB NVMe, $7.90/월)은 수년치 여유 공간을 두고 프루닝 노드를 담을 수 있으며, Ravelin(480 GB)은 풀 체인을 담습니다. 모든 플랜에서 대역폭은 무제한이며, 가입 시 이메일도, 그 어떤 신분증도 요구하지 않습니다.
마지막 검토일 · 2026-10-12 · 출처 · getmonero.org 사용자 가이드(노드 운영, 프루닝, Tor 및 I2P), v0.18 라인의 monerod --help, Debian 12 및 Tor 프로젝트 문서 · 주기 · 연간
This guide is one spoke of a larger series. The pillar walks the three privacy layers end to end — the sibling spokes below dive into the specifics.
Three independent layers — signup, payment, network — explained, legal context included, common mistakes flagged.
Your own LN node — bitcoind + LND or Core Lightning, on a VPS.
Accept Bitcoin and Lightning with no processor — non-custodial, no fees.
Deploy your own MCP server on a no-KYC VPS — TLS, streamable HTTP, OAuth.
Host an MCP server with no ID — the privacy stack, crypto-paid.
북유럽에서 구축한 프라이빗 호스팅.