[Ръководство] Antctl Docker Kubuntu 24.04

Ръководството е за 6000 нода разделени по 200 нода в 30 Docker-a

Инсталиране на Cockpit

sudo apt update
sudo apt install cockpit -y

След инсталацията стартирай Cockpit и го направи да се стартира автоматично при всяко включване:

sudo systemctl enable --now cockpit.service

Достъп до Cockpit

https://<IP_на_машината>:9090
https://localhost:9090

CPU performance

sudo apt install cpufrequtils

for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo performance | sudo tee $i;
done

Firewall

sudo apt update
sudo apt install ufw
sudo ufw allow 9090/tcp
sudo ufw allow 50000:60000/udp
sudo ufw enable
sudo ufw status

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[sshd]

enabled = true
port = 22
logpath = /var/log/auth.log
maxretry = 3

[cockpit]

enabled = true
port = 9090
logpath = /var/log/auth.log
maxretry = 3
failregex = ^.Failed password for (?:invalid user )?(\S) from .*$

sudo nano /etc/fail2ban/filter.d/cockpit.conf

[Definition]
failregex = ^.Failed password. for.* from .*$
ignoreregex =

sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status sshd

Screen

sudo apt install screen
sudo screen -S ant
sudo screen -r ant

За да инсталираш Docker на Kubuntu 24, следвай тези стъпки:

1. Добави официалното Docker хранилище

sudo apt update
sudo apt install -y ca-certificates curl gnupg

Добави GPG ключа на Docker:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc

Добави хранилището:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2. Инсталирай Docker

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. Провери дали Docker работи

sudo systemctl enable --now docker
sudo docker --version

Ако искаш да използваш Docker без sudo, добави потребителя си към групата docker:

sudo usermod -aG docker $USER
newgrp docker

След това рестартирай компютъра си, за да влязат промените в сила.

cat << 'EOF' > install_new_dockers.sh
#!/bin/bash

# Цикъл за създаване на Docker контейнери от 1 до 30
for i in {1..30}
do
    container_name="a$i"  # Използвай "a" преди числото
    echo "Създавам Docker контейнер $container_name"
    sudo docker run -d \
        --restart unless-stopped \
        --privileged \
        --network host \
        --name $container_name \
        debian:bookworm-slim sleep infinity
done

echo "Готово! Docker контейнерите от 1 до 30 са създадени."
EOF

chmod +x install_new_dockers.sh

cat << 'EOF' > install_in_dockers.sh
#!/bin/bash

# Определяне на командите, които ще се изпълнят
commands="apt update && \
apt install -y curl openrc procps iputils-ping iproute2 && \
touch /run/openrc/softlevel && \
curl -sSL https://raw.githubusercontent.com/maidsafe/antup/main/install.sh | bash && \
echo 'export PATH=\$PATH:/root/.local/bin' >> ~/.bashrc && \
source ~/.bashrc && \
antup antctl"

# Цикъл за изпълнение на командите в Docker контейнерите от a1 до a30
for i in {1..30}
do
    container_name="a$i"  # Използваме a1, a2, ... a30
    echo "Изпълнявам команди в Docker контейнер $container_name"
    
    # Изпълнение на командите в конкретния контейнер
    docker exec -it $container_name bash -c "$commands"
    
    # Проверка дали не е последният контейнер, за да се добави закъснение
    if [ "$i" -lt 20 ]; then
        echo "Изчакване за 20 секунди преди да премина към Docker контейнер $((i + 1))"
        sleep 20 # Закъснение от 20 секунди
    fi
done
EOF

chmod +x install_in_dockers.sh

cat << 'EOF' > source_env_in_dockers.sh
#!/bin/bash

# Цикъл за изпълнение на командата source /root/.config/autonomi/env в Docker контейнерите от a1 до a30
for i in {1..30}
do
    container_name="a$i"  # Използваме a1, a2, ... a30
    echo "Изпълнявам 'source /root/.config/autonomi/env' в Docker контейнер $container_name"
    
    # Изпълнение на командата в контейнера
    docker exec -it $container_name bash -c "source /root/.config/autonomi/env"
    
    # Закъснение от 20 секунди преди да премина към следващия контейнер
    if [ "$i" -lt 20 ]; then
        echo "Изчакване за 20 секунди преди да премина към Docker контейнер $((i + 1))"
        sleep 20
    fi
done
EOF

chmod +x source_env_in_dockers.sh

cat <<EOF > run_all.sh
#!/bin/bash

set -e  # Спира изпълнението при грешка

echo "Стартиране на install_new_dockers.sh..."
sudo ./install_new_dockers.sh

echo "Стартиране на install_in_dockers.sh..."
sudo ./install_in_dockers.sh

echo "Стартиране на source_env_in_dockers.sh..."
sudo ./source_env_in_dockers.sh

echo "Всички скриптове са изпълнени успешно!"
EOF

sudo chmod +x run_all.sh

sudo ./run_all.sh

На мястото на adres се попълва Етериум адрес. Една по една се въвеждат командите, защото не винаги сваля успешно antnode и трябва да се пусне повторно за съответния докер:

sudo docker exec -it a1 /root/.local/bin/antctl add --count 200 --node-port 50001-50200 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a2 /root/.local/bin/antctl add --count 200 --node-port 50201-50400 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a3 /root/.local/bin/antctl add --count 200 --node-port 50401-50600 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a4 /root/.local/bin/antctl add --count 200 --node-port 50601-50800 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a5 /root/.local/bin/antctl add --count 200 --node-port 50801-51000 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a6 /root/.local/bin/antctl add --count 200 --node-port 51001-51200 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a7 /root/.local/bin/antctl add --count 200 --node-port 51201-51400 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a8 /root/.local/bin/antctl add --count 200 --node-port 51401-51600 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a9 /root/.local/bin/antctl add --count 200 --node-port 51601-51800 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a10 /root/.local/bin/antctl add --count 200 --node-port 51801-52000 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a11 /root/.local/bin/antctl add --count 200 --node-port 52001-52200 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a12 /root/.local/bin/antctl add --count 200 --node-port 52201-52400 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a13 /root/.local/bin/antctl add --count 200 --node-port 52401-52600 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a14 /root/.local/bin/antctl add --count 200 --node-port 52601-52800 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a15 /root/.local/bin/antctl add --count 200 --node-port 52801-53000 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a16 /root/.local/bin/antctl add --count 200 --node-port 53001-53200 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a17 /root/.local/bin/antctl add --count 200 --node-port 53201-53400 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a18 /root/.local/bin/antctl add --count 200 --node-port 53401-53600 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a19 /root/.local/bin/antctl add --count 200 --node-port 53601-53800 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a20 /root/.local/bin/antctl add --count 200 --node-port 53801-54000 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a21 /root/.local/bin/antctl add --count 200 --node-port 54001-54200 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a22 /root/.local/bin/antctl add --count 200 --node-port 54201-54400 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a23 /root/.local/bin/antctl add --count 200 --node-port 54401-54600 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a24 /root/.local/bin/antctl add --count 200 --node-port 54601-54800 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a25 /root/.local/bin/antctl add --count 200 --node-port 54801-55000 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a26 /root/.local/bin/antctl add --count 200 --node-port 55001-55200 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a27 /root/.local/bin/antctl add --count 200 --node-port 55201-55400 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a28 /root/.local/bin/antctl add --count 200 --node-port 55401-55600 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a29 /root/.local/bin/antctl add --count 200 --node-port 55601-55800 --rewards-address adres evm-arbitrum-one
sudo docker exec -it a30 /root/.local/bin/antctl add --count 200 --node-port 55801-56000 --rewards-address adres evm-arbitrum-one
sudo bash -c '
docker exec -it a1 /root/.local/bin/antctl start --interval 20000
docker exec -it a2 /root/.local/bin/antctl start --interval 20000
docker exec -it a3 /root/.local/bin/antctl start --interval 20000
docker exec -it a4 /root/.local/bin/antctl start --interval 20000
docker exec -it a5 /root/.local/bin/antctl start --interval 20000
docker exec -it a6 /root/.local/bin/antctl start --interval 20000
docker exec -it a7 /root/.local/bin/antctl start --interval 20000
docker exec -it a8 /root/.local/bin/antctl start --interval 20000
docker exec -it a9 /root/.local/bin/antctl start --interval 20000
docker exec -it a10 /root/.local/bin/antctl start --interval 20000
'
sudo bash -c '
docker exec -it a11 /root/.local/bin/antctl start --interval 20000
docker exec -it a12 /root/.local/bin/antctl start --interval 20000
docker exec -it a13 /root/.local/bin/antctl start --interval 20000
docker exec -it a14 /root/.local/bin/antctl start --interval 20000
docker exec -it a15 /root/.local/bin/antctl start --interval 20000
docker exec -it a16 /root/.local/bin/antctl start --interval 20000
docker exec -it a17 /root/.local/bin/antctl start --interval 20000
docker exec -it a18 /root/.local/bin/antctl start --interval 20000
docker exec -it a19 /root/.local/bin/antctl start --interval 20000
docker exec -it a20 /root/.local/bin/antctl start --interval 20000
'
sudo bash -c '
docker exec -it a21 /root/.local/bin/antctl start --interval 20000
docker exec -it a22 /root/.local/bin/antctl start --interval 20000
docker exec -it a23 /root/.local/bin/antctl start --interval 20000
docker exec -it a24 /root/.local/bin/antctl start --interval 20000
docker exec -it a25 /root/.local/bin/antctl start --interval 20000
docker exec -it a26 /root/.local/bin/antctl start --interval 20000
docker exec -it a27 /root/.local/bin/antctl start --interval 20000
docker exec -it a28 /root/.local/bin/antctl start --interval 20000
docker exec -it a29 /root/.local/bin/antctl start --interval 20000
docker exec -it a30 /root/.local/bin/antctl start --interval 20000
'

Спиране и Премахване на всички докери - за чисто начало

sudo docker stop $(sudo docker ps -q)
sudo docker rm $(sudo docker ps -a -q)