들어가며
지난 글에서는 Synology NAS에 Bitcoin Core를 설치하고 초기 동기화(Initial Sync)를 진행하는 과정까지 정리했습니다.
1편에서는 NAS를 이용한 비트코인 풀노드 전체 구조를 살펴보았고, 2편에서는 그중 가장 기본이 되는 Bitcoin Core 설치 과정을 정리했습니다.
전체 흐름을 다시 정리하면 아래와 같습니다.

2편에서 설치한 Bitcoin Core는 비트코인 블록체인을 직접 다운로드하고 검증하는 역할을 합니다.
이번 3편에서는 그다음 단계인 Fulcrum 설치와 Bitcoin Core RPC 연결 과정을 정리해보려고 합니다.
처음에는 Bitcoin Core만 설치하면 지갑 앱도 바로 연결해서 사용할 수 있을 것이라고 생각했습니다. 하지만 실제로 BlueWallet이나 Electrum 계열 지갑을 개인 노드 기반으로 사용하려면, Bitcoin Core와 지갑 사이에서 빠른 조회를 도와주는 Electrum 서버가 필요했습니다.
그 역할을 해주는 프로그램이 바로 Fulcrum입니다.
이번 글에서는 단순히 Fulcrum을 설치하는 방법만 정리하는 것이 아니라, 다음 내용을 함께 살펴보겠습니다.
- Fulcrum이 왜 필요한지
- Bitcoin Core가 먼저 동기화되어 있어야 하는 이유
- Fulcrum 설치 환경
- Fulcrum 컨테이너 설정
- 볼륨, 환경 변수, 네트워크, 실행 명령 구성
- fulcrum.conf 설정 파일 설명
- Bitcoin Core RPC 연결 구조
- Fulcrum 인덱싱 과정
- 로그에서 확인할 내용
- Electrum / BlueWallet 연결 전 준비 사항
Fulcrum이 왜 필요할까?
처음에는 이런 생각이 들었습니다.
“Bitcoin Core를 설치했으면 이미 풀노드가 된 것 아닌가?”
“그럼 지갑도 바로 연결할 수 있는 것 아닌가?”
절반은 맞고, 절반은 부족한 이해였습니다.
Bitcoin Core는 비트코인 네트워크의 핵심 프로그램입니다. 블록체인을 다운로드하고, 블록과 거래를 검증하고, 다른 비트코인 노드와 연결됩니다.
하지만 지갑 앱이 원하는 방식의 조회를 빠르게 처리하는 데에는 별도의 구조가 필요했습니다.
예를 들어 지갑 앱에서는 다음과 같은 정보를 빠르게 확인해야 합니다.
- 특정 주소의 잔액
- 특정 주소의 거래 내역
- 아직 사용하지 않은 UTXO
- 지갑에 표시할 여러 주소의 상태
- 새로 들어온 거래 여부
Bitcoin Core는 블록체인 전체를 검증하는 데 초점이 맞춰진 프로그램입니다. 반면 지갑 앱은 특정 주소와 거래 내역을 빠르게 조회해야 합니다.
이 사이에서 지갑이 원하는 정보를 빠르게 찾아줄 수 있도록 도와주는 서버가 필요합니다.
그 역할을 하는 것이 Electrum 서버이고, 이번에 설치한 프로그램이 Fulcrum입니다.
Fulcrum이란 무엇일까?
Fulcrum은 Electrum 프로토콜을 지원하는 서버입니다.
쉽게 말하면 다음과 같습니다.
Bitcoin Core
→ 비트코인 블록체인을 저장하고 검증하는 풀노드
Fulcrum
→ Bitcoin Core 데이터를 바탕으로 지갑이 빠르게 조회할 수 있도록 인덱스를 만드는 서버
Electrum / BlueWallet / Nunchuk
→ Fulcrum을 통해 잔액과 거래 내역을 조회하는 지갑
즉, Fulcrum은 Bitcoin Core를 대체하는 프로그램이 아닙니다.
Bitcoin Core가 기본 데이터와 검증 역할을 담당하고, Fulcrum은 그 데이터를 지갑이 빠르게 사용할 수 있도록 정리해주는 역할을 합니다.
조금 더 쉽게 비유하면 이렇습니다.
Bitcoin Core는 도서관 전체 책을 보관하고 검증하는 역할입니다.
Fulcrum은 그 책들을 빠르게 찾을 수 있도록 색인표를 만드는 역할입니다.
지갑 앱은 그 색인표를 이용해 내가 필요한 정보만 빠르게 찾아보는 사용자에 가깝습니다.
이렇게 이해하니 Bitcoin Core와 Fulcrum의 역할 차이가 훨씬 분명해졌습니다.
왜 Bitcoin Core만으로는 부족할까?
Bitcoin Core는 비트코인 블록체인을 직접 내려받고 검증하는 풀노드 프로그램입니다.
하지만 Bitcoin Core의 기본 구조는 “전체 블록체인을 검증하는 노드”에 가깝습니다. 반면 Electrum 계열 지갑은 “특정 주소와 관련된 거래 내역을 빠르게 조회하는 구조”를 필요로 합니다.
예를 들어 지갑 앱이 이런 질문을 한다고 생각해볼 수 있습니다.
- 이 주소에 들어온 거래가 있나요?
- 이 지갑의 잔액은 얼마인가요?
- 이 주소가 사용한 UTXO는 무엇인가요?
- 새 거래가 들어오면 바로 알려줄 수 있나요?
이런 조회를 빠르게 처리하려면 주소별, 거래별 인덱스가 필요합니다.
Fulcrum은 Bitcoin Core의 블록체인 데이터를 읽고, Electrum 지갑이 빠르게 조회할 수 있는 별도 데이터베이스를 만듭니다.
그래서 Bitcoin Core만 설치하는 것과, Bitcoin Core + Fulcrum을 함께 운영하는 것은 역할이 다릅니다.
왜 직접 Fulcrum을 운영할까?
Electrum 계열 지갑은 공개 Electrum 서버를 사용할 수도 있습니다.
하지만 공개 서버를 사용하면 내 지갑의 주소 조회 요청이 외부 서버로 전달됩니다. 물론 지갑의 개인키가 공개되는 것은 아니지만, 프라이버시 측면에서는 내가 어떤 주소를 조회하는지 외부 서버가 알 수 있습니다.
직접 Fulcrum을 운영하면, 지갑 앱이 공개 서버에 의존하지 않고 내가 운영하는 Fulcrum 서버를 통해 Bitcoin Core 데이터를 조회하게 됩니다.

이런 구조는 공개 Electrum 서버 의존도를 줄이고, 비트코인의 탈중앙화 구조를 조금 더 직접적으로 경험해볼 수 있다는 점에서도 의미가 있다고 느꼈습니다.
제가 직접 Fulcrum을 운영하면서 느낀 장점은 다음과 같습니다.
- 공개 Electrum 서버 의존을 줄일 수 있음
- 내 Bitcoin Core 데이터를 직접 활용할 수 있음
- 지갑 조회 프라이버시를 높이는 데 도움이 될 수 있음
- Bitcoin Core + Fulcrum + 지갑 구조를 직접 이해할 수 있음
- NAS를 단순 저장장치가 아니라 개인 서버로 활용할 수 있음
처음에는 이 구조가 복잡하게 느껴졌지만,
실제로 연결해보니 지갑 앱이 공개 서버가 아니라 내가 운영하는 Fulcrum과 Bitcoin Core를 통해 데이터를 조회한다는 점이 꽤 인상적이었습니다.
Bitcoin Core가 먼저 동기화되어 있어야 하는 이유
Fulcrum은 자체적으로 비트코인 블록체인을 다운로드하지 않습니다.
Fulcrum은 Bitcoin Core가 이미 다운로드하고 검증한 데이터를 기반으로 동작합니다.
따라서 Fulcrum을 설치하기 전에 Bitcoin Core가 먼저 준비되어 있어야 합니다.
특히 아래 조건이 중요했습니다.
- Bitcoin Core 초기 동기화 완료
- txindex=1 활성화
- Bitcoin Core RPC 정상 동작
- RPC 계정 정보 확인
- Bitcoin Core 데이터 경로 확인
Bitcoin Core가 아직 초기 동기화 중이라면 Fulcrum도 정상적으로 인덱싱을 완료하기 어렵습니다.
2편에서 확인했던 로그 중 아래와 같은 로그가 중요했습니다.
Leaving InitialBlockDownload (latching to false)
이 로그는 Bitcoin Core가 초기 블록 다운로드 상태를 벗어났다는 의미입니다.
즉, Bitcoin Core가 최신 블록까지 거의 따라잡았고, 풀노드로 정상 운영 가능한 상태에 가까워졌다는 뜻입니다.
왜 txindex=1이 중요할까?
Fulcrum 같은 Electrum 서버를 운영할 때는 전체 거래 조회와 인덱싱 구조가 중요합니다.
2편에서 Bitcoin Core 설정 파일에 아래 항목을 추가했습니다.
txindex=1
처음에는 이 설정이 단순한 옵션처럼 느껴졌습니다.
하지만 Fulcrum은 Electrum 지갑의 요청을 처리하기 위해 과거 거래와 관련 데이터를 빠르게 찾아야 합니다. 그래서 제 구성에서는 처음부터 txindex=1을 활성화했습니다.
이 설정을 활성화하면 Bitcoin Core가 전체 거래 인덱스를 생성합니다.
장점은 다음과 같습니다.
- 과거 전체 거래 조회 가능
- 특정 txid 조회 가능
- Fulcrum 연동 구조 구성에 도움
- Electrum 서버 운영 기반 마련
단점도 있습니다.
- 저장 공간 증가
- 초기 인덱싱 시간 증가
- 디스크 접근 증가
처음에는 동기화가 왜 이렇게 오래 걸리는지 바로 이해하기 어려웠습니다. 나중에 보니 Bitcoin Core가 블록체인만 다운로드하는 것이 아니라, 전체 거래를 인덱싱하는 작업도 함께 수행하고 있었습니다.
실제로 진행해보니, Fulcrum을 사용할 계획이라면 처음부터 이 부분을 함께 고려해두는 편이 좋았습니다.
Fulcrum 설치 환경
이번 Fulcrum 설치 환경은 아래와 같습니다.
- Synology NAS 423+
- DSM Container Manager
- Docker 기반 설치
- 이미지: cculianu/fulcrum:latest
- 컨테이너 이름: fulcrum
- 네트워크: host
- Fulcrum 데이터 경로: 예시 /volume1/docker/fulcrum/db
- Bitcoin Core 데이터 읽기 경로: 예시 /volume1/docker/bitcoin
- Bitcoin Core RPC 연결: 127.0.0.1:8332
- Fulcrum 실행 명령: Fulcrum /data/fulcrum.conf
Bitcoin Core는 이미 동기화가 완료된 상태였고, RPC는 localhost 기반으로 구성되어 있었습니다.
위 경로와 설정은 제 환경에서 사용한 예시입니다. 실제 운영 환경에서는 NAS 폴더 구조, Docker 설정, 네트워크 구성에 따라 다르게 조정할 수 있습니다.
Fulcrum 설치 과정 한눈에 보기
이제 실제 Fulcrum 컨테이너를 구성하는 과정을 정리해보겠습니다.
전체 흐름은 크게 아래 순서로 진행됩니다.
- Fulcrum Docker 이미지 다운로드
- 컨테이너 이름 설정
- 볼륨 설정
- 환경 변수 설정
- 네트워크 설정
- 실행 명령 설정
- fulcrum.conf 설정
- Bitcoin Core RPC 연결 확인
- Fulcrum 인덱싱 상태 확인
처음에는 설정 항목이 많아 복잡하게 느껴졌지만, 결국 핵심은 두 가지였습니다.
첫째, Fulcrum이 Bitcoin Core RPC에 정상적으로 연결되어야 합니다.
둘째, Fulcrum이 Bitcoin Core 데이터를 읽어 자신의 인덱스 데이터베이스를 만들 수 있어야 합니다.
이 두 가지를 먼저 이해하고 나니, 이후 볼륨과 네트워크 설정도 조금씩 정리되기 시작했습니다.
1단계. Fulcrum Docker 이미지 다운로드
Container Manager의 레지스트리에서 아래 이미지를 사용했습니다.
cculianu/fulcrum:latest
Fulcrum은 Electrum 서버 역할을 하는 프로그램이고, Docker 이미지로 실행하면 Synology NAS에서도 비교적 관리하기 쉽게 운영할 수 있습니다.
2편에서 Bitcoin Core를 Docker 컨테이너로 운영한 것처럼, Fulcrum도 별도 컨테이너로 구성했습니다.
Docker 방식의 장점은 다음과 같습니다.
- 설치와 삭제가 비교적 단순함
- 컨테이너 단위로 관리 가능
- 로그 확인이 쉬움
- 데이터 폴더를 NAS에 따로 보관 가능
- 재시작과 설정 변경이 비교적 편함
다만 Fulcrum은 단순 실행 프로그램이 아니라 자체 인덱스 데이터베이스를 생성하므로, 볼륨 설정을 잘 해두는 것이 중요했습니다.
처음 구성할 때는 latest 태그를 사용했지만, 장기 운영 환경에서는 특정 버전 태그를 사용하는 방식도 고려할 수 있습니다. latest는 이미지 업데이트 시점에 따라 실제 버전이 달라질 수 있기 때문입니다.
2단계. 컨테이너 이름 설정
Fulcrum 컨테이너 이름은 다음처럼 지정했습니다.

컨테이너 이름은 기능을 바로 알아볼 수 있게 정하는 것이 좋습니다.
Bitcoin Core 컨테이너는 bitcoin-node로 지정했고, Fulcrum 컨테이너는 fulcrum으로 지정했습니다.
이렇게 해두면 Container Manager에서 여러 컨테이너를 운영할 때도 어떤 컨테이너가 어떤 역할인지 바로 구분할 수 있습니다.
예를 들어 나중에 다음 작업을 할 때 편합니다.
- 로그 확인
- 재시작
- 설정 점검
- 컨테이너 상태 확인
- 리소스 사용량 확인
3단계. 볼륨(Volume) 설정
Fulcrum 설치에서 중요한 부분 중 하나가 볼륨 설정입니다.
이번 구성에서는 아래처럼 설정했습니다.

Fulcrum 데이터 저장 경로 예시
/volume1/docker/fulcrum/db
컨테이너 내부 경로
/data
권한
읽기/쓰기
그리고 Bitcoin Core 데이터 폴더도 Fulcrum 컨테이너에 연결했습니다.
Bitcoin Core 데이터 경로 예시
/volume1/docker/bitcoin
컨테이너 내부 경로
/bitcoin
권한
읽기 전용
이 구조가 중요합니다.
Fulcrum은 자체 데이터베이스를 /data에 저장합니다. 그래서 Fulcrum 데이터 폴더는 읽기/쓰기 권한이 필요합니다.
반면 Bitcoin Core 데이터 폴더는 Bitcoin Core가 관리하는 블록체인 데이터입니다. Fulcrum은 이 데이터를 참고할 수는 있지만, 직접 수정할 필요는 없습니다.
그래서 /bitcoin 경로는 읽기 전용으로 연결했습니다.
구조를 정리하면 아래와 같습니다.
- /docker/fulcrum/db → /data 읽기/쓰기
- /docker/bitcoin → /bitcoin 읽기 전용
Fulcrum 데이터 폴더
→ Fulcrum이 직접 생성하고 관리하는 인덱스 저장소
Bitcoin Core 데이터 폴더
→ Bitcoin Core가 관리하는 블록체인 데이터 저장소
4단계. 환경 변수(Environment) 설정
Fulcrum 컨테이너에는 몇 가지 환경 변수를 설정했습니다.
스크린샷 기준으로는 아래 값들이 들어갔습니다.

각 항목의 의미를 정리하면 다음과 같습니다.
PATH
PATH는 Linux 환경에서 실행 명령어를 찾는 기본 경로입니다.
일반적으로 Docker 이미지에서 기본으로 제공하는 값이며, 사용자가 특별히 수정할 일은 많지 않습니다.
LC_ALL=C.UTF-8
문자 인코딩과 로케일 관련 설정입니다.
Fulcrum이 컨테이너 내부에서 문자열을 처리할 때 사용할 환경을 지정합니다.
초보자 입장에서는 “컨테이너 내부 언어/문자 처리 환경” 정도로 이해하면 됩니다.
DATA_DIR=/data
Fulcrum 데이터 디렉터리를 지정하는 환경 변수입니다.
여기서 /data는 앞에서 볼륨으로 연결한 경로입니다.
즉, Fulcrum의 인덱스 데이터와 설정 관련 파일이 /data 경로를 기준으로 저장됩니다.
NAS의 실제 경로로 보면 다음과 연결됩니다.
/volume1/docker/fulcrum/db → /data
SSL_CERTFILE=/data/fulcrum.crt
Fulcrum SSL 연결에 사용할 인증서 파일 경로입니다.
Electrum 계열 지갑이 SSL 방식으로 접속할 때 사용됩니다.
SSL_KEYFILE=/data/fulcrum.key
SSL 인증서에 대응하는 개인키 파일 경로입니다.
이 파일도 외부에 공개되면 안 됩니다.
Fulcrum의 SSL 연결을 사용하려면 인증서 파일과 키 파일이 /data 경로에 준비되어 있어야 합니다.
5단계. 네트워크는 host 모드로 설정
이번 구성에서는 Docker 네트워크를 host 모드로 설정했습니다.

Bitcoin Core 설치 때와 같은 방식입니다.
처음에는 Docker의 bridge 네트워크도 고려했습니다. 하지만 Bitcoin Core와 Fulcrum을 같은 NAS 안에서 연결하는 과정에서 localhost 개념이 조금 복잡하게 느껴졌습니다.
특히 bridge 모드에서는 컨테이너 내부에서 보는 127.0.0.1이 NAS 자신이 아니라 컨테이너 자기 자신을 의미할 수 있습니다.
예를 들어 Fulcrum 컨테이너 내부에서 아래 주소를 바라본다고 해서 항상 NAS의 Bitcoin Core RPC를 의미하는 것은 아닙니다.
127.0.0.1:8332
bridge 네트워크에서는 별도의 컨테이너 IP, 포트 매핑, 네트워크 이름 등을 고려해야 합니다.
반면 host 모드에서는 컨테이너가 NAS의 네트워크를 직접 사용합니다.
이번 구성에서는 Bitcoin Core도 host 모드, Fulcrum도 host 모드로 구성했기 때문에 아래 구조가 가능했습니다.
Bitcoin Core RPC
127.0.0.1:8332
Fulcrum
127.0.0.1:8332로 연결
즉, 같은 NAS 내부에서 직접 통신하는 구조입니다.
이 방식은 초보자 입장에서 이해하기 훨씬 쉬웠습니다.
장점은 다음과 같습니다.
- 포트 매핑 구조가 단순함
- Bitcoin Core RPC 연결이 이해하기 쉬움
- Docker bridge 내부 네트워크를 따로 신경 쓰지 않아도 됨
- Fulcrum 설정 파일에서 localhost RPC 연결을 사용하기 편함
다만 host 모드가 항상 정답이라는 뜻은 아닙니다.
Docker bridge 모드로도 구성할 수 있으며, 각 방식은 네트워크 구조와 보안 정책에 따라 선택하면 됩니다.
host 모드는 NAS 네트워크를 직접 사용하기 때문에 다음 부분은 주의해야 합니다.
- 포트 충돌 확인
- RPC 외부 공개 여부 확인
- 사용하지 않는 포트는 열지 않기
- Fulcrum TCP/SSL 포트 관리
6단계. 실행 명령(Command) 설정
Fulcrum 컨테이너 실행 명령은 아래처럼 구성했습니다.

컨테이너가 시작되면 /entrypoint.sh가 먼저 실행되고, 이후 Fulcrum 프로그램이 /data/fulcrum.conf 설정 파일을 읽어서 실행됩니다.
이 구조는 중요합니다.
Fulcrum은 단순히 실행만 되는 것이 아니라, 설정 파일을 기준으로 Bitcoin Core RPC, 포트, 메모리, SSL 설정 등을 읽습니다.
즉,
Fulcrum /data/fulcrum.conf
라는 명령은 “Fulcrum을 실행하되, 설정은 /data/fulcrum.conf 파일을 기준으로 사용하라”는 의미입니다.
이 설정 덕분에 나중에 fulcrum.conf 파일을 수정하고 컨테이너를 재시작하면 설정을 반영할 수 있습니다.
이번 Fulcrum 컨테이너 구성 요약
실제 운영 중인 Fulcrum 컨테이너 설정을 정리하면 아래와 같은 구조입니다.
- 컨테이너 이름: fulcrum
- 이미지: cculianu/fulcrum:latest
- 네트워크: host
- 볼륨 1: 예시 /volume1/docker/fulcrum/db → /data 읽기/쓰기
- 볼륨 2: 예시 /volume1/docker/bitcoin → /bitcoin 읽기 전용
- 데이터 디렉터리: /data
- SSL 인증서: /data/fulcrum.crt
- SSL 키: /data/fulcrum.key
- 실행 명령: Fulcrum /data/fulcrum.conf
이 구성에서 핵심은 Fulcrum의 자체 데이터는 /data에 저장하고, Bitcoin Core 데이터는 /bitcoin 경로를 통해 참조하도록 나누었다는 점입니다.
이렇게 역할을 분리해두면 Fulcrum 데이터와 Bitcoin Core 데이터를 구분해서 관리하기가 더 편했습니다.

Fulcrum 설정 파일(fulcrum.conf) 구성
Fulcrum은 설정 파일 기반으로 동작합니다.
이번 구성에서는 fulcrum.conf 파일을 사용했습니다.
실제 설정은 아래와 비슷한 형태였습니다.
bitcoind=127.0.0.1:8332
rpcuser=사용자이름
rpcpassword=강력한비밀번호
db_mem=6144
tcp=0.0.0.0:51001
ssl=0.0.0.0:51002
peering=false
max_clients=20
처음에는 설정 항목이 많아 보였지만, 하나씩 나누어 보면 역할이 비교적 명확했습니다.
bitcoind 설정
bitcoind=127.0.0.1:8332
Fulcrum이 연결할 Bitcoin Core RPC 주소입니다.
이번 구성에서는 Bitcoin Core와 Fulcrum이 같은 NAS에서 host 모드로 실행되고 있기 때문에 localhost 주소를 사용했습니다.
구조는 다음과 같습니다.

여기서 8332는 Bitcoin Core RPC 포트입니다.
이 포트는 외부 공개용이 아닙니다. Fulcrum처럼 내부 서비스가 Bitcoin Core와 통신하기 위해 사용하는 포트입니다.
따라서 외부 인터넷에 열어두면 안 됩니다.
rpcuser / rpcpassword
rpcuser=사용자이름
rpcpassword=강력한비밀번호
Bitcoin Core RPC 인증 계정입니다.
Fulcrum은 이 계정으로 Bitcoin Core에 접속합니다.
2편에서 Bitcoin Core의 bitcoin.conf에도 같은 값이 들어갔습니다.
즉, 두 설정이 서로 맞아야 합니다.
Bitcoin Core 쪽:
rpcuser=사용자이름
rpcpassword=강력한비밀번호
Fulcrum 쪽:
rpcuser=사용자이름
rpcpassword=강력한비밀번호
이 값이 다르면 Fulcrum은 Bitcoin Core RPC에 연결하지 못합니다.
이 값은 절대 외부에 공개하면 안 됩니다.
블로그에 설정 예시나 스크린샷을 올릴 때도 반드시 마스킹하는 것이 좋습니다.
db_mem 설정
db_mem=6144
Fulcrum이 데이터베이스 작업에 사용할 메모리 크기입니다.
쉽게 말하면 Fulcrum 인덱싱 작업에 사용할 메모리라고 이해하면 됩니다.
값을 크게 설정하면 인덱싱 작업에서 디스크 접근을 줄이고 성능에 도움이 될 수 있습니다.
하지만 메모리를 많이 사용하기 때문에 NAS 전체 메모리 상황을 고려해야 합니다.
제 경우에는 RAM을 18GB로 업그레이드한 상태였기 때문에 6144로 설정했습니다. 즉, 약 6GB 정도를 Fulcrum DB 작업에 사용할 수 있도록 설정한 것입니다.
메모리가 적은 환경에서는 이 값을 너무 크게 잡으면 다른 서비스에 영향을 줄 수 있습니다.
tcp 설정
tcp=0.0.0.0:51001
Fulcrum이 TCP 방식으로 Electrum 클라이언트 접속을 받을 포트입니다.
Electrum 서버는 보통 TCP와 SSL 연결을 지원합니다.
TCP 연결은 암호화되지 않은 연결입니다. 내부 네트워크에서 테스트용으로 사용할 수 있지만, 외부 접속을 고려한다면 SSL 연결을 사용하는 것이 더 적절하다고 느꼈습니다.
이번 구성에서는 TCP 포트를 51001로 사용했습니다.
일반적으로 Electrum 서버는 50001을 많이 사용하지만, 반드시 그 포트만 사용해야 하는 것은 아닙니다.
ssl 설정
ssl=0.0.0.0:51002
Fulcrum이 SSL 방식으로 Electrum 클라이언트 접속을 받을 포트입니다.
이번 구성에서는 SSL 포트를 51002로 사용했습니다.
SSL 연결은 암호화된 연결입니다.
BlueWallet이나 Electrum 같은 지갑을 연결할 때 SSL 포트를 사용하는 구성이 일반적으로 더 적절합니다.
이 설정을 사용하려면 앞에서 환경 변수로 지정한 인증서와 키 파일도 필요합니다.
SSL_CERTFILE=/data/fulcrum.crt
SSL_KEYFILE=/data/fulcrum.key
즉, Fulcrum은 /data/fulcrum.crt와 /data/fulcrum.key 파일을 이용해 SSL 연결을 제공합니다.
특히 fulcrum.key는 SSL 개인키 파일이므로 외부에 공개하면 안 됩니다.
peering=false
peering=false
Fulcrum의 peer 기능을 비활성화하는 설정입니다.
처음에는 peer 기능이 무엇인지 바로 이해하기 어려웠습니다.
Fulcrum은 다른 Electrum 서버와 peer 정보를 교환하는 기능을 지원합니다.
하지만 이번 구성은 공개 Electrum 서버 운영이 아니라, 개인 NAS에서 내 지갑 연결을 위한 서버를 운영하는 목적이었습니다.
그래서 peer 기능은 사용하지 않았습니다.
정리하면 다음과 같습니다.
공개 Electrum 서버 운영
→ peering 기능을 고려할 수 있음
개인 지갑 연결용 서버
→ peering=false로 단순하게 구성 가능
저는 개인 서버 운영 목적이었기 때문에 peering=false로 설정했습니다.
max_clients 설정
max_clients=20
동시에 접속할 수 있는 클라이언트 수를 제한하는 설정입니다.
예를 들어 다음과 같은 지갑들이 Fulcrum에 접속할 수 있습니다.
- BlueWallet
- Electrum
- Nunchuk
개인 NAS 환경에서는 많은 사용자가 동시에 접속하는 구조가 아니기 때문에 너무 큰 값을 줄 필요는 없다고 느꼈습니다.
max_clients=20 정도면 개인 사용 목적에서는 충분하다고 판단했습니다.
클라이언트 수를 제한하면 불필요하게 많은 연결이 들어오는 상황을 어느 정도 줄이는 데 도움이 될 수 있습니다.
Bitcoin Core RPC 연결 구조
Fulcrum 설치에서 가장 중요한 것은 Bitcoin Core RPC 연결입니다.
RPC는 Remote Procedure Call의 줄임말입니다.
이름은 어렵지만, 쉽게 말하면 프로그램끼리 명령과 응답을 주고받는 통신 방식입니다.
이번 구성에서는 Fulcrum이 Bitcoin Core에게 이런 요청을 합니다.
- 현재 블록 높이가 어떻게 되는지
- 특정 블록 정보가 무엇인지
- 특정 거래 정보가 무엇인지
- txindex를 통해 거래를 조회할 수 있는지
그리고 Bitcoin Core는 Fulcrum에게 필요한 데이터를 제공합니다.
구조는 아래와 같습니다.

이 RPC 연결이 정상적으로 되어야 Fulcrum 인덱싱도 진행됩니다.
RPC는 외부에 공개하지 않는 것이 중요하다
Bitcoin Core RPC는 외부 접속용 포트가 아닙니다.
RPC는 Bitcoin Core를 제어하고 조회할 수 있는 인터페이스입니다.
따라서 외부 인터넷에 공개하면 보안상 위험할 수 있습니다.
2편에서 Bitcoin Core는 아래처럼 설정했습니다.
rpcbind=127.0.0.1:8332
rpcallowip=127.0.0.1
이 설정은 RPC를 localhost에서만 사용하도록 제한하는 의미입니다.
이번 Fulcrum 구성에서는 같은 NAS 내부에서 host 모드로 통신하기 때문에 이 구조가 잘 맞았습니다.
즉:
Bitcoin Core RPC
→ 외부 공개하지 않음
Fulcrum
→ 같은 NAS 내부에서 localhost로 연결
이렇게 구성했습니다.
이 부분은 운영하면서 가장 중요하게 느꼈던 보안 원칙 중 하나입니다.
처음에는 연결 구조를 이해하는 데 시간이 필요했다
Fulcrum 설치 과정에서 가장 시간이 걸렸던 부분은 단순히 컨테이너를 만드는 것이 아니라, Bitcoin Core와 Fulcrum이 서로 어떻게 연결되는지 이해하는 과정이었습니다.
처음에는 Fulcrum도 Docker 컨테이너로 실행하면 자동으로 Bitcoin Core 데이터를 읽어오는 구조라고 생각했습니다.
하지만 실제로는 몇 가지 조건이 맞아야 했습니다.
- Bitcoin Core가 정상 동기화되어 있어야 함
- txindex=1이 활성화되어 있어야 함
- Bitcoin Core RPC가 정상 동작해야 함
- Fulcrum 설정 파일의 RPC 계정이 Bitcoin Core와 일치해야 함
- Docker 네트워크 구조가 맞아야 함
이 중 하나라도 맞지 않으면 Fulcrum이 정상적으로 연결되지 않을 수 있었습니다.
RPC 연결 확인
가장 먼저 확인이 필요했던 부분은 RPC 연결이었습니다.
Fulcrum은 Bitcoin Core 데이터를 직접 읽기 위해 RPC로 Bitcoin Core에 접속합니다.
처음에는 Fulcrum 컨테이너만 실행하면 자동으로 연결되는 줄 알았지만, 실제로는 fulcrum.conf에 Bitcoin Core RPC 주소와 계정 정보를 정확히 입력해야 했습니다.
예를 들면 아래 설정이 중요했습니다.
bitcoind=127.0.0.1:8332
rpcuser=사용자이름
rpcpassword=강력한비밀번호
여기서 rpcuser, rpcpassword가 Bitcoin Core의 bitcoin.conf에 입력한 값과 다르면 연결이 되지 않습니다.
즉, Fulcrum 쪽 설정과 Bitcoin Core 쪽 설정이 서로 맞아야 합니다.
txindex 완료 여부 확인
Fulcrum을 연결하기 전에는 Bitcoin Core의 txindex가 정상적으로 활성화되어 있는지도 확인해야 합니다.
2편에서 정리한 것처럼 txindex=1은 전체 트랜잭션 인덱스를 생성하는 설정입니다. 이 과정이 완료되어야 Fulcrum이 필요한 거래 정보를 안정적으로 조회할 수 있습니다.
Bitcoin Core 로그에서 아래와 같은 메시지를 확인하면 도움이 됩니다.
txindex is enabled at height ...
이 로그가 보이면 txindex가 활성화된 상태로 볼 수 있습니다.
localhost와 host 네트워크 이해
Fulcrum 연결에서 가장 헷갈렸던 부분은 127.0.0.1의 의미였습니다.
일반적으로 127.0.0.1은 자기 자신을 의미합니다.
하지만 Docker bridge 모드에서는 컨테이너 내부의 127.0.0.1이 NAS가 아니라 컨테이너 자기 자신을 가리킬 수 있습니다.
반면 이번 구성처럼 Bitcoin Core와 Fulcrum을 모두 host 모드로 실행하면, Fulcrum에서 127.0.0.1:8332로 Bitcoin Core RPC에 접근하는 구조를 더 단순하게 이해할 수 있었습니다.
물론 host 모드가 항상 정답이라는 뜻은 아닙니다. bridge 모드로도 구성할 수 있습니다.
다만 초보자 입장에서는 이번 구조가 더 직관적으로 느껴졌습니다.
Bitcoin Core 동기화 완료 여부
Fulcrum은 Bitcoin Core 데이터를 기반으로 동작합니다.
그래서 Bitcoin Core가 아직 초기 동기화 중이라면 Fulcrum도 정상적으로 인덱싱을 완료할 수 없습니다.
처음에는 Bitcoin Core 컨테이너가 실행 중이면 바로 Fulcrum을 붙일 수 있을 것이라고 생각했습니다.
하지만 실제로는 다음 과정이 끝나야 Fulcrum이 안정적으로 따라갈 수 있었습니다.
- 블록 다운로드
- 블록 검증
- txindex 생성
그래서 Bitcoin Core 로그에서 아래와 같은 내용을 먼저 확인하는 것이 좋았습니다.
Leaving InitialBlockDownload
이 로그는 Bitcoin Core가 초기 블록 다운로드 상태를 벗어났다는 의미입니다.
즉, Fulcrum을 본격적으로 연결하기 전에는 Bitcoin Core가 최신 블록까지 거의 따라잡았는지 확인하는 과정이 필요했습니다.
인증 계정 확인
또 하나 주의해야 할 부분은 RPC 인증 계정입니다.
Bitcoin Core의 bitcoin.conf에는 아래와 같은 설정이 들어갑니다.
rpcuser=사용자이름
rpcpassword=강력한비밀번호
그리고 Fulcrum의 fulcrum.conf에도 같은 값이 들어가야 합니다.
rpcuser=사용자이름
rpcpassword=강력한비밀번호
처음에는 이 값이 단순 로그인 정보 정도로만 보였지만, 실제로는 Fulcrum이 Bitcoin Core RPC에 접속할 때 꼭 필요한 인증 정보였습니다.
하나라도 다르면 Fulcrum은 Bitcoin Core에 연결하지 못합니다.
또한 이 값은 외부에 공개되면 안 됩니다.
블로그에 스크린샷이나 설정 예시를 올릴 때도 반드시 마스킹하는 것이 좋습니다.
결국 핵심은 연결 구조를 이해하는 것이었다
Fulcrum 설치에서 중요한 것은 단순히 컨테이너를 실행하는 것만이 아니었습니다.
핵심은 아래 구조를 정확히 이해하는 것이었습니다.
Bitcoin Core
→ 블록체인 저장 및 검증
Bitcoin Core RPC
→ Fulcrum이 Bitcoin Core와 통신하는 통로
Fulcrum
→ Electrum 지갑을 위한 인덱스 서버
Electrum / BlueWallet
→ Fulcrum을 통해 잔액과 거래 내역 조회
이 구조를 이해하고 나니 설정 파일의 각 항목이 왜 필요한지도 조금씩 이해되기 시작했습니다.
Fulcrum 인덱싱 시작
Fulcrum을 처음 실행하면 바로 사용할 수 있는 상태가 되는 것은 아닙니다.
Fulcrum은 Bitcoin Core 데이터를 읽어 자체 인덱싱 작업을 시작합니다.
즉, Fulcrum도 별도의 준비 시간이 필요합니다.
Fulcrum 인덱싱 과정에서는 다음 작업이 진행됩니다.
- Bitcoin Core 연결
- 블록 데이터 확인
- 거래 데이터 읽기
- 주소별 인덱스 생성
- Electrum 조회용 데이터베이스 생성
- 최신 블록까지 따라잡기
처음에는 Bitcoin Core 동기화가 끝났으니 Fulcrum은 금방 끝날 줄 알았습니다.
하지만 실제로는 Fulcrum도 꽤 많은 인덱싱 작업을 수행했습니다.
특히 HDD 접근량이 많았고, CPU와 메모리 사용량도 어느 정도 증가했습니다.
Bitcoin Core 초기 동기화와는 또 다른 느낌의 작업이 계속 진행되는 느낌이었습니다.
Fulcrum 인덱싱 시간에 대해
Fulcrum 인덱싱에 걸린 정확한 전체 시간은 별도로 기록해두지 못했습니다.
다만 실제 운영 로그를 보면, Fulcrum은 DB 로딩 후 Bitcoin Core와 정상 연결되고, 이후 새 블록을 계속 처리하는 상태로 진입했습니다.
제 환경에서는 Bitcoin Core 초기 동기화와 txindex 생성, 그리고 Fulcrum 인덱싱까지 포함하면 전체 구축 과정은 짧은 작업이라기보다 며칠에 걸쳐 상태를 확인하며 진행한 작업에 가까웠습니다.
특히 Fulcrum은 처음 실행 시 Bitcoin Core 데이터를 기반으로 자체 인덱스를 생성하기 때문에 저장장치 성능, CPU, 메모리, 기존 Bitcoin Core 동기화 상태에 따라 소요 시간이 크게 달라질 수 있습니다.
실제로 Fulcrum은 자체 인덱스 데이터베이스를 생성하기 때문에 별도의 저장 공간을 꽤 많이 사용합니다.
제 환경에서 확인한 Fulcrum 데이터 폴더는 약 184GB 정도를 사용하고 있었습니다. 다만 이 용량은 확인 시점과 설정, Bitcoin Core 동기화 상태, Fulcrum 인덱싱 상태에 따라 달라질 수 있습니다.

그래서 Fulcrum 설치 후 바로 지갑 연결이 되지 않더라도, 먼저 로그를 확인하면서 현재 인덱싱이 진행 중인지 살펴보는 것이 중요했습니다.
로그에서 확인할 내용
Fulcrum도 로그 확인이 중요했습니다.
처음에는 화면만 보고는 현재 어떤 작업이 진행 중인지 알기 어려웠습니다.
하지만 로그를 보면 Fulcrum이 Bitcoin Core에 연결되었는지, 인덱싱이 진행 중인지, Electrum 서버가 열렸는지 확인할 수 있습니다.
Bitcoin Core 연결 성공 로그
Connected to bitcoind
이 로그는 Fulcrum이 Bitcoin Core RPC 연결에 성공했다는 의미입니다.
가장 기본이 되는 연결입니다.
이 로그가 보이면 Fulcrum이 Bitcoin Core와 통신하기 시작했다고 볼 수 있습니다.
Bitcoin Core 대기 또는 따라잡기 로그
catching up to daemon
이 로그는 Fulcrum이 Bitcoin Core 상태를 따라잡고 있다는 의미입니다.
여기서 daemon은 Bitcoin Core의 bitcoind를 의미한다고 이해하면 됩니다.
즉:
Fulcrum
→ Bitcoin Core 상태를 따라잡는 중
입니다.
블록 처리 및 검증 로그
verified blocks
또는 블록 처리와 관련된 메시지가 보일 수 있습니다.
이런 로그는 Fulcrum이 블록 데이터를 읽고 검증하며 인덱싱을 진행 중이라는 의미로 볼 수 있습니다.
Electrum 서버 활성화 로그
TCP server listening
SSL server listening
이 로그가 보이면 Fulcrum이 Electrum 클라이언트 연결을 받을 준비가 되었다는 의미입니다.
즉, BlueWallet, Electrum, Nunchuk 같은 지갑이 Fulcrum 서버에 연결할 수 있는 상태에 가까워진 것입니다.
특히 SSL 연결을 사용할 계획이라면 아래 로그가 중요합니다.
SSL server listening
이 로그가 보여야 SSL 포트가 정상적으로 열렸다고 볼 수 있습니다.
Fulcrum 인덱싱은 생각보다 오래 걸렸다
처음에는 Fulcrum이 Bitcoin Core 옆에 붙는 작은 보조 프로그램 정도라고 생각했습니다.
하지만 실제로 운영해보니 Fulcrum도 꽤 중요한 작업을 수행하고 있었습니다.
Fulcrum은 단순히 Bitcoin Core에 연결만 하는 것이 아니라, Electrum 지갑이 빠르게 조회할 수 있도록 별도 데이터베이스를 만듭니다.
이 과정에서 다음 작업이 진행됩니다.
- 블록 데이터 읽기
- 거래 데이터 분석
- 주소별 인덱스 생성
- 지갑 조회용 데이터 구조 생성
- 최신 블록 추적
그래서 인덱싱 시간이 생각보다 오래 걸렸습니다.
특히 HDD 기반 NAS 환경에서는 디스크 접근이 많아지는 느낌이 있었습니다.
Bitcoin Core를 설치할 때도 시간이 오래 걸렸지만, Fulcrum 인덱싱도 별도의 긴 작업으로 느껴졌습니다.
따라서 Fulcrum 설치 후 바로 지갑을 연결하려고 하기보다, 로그를 확인하면서 인덱싱이 충분히 진행될 때까지 기다리는 것이 좋다고 느꼈습니다.
Electrum / BlueWallet 연결 전 준비
Fulcrum 컨테이너가 실행되었다고 해서 바로 지갑 연결이 완료되는 것은 아닙니다.
먼저 아래 사항을 확인하는 것이 좋습니다.
- Bitcoin Core가 최신 블록까지 동기화되어 있는지
- Fulcrum이 Bitcoin Core RPC에 정상 연결되었는지
- Fulcrum 인덱싱이 충분히 진행되었는지
- TCP 또는 SSL 포트가 정상적으로 열렸는지
- SSL 인증서와 키 파일이 준비되어 있는지
- 지갑에서 입력할 서버 주소와 포트를 알고 있는지
예를 들어 이번 구성에서는 Fulcrum SSL 포트를 다음처럼 사용했습니다.
51002
BlueWallet이나 Electrum에서 개인 Electrum 서버를 입력할 때 이 포트를 사용하게 됩니다.
다만 외부 접속을 구성할 때는 보안과 네트워크 구조를 충분히 고려해야 합니다.
개인적으로는 처음부터 외부 공개를 크게 열기보다, 내부 네트워크 또는 VPN 환경에서 먼저 정상 동작을 확인하는 편이 안전하다고 느꼈습니다.
Keystone + BlueWallet + Fulcrum 구조 다시 이해하기
이번 Fulcrum 설치까지 완료하면 전체 구조가 조금 더 명확해집니다.
각 역할은 다음과 같습니다.
Keystone
→ 개인키 보관 및 트랜잭션 서명
BlueWallet
→ 거래 생성, 잔액 확인, 거래 전송
Fulcrum
→ BlueWallet이 빠르게 조회할 수 있도록 Electrum 서버 역할
Bitcoin Core
→ 실제 블록체인 저장 및 검증
구조를 다시 정리하면 아래와 같습니다.

물론 Keystone은 인터넷에 직접 연결되는 구조가 아니라, QR 기반으로 거래에 서명하는 하드웨어 지갑 역할을 합니다.
즉:
- Bitcoin Core → 실제 블록체인 데이터
- Fulcrum → 지갑 조회 서버
- BlueWallet → 사용자 인터페이스와 거래 생성
- Keystone → 개인키 보관과 서명
이렇게 역할을 나누어 이해하면 전체 구조가 훨씬 쉽게 보였습니다.
실제 운영하면서 느낀 점
Fulcrum은 Bitcoin Core보다 조금 더 이해하는 데 시간이 필요했습니다.
Bitcoin Core는 “블록체인을 다운로드하고 검증하는 프로그램”이라고 이해할 수 있었지만, Fulcrum은 그보다 한 단계 더 응용된 구조였습니다.
특히 다음 개념을 이해하는 데 시간이 걸렸습니다.
- Electrum 서버
- RPC 연결
- localhost
- host 네트워크
- txindex
- SSL 포트
- Fulcrum 인덱싱 DB
하지만 하나씩 연결해보니 전체 흐름이 보이기 시작했습니다.
Bitcoin Core가 비트코인 네트워크와 직접 연결되는 기반이라면, Fulcrum은 내 지갑이 그 데이터를 편리하게 조회할 수 있도록 도와주는 중간 서버였습니다.
실제로 BlueWallet과 연결할 준비가 되면서 NAS가 단순 저장장치가 아니라 개인 비트코인 인프라처럼 느껴졌습니다.
다음 글 예고
이번 글에서는 Synology NAS에 Fulcrum을 설치하고 Bitcoin Core와 연결하는 과정을 정리했습니다.
다음 글에서는 실제 지갑 연결 과정을 정리해보려고 합니다.
예를 들면 다음 내용을 다룰 수 있습니다.
- BlueWallet에서 내 Fulcrum 서버 연결하기
- Electrum 지갑에서 개인 서버 설정하기
- SSL 연결 확인하기
- Keystone + BlueWallet 구조에서 Fulcrum을 활용하는 방법
- 내부 네트워크 또는 VPN 환경에서 안전하게 연결하는 방법
특히 다음 글에서는 이번 글에서 구성한 Fulcrum 서버를 BlueWallet이나 Electrum 지갑에서 실제로 어떻게 연결하는지 확인해볼 예정입니다.
마무리
처음에는 Fulcrum이 단순 보조 프로그램 정도라고 생각했습니다.
하지만 실제로 설치하고 운영해보니 Fulcrum은 개인 비트코인 노드 환경에서 꽤 중요한 역할을 하고 있었습니다.
Bitcoin Core가 블록체인을 저장하고 검증하는 역할이라면, Fulcrum은 그 데이터를 지갑이 빠르게 조회할 수 있도록 정리하는 역할을 합니다.
실제로 운영해보면서 특히 아래 내용을 많이 느꼈습니다.
- Bitcoin Core만으로 지갑 조회 구조가 완성되는 것은 아니다
- Electrum 계열 지갑 연결에는 Fulcrum 같은 서버가 필요하다
- RPC 연결 구조와 인증 계정 일치가 중요하다
- txindex와 초기 인덱싱 상태를 확인해야 한다
- host 네트워크 구조는 초보자에게 더 단순하게 느껴질 수 있다
- Fulcrum도 자체 인덱싱 시간이 필요하다
- 로그 확인은 문제 해결의 핵심이다
처음에는 복잡해 보였지만, 하나씩 구조를 이해하다 보니 Bitcoin Core와 Fulcrum이 각각 어떤 역할을 하는지 조금씩 명확해졌습니다.
저처럼 Synology NAS 환경에서 직접 비트코인 풀노드를 운영해보고 싶은 분들에게 이 과정이 조금이나마 참고가 되었으면 좋겠습니다.
이 글은 개인적인 설치 경험과 학습 내용을 바탕으로 정리한 참고용 글입니다.
NAS 환경, 저장 공간, 네트워크 구성에 따라 실제 성능과 운영 방식은 달라질 수 있으며, 중요한 데이터는 반드시 별도로 백업 후 진행하시기 바랍니다.