Перейти к содержанию
  • записи
    4
  • комментариев
    27
  • просмотра
    209 973

Руководство по сборке собственного сервера Electrum


Денис Солдатов

135 133 просмотра

Руководство по сборке собственного сервера Electrum

Приветствую всех посетителей моего сайта! Если у Вас есть свободные ресурсы и Вы не равнодушны к развитию проекта Litecoin прошу Вас поддержать развитие проекта легковесного клиента Electrum и поддержании в актуальном состоянии и увеличении количества нод сервера Electrum, в целяхстабильности и безопасности сети Litecoin. Разработчикам и всем неравнодушным к проекту, огромная просьба присоединиться к бета-тестированию. Официальный топик находится здесь Litecoin Forum

Краткий обзор

Этот документ - простое руководство по установке запуску Вашего собственного сервера Elecrum на Linux. Оно преставляет собой серию шагов, которые Вы должны выполнить, чтобы получить рабочий сервер. Следующие два раздела описывают некоторые соглашения, которые мы используем в этом документе, а так же требования к аппаратным средствам, программному обеспечению и к знаниям и опыту.

Последняя версия этого документа доступна по адресу:

https://github.com/pooler/electrum-ltc-server/blob/master/HOWTO.md

Соглашения

В этом документе строки, запускающиеся со знака хеша (#) или знак доллара ($), содержат команды. Команды, запускающиеся с хеша, должны быть выполнены от пользователя root, команды, запускающиеся с доллара, должны быть выполнены обычным пользователем (в этом документе, мы предполагаем, что пользователя называют 'litecoin'). Мы также предполагаем, что litecoin пользователь имеет sudo права, таким образом, мы используем '$ sudo команда', когда в этом есть необходимость.

Строки, которые окружены знаками "меньше" и "больше" ( < и > ) должны быть заменены пользователем с чем-то необходимым. Например, необходимо заменить выбранный пользователем пароль. Не путайте эту нотацию с перенаправлением коммандной оболочки ('command < file' or 'command > file')!

apt-get install - предложение для установки требуемых зависимостей. Они соответствуют системе Ubuntu 13.10, но могут работать с Debian или ранее и более поздние версиями Ubuntu. Требования

  1. Знания и опыт. Вы должны быть знакомыми с командной строкой Linux и стандартными командами Linux. У Вас должно быть основное понимание git, пакетов Python. У Вас должно быть знание о том, как установить и сконфигурировать программное обеспечение на Вашем дистрибутиве Linux. Вам должны знать, как добавить команды к сценариям автозапуска своего дистрибутива. Если одна из команд, включенных в этот документ, не будет доступна или не выполнит задачу, описанную здесь, то Вы, как предполагается, устраните проблему самостоятельно и Вы сможете продолжать после этого работу с этим руководством.
    Программное обеспечение. Последний Linux 64-разрядный дистрибутив со следующим установленным программным обеспечением: python, easy_install, git, стандартная цепочка сборки C/C++. Вы должны будете иметь root доступ, чтобы иметь возможность установить другое программное обеспечение или библиотеки Python.
    Аппаратные средства. Самая легкая установка - сокращенный сервер с требованиями к пространству на диске приблизительно 4 Гбайт для базы данных elecrum. Однако, обратите внимание на то, что Вы также должны запустить litecoind и сохранить копию полной цепочки блоков (прим. автора перевода далее блокчейн), который составлял примерно 4 Гбайт в апреле 2014. Если у Вас меньше чем 2 Гбайт RAM, удостоверьтесь, что Вы ограничиваете litecoind 8 одновременными соединениями с сетью. Если у Вас есть больше ресурсов в запасе, Вы можете запустить сервер с более высоким пределом исторических транзакций за адрес. Скорость CPU важна, главным образом для начального импорта блокчейна, но также, если Вы планируете запустить общедоступный сервер Electrum, который смог бы обслуживать десятки параллельных запросов. Любой многоядерный x86 CPU ~2009 или более новый, кроме Atom, должен послужить для достижения хорошей производительности. У идеальной установки должно быть достаточно RAM, чтобы расположить и выполнять leveldb базу данных в tmpfs (например,/dev/shm).

Инструкции Шаг 1. Создание пользователя для запуска litecoind и сервера Electrum

Этот шаг опциональный, для лучшей безопасности и разделения ресурсов Я предлагаю, чтобы Вы создали отдельного пользователя только для выполненияlitecoind и Electrum. Мы будем также импользовать ~/bin директорию для размещение локально установленных файлов (можно так же использовать /usr/local/bin ). Мы должны скачать исходные файлы в ~/src директорию.

$ sudo adduser litecoin --disabled-password$ sudo apt-get install git# su - litecoin$ mkdir ~/bin ~/src$ echo $PATH

Если Вы не видете /home/litecoin/bin на выводе, Вы должны тогда добаить эту строку в .bashrc, .profile or .bash_profile, после выйти из системы и снова залогиниться:

PATH="$HOME/bin:$PATH"

Шаг 2. Скачиваем и устанавливаем Electrum

Мы должны скачать последнюю сборку Electrum server:

$ mkdir -p ~/electrum-server$ git clone https://github.com/pooler/electrum-ltc-server.git electrum-server

Шаг 3. Скачиваем litecoind

Более старые версии Электрума раньше требовали исправленной версии litecoind. Теперь дело обстоит иначе, так как последние версии litecoind поддерживают опцию 'txindex'. В настоящее время мы рекомендуем версию litecoind 0.8.6.2 stable.

Если Вы предпочитаете самостоятельную сборку демона litecoind, следуйте следующим инструкциям для Ubuntu (прим. автора перевода или обратитесь к статье на сайте Руководство по сборке и установке litecoin демона в Ubuntu):

# apt-get install make g++ python-leveldb libboost-all-dev libssl-dev libdb++-dev pkg-config libminiupnpc-dev git# su - litecoin$ cd ~/src && git clone https://github.com/litecoin-project/litecoin.git$ cd litecoin/src$ make -f makefile.unix$ strip litecoind$ cp -a ~/src/litecoin/src/litecoind ~/bin/litecoind

Шаг 4. Конфигурируем и запускаем litecoind

Чтобы разрешить Electrum "общаться" с litecoind, мы должны задать RPC имя пользователя и пароль для litecoind. Мы должны запустить litecoind и дождаться, когда загрузится блокчейн.

$ mkdir ~/.litecoin$ $EDITOR ~/.litecoin/litecoin.conf

Запишите это в litecoin.conf:

rpcuser=<имя пользователя>rpcpassword=<пароль>daemon=1txindex=1disablewallet=1

Если у Вас уже был установлен и работал litecoind и у Вас не был установлен параметр txindex=1, Вы должны переиндексировать блокчейн перед запуском

$ litecoind -reindex

Еслу у Вас новая установка litecoind - запустите litecoind:

$ litecoind

Пройдет некоторое время, пока litecoind соединится с сетью и начнет загрузку блоков. Вы можете следить за процессом:

$ litecoind getinfo

До запуска сервера electrum Ваш litecoind должен получить все блоки и достичь текущих значений сети. В также должны настроить автоматический запуск litecoind при загрузке системы и запуск от имени пользователя 'litecoin'. Изучите документацию к Вашей системе для того, чтобы выполнить это лучшим образом. Шаг 5. Установка зависимостей для Electrum

Серверу Electrum требуются некоторые стандартные библиотеки Python. Они могут быть установлены в Вашем дистрибутиве или вы можете установить их при помощи менеджера пакетов. Electrum также требует две библиотеки Python, которые нужно установить "вручную": JSONRPClib.

$ sudo apt-get install python-setuptools python-openssl$ sudo easy_install jsonrpclib

Шаг 6. Установка leveldb и plyvel

$ sudo apt-get install python-leveldb libleveldb-dev$ sudo easy_install plyvel

Смотрите инструкции в файле README.leveldbдля дополнительных инструкций, если Ваша система не содержит пакет python-leveldb или возникнет проблема с установкой plyvel.

Версия leveldb должна быть не ниже 1.1.9. Младшие версии могут привести к багам. Шаг 7. Установите Ваши лимиты

Сервер Electrum использует leveldb для хранения транзакций. Вы должны выбрать, какое количество транзакций на адрес вы будете хранить на сервере. По умолчанию - 100, но есть также серверы с 1000 или даже 10000. У немногих адресов есть больше чем 10000 транзакций. Самый высоки предел будет соответствовать "полному" серверу. Полные серверы ранее использовали ABE, чтобы хранить блокчейн. Использование ABE для серверов электрума теперь осуждается.

Сокращенный сервер пользует leveldb и сохраняет меньшую и более быструю базу данных, сокращая затраты на транзакции. Это намного быстрее, чем использование ABE и требует меньшие затраты на обслуживание и использование дискового пространства.

Раздел в конфигурационном файле сервера electrum (см. шаг 10) указывающий эти параметры:

 [leveldb] path_fulltree = /путь/к/вашей/базе_данных # для каждого адреса будет сокращена история, если это будет более длинно, чем заданный далее предел pruning_limit = 100

Шаг 8. Импорт блокчейна в базу данных или скачать его

Рекомендуется выбрать предварительно обработанный leveldb от сети

Вы можете выбрать свежие копии базы данных electrum leveldb и дальнейшие инструкции из полного архива Electrum на сервере: http://foundry.electrum-ltc.org/leveldb-dump/

В качестве альтернативы, если у Вас есть время и нервы, Вы можете импортировать блокчейн сами.

С апреля 2014 это займет от одного до двух дней, чтобы импортировать 500k блоков, в зависимости от скорости ЦП, скорости ввода-вывода и выбранного предела сокращения.

Значительно быстрее и строго рекомендуется индексировать в памяти. Вы можете использовать /dev/shm или создать tmpfs, который будет также использовать подкачку, если Вы исчерпаете память:

$ sudo mount -t tmpfs -o rw,nodev,nosuid,noatime,size=15000M,mode=0777 none /tmpfs

Если Вы используете tmpfs, убедитесь, что у Вас есть достаточно RAM и подкачки, чтобы перекрыть размеры. Если Вы только имеете 2 ГБ RAM, но добавите 15 ГБ от файла подкачки , это прекрасно также. tmpfs довольно умен, чтобы выгрузить наименее используемые части. Было бы прекрасно использовать файл подкачки на SSD для этого случая.

Не рекомендуется сделать начальную индексацию базы данных по SSD, потому что процесс индексации делает (по крайней мере 10 ТБ!) записей на диск и приведет к значительному износу на SSD. Намного лучше использовать tmpfs и просто выгрузить в файл подкачки на диске при необходимости.

Базы данных выросли примерно до 4 ГБ в апреле 2014, плюс-минус гигабайт между сокращением пределов 100 и 10000. Leveldb время от времени сокращает базу данных, таким образом, весьма часто можно увидеть базы данных на ~50% больше время от времени, когда много записей и особенно при индексации с начала. Шаг 9. Создание самоподписанного SSL сертификата

Для запуска SSL / HTTPS, Вы должны сгенерировать самоподписанный сертификат, используя openssl. Вы могли просто закомментировать порты SSL / HTTPS в конфигурации и запускать сервер без них, но это не рекомендуется.

Используйте пример кода, указанный ниже, чтобы создать самоподписанный сертификат с рекомендуемой валидностью 5 лет. Вы можете предоставить любую информацию для своей подписи, чтобы идентифицировать Ваш сервер. Они в настоящее время не проверяются клиентом за исключением валидности даты. Когда появится вопрос относительно пароля, просто оставьте его пустым и нажмите Enter.

$ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048$ openssl rsa -passin pass:x -in server.pass.key -out server.keywriting RSA key$ rm server.pass.key$ openssl req -new -key server.key -out server.csr...Country Name (2 letter code) [AU]:USState or Province Name (full name) [Some-State]:CaliforniaCommon Name (eg, YOUR name) []: electrum-server.tld...A challenge password []:...$ openssl x509 -req -days 730 -in server.csr -signkey server.key -out server.crt

server.crt файл - Ваш сертификат, параметр, подходящий для ssl_certfile =, параметр и server.key соответствует ssl_keyfile = в Вашей конфигурации сервера Electrum.

При запуске Elecrtum 1.9 клиент будет изучать и локально кэшировать сертификат SSL для сервера по первому запросу, чтобы предотвратить man-the-middle атаки для всех дальнейших соединений.

Если Ваш сертификат потерян или истекает срок действия на стороне сервера, Вы должны сгенерировать снова на своем сервере с другим именем сервера вместе с новым сертификатом для этого сервера. Поэтому это - хорошая идея сделать оффлайновую резервную копию Вашего сертификата и ключа в случае, если Вы понадобится восстановить его. Шаг 10. Конфигурирование сервера Electrum

Electrum читает файл конфигурации (/etc/electrum-ltc.conf) при запуске. Этот файл включает установки базы данных, litecoind установки RPC и несколько других опций.

$ sudo cp ~/electrum-server/electrum.conf.sample /etc/electrum-ltc.conf$ sudo $EDITOR /etc/electrum-ltc.conf

Посмотрите демонстрационные опции конфигурации и установите их по своему желанию. Если Вы намереваетесь запустить сервер публично, изучите на README-IRC.md Шаг 11. Оптимизация системы для запуска Electrum

Сервер Electrum в настоящее время нуждается в большом количестве дескрипторов файлов, чтобы использовать leveldb. Также требуются дескрипторы файлов для каждого соединения, сделанного к серверу. Это - хороший повод, чтобы увеличить предел открытых файлов до 16к. Это наиболее легко сделять, прикрепив значение в .bashrc пользователя root, который обычно передает это значение также всем непривилегированным сеансам пользователя.

$ sudo sed -i '$a ulimit -n 16384' /root/.bashrc

Также удостоверьтесь, что litecoin пользователь может фактически увеличить ulimit, позволяя внести измения соответственно в /etc/security/limits.conf

В то время как большинство ошибок исправлено в этом отношении, сервер Electrum может допустить утечки памяти, и это - повод к перезапуску сервера время от времени по (предпочтительно) cron или по крайней мере контролировать его для катастрофических отказов и затем перезапустить сервер. Ежемесячные перезапуски должны быть достаточными для большинства установок.

Еще пару мыслей для Вас, которые можно рассмотреть::

  1. Чтобы увеличить безопасность, Вы можете хотеть закрыть litecoind для входящих соединений и соединиться только с исходящими
  2. Преполагается, что перезапуск litecoind (вместе с сервером Electrum) еженедельно убирает неподтвержденные транзакции от локального переменного пула памяти, который не распространялся по сети

Шаг 12. (Финальный!) Запуск сервера Electrum

Волшебный момент наступил: Вы можете теперь запустить свой сервер Electrum:

$ cd ~/electrum-server$ ./start

Вы должны увидеть это в файле лога:

starting Electrum server

Если Вам надо остановить сервер Electrum, используете 'stop' скрипт:

$ cd ~/electrum-server$ ./stop

Шаг 13. Тестирование сервера Electrum

Мы предположим, что у Вас есть рабочий клиент Electrum, бумажник и некоторая история транзакций. Вы должны запустить клиент и щелкнуть по зеленой галочке (последняя кнопка справа от строки состояния), чтобы открыть окно выбора cервера. Если Ваш сервер общедоступен, Вы должны видеть его в списке, и Вы можете выбрать его. Если Вас сачтный сервер, Вы должны ввести его IP или имя узла и порт. Нажмите Ok, клиент разъединится от текущего сервера и подключения к Вашему новому серверу Electrum. Вы должны видеть свою историю адресов и транзакций. Вы также увидите число блоков и время отклика в окне выбора сервера. Вы должны отправить/получить некоторое количество litecoin, чтобы убедиться, что все работает должным образом. Шаг 14. Посетете нас на канале IRC, подпишитесь на обсуждение сервера

Скажите привет dev команде, другим операторам сервера и поклонникам на irc.freenode.net #electrum-ltc, и мы попытаемся поздравить Вас с поддержкой сообщества, работающим с нодами Электрума

Если Вы запустили общедоступный сервер LTC Electrum, подпиibntcm на следующий список рассылки: https://groups.google.com/forum/#!forum/electrum-ltc-server forum/electrum-ltc-server Он будет содержать объявления о важных обновлениях к серверу LTC Electrum, требуемых для того, чтоб пользователи имели возможность улучшать свой опыт.

Перевод Denis Soldatov

Источник

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...