Запуск полного узла на Raspberry Pi 4 (Zebra + Zallet)
Перенесено из оригинального руководства на базе zcashd. zcashd достиг автоматической остановки по окончании поддержки 18 июля 2026 года, поэтому теперь в этом руководстве используются Zebra (текущий полный узел, поддерживаемый Zcash Foundation) и Zallet (кошелёк, созданный для замены встроенного кошелька zcashd).
Что вы узнаете
- Как записать и настроить Ubuntu Server 22.04+ (64-bit) на Raspberry Pi 4 для работы без монитора
- Как установить и запустить Zebra, либо через Docker, либо с помощью готового бинарного файла
- Как установить, настроить и инициализировать Zallet, включая настройку шифрования кошелька
- Как при необходимости перенести существующую конфигурацию/кошелёк zcashd в Zallet
Что изменилось по сравнению со старым руководством
Предыдущая версия этого руководства описывала нативную компиляцию zcashd на Pi 4 — однопоточная компиляция занимала 3–4 часа, потому что у Pi 4 недостаточно памяти для параллельной сборки (-j$(nproc)). И Zebra, и Zallet теперь поставляются с официальными готовыми бинарными файлами ARM64 и Docker-образами, поэтому в большинстве случаев вам больше не нужно компилировать что-либо из исходного кода прямо на самом Pi.
Предварительные требования
- Raspberry Pi 4 (рекомендуется 4 ГБ ОЗУ или больше)
- Карта microSD (32 ГБ+) для ОС
- Внешний SSD/HDD с поддержкой USB 3.0 — Zebra требуется примерно 300 ГБ для кэшированных данных Mainnet, и этот объём со временем растёт, поэтому не пытайтесь запускать всё это только с карты microSD
- Компьютер со слотом для карты microSD (для записи образа ОС)
- Проводное Ethernet-подключение или Wi-Fi
- Базовые навыки работы с командной строкой по SSH
Шаг 1: Запишите Ubuntu Server 22.04+ (64-bit)
Готовые бинарные файлы и Docker-образы Zebra и Zallet требуют glibc 2.34+, а это означает Ubuntu Server 22.04 или новее (64-bit/aarch64).
- Установите Raspberry Pi Imager на ваш основной компьютер.
- Вставьте карту microSD.
- Выберите Other general-purpose OS → Ubuntu → Ubuntu Server 22.04 LTS (64-bit) (или новее).
- Используйте расширенные настройки Imager (значок шестерёнки), чтобы заранее задать hostname, включить SSH и при необходимости указать учётные данные Wi-Fi для первого запуска без монитора.
- Запишите образ, вставьте карту, включите Pi.
- Подключитесь по SSH:
ssh <username>@<pi-hostname-or-ip>
Шаг 2: Подключите и смонтируйте внешнее хранилище
- Подключите внешний SSD/HDD через USB 3.0.
- Определите устройство:
lsblk
- Отформатируйте (если оно новое) и смонтируйте его, например, в
/mnt/zcash-data, используя стандартную настройку mkfs/fstab, чтобы оно автоматически монтировалось после перезагрузки.
Шаг 3: Обновите систему
Code-highlight
sudo apt update && sudo apt full-upgrade -y
sudo reboot
Шаг 4: Установите и запустите Zebra
Вариант A — Docker (рекомендуется)
Code-highlight
sudo apt install -y docker.io
sudo usermod -aG docker $USER # log out/in after this
docker run -d \
--name zebra \
-p 8233:8233 \
-v /mnt/zcash-data/zebra:/home/zebra/.cache/zebra \
zfnd/zebra:latest
Проверка хода работы: docker logs -f zebra
Вариант B — Готовый бинарный файл через cargo binstall
Code-highlight
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
cargo install cargo-binstall
cargo binstall zebrad
zebrad start
Это устанавливает готовый бинарный файл aarch64 — компиляция не требуется.
О времени синхронизации: ожидайте, что это займёт некоторое время — часто упоминаемые показатели первой синхронизации (примерно 2 часа) основаны на эталонном оборудовании, которое мощнее CPU Pi 4, поэтому фактическое время синхронизации на реальном Pi 4, скорее всего, будет больше.
Шаг 5: Установите Zallet
Сейчас Zallet находится в стадии alpha — ожидайте несовместимых изменений и пока не рассматривайте его как готовое к промышленному использованию решение для хранения значительных средств.
Вариант A — Docker (рекомендуется)
Code-highlight
docker pull zodlinc/zallet:latest
Этот образ поддерживает ARM64 (через сборку на базе Nix) и запускается из минимальной файловой системы без оболочки — явно передавайте пути конфигурации и данных через --datadir и монтирование томов (см. Шаг 6).
Вариант B — Сборка из исходного кода
Code-highlight
# Requires Rust 1.85+ (see Step 4B for rustup install)
sudo apt install -y clang libclang-dev protobuf-compiler
cargo install --locked --git https://github.com/zcash/wallet.git
Во время alpha-фазы crates Zallet ещё не опубликованы в crates.io, поэтому установка напрямую из git-репозитория является поддерживаемым методом без Docker.
Шаг 6: Настройте Zallet
Создайте zallet.toml в выбранном вами datadir (например, /mnt/zcash-data/zallet):
Code-highlight
[builder.limits]
[consensus]
network = "main"
[database]
[external]
[features]
as_of_version = "0.0.0"
[features.deprecated]
[features.experimental]
[indexer]
validator_address = "127.0.0.1:8232" # Zebra's JSON-RPC endpoint
[keystore]
[note_management]
[rpc]
bind = ["127.0.0.1:SOMEPORT"]
Измените validator_address, если Zebra работает на другом хосте/порту, и настройте validator_cookie_auth/validator_user/validator_password в разделе [indexer] в соответствии с вашей настройкой аутентификации Zebra RPC.
Переходите с zcashd? Если у вас всё ещё есть старый zcash.conf:
Code-highlight
zallet migrate-zcash-conf --datadir /path/to/old/zcashd/datadir -o /mnt/zcash-data/zallet/zallet.toml
Шаг 7: Настройте шифрование кошелька
Zallet шифрует весь ключевой материал с помощью age/rage:
Code-highlight
cargo install rage
rage -p -o /mnt/zcash-data/zallet/encryption-identity.txt <(rage-keygen)
Это выведет открытый ключ и автоматически сгенерированную парольную фразу — сохраните парольную фразу; без неё вы не сможете восстановить файл identity.
Шаг 8: Инициализируйте и запустите кошелёк
Code-highlight
zallet -d /mnt/zcash-data/zallet init-wallet-encryption
zallet -d /mnt/zcash-data/zallet generate-mnemonic
Запускайте generate-mnemonic только один раз, если только вы специально не хотите иметь несколько независимых корней для расходования средств.
Code-highlight
zallet -d /mnt/zcash-data/zallet start
Шаг 9: Перенос существующего кошелька zcashd (необязательно)
Code-highlight
zallet -d /mnt/zcash-data/zallet migrate-zcashd-wallet --zcashd-datadir /path/to/old/zcashd/datadir
Для этого требуется утилита db_dump (собранная с Berkeley DB 6.2.23) — из системной установки или из локальной сборки исходного кода zcashd. Если у вас больше не установлен zcashd, это единственный шаг миграции, который пока ещё не полностью самодостаточен в Zallet.
Шаг 10: Убедитесь, что всё работает
Code-highlight
zallet -d /mnt/zcash-data/zallet help
Убедитесь, что кошелёк отвечает, а после завершения синхронизации Zebra — что балансы/адреса соответствуют ожиданиям.
Устранение неполадок
- Проблемы сборки/работы Zebra на ARM: если вы собираете из исходного кода, установите Rust toolchain для ARM — запуск инструментов сборки x86_64 на ARM-оборудовании будет заметно медленнее, согласно собственной документации Zebra.
- Заполняется хранилище: объём Zebra около 300 ГБ продолжает расти — заранее закладывайте запас места.
- Ошибки прав доступа Docker: выйдите из системы и войдите снова после добавления пользователя в группу
docker, либо временно используйте sudo.
- У контейнера Zallet нет оболочки: официальный образ
zodlinc/zallet по задумке построен from-scratch — всегда явно передавайте --datadir и монтируйте каталог данных как том.
Примечания по оборудованию по сравнению со старым руководством по zcashd
Zebra и Zallet в целом менее требовательны к CPU на этапе настройки, чем была компиляция zcashd, поскольку вы запускаете готовые бинарные файлы/контейнеры. 4 ГБ ОЗУ — разумная отправная точка; следите за системой с помощью htop и рассмотрите вариант Pi 4 с 8 ГБ, если видите активное использование swap.
Дополнительные ресурсы
Если это руководство оказалось полезным, рассмотрите возможность поддержать ZecHub: [вставьте текущий shielded-адрес для пожертвований ZecHub с zechub.wiki/donation — здесь он не включён, поскольку я не смог проверить, что он всё ещё актуален].