Using the Install Script

A step-by-step guide on how to prepare a fully-functional Development environment using the install script.


Success

If you don’t have access to a Linux box you can quickly setup one on DigitalOcean and other cloud providers.

Information

The install script targets Ubuntu 24.04 LTS and Ubuntu 26.04 LTS. Ubuntu 22.04 LTS works as well, but its standard support ends in May 2027. Other Debian-based distributions may work on a best-effort basis. See the Server Requirements for details.

Upgrading an existing Core 3.13.0 node? Follow the upgrade guide instead.

Getting Started

The instructions on this page will guide you through creating a new user account with the correct privileges, installing and configuring ARK Core, then starting a relay instance and logging the output using the installation script.

Directly below is a quick summary of these install commands:

1sudo adduser ark
2sudo usermod -a -G sudo ark
3sudo su - ark
4 
5bash <(curl -fsSL https://raw.githubusercontent.com/ArkEcosystem/core/master/install.sh)
6 
7ark relay:start
8 
9pm2 logs

Information

Installing Devnet via install.sh requires additional steps to ensure the latest @next version is used. Proceed to the ‘Additional Devnet Steps’ section for further instructions.

Step-by-Step Installation via the Script

If you are planning to setup a new server you can execute the following steps.

Step 1: Create a New Account

Create a new dedicated user account to manage ARK-related software.

We’ll illustrate this command as sudo adduser ark to create a user by the name of ‘ark’, but you can chose something else, if preferred.

On your server, type the following into the command line:

1sudo adduser ark

You’ll be asked to create and confirm a new user password, and be prompted to enter the user’s full name and some other information. (Feel free to leave them blank by pressing ‘enter’, they are all optional fields.)

When prompted to confirm, type ‘Y’ and press ‘enter’ to finish.

1Adding user 'ark' ...
2Adding new group 'ark' (1000) ...
3Adding new user 'ark' (1000) with group 'ark' ...
4Creating home directory '/home/ark' ...
5Copying files from '/etc/skel' ...
6Enter new UNIX password:
7Retype new UNIX password:
8passwd: password updated successfully
9Changing the user information for ark
10Enter the new value, or press ENTER for the default
11 Full Name []:
12 Room Number []:
13 Work Phone []:
14 Home Phone []:
15 Other []:
16Is the information correct? [Y/n] Y

Step 2: Grant Sudo Privileges

Next, we need to make sure that our user account has all of the necessary privileges to run ARK Core properly. This will give our user account sudo privileges.

Type or copy-paste the following command into your terminal:

1sudo usermod -a -G sudo ark

Information

In this example we use ‘ark’ for the name of the new user account, but you should use whatever username was set in previous steps above.


Step 3: Login as the New User

We now should switch to the user account created above, this will also land us in the user’s base directory (~/).

Type or copy-paste the following command into your terminal:

1sudo su - ark

Step 4: Run the Installation Script

Here, we will use the install.sh script. This installs ARK Core and all of its dependencies onto your server, then publishes the configuration files for it.

Run the install script by copying and pasting this one line command into your terminal:

1bash <(curl -fsSL https://raw.githubusercontent.com/ArkEcosystem/core/master/install.sh)

If you prefer to read the script before running it, download it first:

1curl -fsSLO https://raw.githubusercontent.com/ArkEcosystem/core/master/install.sh
2less install.sh
3bash install.sh

You will be asked to input your user password to grant sudo privileges:

1[sudo] password for ark: <input your password for user you created>

Warning

The install process might take a while, don’t interrupt it, wait for it to finish.

The script runs without any further questions until Core itself is installed. Along the way it sets up the following:

Component Details
Locale Generates en_US.UTF-8 and sets it for the current shell and in ~/.bashrc
NTP Installs and enables systemd-timesyncd, which keeps the server clock in sync. An accurate clock is required for forging in the correct slot
Node.js 24 Installed from the NodeSource repository, pinned so it takes priority over the Ubuntu nodejs package
Yarn Installed from the Yarn apt repository
PM2 7 Installed globally with Yarn, including pm2-logrotate (500MB per file, compressed, 7 files kept)
PostgreSQL 18 Installed from the official PostgreSQL apt repository
Build tools build-essential, python3, libpq-dev, jq, libjemalloc-dev and other packages needed to compile native modules
System updates Runs a full apt-get upgrade and dist-upgrade
ARK Core Installed globally with Yarn as @arkecosystem/core. The script adds $(yarn global bin) to your PATH in ~/.bashrc

Step 5: Select the Core network

Once the installation of dependencies and ARK Core is finished you will need to select which network you wish to operate on. This can be achieved by pressing the up or down arrow keys and confirming your selection by pressing enter.

Mainnet is the public network, Devnet is the development network for testing, and Testnet is network used for private testing.

1? What network do you want to operate on? › - Use arrow-keys. Return to submit.
2❯ devnet
3 mainnet
4 testnet

Information

Installing Devnet via install.sh requires additional steps to ensure the latest @next version is used. After the following steps are completed, proceed to the ‘Additional Devnet Steps’ section for further instructions.

After you have made your selection, you will need to confirm by pressing y and confirm again with enter

1? Can you confirm? › (y/N)

At this point, ARK Core has been successfully installed with its configuration options properly published.

Information

Tinkering with ‘Devnet’? Create an Address using the ARK Desktop Wallet , then head over to the ACF’s Community Discord and visit the #community_bots channel. (Use the !faucet command to receive DARK tokens)

Step 6: Configuring the Core Database

The last step of the required ARK Core configuration is to setup the database parameters.

You will be presented with a prompt:

1Would you like to configure the database? [y/N]:

Press y and confirm with enter.


Input the database credentials of your choosing.

Warning

Replace <network_name> with the appropriate custom or pre-defined network name (e.g. ‘ark_mainnet’, ‘ark_devnet’, ‘ark_testnet’).

1Enter the database username: ark
2Enter the database password: <a strong password>
3Enter the database name: <network_name> # your chosen network name

This will create a PostgreSQL role and database to be used for storing blockchain data, and store the credentials in Core’s .env file (CORE_DB_USERNAME, CORE_DB_PASSWORD and CORE_DB_DATABASE).

Information

The credentials are printed so you can confirm them before they are applied. If the user or database already exists you are asked whether to recreate it or keep it. An existing database is handed to the Core user, so Core can create its tables on PostgreSQL 15 and newer.

Once the script is done it reloads your shell, so the ark command and the locale settings are available right away.

Additional Devnet Steps

When installing Devnet via the install.sh script, you’ll also need to enter the following commands into your terminal to ensure the latest @next version is used:

1ark config:cli --channel=next
2rm -rf ~/.config/ark-core/ && ark config:publish --network=devnet --reset

If custom data were entered during the installation process, you also might need to update your database settings in the .env file. This can be done using the following command:

1ark config:database

Success

That’s it, your installation is all set! 🎉

Success

Hint: start a relay instance and log its output by entering the following command into your terminal: ark relay:start && pm2 logs

Next Steps

  • Secure your server before you expose it to the internet, especially when running a forger.
  • Syncing from scratch can take a long time. If you or someone you trust already runs a synced node, copy their database instead.
Last updated 5 days ago
Edit Page