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 ark2sudo usermod -a -G sudo ark3sudo su - ark4 5bash <(curl -fsSL https://raw.githubusercontent.com/ArkEcosystem/core/master/install.sh)6 7ark relay:start8 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 ark10Enter the new value, or press ENTER for the default11 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.sh2less install.sh3bash 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❯ devnet3 mainnet4 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: ark2Enter 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=next2rm -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.