Запуск повного вузла на Raspberry Pi 4 (Zebra + Zallet)
Перенесено з оригінального посібника на основі zcashd. zcashd досяг автоматичної зупинки через End-of-Support 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 ГБ RAM або більше)
- Карта 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, тому фактичний час синхронізації на реальному Raspberry 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
Пакети Zallet поки що не опубліковані на crates.io на етапі alpha, тому встановлення безпосередньо з git-репозиторію є підтримуваним методом без Docker.
Крок 6: Налаштуйте Zallet
Створіть zallet.toml у вибраному каталозі даних (наприклад, /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)
Буде виведено публічний ключ і автоматично згенеровану парольну фразу — збережіть цю парольну фразу; без неї ви не зможете відновити файл ідентичності.
Крок 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 ГБ RAM — цілком розумна стартова точка; стежте за станом через htop і розгляньте варіант Pi 4 з 8 ГБ, якщо помітите активне використання swap.
Додаткові ресурси
Якщо цей посібник був для вас корисним, розгляньте можливість підтримати ZecHub: [вставте актуальну shielded-адресу для пожертв ZecHub із zechub.wiki/donation — її тут не включено, оскільки я не зміг перевірити, що вона досі актуальна].