Lightning-нода LND с Neutrino на небольшом VPS без bitcoind
Установка LND на Ubuntu 24.04 / Debian 12 с лёгким клиентом Neutrino: проверка manifest и подписи, lnd.conf, служба systemd, создание кошелька и seed, бэкап channel.backup, первый канал.

LND — одна из самых распространённых реализаций Lightning Network. Обычно она работает рядом с локальной нодой Bitcoin, но у неё есть встроенный лёгкий клиент Neutrino: он скачивает заголовки блоков и компактные фильтры вместо всей цепочки. Поэтому LND запускается на маленьком сервере без bitcoind. Ниже — установка, кошелёк и подготовка к первому каналу.
Что нужно
- Сервер на tanaka.host: 1 vCPU, 2 ГБ памяти, 32 ГБ диска.
- Ubuntu 24.04 или Debian 12, доступ по SSH под root — Подключение по SSH.
- Немного BTC для открытия каналов.
Lightning-нода — это горячий кошелёк. Приватные ключи лежат на сервере и должны быть онлайн, чтобы подписывать обновления каналов. Кто получит root на VPS — сможет увести средства. Держите только то, что готовы потерять, сначала закройте сервер (вход по ключу, UFW, fail2ban) и не используйте пароль root повторно.
1. Загрузка и проверка LND
На странице релизов LND выберите последнюю версию без пометки Pre-release. Переменная — с префиксом v и суффиксом -beta, ровно как в названии релиза:
VERSION=v0.21.3-beta
cd /tmp
wget https://github.com/lightningnetwork/lnd/releases/download/${VERSION}/lnd-linux-amd64-${VERSION}.tar.gz
wget https://github.com/lightningnetwork/lnd/releases/download/${VERSION}/manifest-${VERSION}.txt
Релиз подписывают несколько разработчиков, в ассетах лежат файлы manifest-ИМЯ-ВЕРСИЯ.sig. Выберите одного подписанта из списка (например, guggero или ziggie1984), скачайте его подпись и импортируйте ключ из репозитория LND:
SIGNER=ziggie1984
wget https://github.com/lightningnetwork/lnd/releases/download/${VERSION}/manifest-${SIGNER}-${VERSION}.sig
curl -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/scripts/keys/${SIGNER}.asc | gpg --import
gpg --verify manifest-${SIGNER}-${VERSION}.sig manifest-${VERSION}.txt
Ищите gpg: Good signature. Затем архив против подписанного манифеста:
sha256sum --ignore-missing --check manifest-${VERSION}.txt
Строка для lnd-linux-amd64-VERSION.tar.gz должна быть OK. Установка:
tar -xzf lnd-linux-amd64-${VERSION}.tar.gz
install -m 0755 -o root -g root -t /usr/local/bin lnd-linux-amd64-${VERSION}/lnd lnd-linux-amd64-${VERSION}/lncli
lnd --version
2. Пользователь и lnd.conf
LND работает под своим пользователем, данные — в /home/lnd/.lnd, это каталог по умолчанию на Linux:
useradd --create-home --shell /bin/bash lnd
sudo -u lnd mkdir -p /home/lnd/.lnd
sudo -u lnd nano /home/lnd/.lnd/lnd.conf
Поменяйте alias и IP:
[Application Options]
alias=MyLightningNode
listen=0.0.0.0:9735
externalip=YOUR_SERVER_IP
debuglevel=info
[Bitcoin]
bitcoin.mainnet=true
bitcoin.node=neutrino
[fee]
fee.url=https://nodes.lightning.computer/fees/v1/btc-fee-estimates.json
bitcoin.node=neutrinoпереключает LND на лёгкий бэкенд. Сменить потом Neutrino на полную ноду (или обратно) не получится — решайте сейчас.fee.url— внешняя оценка комиссий; по sample-конфигу LND для Neutrino на mainnet обязательна.externalipанонсирует ваш адрес, чтобы другие ноды могли открывать каналы к вам. Нужны только исходящие каналы — уберите.- gRPC (
10009) и REST (8080) по умолчанию на localhost. Наружу не выставляйте.
Порт пиров в брандмауэре:
ufw allow 9735/tcp
3. Служба systemd
/etc/systemd/system/lnd.service — по образцу юнита из репозитория LND, без зависимости от bitcoind:
[Unit]
Description=Lightning Network Daemon
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/lnd
ExecStop=/usr/local/bin/lncli stop
User=lnd
Group=lnd
Restart=on-failure
RestartSec=60
Type=notify
TimeoutStartSec=1200
TimeoutStopSec=3600
ProtectSystem=full
NoNewPrivileges=true
PrivateDevices=true
MemoryDenyWriteExecute=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now lnd
journalctl -u lnd -f
LND стартует и ждёт кошелёк. Выход из журнала — Ctrl+C.
4. Кошелёк и seed
Переключитесь на пользователя lnd, чтобы lncli нашёл сертификат и макаруны:
sudo -iu lnd
lncli create
- Пароль кошелька от 8 символов — он понадобится после каждого перезапуска.
- На вопрос про существующий seed ответьте
n, чтобы создать новый. - Passphrase для seed — по желанию; тогда для восстановления нужны и слова, и passphrase.
- LND выведет 24 слова. Запишите на бумаге, храните офлайн.
Seed сам по себе не восстановит всё. 24 слова возвращают ончейн-кошелёк. Средства в открытых каналах восстанавливаются из файла
~/.lnd/data/chain/bitcoin/mainnet/channel.backup, который LND обновляет при каждом открытии и закрытии канала. Регулярно копируйте его с сервера — см. Резервные копии VPS.
После перезагрузки кошелёк заблокирован:
sudo -iu lnd lncli unlock
Можно разблокировать автоматически через wallet-unlock-password-file, но тогда пароль лежит на том же сервере.
5. Синхронизация
Neutrino сначала скачивает все заголовки блоков и фильтров. Это гораздо меньше полной цепочки, но всё равно занимает время. Проверка:
sudo -iu lnd lncli getinfo
Ждите, пока synced_to_chain и synced_to_graph станут true. Память при этом остаётся низкой — потому и хватает 2 ГБ.
6. Пополнение и первый канал
Адрес для депозита и баланс:
sudo -iu lnd lncli newaddress p2wkh
sudo -iu lnd lncli walletbalance
Когда депозит подтвердится:
- Выберите пира — надёжную, хорошо связанную ноду; публичные обозреватели показывают ёмкость и аптайм.
lncli connect PUBKEY@HOST:9735.lncli openchannel --node_key PUBKEY --local_amt СУММА_В_САТОШИ. Многие ноды задают минимальный размер канала — проверьте их политику.lncli pendingchannelsпокажет транзакцию открытия,lncli listchannels— канал, когда он станет активным.
Открытие и закрытие канала — обычные транзакции Bitcoin с ончейн-комиссией. Первый канал даёт только исходящую ёмкость; чтобы принимать платежи, нужна входящая ликвидность — тратьте через канал или попросите пира открыть канал к вам.
Поддержка ноды
- Обновление: заново проверить релиз, заменить бинарники,
systemctl restart lnd, разблокировать кошелёк. - Сервер должен быть оплачен: офлайн-нода не может защищать свои каналы.
- Останавливать только
systemctl stop lnd, никогдаkill -9.
Если нужна нода, которая сама проверяет каждый блок, — pruned-нода Bitcoin Core.