source
system requirements (minimum)
500 GB storage (SSD recommended)
Stable 50 Mbps internet connection
a domain like (register here )
required packages
Update your software:
Copy sudo apt update
sudo apt upgrade
Enable your firewall and open necessary ports:
Copy sudo ufw enable
# Optional: If using SSH, allow port 22
sudo ufw allow 22
# Allow ports 80 and 443 for HTTP and HTTPS
sudo ufw allow 80
sudo ufw allow 443
Install nginx:
Copy sudo apt install nginx -y
Install git:
Copy sudo apt install git -y
Install Docker:
Copy sudo apt install docker-compose -y
Install Certbot:
Copy sudo apt install certbot -y
Install ssh (optional, for remote access to your Linux machine):
Copy sudo apt install openssh-server -y
sudo systemctl enable ssh
Install Yarn:
Copy curl -sSL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update -y
sudo apt-get install yarn -y
Install NVM (Node Version Manager):
Copy curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
Install build tools
Copy sudo apt install build-essential
Install SQLite:
Copy sudo apt install sqlite3 -y
install the node
Clone the ar-io-node repository and navigate into it:
Copy cd $HOME
git clone -b main https://github.com/ar-io/ar-io-node
cd ar-io-node
Create an environment file:
Paste the following content into the new file:
Copy GRAPHQL_HOST=arweave.net
GRAPHQL_PORT=443
START_HEIGHT=0
RUN_OBSERVER=true
ARNS_ROOT_HOST=<your-domain>
AR_IO_WALLET=<your-public-wallet-address>
OBSERVER_WALLET=<hot-wallet-public-address>
Replace:
<your-domain>
with the domain address (ex dieuts.top
not www.dieuts.top
);
Create a file named <Observer-Wallet-Address>.json
, replacing "<Observer-Wallet-Address>" with the public address of the wallet. This should match your OBSERVER_WALLET
environmental variable. The file is filled with private key of your OBSERVER_WALLET
and must be saved in the wallets
directory in the root of the repository.
Build the Docker container:
Copy sudo docker-compose up -d --build
Check the logs for errors:
Copy sudo docker-compose logs -f --tail=0
set up networking
config DNS
Value
: your VPS IP
Create SSL (HTTPS) Certificates for Your Domain:
Copy sudo certbot certonly --manual --preferred-challenges dns --email <your-email-address> -d <your-domain>.com -d '*.<your-domain>.com'
Replace <your-domain>.com
with your domain (ex dieuts.top
)
create the configuration file:
Copy # remove default file
sudo rm /etc/nginx/sites-available/default
# create configuration file for your domain, replace <your-domain>.com with your domain
sudo nano /etc/nginx/sites-available/<your-domain>.com.conf
Paste the following configuration (replace <your-domain>.com
when necessary). Save then exit:
Copy # Force redirects from HTTP to HTTPS
server {
listen 80;
listen [::]:80;
server_name <your-domain>.com *.<your-domain>.com;
location / {
return 301 https://$host$request_uri;
}
}
# Forward traffic to your node and provide SSL certificates
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <your-domain>.com *.<your-domain>.com;
ssl_certificate /etc/letsencrypt/live/<your-domain>.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<your-domain>.com/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
}
}
create a symbolic link (replace <your-domain>.com
when necessary)
Copy sudo ln -s /etc/nginx/sites-available/<your-domain>.com.conf /etc/nginx/sites-enabled/<your-domain>.com.conf
Test the configuration
If there are no errors, restart nginx:
Copy sudo service nginx restart
Your node should now be running and connected to the internet. Test it by entering https://<your-domain>/3lyxgbgEvqNSvJrTX2J7CfRychUD5KClFhhVLyTPNCQ
in your browser.
join the AR.IO testnet
check your work
Copy https://gateways.<your-domain>.com