비트코인 풀노드 설치 완전 가이드 - Ubuntu Server 전체 과정
📋 목표
- ASUS NUC 14 Essential (16GB RAM, 2TB SSD) 미니 PC에 Ubuntu Server 설치
- 비트코인 풀노드 운영 환경 구축
- 비트코인 익스플로러 백엔드 개발 환경 준비
- SSH 원격 관리 환경 설정
📚 목차
1단계: 준비물 및 사전 작업
1-1: 필요한 준비물
- 8GB 이상 USB 메모리 (부팅 디스크 제작용)
- 유선 인터넷 연결 (설치 중 WiFi로도 가능)
- 다른 PC/노트북 (SSH 접속용, 설치 후 사용)
왜 이런 준비물이 필요한가?
- USB 메모리: Ubuntu Server ISO 파일을 담아 부팅 디스크로 사용
- 인터넷 연결: 설치 중 최신 패키지 다운로드, 시스템 업데이트
- 다른 PC: 서버는 보통 GUI 없이 운영하므로 SSH로 원격 관리
1-2: 하드웨어 사양 확인
ASUS NUC 14 Essential 스펙:
- CPU: Intel N 시리즈 (저전력, 24/7 운영 적합)
- RAM: 16GB (비트코인 노드 4-8GB + 개발환경 4-6GB + 시스템 2-4GB)
- Storage: 2TB NVMe SSD (고속, 비트코인 블록체인 550GB + 개발환경)
왜 외장 SSD 없이도 충분한가?
| 용도 | 예상 용량 |
|---|---|
| 비트코인 블록체인 | ~550GB (현재, 연간 약 50GB 증가) |
| 개발환경 + 데이터베이스 | ~200-300GB |
| 시스템 + 여유공간 | ~1TB+ |
| 총 필요용량 | 1.5TB 미만 (2TB로 충분) |
💡 참고: 비트코인 블록체인은 연간 약 50GB씩 증가하므로, 2TB 용량으로 약 20년간 사용 가능합니다.
2단계: Ubuntu Server 이미지 다운로드
2-1: 공식 사이트 접속
- Ubuntu Server 공식 다운로드 페이지 접속
- Ubuntu Server 22.04.5 LTS 선택
왜 Server 버전을 선택하나?
Desktop 대신 Server 선택 이유:
| 항목 | Desktop | Server |
|---|---|---|
| GUI | 있음 (메모리 2-4GB 사용) | 없음 (메모리 절약) |
| 운영 방식 | 데스크톱 사용 | 24/7 서버 운영에 최적화 |
| 관리 방법 | 직접 모니터 연결 | SSH 원격 접속 |
| 개발 환경 | 일반 사용자용 | Docker, API 개발에 적합 |
| 안정성 | 일반적 | 비트코인 노드 운영에 안정적 |
왜 22.04 LTS 버전인가?
- LTS (Long Term Support): 5년간 보안 업데이트 보장 (2027년까지)
- 안정성: 검증된 버전으로 서버 운영에 적합
- 호환성: 대부분의 개발 도구와 호환
- 비트코인 코어 지원: 공식적으로 테스트된 환경
2-2: 이미지 파일 다운로드
다운로드 정보:
- 파일명:
ubuntu-22.04.5-live-server-amd64.iso - 파일 크기: 약 1.4GB
- 아키텍처: AMD64 (Intel/AMD 64비트 CPU 모두 지원)
- 다운로드 시간: 인터넷 속도에 따라 5-30분
⚠️ 주의: 반드시 공식 사이트에서 다운로드하여 보안과 무결성을 보장하세요.
3단계: 부팅 USB 만들기
3-1: Rufus 프로그램 사용 (Windows)
Rufus 다운로드 및 실행:
- Rufus 공식 사이트에서 다운로드
- USB 메모리를 컴퓨터에 연결
- Rufus 실행 (관리자 권한 필요)
Rufus 설정:
| 설정 항목 | 선택 값 | 설명 |
|---|---|---|
| Device | [USB 메모리 선택] | 연결된 USB 드라이브 |
| Boot selection | [다운받은 ubuntu-22.04.5-live-server-amd64.iso] | ISO 파일 경로 |
| Partition scheme | GPT | 현대적 방식, UEFI 지원 |
| Target system | UEFI (non CSM) | 최신 부팅 방식 |
| File system | FAT32 | USB 부팅에 적합 |
ISO Hybrid Image 감지 시:
- “Write in ISO Image mode (Recommended)” 선택
- 더 호환성이 좋고 안정적
⚠️ 주의사항:
- USB 내의 모든 데이터가 삭제됩니다
- 중요한 파일이 있다면 미리 백업하세요
- 작업 시간: 약 5-10분 소요
3-2: 다른 OS에서의 부팅 디스크 제작
macOS:
- balenaEtcher (GUI 도구, 추천)
- dd 명령어 (터미널 사용자용)
# dd 명령어 예시 (주의: 잘못된 디스크 선택 시 데이터 손실)
sudo dd if=ubuntu-22.04.5-live-server-amd64.iso of=/dev/diskX bs=1mLinux:
- dd 명령어 (가장 일반적)
- Startup Disk Creator (Ubuntu GUI 도구)
- balenaEtcher (크로스 플랫폼)
# Linux dd 명령어 예시
sudo dd if=ubuntu-22.04.5-live-server-amd64.iso of=/dev/sdX bs=4M status=progress💡 팁: GUI 도구를 사용하는 것이 실수를 줄이고 안전합니다.
4단계: BIOS 설정
4-1: BIOS 진입
미니 PC 전원 켜면서 키 연타:
| 제조사 | 일반적인 키 | 대체 키 |
|---|---|---|
| ASUS | F2 | Delete |
| Intel NUC | F2 | F10 |
| HP | ESC | F10 |
| Dell | F2 | F12 |
| 부트 메뉴 | F12 | F11 |
💡 팁: 전원 버튼을 누른 후 즉시 해당 키를 연속으로 눌러주세요. 화면에 제조사 로고가 나타나는 순간부터 누르기 시작하면 됩니다.
왜 BIOS 설정이 필요한가?
- USB에서 부팅하도록 순서 변경: 기본적으로 내장 SSD가 우선순위
- 보안 설정 조정으로 Linux 설치 허용: Windows 전용 보안 기능 해제
4-2: 필수 BIOS 설정 변경
Boot Priority (부팅 순서):
- 1순위: USB Storage Device
- 2순위: Internal SSD
- 3순위: Network Boot (선택사항)
보안 설정:
| 설정 항목 | 변경 값 | 이유 |
|---|---|---|
| Secure Boot | Disabled | Linux 설치를 위해 필요 |
| Fast Boot | Disabled | 안정적 부팅을 위해 |
기타 설정:
| 설정 항목 | 권장 값 | 설명 |
|---|---|---|
| UEFI Mode | Enabled | 현대적 부팅 방식 |
| CSM (Compatibility Support Module) | Disabled | 레거시 호환성 모드 비활성화 |
설정 저장:
- F10 또는 Save & Exit 선택
- 변경사항 저장하고 재부팅
⚠️ 주의: 설정을 잘못 변경하면 부팅이 안 될 수 있으니, 변경 전 현재 설정을 사진으로 찍어두는 것을 권장합니다.
5단계: Ubuntu Server 설치
5-1: 초기 부팅 및 언어 설정
Cloud-init 대기:
- “waiting for cloud-init” 화면이 나타남 (정상 과정)
- 몇 분 정도 기다리면 언어 선택 화면 나타남
💡 참고: Cloud-init은 클라우드 환경에서 인스턴스 초기화를 담당하는 도구입니다. 로컬 설치에서도 일부 초기화 작업을 수행합니다.
언어 선택:
English 선택 권장
| 장점 | 설명 |
|---|---|
| ✅ 에러 메시지 검색 | 구글링 시 더 많은 자료 |
| ✅ 개발 환경 호환성 | 개발 도구와 호환성 좋음 |
| ✅ SSH 접속 | 문자 인코딩 문제 없음 |
| ✅ 비트코인 코어 | 로그도 영어로 표시 |
5-2: 키보드 및 기본 설정
키보드 레이아웃:
- English (US) 선택 (개발 환경에 적합)
설치 유형:
- Ubuntu Server 선택 (GUI 없는 서버 버전)
Installer update:
- “Continue without updating” 선택
- 이유: 시간 절약, 설치 후 업데이트 가능
💡 팁: 설치 중 업데이트를 받으면 시간이 오래 걸리므로, 설치 완료 후 별도로 업데이트하는 것이 효율적입니다.
5-3: 네트워크 설정
유선 연결이 인식되지 않을 경우:
WiFi 연결 시도:
- 화살표 키로 WiFi 인터페이스 선택
- “Edit Wifi” 선택
- 사용 가능한 네트워크 목록에서 WiFi 선택
- 비밀번호 입력
왜 네트워크 연결이 필요한가?
| 목적 | 설명 |
|---|---|
| 패키지 다운로드 | 설치 중 최신 패키지 다운로드 |
| 시스템 업데이트 | 보안 패치 및 업데이트 적용 |
| 추가 구성 요소 | SSH 서버 등 필수 서비스 설치 |
💡 참고: 네트워크 연결 없이도 기본 설치는 가능하지만, 최신 패키지와 보안 업데이트를 위해 연결을 권장합니다.
5-4: 스토리지 설정 (중요!)
초기 설정:
- ✅ Use an entire disk: local disk 1.819T
- ✅ Set up this disk as an LVM group (체크됨)
- ☐ Encrypt the LVM group with LUKS (체크 해제)
- ☐ Custom storage layout (체크 해제)
LVM 사용의 장점:
| 장점 | 설명 |
|---|---|
| 동적 크기 조정 | 파티션 크기를 나중에 변경 가능 |
| 스냅샷 기능 | 백업 및 복구 용이 |
| 확장성 | 향후 디스크 추가 시 유연한 관리 |
암호화하지 않는 이유:
| 이유 | 설명 |
|---|---|
| I/O 성능 | 암호화 오버헤드 없어 더 빠름 |
| 24/7 운영 | 비트코인 노드 안정적 운영 |
| 데이터 복구 | 문제 발생 시 복구 용이 |
⚠️ 파티션 크기 수정 필수:
기본 설정 (수정 필요):
| 파티션 | 기본 크기 | 수정 후 | 용도 |
|---|---|---|---|
/boot/efi | 1.049G | 그대로 | UEFI 부팅용 |
/boot | 2.000G | 그대로 | 커널 이미지 저장 |
/ | 100.000G | 1800G | OS + 비트코인 데이터 + 개발환경 |
free space | 1.718T | ~10G | 여유 공간 |
수정 방법:
- ”/” 파티션 행을 화살표 키로 선택
- Enter 키 → “Edit” 선택
- Size 필드:
100G→1800G변경 - Done 또는 Save 선택
왜 1800G가 필요한가?
| 용도 | 예상 용량 | 설명 |
|---|---|---|
| 비트코인 블록체인 | ~550GB | 현재 크기, 계속 증가 |
| PostgreSQL 인덱스 | ~200GB | 익스플로러용 데이터베이스 |
| 개발환경 | ~100GB | Node.js, Python, 도구들 |
| 시스템 + 로그 | ~50GB | OS 및 로그 파일 |
| 여유공간 | ~900GB | 향후 확장 및 임시 파일 |
💡 중요: 루트 파티션을 충분히 크게 설정하지 않으면 나중에 디스크 공간 부족으로 문제가 발생할 수 있습니다.
5-5: 사용자 계정 설정
계정 정보 입력:
| 필드 | 입력 예시 | 설명 |
|---|---|---|
| Your name | [실명 또는 닉네임] | 사용자 전체 이름 |
| Server name | bitcoin-node | 호스트명 (네트워크 식별용) |
| Username | btcnode | 영문 소문자 (로그인 ID) |
| Password | [강력한 비밀번호] | 최소 8자, 특수문자 포함 |
서버 이름을 bitcoin-node로 하는 이유:
- SSH 접속 시 구분하기 쉬움: 여러 서버 관리 시 용이
- 네트워크에서 식별 용이: 라우터 관리 페이지에서 쉽게 찾기
- 용도를 명확히 표시: 서버의 목적을 이름으로 표현
💡 보안 팁: 비밀번호는 대소문자, 숫자, 특수문자를 조합하여 12자 이상으로 설정하는 것을 권장합니다.
5-6: SSH 설정 (중요!)
SSH 설정 옵션:
- ☑️ Install OpenSSH server (필수 체크!)
- ☐ Import SSH identity (선택사항, 체크 안 함)
OpenSSH server를 반드시 설치해야 하는 이유:
| 이유 | 설명 |
|---|---|
| 원격 관리 | 모니터 없이 서버 관리 가능 |
| 접속 도구 | PuTTY, 터미널로 편리한 접속 |
| 모니터링 | 비트코인 노드 상태 실시간 확인 |
| 개발 편의성 | 코드 편집 및 디버깅 용이 |
Import SSH identity를 건너뛰는 이유:
- 나중에 설정 가능: 설치 후 언제든 SSH 키 설정 가능
- 비밀번호 로그인 충분: 초기에는 비밀번호 인증도 안전
- 접속 불가 방지: 잘못된 키 설정으로 인한 접속 차단 방지
5-7: 추가 패키지 선택
권장 선택:
- ☑️ docker (컨테이너 개발용, 추후 유용)
- ☐ 기타 패키지들 (나중에 개별 설치 가능)
💡 참고: Docker는 나중에 PostgreSQL, Redis 등을 컨테이너로 실행할 때 유용합니다.
5-8: 설치 진행 및 완료
설치 시간: 약 10-20분
설치 중 진행 상황:
- 파티션 생성 및 포맷 (2-3분)
- 기본 시스템 설치 (5-10분)
- 패키지 다운로드 및 설치 (3-7분)
- 부트로더 설치 (1-2분)
설치 완료:
- “Reboot Now” 선택
- USB 제거하라는 메시지가 나오면 USB 제거 후 Enter
⚠️ 주의: USB를 제거하지 않으면 다시 설치 화면으로 부팅될 수 있습니다.
6단계: 설치 완료 후 초기 설정
6-1: 첫 로그인 및 시스템 업데이트
로그인:
# 설치 시 생성한 계정으로 로그인
Username: [설치 시 입력한 사용자명]
Password: [설치 시 입력한 비밀번호]첫 번째 명령어 - 시스템 업데이트:
sudo apt update && sudo apt upgrade -y명령어 분석:
| 명령어 | 설명 |
|---|---|
sudo | 관리자 권한으로 실행 (Super User DO) |
apt | Advanced Package Tool (패키지 관리자) |
update | 패키지 목록을 최신으로 갱신 |
upgrade -y | 모든 패키지를 최신 버전으로 업데이트 (-y는 자동으로 Yes) |
&& | 첫 번째 명령어가 성공하면 두 번째 명령어 실행 |
왜 반드시 업데이트해야 하나?
- 보안 패치 적용: 외부 공격 방지
- 최신 기능 및 버그 수정: 시스템 안정성 향상
- 안정적인 서버 운영: 기초 보안 강화
💡 참고: 업데이트 시간은 인터넷 속도에 따라 5-15분 정도 소요됩니다.
6-2: 필수 개발 도구 설치
sudo apt install -y curl wget git build-essential \
python3 python3-pip nodejs npm \
postgresql-client htop tree vim각 패키지의 상세 역할:
네트워킹 도구:
| 패키지 | 용도 |
|---|---|
curl | HTTP 요청 전송, API 테스트, 파일 다운로드 |
wget | 웹에서 파일 다운로드 (비트코인 코어 바이너리 다운로드용) |
개발 도구:
| 패키지 | 용도 |
|---|---|
git | 분산 버전 관리 시스템 (소스코드 관리, GitHub 연동) |
build-essential | GCC 컴파일러, make, libc6-dev 등 (소스 컴파일용) |
프로그래밍 언어:
| 패키지 | 용도 |
|---|---|
python3 | Python 3.x 인터프리터 (ETL 스크립트, 데이터 분석) |
python3-pip | Python 패키지 설치 도구 (라이브러리 관리) |
nodejs | Node.js 런타임 (JavaScript 서버사이드 실행) |
npm | Node Package Manager (Node.js 패키지 관리) |
데이터베이스:
| 패키지 | 용도 |
|---|---|
postgresql-client | PostgreSQL 클라이언트 도구 (DB 연결, 쿼리 실행) |
시스템 관리:
| 패키지 | 용도 |
|---|---|
htop | 실시간 시스템 모니터 (CPU, 메모리, 프로세스 확인) |
tree | 디렉토리 구조 트리 형태로 표시 |
vim | 텍스트 에디터 (설정 파일 편집용) |
6-3: SSH 원격 접속 설정
현재 IP 주소 확인:
ip addr show확인해야 할 정보:
| 인터페이스 | 설명 |
|---|---|
wlo1 또는 wlan0 | WiFi 인터페이스 IP (현재 사용 중) |
enp1s0 또는 eth0 | 유선 인터페이스 (나중에 설정) |
예시:
inet 192.168.1.100/24에서192.168.1.100이 접속할 IP
SSH 서비스 상태 확인:
sudo systemctl status ssh확인해야 할 상태:
- Active:
active (running)- 정상 실행 중 - Loaded:
loaded- 서비스 로드됨 - 포트 22에서 listening 중
방화벽 설정:
sudo ufw allow ssh
sudo ufw enable방화벽 설정 이유:
| 설정 | 설명 |
|---|---|
ufw | Uncomplicated Firewall (우분투 기본 방화벽) |
allow ssh | 22번 포트(SSH) 접속 허용 |
enable | 방화벽 활성화 (다른 포트는 기본 차단) |
| 보안 | 외부에서 SSH로만 접속 가능, 다른 서비스는 차단 |
6-4: 유선 네트워크 설정 (WiFi → 유선 전환) 네트워크 인터페이스 확인: baship link show 찾아야 할 것:
enp1s0, enp2s0, eth0 등으로 시작하는 유선 인터페이스 state DOWN 상태 (현재 비활성화)
Netplan 설정 파일 편집: bashsudo nano /etc/netplan/00-installer-config.yaml 현재 파일 내용 (WiFi만 설정됨): yamlnetwork: ethernets: {} wifis: wlo1: dhcp4: true access-points: “Your_WiFi_Name”: password: “wifi_password” version: 2 수정할 내용 (유선 추가): yamlnetwork: ethernets: enp1s0: # 실제 인터페이스 이름으로 변경 필요 dhcp4: true optional: true wifis: wlo1: dhcp4: true access-points: “Your_WiFi_Name”: password: “wifi_password” version: 2 설정 옵션 설명:
dhcp4: true: IPv4 주소 자동 할당 (라우터가 IP 배정) optional: true: 해당 인터페이스가 연결되지 않아도 부팅 지연 없음 유선과 WiFi 둘 다 설정 시 더 빠른 연결 자동 선택
설정 적용: bash# 설정 파일 문법 검사 및 테스트 적용 (90초 후 자동 롤백) sudo netplan try
문제없으면 영구 적용
sudo netplan apply
네트워크 상태 확인
ip addr show 6-5: 개발 환경 구축 Git 사용자 정보 설정: bashgit config —global user.name “Your Name” git config —global user.email “your.email@example.com” Git 설정이 필요한 이유:
향후 익스플로러 백엔드 코드를 Git으로 버전 관리 커밋 시 작성자 정보 기록 GitHub 등 원격 저장소 연동 시 필요
Python 가상환경 도구: bashsudo pip3 install virtualenv 가상환경을 사용하는 이유:
프로젝트별 독립된 Python 환경 패키지 간 충돌 방지 (비트코인 라이브러리 vs 웹 개발 라이브러리) 시스템 Python 환경 보호
Node.js 버전 매니저 (선택사항): bash# NVM (Node Version Manager) 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
설정 파일 새로고침
source ~/.bashrc
최신 LTS 버전 설치
nvm install —lts nvm use —lts NVM 사용 이유:
여러 Node.js 버전 관리 가능 프로젝트별 다른 버전 요구사항 대응
7단계: 비트코인 코어 설치 준비
7-1: 디렉토리 구조 생성
# 홈 디렉토리로 이동
cd ~
# 비트코인 관련 디렉토리 생성
mkdir -p bitcoin-core bitcoin-data
# 개발 관련 디렉토리 생성
mkdir -p explorer-backend etl-scripts config logs
# 디렉토리 구조 확인
tree -L 1 ~디렉토리별 용도:
| 디렉토리 | 용도 | 예상 크기 |
|---|---|---|
bitcoin-core/ | 비트코인 코어 실행 파일과 설정 | ~100MB |
bitcoin-data/ | 블록체인 데이터 저장소 | 550GB+ |
explorer-backend/ | 익스플로러 웹 백엔드 소스코드 | ~50MB |
etl-scripts/ | 블록체인 데이터 추출/변환/로드 스크립트 | ~10MB |
config/ | 각종 설정 파일들 (비트코인, DB, 웹서버 등) | ~1MB |
logs/ | 애플리케이션 로그 파일들 | ~1GB |
💡 팁: 체계적인 디렉토리 구조는 나중에 유지보수와 백업을 용이하게 합니다.
7-2: 시스템 리소스 모니터링
# 메모리 사용량 확인
free -h
# 디스크 사용량 확인 (1.8TB 파티션)
df -h
# CPU 정보 확인
lscpu
# 실시간 시스템 모니터링
htop각 명령어의 역할:
| 명령어 | 기능 | 정상 상태 |
|---|---|---|
free -h | 메모리 사용량 (human-readable 형태) | Total: 16GB, Available: 14GB+ |
df -h | 디스크 여유 공간 확인 | / 파티션이 1.8T 크기로 표시 |
lscpu | CPU 정보 (코어 수, 아키텍처 등) | Intel N 시리즈, 64비트 아키텍처 |
htop | 실시간 리소스 모니터링 | CPU 사용률, 메모리 사용률 확인 (q로 종료) |
💡 참고: 이 정보들은 나중에 비트코인 노드 성능 최적화 시 참고 자료로 활용됩니다.
8단계: 비트코인 코어 다운로드 및 설치
8-1: 최신 비트코인 코어 버전 확인
공식 웹사이트에서 최신 버전 확인:
- 비트코인 코어 공식 다운로드 페이지 접속
- 최신 안정 버전 확인 (예: 26.0)
왜 공식 사이트에서 다운로드해야 하는가?
| 이유 | 설명 |
|---|---|
| 보안 | 공식 서명된 바이너리로 변조 방지 |
| 안정성 | 검증된 안정 버전 |
| 호환성 | Linux x86_64 아키텍처 지원 |
⚠️ 중요: 비공식 사이트나 미러에서 다운로드하면 악성코드에 감염될 위험이 있습니다.
8-2: 비트코인 코어 다운로드
# 비트코인 코어 디렉토리로 이동
cd ~/bitcoin-core
# 최신 비트코인 코어 다운로드 (버전은 실제 최신 버전으로 변경)
wget https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0-x86_64-linux-gnu.tar.gz
# SHA256 해시 파일 다운로드 (무결성 검증용)
wget https://bitcoincore.org/bin/bitcoin-core-26.0/SHA256SUMS
# 디지털 서명 파일 다운로드 (진위성 검증용)
wget https://bitcoincore.org/bin/bitcoin-core-26.0/SHA256SUMS.asc다운로드 파일 설명:
| 파일 | 용도 | 크기 |
|---|---|---|
bitcoin-26.0-x86_64-linux-gnu.tar.gz | 실제 바이너리 파일 | ~25MB |
SHA256SUMS | 해시 체크섬 (파일 무결성 검증) | ~1KB |
SHA256SUMS.asc | 디지털 서명 (개발자 인증) | ~1KB |
💡 참고: 다운로드 시간은 인터넷 속도에 따라 1-5분 정도 소요됩니다.
8-3: 파일 무결성 검증 (중요!) bash# SHA256 해시 검증 sha256sum bitcoin-26.0-x86_64-linux-gnu.tar.gz grep bitcoin-26.0-x86_64-linux-gnu.tar.gz SHA256SUMS
두 해시 값이 일치하는지 확인
일치하지 않으면 파일이 손상되었거나 변조된 것
무결성 검증이 중요한 이유:
다운로드 중 파일 손상 감지 악의적 변조 방지 올바른 파일임을 보장
8-4: 비트코인 코어 압축 해제 및 설치 bash# 압축 파일 해제 tar -xzf bitcoin-26.0-x86_64-linux-gnu.tar.gz
디렉토리 구조 확인
ls -la bitcoin-26.0/
바이너리 파일들을 시스템 경로로 복사
sudo cp bitcoin-26.0/bin/* /usr/local/bin/
실행 권한 확인
ls -la /usr/local/bin/bitcoin* 설치된 주요 바이너리:
bitcoind: 비트코인 데몬 (풀노드 서버) bitcoin-cli: 명령줄 클라이언트 (RPC 호출용) bitcoin-wallet: 월렛 관리 도구 bitcoin-tx: 트랜잭션 조작 도구
8-5: 설치 확인 bash# 비트코인 코어 버전 확인 bitcoind —version bitcoin-cli —version
PATH 환경변수 확인 (어디서든 실행 가능)
which bitcoind which bitcoin-cli 정상 설치 시 출력 예시: Bitcoin Core version v26.0.0 Copyright (C) 2009-2023 The Bitcoin Core developers
9단계: 비트코인 설정 파일 작성
9-1: 설정 디렉토리 생성
# 비트코인 설정 디렉토리 생성
mkdir -p ~/.bitcoin
# 데이터 디렉토리 생성 (블록체인 저장소)
mkdir -p ~/bitcoin-data디렉토리 구조:
| 디렉토리 | 용도 |
|---|---|
~/.bitcoin/ | 설정 파일 저장소 |
~/bitcoin-data/ | 블록체인 데이터 저장소 (1.8TB 파티션 활용) |
9-2: bitcoin.conf 설정 파일 작성
# 비트코인 설정 파일 생성
nano ~/.bitcoin/bitcoin.conf기본 설정 내용:
# 비트코인 코어 설정 파일
# 데이터 디렉토리 설정 (블록체인 데이터 저장 위치)
datadir=/home/btcnode/bitcoin-data
# 네트워크 설정
# 메인넷 사용 (testnet=1로 설정하면 테스트넷)
mainnet=1
# RPC 서비스 활성화 (bitcoin-cli 및 API 접속용)
server=1
rpcbind=127.0.0.1
rpcport=8332
# RPC 인증 설정 (보안을 위해 강력한 패스워드 사용)
rpcuser=bitcoin_rpc
rpcpassword=your_very_strong_password_here
# RPC 허용 IP (로컬호스트만 허용)
rpcallowip=127.0.0.1
# 로그 설정
debug=0
logtimestamps=1
# 메모리 사용량 설정 (16GB RAM 기준으로 4GB 할당)
dbcache=4000
# 최대 연결 수 (기본값 사용)
maxconnections=8
# 트랜잭션 mempool 크기 (MB 단위)
maxmempool=300
# 풀노드 운영을 위한 설정
listen=1
discover=1
# 로그 파일 위치
debuglogfile=/home/btcnode/logs/bitcoin-debug.log
# 익스플로러 개발을 위한 추가 설정
# 트랜잭션 인덱스 활성화 (모든 트랜잭션 검색 가능)
txindex=1
# 블록 필터 인덱스 (라이트 클라이언트 지원)
blockfilterindex=1
# REST API 활성화 (웹 인터페이스용)
rest=1
# ZMQ (ZeroMQ) 설정 (실시간 블록/트랜잭션 알림)
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
zmqpubhashblock=tcp://127.0.0.1:28334
zmqpubhashtx=tcp://127.0.0.1:28335주요 설정 옵션 설명:
기본 설정:
| 설정 | 값 | 설명 |
|---|---|---|
datadir | /home/btcnode/bitcoin-data | 블록체인 데이터 저장 위치 (1.8TB 파티션 활용) |
mainnet | 1 | 실제 비트코인 네트워크 사용 |
dbcache | 4000 | RAM 캐시 4GB 할당 (동기화 속도 향상) |
RPC 설정:
| 설정 | 값 | 설명 |
|---|---|---|
server | 1 | RPC 서버 활성화 (bitcoin-cli, API 접속용) |
rpcuser/rpcpassword | 사용자 설정 | 보안 인증 설정 |
rpcbind | 127.0.0.1 | 로컬호스트에서만 접속 허용 |
익스플로러 개발용 설정:
| 설정 | 값 | 설명 |
|---|---|---|
txindex | 1 | 모든 트랜잭션 인덱싱 (트랜잭션 ID로 검색 가능) |
blockfilterindex | 1 | 블록 필터 생성 (라이트 클라이언트 지원) |
rest | 1 | REST API 활성화 (HTTP로 블록체인 데이터 접근) |
zmq* | 포트 설정 | 실시간 블록/트랜잭션 알림 (웹소켓 등에 활용) |
9-3: 보안 설정 강화
# 설정 파일 권한 설정 (본인만 읽기/쓰기 가능)
chmod 600 ~/.bitcoin/bitcoin.conf
# 데이터 디렉토리 권한 설정
chmod 700 ~/bitcoin-data권한 설정 이유:
- RPC 패스워드 보호: 외부 접근 방지
- 블록체인 데이터 보호: 무단 수정 방지
- 시스템 보안 강화: 최소 권한 원칙 적용
10단계: 비트코인 노드 첫 실행 및 동기화
10-1: 첫 실행 (테스트)
# 포그라운드에서 실행 (로그 확인용)
bitcoind -conf=/home/btcnode/.bitcoin/bitcoin.conf -datadir=/home/btcnode/bitcoin-data
# 다른 터미널에서 상태 확인
bitcoin-cli -conf=/home/btcnode/.bitcoin/bitcoin.conf getblockchaininfo정상 실행 시 로그 예시:
Bitcoin Core version v26.0.0
Using the 'x86_64_shani(1way,2way)' SHA256 implementation
Using RdRand as an additional entropy source
Default data directory /home/btcnode/bitcoin-data
Assuming ancestors of block 000000000000000000... have valid signatures.
init message: Starting network threads...
init message: Loading P2P addresses...
10-2: 초기 블록체인 동기화
동기화 과정 이해:
| 단계 | 설명 | 예상 시간 |
|---|---|---|
| IBD (Initial Block Download) | 2009년부터 현재까지 모든 블록 다운로드 | 2-7일 |
| 데이터 크기 | 약 550GB (계속 증가) | - |
| 네트워크 요구사항 | 안정적인 인터넷 연결 | - |
동기화 모니터링:
# 동기화 진행률 확인
bitcoin-cli -conf=/home/btcnode/.bitcoin/bitcoin.conf getblockchaininfo
# 네트워크 연결 상태 확인
bitcoin-cli -conf=/home/btcnode/.bitcoin/bitcoin.conf getnetworkinfo
# 피어 연결 상태 확인
bitcoin-cli -conf=/home/btcnode/.bitcoin/bitcoin.conf getpeerinfo | grep '"addr"'동기화 진행률 해석:
{
"blocks": 850000, # 현재 동기화된 블록 수
"headers": 851000, # 다운로드된 헤더 수
"verificationprogress": 0.95, # 검증 진행률 (95%)
"initialblockdownload": true # 초기 동기화 진행 중
}10-3: 백그라운드 실행 전환
# 포그라운드 실행 중단 (Ctrl+C)
# 백그라운드 데몬으로 시작
bitcoind -daemon -conf=/home/btcnode/.bitcoin/bitcoin.conf -datadir=/home/btcnode/bitcoin-data
# 서비스 상태 확인
ps aux | grep bitcoind10-4: 로그 모니터링
# 실시간 로그 확인
tail -f ~/logs/bitcoin-debug.log
# 에러 로그만 확인
grep -i error ~/logs/bitcoin-debug.log
# 연결 상태 로그 확인
grep -i "connection\|peer" ~/logs/bitcoin-debug.log🎉 설치 완료!
축하합니다! 비트코인 풀노드 설치가 완료되었습니다. 이제 다음 단계를 진행할 수 있습니다:
다음 단계:
- 동기화 완료 대기 (2-7일)
- PostgreSQL 설치 및 설정
- 비트코인 익스플로러 백엔드 개발
- 웹 인터페이스 구축
유용한 명령어:
# 노드 상태 확인
bitcoin-cli getblockchaininfo
# 네트워크 정보 확인
bitcoin-cli getnetworkinfo
# 로그 실시간 모니터링
tail -f ~/logs/bitcoin-debug.log🔧 문제 해결 (Troubleshooting)
일반적인 문제들
1. USB 부팅이 안 될 때
증상: BIOS에서 USB를 인식하지 못하거나 부팅이 안 됨 해결방법:
- USB 포트를 다른 곳으로 변경 (USB 3.0 → USB 2.0)
- Rufus에서 “DD Image mode” 대신 “ISO Image mode” 사용
- 다른 USB 메모리로 재시도
2. WiFi 연결이 안 될 때
증상: 설치 중 WiFi 네트워크가 보이지 않음 해결방법:
# 네트워크 인터페이스 확인
ip link show
# WiFi 어댑터 활성화
sudo ip link set wlan0 up
# 사용 가능한 네트워크 스캔
sudo iwlist wlan0 scan | grep ESSID3. 파티션 크기 조정이 안 될 때
증상: LVM 파티션 크기를 1800G로 변경할 수 없음 해결방법:
- 설치 프로그램을 다시 시작
- “Custom storage layout” 선택하여 수동으로 파티션 구성
- 전체 디스크를 하나의 파티션으로 설정
4. 비트코인 노드 동기화가 느릴 때
증상: 동기화 속도가 매우 느리거나 멈춤 해결방법:
# 연결된 피어 수 확인 (최소 8개 이상)
bitcoin-cli getconnectioncount
# 메모리 캐시 증가 (8GB RAM 이상인 경우)
# bitcoin.conf에서 dbcache=6000으로 변경
# 네트워크 연결 상태 확인
bitcoin-cli getnetworkinfo5. SSH 접속이 안 될 때
증상: PuTTY나 터미널에서 SSH 접속 실패 해결방법:
# SSH 서비스 상태 확인
sudo systemctl status ssh
# 방화벽 설정 확인
sudo ufw status
# SSH 서비스 재시작
sudo systemctl restart ssh
# IP 주소 재확인
ip addr show성능 최적화 팁
1. SSD 최적화
# TRIM 활성화 (SSD 성능 유지)
sudo systemctl enable fstrim.timer
# 스왑 사용량 최소화
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf2. 네트워크 최적화
# TCP 버퍼 크기 증가
echo 'net.core.rmem_max = 16777216' | sudo tee -a /etc/sysctl.conf
echo 'net.core.wmem_max = 16777216' | sudo tee -a /etc/sysctl.conf3. 비트코인 노드 최적화
# bitcoin.conf에 추가 설정
# 더 많은 연결 허용 (대역폭이 충분한 경우)
maxconnections=16
# 메모리풀 크기 증가
maxmempool=500
# 로그 레벨 조정 (디스크 I/O 감소)
debug=0📚 추가 리소스
공식 문서
유용한 도구
모니터링 도구
# 시스템 리소스 모니터링
htop
iotop # 디스크 I/O 모니터링
nethogs # 네트워크 사용량 모니터링
# 비트코인 노드 상태 스크립트
cat << 'EOF' > ~/bitcoin-status.sh
#!/bin/bash
echo "=== Bitcoin Node Status ==="
bitcoin-cli getblockchaininfo | jq '.blocks, .verificationprogress'
bitcoin-cli getconnectioncount
bitcoin-cli getmempoolinfo | jq '.size'
echo "=== System Resources ==="
free -h | grep Mem
df -h / | tail -1
EOF
chmod +x ~/bitcoin-status.sh보안 강화
# 자동 보안 업데이트 활성화
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# fail2ban 설치 (SSH 무차별 대입 공격 방지)
sudo apt install fail2ban
# SSH 키 인증 설정 (선택사항)
ssh-keygen -t rsa -b 4096
# 생성된 공개키를 ~/.ssh/authorized_keys에 추가🎯 다음 단계 로드맵
Phase 1: 인프라 완성 (1-2주)
- ✅ 비트코인 풀노드 설치 (완료)
- 🔄 동기화 완료 대기 (2-7일)
- 📊 PostgreSQL 설치 및 설정
- 🔗 비트코인 데이터 ETL 파이프라인 구축
Phase 2: 백엔드 개발 (2-3주)
- 🏗️ REST API 서버 개발 (Node.js/Express)
- 📈 블록체인 데이터 인덱싱
- 🔍 검색 기능 구현
- ⚡ 실시간 데이터 스트리밍 (WebSocket)
Phase 3: 프론트엔드 개발 (2-3주)
- 🎨 웹 인터페이스 설계
- 📱 반응형 UI 구현
- 📊 데이터 시각화
- 🔐 사용자 인증 시스템
Phase 4: 배포 및 운영 (1주)
- 🚀 프로덕션 배포
- 📊 모니터링 시스템 구축
- 🔒 보안 강화
- 📖 문서화 완성
💡 팁: 동기화가 완료되면 본격적인 익스플로러 개발을 시작할 수 있습니다!