Setting up a Livepeer Transcoder Node (Beginner's Guide)

This document is a guide to using Livepeer’s software to set up a Transcoder node in the Livepeer open-source video network.

It assumes some basic awareness of a Command Line Interface, as well as basic knowledge of transacting on Ethereum.

In order to complete the steps in this guide, you will need at least the following hardware:

  • A server with at least 1GB RAM, 1 CPU, 50GB Storage (at most)

    • Operating System: Ubuntu 16.04 or above

    • Terminal Access e.g. via SSH or direct Terminal.

    • A Static Public IP Address with port :8935 open

It also assumes you have some Ether (ETH) to pay gas for transaction, and some Livepeer Tokens (LPT) to bond to this node in the network as part of Livepeer Delegated-Proof-Of-Stake protocol.

If you don’t have LPT, here is a guide for how to get some.

So, let’s get started:

0. Connect to the hosted server with Terminal Access e.g. via SSH

1. Download and unpack Livepeer’s latest software

  • Run the following command in Terminal, replacing the text {latest_version_here} with the version number of the latest release, e.g. 0.3.3:
wget https://github.com/livepeer/go-livepeer/releases/download/{latest_version_here}/livepeer_linux.tar.gz
tar -xvzf livepeer_linux.tar.gz
  • This will unpack two files:

    • livepeer_linux/livepeer which is the main executable binary for Livepeer

    • livepeer_linux/livepeer_cli which is a rich command-line interface for configuring your Livepeer node

  • You are now ready to run Livepeer’s software.

2. Running Livepeer’s software for the first time.

  • Run the following command from your home (~) directory
./livepeer_linux/livepeer -transcoder
  • Running this process for the first time will create a new folder at ~/.lpData which will store all data relating to the livepeer node.

  • Next, the process will generate an Ethereum account for the Livepeer node.

  • When prompted, enter a passphrase, and then repeat the passphrase to confirm

    • The passphrase is used to encrypt the private key data in the JSON Keystore file for the Ethereum account

    • This process will ask for this passphrase every time it is launched.

  • Once you have entered the passphrase twice, it will show you the Ethereum address that was created

    • Make a note of this, as you will be needing it later.
  • The process will then report errors relating to the serviceURI - ignore these, you will configure the service URI later in this guide.

  • Next, the process will generate a 2048-bit RSA keypair and a peer identity for the IPFS node.

    • Livepeer currently uses IPFS to store segments of video required to verify that transcoding work has been done correctly.

    • If you have previously run IPFS on this server, you will need to remove or rename the ~/.ipfs directory

  • When you see the text Listening for RPC on :8935, then you know that your node is running.

3. Send Ether (ETH) and Livepeer Tokens (LPT) to the node’s Ethereum account

  • Becoming a Transcoder in the Livepeer network requires the following crypto assets:

    • A small amount of Ether - to pay for gas to mine your transactions

      • The amount required will depend on current gas prices

      • At time of writing, the transactions required to register a node cost a total of 45377 + 170239 + 125995 + 50149 = 391760 units of gas, which cost 0.00235056 Ether at a gas price of 6 gwei / unit.

    • Some LPT - you can start with as little as 0.000000000000000001 LPT = 1 LPTU

  • Send the Ether and LPT to the Ethereum address generated in Step 2.

    • The process for how you send this will differ based on how you control the private keys for the address where you hold the Ether and LPT

    • Make sure that the funds have been received in the account before you continue.

    • You can verify your balance of ETH and LPT by visiting Livepeer’s Protocol Explorer, entering the node’s ETH account address and clicking “VIEW ACCOUNT”

4. Connect to the Server in another session with Terminal Access e.g. via SSH

5. Become a Transcoder in Livepeer network

  • Run the following command from your home (~) directory. This will open the rich command-line-interface which can be used to configure the node.
./livepeer_linux/livepeer_cli
  • From the list of menu items, select the option Invoke multi-step "become a transcoder" by typing 14 and pressing return

    This should show you your Current token balance and your Current bonded amount - both in LPTU (1 LPTU = 1 x 10^-18 LPT)

  • Next, the process will ask you to Enter block reward cut percentage

    • This represents the percentage of the block reward that the node will keep for itself - its “cut”

    • The remaining percentage is shared with any addresses who BOND to the node.

    • You can change these parameters at any time by running this process again.

  • Enter an amount and press return (or just press return to accept the default setting)

  • Next, the process will ask you to Enter fee share percentage

    • This represents the percentage of fees earned by the node for Transcoding that will be shared with any addresses who BOND to the node.

    • The remaining percentage is retained by the node

    • You can change these parameters at any time by running this process again.

  • Enter an amount and press return (or just press return to accept the default setting)

  • Next, the process will ask you to set the price per segment in Wei

    • This represents the price the Transcoder node will charge a Broadcaster for transcoding a segment of video

    • The remaining percentage is retained by the node

    • You can change these parameters at any time by running this process again.

  • Enter an amount and press return (or just press return to accept the default setting)

  • Next, the process will ask you to configure the public host:port of node

    • This is how the other nodes in the network will communicate with this node

    • The process will attempt to establish the host’s IP address and offer this to you as a default

    • You can change these parameters at any time by running this process again.

  • Enter a value (consisting of a host_ip_address:port_number and press return (or just press return to accept the default setting offered)

  • And finally, the process asks that you bond to yourself in order to become a transcoder

    • You can bond as little as 1 LPTU = 0.000000000000000001 LPT

    • You can bond additional tokens to this node at any time.

  • Enter an amount, in LPTU, which less than, or equal to the node’s own stake, and press return

  • Once completed, this will trigger 4 transactions to be published to Ethereum for this node:

    • approve(address _spender, uint256 _value) - which approves the BondingManager Smart Contract to spend up to a certain amount of LPT from your account

    • bond(uint256 _amount, address _to) - which bonds the requested amount to the node.

    • transcoder(uint256 _rewardCut, uint256 _feeShare, uint256 _pricePerSegment) - which sets the transcoding parameters for the node

    • setServiceURI(string _serviceURI) - which sets the service URI, allowing remote procedure calls to be made on this node.

Once all these transactions have been mined, you must restart the node in the first Terminal session by following these steps:

  • Press ctrl-C to cancel the process ./livepeer process

  • Run the following command again in the Terminal

./livepeer_linux/livepeer -transcoder
  • Enter the passphrase when prompted.

The bonding process will complete at the start of the next round. Currently, each round lasts approximately 24 hours.

YOU HAVE COMPLETED THE PROCESS TO SET UP A TRANSCODER ON LIVEPEER

Some things you might wish to do now:

  • Run option 1 in livepeer_cli 1. Get node status which displays information about the node

  • Set it up so that the process continues to run even when you log off the Terminal session, using something like screen on Ubuntu

  • View the details of the node in Livepeer’s Protocol Explorer by

  • Download the keystore file from the server (~/.lpData/keystore/) and e.g. import it into MetaMask to make it easier to manage the node via Livepeer’s Protocol Explorer.

  • Configure a Geth Light Client on your Transcoder node server to improve reliability and reduce reliance on third-parties.

  • Raise awareness amongst your community that if they have LPT, then they can bond to this node and support your venture as part of Livepeer.

Thanks to @j0sh for help with this content.

3 Likes

Thanks alot for this easy guide
I have some questions

1-I used the latest version and I saw on github people talking about imstalling Geth, is it still necessary to install or I could run latest version without it?

2-after following instructions I stake a small amount and became registered transcoder but still not active because I am not among top 25 yet, the transcoder in idle state every 30~60 minutes displays this error:

I0609 16:26:54.269497 2607 livepeer.go:291] Livepeer Running in Transcoder Mode
I0609 16:26:54.269795 2607 cert.go:83] Private key and cert not found. Generating
I0609 16:26:54.270130 2607 webserver.go:1223] CLI server listening on 127.0.0.1:7935
I0609 16:26:54.270217 2607 cert.go:22] Generating cert for 199.192.20.28
I0609 16:26:54.270678 2607 rpc.go:345] Listening for RPC on :8935
E0609 16:46:54.965414 2607 db.go:459] db: Got err in updating block unable to open database file
E0609 17:01:59.378148 2607 db.go:459] db: Got err in updating block unable to open database file
E0609 18:12:00.003180 2607 db.go:459] db: Got err in updating block unable to open database file
E0609 18:31:56.994432 2607 db.go:459] db: Got err in updating block unable to open database file
E0609 19:16:53.792948 2607 db.go:459] db: Got err in updating block unable to open database file

Is this normal? Will this affect my transcoder’s performance or it’s slow network syncing?

Thank you for the guide.
But could you give me a clue regarding bonding to yourself, please?
With latest release especially.

You need to set up transcoder node and then you can bond it to yourself. Those option is available on the Livepeer_cli when you are going through the config. However, if you want to earn rewards, you have to be in the top 25 as active transcoder, that is the rule for now.

https://explorer.livepeer.org/transcoders

is it possible to do in a vps like vultr ?

Probably, I haven’t tried vultr, so as long as it is able to provide something which meets the hardware requirements listed above, it ought to work.

Is there a beginners setup-guide to setup livepeer using Docker-Container? Its possible to mine f.e. eth while running livepeer (NVIDIA Hardware) - is that correct?

Hi!

I am trying to set up a transcoder as described above but the liverpeer_cli does not ask me to bond to myself and terminates the process before the question will raise with a reason that it needs to wait until the transaction (which was initiated before to set reward, etc) finishes. I see that the transaction is successful on Etherscan…so in order to bound myself I as per my understanding I need to re-start livepeer_cli and go though the same process (become a transcoder) which again terminates due to the same reason written above. It seems a catch 22 for me and each transaction costs me some dollars (ethers). Can someone help me how to be a registered transcoder? Thanks in advance!

Hello there @chrishobcroft,

Once i have run the option 14 once, if i use it again it doesn’t propose me to bond more, the process stops after IP input and then sends the transaction.

So, how can i bond more token to my node since it is not yet registered ?

Has anyone updated these dated instruction for docker/windows. I am really struggling to get this thing going and admittedly I am not a huge techy so most of this is new. But I’d like to learn but I can’t really find any good documentation yet. I find the livepeer “who to” stuff very brief and missing like 5 of 10 steps for a newbie. It jumps into code and I’m not even sure where this code should go!. It makes a lot of assumptions of people’s knowledge I think that is likely hurting uptake.

If anyone can help with a link with kind of a “Live Peer for Dummies (which is me)” I would love to see it.
Thanks
Brad

Hi Brad,

Thanks for the note. I think it’s fair to say that Livepeer on Docker on Windows may be one of the least tested operating models, but undeniably an important one. Most operators are running nodes on Linux and without docker.

I will admit being a little rusty on Microsoft Operating Systems, and I’m useless with Docker, but I will do what I can to help.

Now, first, have you been able to:

  1. Download the binary for Windows from Livepeer’s Releases Page - current release is 0.5.17

  1. Get an -ethURL to allow you to connect to Ethereum. Perhaps you’re already running your own node on Ethereum, and can connect to this? Or perhaps by getting an account with Infura. This will be needed as <ETH_URL> in a later step. If using Infura, your -ethURL will look like this:

  1. Get your -nvidia device IDs… which should correspond to the PCI ports you are using to connect your GPUs. I don’t know how it works on Windows, but perhaps there’s some GUI which you can look at to determine which PCI slots are being used? For example, if you have 4 GPUs, and they are connected to ports 0, 1, 3 and 4, then you will need the following string: 0,1,3,4. This will be needed as <NVIDIA_DEVICE_IDs> in a later step.

  2. Find your computer’s IP address on the internet. This is so that your GPU may receive work from customers. This may be your home router’s IP address, if you are running this from your home. This will be needed as <SERVICE_ADDR> in a later step…

  3. Verify that the software runs, for example by running the following command on Windows:

livepeer.exe -network mainnet -ethURL <ETH_URL> -orchestrator -transcoder -nvidia <NVIDIA_DEVICE_IDs> -pricePerUnit <PRICE_PER_UNIT> -serviceAddr <SERVICE_ADDR>
  • where <ETH_URL> is from step 2
  • <NVIDIA_DEVICE_IDs> is from step 3, and should look like 0,1,3,4
  • <SERVICE_ADDR> is from step 4… and should look like 89.134.23.17:8935 (don’t forget the 8935)
  • <PRICE_PER_UNIT> start with this as 1 (the minimum), but be ready to change it!

If that runs successfully, then this would have been a great achievement. Getting something like this then running in something like Docker would be something you’d have to work out with someone else’s help.

I hope this helps, I will follow up with another message, which might interest you, if you really do think you’re a dummy :wink:

Another option you may wish to consider, is to join Livepool as a Transcoder. This is a project by @NicoV

This setup is much less involved, and doesn’t require you to open ports on your router etc.

To get started, go to: Livepool - Home Page

Thanks. I am trying Livepool as well but a lot of error messages again. I’m thinking that is more my speed but I can’t seem to get it working either. I am using a Laptop with a Nvidia GTX 1650 which may be part of the problem.

thanks, good directions! I’ve stumbled through most of those steps it appears. But I’ll continue working at it. Very helpful having 5 “verify” spelled out!

That was very helpful @chrishobcroft .
I appear to have the node running and according to what I see on the node stats it says it is active. That being said I have no idea what is happening behind the scenes if anything. I have no idea what settings I should have but I’ll learn. I guess I’ll just wait and see if anything materializes? I can’t see anything running anywhere including my GPU.

Thanks for tip on livepool as well but I’ve tried livepool all day and I just get errors. I feel it is a little more complicated than running 1 line of code which is really the only documentation on the livepool page. Maybe I’ll try and see if @NicoV has a link to a step by step guide for livepool. It could just be my GPU etc.
Thanks again

1 Like

Next step for you is probably to get basic monitoring set up… with Prometheus and Grafana… then you can observe what’s happening on your node!

Well done for getting up and running.

Hello, i’am using NVIDIA GTX 1650 also, a bunch of errors displayed on my screen, could you please walk me through the outline of what i have to do to create a node ?

1 Like