Avalanche Node Kurulumu

Selcuk
6 min readJan 26, 2022

--

Herkese merhaba. Bu makalemizde Avalanche node’umuzu Contabo dan kiralayacağımız VPS ile çalıştırmayı açıklayacağım.

CONTABO VPS KİRALAMA

https://contabo.com/en/vps/ adresinden aşağıda görülen 4 seçenekten birisini seçebilirsiniz. Benim hesabımda VPS M, VPS L ve VPS XL seçenekleri mevcut. Bütçenize göre en uygununu seçin. Mevcutta herhangi bir VPS iniz veya evde çalıştırdığınız linux ubuntu18.04 veya 20.04 sisteminiz varsa, aşağıdaki Terminal kurulumu veya ön hazırlıklar kısmına geçebilirsiniz…

Ben Avalanche için en iyisini istediğinizi varsayarak https://contabo.com/en/vps/vps-xl-ssd/?qty=1&contract=12&storage-type=vps-xl-nvme-400-gb şu linki paylaşıyorum. Senelik 323 Euro luk KDV hariç bir fiyat çıkıyor. Avalanche daki Node’unuzun Stake miktarına göre “Dedicated Server” da kiralayabilirsiniz. Contabo nun VPS servisi paylaşımlı olduğu için size AMD EPYC işlemcili VPS gelecektir. Bizim kullanıcağımız işletim sistemi Ubuntu 20.04 olucak. Avalanche Subnetleri ve artacak olan kapasite ihtiyacını göz önünde bulundurarak NVME SSD yi 800 GB alarak listemize ekleyebiliriz…

Hesap Bilgileriniz

Alım işlemi tamamlandıktan sonra support@contabo.com e-mail adresinden KYC yani (Know Your Customer) işlemleri için kimlik, ikametgah gibi bilgiler istenebilir. Bu işlemler tamamlandıktan sonra yine support@contabo.com adresinden, aşağıdaki örnekte olduğu gibi terminale bağlanmak için gerekli bilgiler emailinize gelecektir. IP adress, user name, password başlıkları altındaki bilgiler ile işlemimizi gerçekleştireceğiz.

PUTTY TERMINAL KURULUM VE CONTABO HESABINA ERİŞİM

Öncelikle kiraladığımız Server’a ulaşabilmek için bir SSH programı indirmemiz gereklidir. https://www.putty.org/ adresinden puTTY isimli SSH programını indirelim. Programın aşağıda göründüğü gibi kolay bir giriş arayüzü var.

E-mail ile bize verilen bilgileri aşağıdaki işaretli yerlere girelim. IP adresimiz 100.100.130.100 olarak verilmişti, 22 portumuz standart olduğu için değiştirmiyoruz ve bir isim verip “Session” umuzu kaydedip Open sekmesi ile terminale ilk girişimizi yapıyoruz.

TERMINAL

log as: kısmına kullanıcı adınızı root olarak ve sonrasında ise e-mail de size verilen password bilgisini giriyoruz.

bu terminale ilk girişimiz olduğu için isteğe bağlı olarak root şifresini değişebilirsiniz.

sudo passwd root

şifre değiştikten sonra e-mail ile gelen bilgilerinizi silebilirsiniz.

ÖN HAZIRLIKLAR

İlk olarak ana sistemimizin güncel olduğundan emin olalım. Güncelleme için şu iki komutu girelim;

sudo apt-get update && sudo apt-get upgrade

Güncellememizi yaptıktan sonra yeni bir kullanıcı tanımlayalım ve node kurma ve çalıştırma işlemlerimizi yeni kullanıcı adımızla devam ettirelim. Kullanıcı adını örnek olarak selcuk diyelim. Siz istediğiniz bir isim girebilirsiniz.

sudo adduser selcuk

Bilgileri girdikten sonra yeni tanımladığımız selcuk kullanıcı adına root’daki yetkileri tanımlayalım. Öncelikle şu komutu girerek editorümüzü açalım;

visudo

aşağıda resimde sarı renkle gösterilen yere kullanıcı adımızı yazıp yetki verelim; selcuk ALL=(ALL:ALL) ALL

“CTRL O” ile kaydedip yine “CTRL X” ile çıkış yapalım.

Terminali tamamen kapatıp, bu sefer tanımladığımız kullanıcı adı ve şifresiyle terminale yeniden girelim ve aşağıdaki yardımcı eklentileri yeni kullanıcı selcuk içine kuralım.

KURULUM ÖNCESİ YARDIMCI EKLENTİLER

Yardımcı eklentileri aşağıda listeleyecek olursak;

a) JQ: Özellikle API sorgulamaları sırasında çok işimize yarıyacak

sudo apt-get install jq

b) CCZE: işlem akışlarını izlemek istediğimizde log kayıtlarını renklendiren güzel bir eklentidir.

sudo apt-get install ccze

c) HTOP: sistem bilgilerini, arkaplandaki işlemleri ve CPU üzerindeki yükü görebilmenizi sağlayan kullanışlı bir eklentidir.

sudo apt-get install htop

d) UFW: firewall eklentisi olan bu komut avalanche içinde port açmada gerekli olacağı için yüklememiz gerekir.

sudo apt-get install ufw -y

NODE KURULUMU

  1. Öncelikle Avalanche node için 9651 portumuzu açalım
sudo ufw allow 9651/tcp

2) Güncel Avalanchego sürümünü indirelim;

wget https://github.com/ava-labs/avalanchego/releases/download/v1.10.7/avalanchego-linux-amd64-v1.10.7.tar.gz

3) şimdi Avalanchego yu kuralım;

sudo tar -xvf avalanchego-linux-amd64-v1.10.7.tar.gz

şimdi ise avalanchego yu çalıştırmadan önce arka planda çalıştırmasını sağlıyacak yeni service dosyası oluşturalım. bu avalanchego yu çalıştırmanın yollarından biridir.Terminalden çıkış yapsanız bile servis dosyası sayesinde avalanche node arka planda çalışır. öncelikle servis dosyasını oluşturmak için şu komutu girelim;

sudo nano /etc/systemd/system/avalanchego.service

editör içine girdiğimiz için, alttaki satırları editör içine kopyalayalım. Sizin kullanıcı adınıza göre gerekli değişimleri yapın. Aşağıda sizin değişeceğiniz kısımları kalın, siyah puntolarla belirtiyorum;

[Unit]
Description=AVAX node
Wants=network-online.target
After=network.target network-online.target
[Service]
User=selcuk
WorkingDirectory=/home/selcuk/avalanchego-v1.10.7
ExecStart=/home/selcuk/avalanchego-v1.10.7/avalanchego --public-ip=100.100.130.100
KillMode=process
KillSignal=SIGINT
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=avalanchego
Restart=always
RestartSec=0
# Hardening measures
####################
# Provide a private /tmp and /var/tmp.
PrivateTmp=true
# Mount /usr, /boot/ and /etc read-only for the process.
ProtectSystem=full
# Deny access to /home, /root and /run/user
# ProtectHome=true
# Disallow the process and all of its children to gain
# new privileges through execve().
NoNewPrivileges=true
# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
PrivateDevices=true
[Install]
WantedBy=multi-user.target

“CTRL O” ile kaydedip “CTRL X” ile çıkış yapalım.

şimdi avalanchego.service dosyasına gerekli yetkilendirmeleri verelim;

sudo chmod 644 /etc/systemd/system/avalanchego.servicesudo systemctl enable avalanchego && sudo systemctl daemon-reload

NODE PRUNE AYARI (8 AĞUSTOS 2023 GÜNCELLEME)

Avalanche 3 çeşit node barındırır. Bunlardan biri Archive node (yaklaşık 3 TB üzeri database barındırıyor), diğeri pruned node (yaklaşık 1TB ve üzeri Database ) ve öteki ise State node versiyonudur. Node başlattığımız zaman code ile aksini belirtmedikçe Prune lu node çalışıp database i çekmeye çalışır. Dapp veya subnet projesi başlatmayacaksak, state node işimizi görecektir. Bunun için şu adımları yapmamız lazım

node un ilk çalıştırmasını yapmadığımız için ~/.avalanchego klasörü oluşmayacaktır. ilk çalıştırıp node u durdurduğumuzda kendiliğinden bu klasör oluşur. sırasıyla configs, chains ve büyük harfle C klasörlerini oluşturmamız gerekir.

mkdir -p ~/.avalanchego/configs/chains/C 

cd ~/.avalanchego/configs/chains/C

daha sonra C klasörü içine nano editor ile config.json dosyası yaratalım

sudo nano config.json

içerisine ;

{
“state-sync-enabled”: true
}

CTRL O ile kaydedip , CTRL X ile çıkalım.

ve artık yeni avalanche node umuzu başlatabiliriz.

sudo systemctl start avalanchego 

ya da sistemin çalışmasıyla birlikte hemen kayıtlarını görmek isterseniz;

sudo systemctl start avalanchego && sudo journalctl -u  avalanchego -f -n 100 | ccze

CTRL X ile log işlemini izlemeyi bırakıp sistem database indirme işlemini bekleyin. Buna Database Sync işlemi diyoruz. Avalanche son zamanlarda Database yükünün çok olması sebebiyle snapshot denilen uzun beklemelerin önüne geçmek için ön indirme kolaylığı getirdi. O konuya başka bir makalede değinebiliriz.

SİSTEM KAYITLARINA BAKMA KOMUTLARI

#kayıt bakma
sudo journalctl -u avalanchego -f
#son 100 kayıt bakma
sudo journalctl -u avalanchego -f -n 100
#log dosyalarına bakma
sudo tail -f cat ~/.avalanchego/logs/C.log

yine bu komutların sonuna eklentilerde kurduğumuz “log colorizer” eklentisi için “ | ccze ” komutunu ekleyebiliriz.

API SORGULAMASI İLE SİSTEM SORGULAMASI

docs.avax.network üzerinde verilmiş API sorgulamaları ile Nodeid nizi, sağlıklı çalışıp çalışmadığı gibi sorgulamaları yapabilirsiniz.

burada bizi en çok ilgilendiren API sorgulaması Health yani node un sağlıklı olup olmadığıdır.

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"health.health"
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/health | jq

Görüldüğü gibi sondaki kısma eklentilerdeki “ | jq “ ekledik. Bu, sorgulama sonucunu daha okunur bir hale getirir. Her API sorgulaması sonuna eklemenizi tavsiye ederim. Health API sorgulaması sonucunun “TRUE” olması beklenir. Aşağıdaki örnekte hem JQ hem de health API sorgulamasının çıktısını görüyorsunuz.

Ayrıca, ileride validator node kurmanız halinde, telegram dan Burcusan ın yapmış olduğu node takip sistemini kurmanızı tavsiye ederim. Bu telegram botu ile node unuzla ilgili bilgileri sizle anlık paylaşarak sorun teşkil eden durumlarda müdahele etmenizi sağlar. Aşağıdaki link ile Bot’u kurabilirsiniz.

https://medium.com/p/1f44c9d6b6ae

Yeni Node unuz hayırlı olsun.

X-avax1gfh8ysl4487andp0ef3849tmaxkw9k6g5wclz7

--

--