# Build and Run `rippled` on Ubuntu `rippled` is the core peer-to-peer server that manages the XRP Ledger. A `rippled` server can connect to a network of peers, relay cryptographically signed transactions, and maintain a local copy of the complete shared global ledger. For an overview of `rippled`, see [Operating rippled Servers](tutorial-rippled-setup.html). Use these instructions to build a `rippled` binary file and run it as a stock `rippled` server on Ubuntu 15.04 or later. These instructions were tested on Ubuntu 16.04 LTS. For information about building `rippled` for other platforms, see [Builds](https://github.com/ripple/rippled/tree/develop/Builds) in the `rippled` GitHub repository. ## System Requirements Here are the **minimum** system requirements for building and running `rippled`. **_To build rippled:_** * RAM: 8GB **_To run rippled:_** * RAM: 4GB * CPU: 64-bit x86_64, 2+ cores * Disk: 50GB SSD with 500 IOPS for the database partition * Network: A fast network connection is preferable If you are running `rippled` in an Amazon EC2 instance, Ripple recommends selecting a **Type** of **_m3.large_**. If you choose to run a validating `rippled` server, you may need more resources. ## 1. Build `rippled` These instructions use Ubuntu's APT (Advanced Packaging Tool) to install the software prerequisites you need to build and run `rippled`. 1. Update the list of packages that are available for `apt-get` to install or upgrade. ``` sudo apt-get update ``` 2. Upgrade currently installed packages. ``` sudo apt-get -y upgrade ``` 3. Install Git. ``` sudo apt-get -y install git ``` 4. Install SCons. ``` sudo apt-get -y install scons ``` 5. Install Ctags. ``` sudo apt-get -y install ctags ``` 6. Install `pkg-config`. ``` sudo apt-get -y install pkg-config ``` 7. Install Protocol Buffers. ``` sudo apt-get -y install protobuf-compiler sudo apt-get -y install libprotobuf-dev ``` 8. Install Secure Socket Layer (SSL) toolkit development files. ``` sudo apt-get -y install libssl-dev ``` 9. Install `python-software-properties`. ``` sudo apt-get install -y python-software-properties ``` 10. Install Boost. ``` sudo add-apt-repository -y ppa:boost-latest/ppa sudo apt-get -y update sudo apt-get install -y libboost-all-dev ``` 11. Get `rippled` source code. ``` git clone https://github.com/ripple/rippled.git cd rippled git checkout master ``` 12. Build `rippled` binary executable from source code. This may take about 30 minutes. SCons saves the built executable in `rippled/build`. ``` scons ``` ## 2. Configure `rippled` 1. Configure `rippled.cfg`. `rippled.cfg` is the configuration file for `rippled`. You can find the `rippled-example.cfg` example file in `rippled/doc`. See the file for a description of all configuration options. You should be able to connect to the XRP Ledger using the default configuration defined in the example file. Put your configured `rippled.cfg` file in `etc/opt/ripple/`. 2. Configure `validators.txt`. When you start your `rippled` server for the first time, it uses an initial list of validators defined in `validators.txt` to retrieve validation information and to form its UNL (unique node list). The information in `validators.txt` also enables `rippled` clients to indirectly locate IPs they can use to contact the Ripple network. You can find the `validators-example.txt` example file in `rippled/doc`. See the file for a description of all validator options. You should be able to connect to the XRP Ledger using the default validators defined in the example file. Put your configured `validators.txt` file in `etc/opt/ripple/`. ## 3. Run `rippled` To run your stock `rippled` server from the executable you built, using the configurations you defined: ``` cd build sudo ./rippled ``` ### What to Expect Once you've run `rippled`, here are excerpts of what you can expect to see in your terminal: ``` Loading: "/etc/opt/ripple/rippled.cfg" Watchdog: Launching child 1 2017-Dec-15 18:27:37 JobQueue:NFO Auto-tuning to 4 validation/transaction/proposal threads for non-validator. 2017-Dec-15 18:27:37 Amendments:DBG Amendment C6970A8B603D8778783B61C0D445C23D1633CCFAEF0D43E7DBCD1521D34BD7C3 is supported. 2017-Dec-15 18:27:37 Amendments:DBG Amendment 4C97EBA926031A7CF7D7B36FDE3ED66DDA5421192D63DE53FFB46E43B9DC8373 is supported. ... 2017-Dec-15 18:27:37 ValidatorList:DBG Loading configured trusted validator list publisher keys ... 2017-Dec-15 18:27:37 ValidatorList:DBG Loading configured validator keys ... 2017-Dec-15 18:27:37 ValidatorSite:DBG Loading configured validator list sites ... 2017-Dec-15 18:27:38 LedgerConsensus:NFO Entering consensus process, watching, synced=no ... 2017-Dec-15 18:27:40 LedgerConsensus:WRN { "accepted" : true, "account_hash" : "183D5235C7C1FB5AE67AD2F6CC3B28F5FB86E8C4F89DB50DD85641A96470534E", "close_flags" : 0, "close_time" : 566677650, "close_time_human" : "2017-Dec-15 18:27:30", "close_time_resolution" : 30, "closed" : true, "hash" : "014816C71F4B9AD5924AFBD7B02E0DF1522C4BC4BC45A69F97F51D4F2234FA10", "ledger_hash" : "014816C71F4B9AD5924AFBD7B02E0DF1522C4BC4BC45A69F97F51D4F2234FA10", "ledger_index" : "2", "parent_close_time" : 0, "parent_hash" : "AB868A6CFEEC779C2FF845C0AF00A642259986AF40C01976A7F842B6918936C7", "seqNum" : "2", "totalCoins" : "100000000000000000", "total_coins" : "100000000000000000", "transaction_hash" : "0000000000000000000000000000000000000000000000000000000000000000" } ... 2017-Dec-15 18:27:50 NetworkOPs:WRN We are not running on the consensus ledger 2017-Dec-15 18:27:50 LedgerConsensus:WRN Need consensus ledger 8459443546CCBE4E89A41E1D0C17F24FBEA7B344C1ED6A26292B4C5CD19B4321 ... 2017-Dec-15 18:38:28 OpenLedger:WRN Offer involves frozen asset 2017-Dec-15 18:38:31 LedgerConsensus:WRN Offer involves frozen asset ``` ## Explore Next Steps Now that you have a stock `rippled` server running, you may want to consider running it as a validating server. For information about validating servers and why you might want to run one, see the [rippled Setup Tutorial](tutorial-rippled-setup.html). For information about updating and maintaining your `rippled` server, see [Updating rippled](tutorial-rippled-setup.html#updating-rippled). For information about communicating with your `rippled` server using the `rippled` API, see [rippled](reference-rippled.html).