# How to Deploy an Acala Node?

According to a [recent ResearchGate study](https://www.researchgate.net/figure/Statistics-of-Industries-those-are-most-advanced-in-developing-through_fig5_347416277), Financial Services is the leading industry to take advantage of the benefits offered by [Blockchain technology](https://www.zeeve.io/blog/comprehensive-guide-on-managed-blockchain-services/). DeFi, DEX, Lending, [Asset management](https://www.zeeve.io/blog/comprehensive-guide-on-tokenized-real-world-assets/), and many more [Financial services](https://www.zeeve.io/blog/banking-the-unbanked-defi-promoting-financial-inclusion/) use cases for blockchain have emerged in recent years, and [blockchain networks](https://www.zeeve.io/platform/) and enterprises are ready for the challenge.

One such network that has a laser focus on [Decentralised Finance (DeFi)](https://www.zeeve.io/blog/key-defi-ecosystem-pitfalls-solutions) is [Acala](https://www.zeeve.io/blockchain-protocols/deploy-acala-node/).

## **What is Acala?**

Acala is an L1 [smart contract](https://www.zeeve.io/blog/smart-contract-standardization-a-necessity-for-the-large-scale-adoption-of-blockchain/) platform that is [Ethereum](https://www.zeeve.io/blockchain-protocols/deploy-ethereum-blockchain/)\-compatible, scalable, and optimized for DeFi. With “Acala EVM+,” [Acala](https://www.zeeve.io/blockchain-protocols/deploy-acala-node/) helps developers leverage the best of Ethereum and aUSD Ecosystem while unlocking the full potential of [Substrate](https://www.zeeve.io/blockchain-subnets/substrate-parachains/).

This means that [Acala](https://www.zeeve.io/blockchain-protocols/deploy-acala-node/) is designed both as an L1 application layer catered to DeFi services and as a [parachain](https://www.zeeve.io/blockchain-subnets/substrate-parachains/) on the [Polkadot](https://www.zeeve.io/blockchain-protocols/deploy-polkadot-node/) L0, where developers can build their projects easily.

That said, running a parachain node is fairly similar to running a typical Substrate node with some inherent differences. A [Substrate parachain node](https://www.zeeve.io/blockchain-subnets/substrate-parachains/) is a bigger build because it consists of code that runs the parachain itself, as well as the code to sync the relay chain and facilitate communication between the two.

## **System Requirements**

Before embarking on [deploying an Acala node](https://www.zeeve.io/blockchain-protocols/deploy-acala-node/), here are some basic system requirements to keep the node up & running. Acala being a parachain, this build is quite large and may take more than 30 minutes and require 32 GB of memory.

Here are the minimum specifications recommended to run a [node](https://www.zeeve.io/blog/how-to-deploy-a-blockchain-node-in-minutes-zeeve/):

* **OS:** Linux
    
* **RAM:** 16 GB (minimum), and recommended 32 GB.
    
* **Storage:** 1 TB SSD (minimum)
    
* **CPU:** 8 Cores (fastest per core speed)
    
* **Firewall:** P2P port must be open to incoming traffic: Source-Any, Destination: 30333, 30334 TCP
    

### **Running Ports**

* **P2P:** 30333 (TCP)
    
* **RPC:** 9933
    
* **WS:** 9944
    
* **Prometheus:** 9615
    
* **Ethereum API**: 8545
    

**Note:** Experience working on Linux is a must to deploy an Acala full node, and experience with Rust programming language is not required.

Let us consider that your system runs on minimum system specs of 16GB RAM and 1TB storage and begin to install the setup packages.

## **Getting Started**

### **Install Rust and Linux Packages**

```plaintext
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

```plaintext
sudo apt-get install -y git clang curl libssl-dev llvm libudev-dev protobuf-compiler cmake
```

### **Build the Binary**

git clone [https://github.com/AcalaNetwork/Acala.git](https://github.com/AcalaNetwork/Acala.git)

```plaintext
cd Acala && git config --global submodule.recurse true
```

```plaintext
make init && cargo build ---release ---features with-acala-runtime
```

### **Setting Up the Service**

Before setting up the service, remember to rename the values/names specified under the tag **&lt;&gt;.** For example, if you’ve created a user named “acala” as a Linux user, and I’ve asked you to change **&lt;username&gt;**, your value will be “acala” instead of **&lt;username&gt;.**

In step 3 “Setup the Service,” run the command sudo chown -R acala /var/**lib**/**acala**\-**data** instead of sudo chown -R &lt;username&gt; /var/lib/acala-data

* Create a directory to store the binary and data: sudo mkdir /var/**lib**/**acala**\-**data**
    
* Move the downloaded binary we made using wget to /var/**lib**/**acala**\-**data**: **sudo** **mv** ./**acala** /**var**/**lib**/**acala**\-**data**
    
* Make sure to set the ownership and permissions accordingly for the local directory that stores the chain data: sudo chown -R &lt;username&gt; /var/lib/acala-data
    

### **Create the Configuration File**

The next step is to create the systemd configuration file. And make sure to name the file /etc/systemd/system/acala.service

\[Unit\] Description="Acala systemd service" After=network.target StartLimitIntervalSec=0

\[Service\]  
Type=simple  
Restart=on-failure  
RestartSec=10  
User=&lt;username&gt;  
SyslogIdentifier=acala  
SyslogFacility=local7  
KillSignal=SIGHUP  
ExecStart=&lt;path-to-binary&gt;/acala  
\--base-path=&lt;path-to-acala-data&gt;/data  
\--chain=acala  
\--name="&lt;nodename&gt;"  
\--pruning=archive  
\--ws-external  
\--rpc-external  
\--rpc-cors=all  
\--ws-port=9944  
\--rpc-port=9933  
\--ws-max-connections=2000  
\--execution=wasm  
\--  
\--chain=kusama  
\--name="&lt;nodename&gt; (Relay chain)"

\[Install\]  
WantedBy=multi-user.target

**Note:** replace &lt;path-**to**\-acala-data&gt;, &lt;path-**to**\-binary&gt;

**Note: I**f you want to run an RPC endpoint, to connect Polkadot.js Apps, or to run your own application, use the flags --**unsafe**\-rpc-**external** and/or --**unsafe**\-ws-**external** to run the full node with external access to the RPC ports. More details are available by running acala --help.

### **Create the Configuration file.**

Now, you need to register and start the service by running:

```plaintext
sudo systemctl enable acala.service
sudo systemctl start acala.service
```

Lastly, verify if the service is running by using:

```plaintext
sudo systemctl status acala.service
```

You can also check the logs by executing:

```plaintext
journalctl -f -u acala.service
```

And if you need to stop the service from running for whatever reason, you can run:

```plaintext
sudo systemctl stop acala.service
```

### **Building the ETH-RPC Adapter from Source**

Requirements for bodhi.js

Node.js &gt;= 16

Python

Rush: npm install -g [@microsoft](https://steemit.com/@microsoft)/rush

```plaintext
git clone https://github.com/AcalaNetwork/bodhi.js.git
```

```plaintext
cd bodhi.js && git submodule update --init --recursive
```

```plaintext
rush update && rush build -t @acala-network/eth-rpc-adapter
```

```plaintext
npx @acala-network/eth-rpc-adapter -l -e ws://localhost:9944
```

## **Wrapping Up**

There you have it. You have now successfully [deployed an Acala node](https://www.zeeve.io/blockchain-protocols/deploy-acala-node/).

Stay tuned to [Zeeve](https://www.zeeve.io/), as you’ll soon be able to skip the manual (code-based) deployment of Acala nodes and do so on a seamless automated platform.

Zeeve is a [Blockchain infrastructure service platform](https://www.zeeve.io/), and we have strategically located nodes across the globe. Other than [Acala](https://www.zeeve.io/blockchain-protocols/deploy-acala-node/), you can deploy nodes for [Moonbeam](https://www.zeeve.io/blockchain-protocols/deploy-moonbeam-node/), [Tezos](https://www.zeeve.io/blockchain-protocols/deploy-tezos-node/), and all the other major [protocols](https://www.zeeve.io/blockchain-protocols/).

We are the only [node provider](https://www.zeeve.io/blog/blockchain-node-service-provider-to-set-up-node/) in the world to offer Bring Your Own Cloud service (besides our proprietary cloud platform - [ZDFS](https://www.zeeve.io/zeeve-distributed-file-system/)) as an offering for all developers and enterprises.

So, what are you waiting for? Book a free demo with our expert today, and follow [Zeeve](https://www.zeeve.io/) on [Twitter](https://twitter.com/0xZeeve), [LinkedIn](https://www.linkedin.com/company/0xzeeve/), and [Telegram](https://t.me/ZeeveDeeptech).
