X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=HOWTO.md;h=c0c04320dfd841312856c7fa253c35c5d8a5f5a0;hp=31b0c2bad35c3e0bd6583a729008b71fe589e2ae;hb=eb0d8b78d79faebd4575671becd45b0864a2e589;hpb=d46afa5b6ea667e528114be204bc558100bfdcbc diff --git a/HOWTO.md b/HOWTO.md index 31b0c2b..c0c0432 100644 --- a/HOWTO.md +++ b/HOWTO.md @@ -97,21 +97,22 @@ our ~/bin directory: $ chmod +x ~/src/electrum/server/server.py $ ln -s ~/src/electrum/server/server.py ~/bin/electrum-server -### Step 3. Download Bitcoind stable & patch it +### Step 3. Download bitcoind -In order for the latest versions of Electrum to work properly we currently recommend bitcoind 0.8.5 stable. -0.8.5 can be downloaded from github or sourceforge and it needs to be patched with an electrum specific patch. -bitcoin@master i.e. git head may not currently work with electrum-server even if the patch applies cleanly. +Older versions of Electrum used to require a patched version of bitcoind. +This is not the case anymore since bitcoind supports the 'txindex' option. +We currently recommend bitcoind 0.8.6 stable. - $ cd ~/src && wget http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.5/bitcoin-0.8.5-linux.tar.gz - $ tar xfz bitcoin-0.8.5-linux.tar.gz - $ cd bitcoin-0.8.5-linux/src - $ patch -p1 < ~/src/electrum/server/patch/patch - $ cd src +If your package manager does not supply a recent bitcoind and prefer to compile +here are some pointers for Ubuntu: + + $ cd ~/src && wget http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.6/bitcoin-0.8.6-linux.tar.gz + $ tar xfz bitcoin-0.8.6-linux.tar.gz + $ cd bitcoin-0.8.6-linux/src/src $ sudo apt-get install make g++ python-leveldb libboost-all-dev libssl-dev libdb++-dev $ make USE_UPNP= -f makefile.unix - $ strip ~/src/bitcoin-0.8.5-linux/src/src/bitcoind - $ ln -s ~/src/bitcoin-0.8.5-linux/src/src/bitcoind ~/bin/bitcoind + $ strip ~/src/bitcoin-0.8.6-linux/src/src/bitcoind + $ ln -s ~/src/bitcoin-0.8.6-linux/src/src/bitcoind ~/bin/bitcoind ### Step 4. Configure and start bitcoind @@ -127,8 +128,15 @@ Write this in `bitcoin.conf`: rpcuser= rpcpassword= daemon=1 + txindex=1 + + +If you have an existing installation of bitcoind and have not previously +set txindex=1 you need to reindex the blockchain by running -Restart `bitcoind`: + $ bitcoind -reindex + +If you have a fresh copy of bitcoind start `bitcoind`: $ bitcoind @@ -173,7 +181,7 @@ The pruning server uses leveldb and keeps a smaller and faster database by pruning spent transactions. It's a lot quicker to get up and running and requires less maintenance and diskspace than abe. -The section in the configuration file looks like this: +The section in the electrum server configuration file (see step 10) looks like this: [leveldb] path = /path/to/your/database @@ -182,25 +190,70 @@ The section in the configuration file looks like this: ### Step 8. Import blockchain into the database or download it +It's recommended to fetch a pre-processed leveldb from the net + +You can fetch recent copies of electrum leveldb databases and further instructions +from the Electrum full archival server foundry at: +http://foundry.electrum.org/ + +Alternatively if you have the time and nerve you can import the blockchain yourself. + As of April 2013 it takes between 6-24 hours to import 230k of blocks, depending on CPU speed, I/O speed and selected pruning limit. -It's considerably faster to index in memory. You can use /dev/shm or indexing in RAM +It's considerably faster to index in memory. You can use /dev/shm or or create a tmpfs which will also use swap if you run out of memory: $ sudo mount -t tmpfs -o rw,nodev,nosuid,noatime,size=6000M,mode=0777 none /tmpfs +Figures from April 2013: At limit 100 the database comes to 2,6 GB with 230k blocks and takes roughly 6h to import in /dev/shm. At limit 1000 the database comes to 3,0 GB with 230k blocks and takes roughly 10h to import in /dev/shm. At limit 10000 the database comes to 3,5 GB with 230k blocks and takes roughly 24h to import in /dev/shm. -Alternatively you can fetch a pre-processed leveldb from the net +As of November 2013 expect at least double the time for indexing the blockchain. Databases have grown to +roughly 4 GB, give or take a few hundred MB between pruning limits 100 and 10000. -You can fetch recent copies of electrum leveldb databases and further instructions -from the Electrum full archival server foundry at: -http://foundry.electrum.org/ -### Step 9. Configure Electrum server +### Step 9. Create a self-signed SSL cert + +To run SSL / HTTPS you need to generate a self-signed certificate +using openssl. You could just comment out the SSL / HTTPS ports in the config and run +without, but this is not recommended. + +Use the sample code below to create a self-signed cert with a recommended validity +of 5 years. You may supply any information for your sign request to identify your server. +They are not currently checked by the client except for the validity date. +When asked for a challenge password just leave it empty and press enter. + + $ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048 + $ openssl rsa -passin pass:x -in server.pass.key -out server.key + writing RSA key + $ rm server.pass.key + $ openssl req -new -key server.key -out server.csr + ... + Country Name (2 letter code) [AU]:US + State or Province Name (full name) [Some-State]:California + Common Name (eg, YOUR name) []: electrum-server.tld + ... + A challenge password []: + ... + + $ openssl x509 -req -days 730 -in server.csr -signkey server.key -out server.crt + +The server.crt file is your certificate suitable for the ssl_certfile= parameter and +server.key corresponds to ssl_keyfile= in your electrum server config + +Starting with Electrum 1.9 the client will learn and locally cache the SSL certificate +for your server upon the first request to prevent man-in-the middle attacks for all +further connections. + +If your certificate is lost or expires on the server side you currently need to run +your server with a different server name along with a new certificate for this server. +Therefore it's a good idea to make an offline backup copy of your certificate and key +in case you need to restore it. + +### Step 10. Configure Electrum server Electrum reads a config file (/etc/electrum.conf) when starting up. This file includes the database setup, bitcoind RPC setup, and a few other @@ -212,11 +265,7 @@ options. Go through the sample config options and set them to your liking. If you intend to run the server publicly have a look at README-IRC.md -If you're looking to run SSL / HTTPS you need to generate a self-signed certificate -using openssl. Otherwise you can just comment out the SSL / HTTPS ports and run -without. - -### Step 10. Tweak your system for running electrum +### Step 11. Tweak your system for running electrum Electrum server currently needs quite a few file handles to use leveldb. It also requires file handles for each connection made to the server. It's good practice to increase the @@ -238,7 +287,7 @@ Two more things for you to consider: 2. Consider restarting bitcoind (together with electrum-server) on a weekly basis to clear out unconfirmed transactions from the local the memory pool which did not propagate over the network -### Step 11. (Finally!) Run Electrum server +### Step 12. (Finally!) Run Electrum server The magic moment has come: you can now start your Electrum server: @@ -257,7 +306,7 @@ You should also take a look at the 'start' and 'stop' scripts in `~/src/electrum/server`. You can use them as a starting point to create a init script for your system. -### Step 12. Test the Electrum server +### Step 13. Test the Electrum server We will assume you have a working Electrum client, a wallet and some transactions history. You should start the client and click on the green @@ -270,7 +319,7 @@ addresses and transactions history. You can see the number of blocks and response time in the Server selection window. You should send/receive some bitcoins to confirm that everything is working properly. -### Step 13. Join us on IRC, subscribe to the server thread +### Step 14. Join us on IRC, subscribe to the server thread Say hi to the dev crew, other server operators and fans on irc.freenode.net #electrum and we'll try to congratulate you