Ai Install Hermes In Incus: Difference between revisions

From wiki karavi
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
= راهنمای جامع صفر تا صد: نصب Incus، کانتینر Ubuntu و داشبورد وب Hermes Agent =
# ۱. نصب Nginx داخل کانتینر (تداخلی با هاست و X-UI ندارد چون داخل کانتینر ایزوله است)
apt update && apt install -y nginx


== بخش اول: راه‌اندازی Incus و کانتینر روی سرور اصلی (Host) ==
# ۲. ایجاد کانفیگ SSL در Nginx داخل کانتینر برای پورت 9119
cat << 'EOF' > /etc/nginx/sites-available/hermes-ssl.conf
server {
    listen 9119 ssl;
    server_name s5.sovi.ir;


'''۱. نصب پیش‌نیازها و افزودن مخزن رسمی Zabbly:'''
    ssl_certificate /root/.hermes/cert.pem;
<pre>
    ssl_certificate_key /root/.hermes/key.pem;
sudo apt-get update
    ssl_protocols TLSv1.2 TLSv1.3;
sudo apt-get install -y curl gpg
sudo mkdir -p /etc/apt/keyrings/
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc


sudo sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-stable.sources
    location / {
Enabled: yes
        proxy_pass http://127.0.0.1:9118;
Types: deb
        proxy_http_version 1.1;
URIs: https://pkgs.zabbly.com/incus/stable
        proxy_set_header Upgrade $http_upgrade;
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
        proxy_set_header Connection "upgrade";
Components: main
        proxy_set_header Host $host;
Architectures: $(dpkg --print-architecture)
        proxy_set_header X-Real-IP $remote_addr;
Signed-By: /etc/apt/keyrings/zabbly.asc
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
EOF'
        proxy_set_header X-Forwarded-Proto https;
</pre>
        proxy_buffering off;
 
    }
'''۲. نصب پکیج‌های Incus و مقداردهی اولیه:'''
}
<pre>
sudo apt-get update
sudo apt-get install -y incus incus-ui-canonical
sudo usermod -aG incus-admin $USER
newgrp incus-admin
 
incus admin init --auto
</pre>
 
'''۳. ساخت کانتینر Ubuntu 24.04 و ورود به آن:'''
<pre>
incus launch images:ubuntu/24.04 incus-ubuntu-hermes
incus list
incus exec incus-ubuntu-hermes -- bash
</pre>
 
== بخش دوم: تنظیمات و نصب داشبورد داخل کانتینر ==
 
'''۱. به‌روزرسانی و نصب Hermes Agent:'''
<pre>
apt update && apt install -y curl git tar xz-utils socat python3 nano
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc
</pre>
 
'''۲. تولید هش امن رمز عبور (scrypt):'''
<pre>
HASH=$(/root/.hermes/bin/uv run python - << 'EOF'
import sys
sys.path.insert(0, '/usr/local/lib/hermes-agent')
from plugins.dashboard_auth.basic import hash_password
print(hash_password("TestPass@2026"))
EOF
EOF
)
</pre>


'''۳. تنظیم دامنه و احراز هویت در config.yaml:'''
ln -sf /etc/nginx/sites-available/hermes-ssl.conf /etc/nginx/sites-enabled/
<pre>
rm -f /etc/nginx/sites-enabled/default 2>/dev/null || true
mkdir -p /root/.hermes
sed -i '/^dashboard:/,$d' /root/.hermes/config.yaml


cat << EOF >> /root/.hermes/config.yaml
# ۳. اصلاح سرویس systemd داشبورد برای اجرا روی 9118
 
dashboard:
  public_url: "http://s5.sovi.ir:9119"
  basic_auth:
    username: "admin"
    password_hash: "$HASH"
EOF
</pre>
 
'''۴. ساخت سرویس systemd داشبورد Hermes:'''
<pre>
cat << 'EOF' > /etc/systemd/system/hermes-dashboard.service
cat << 'EOF' > /etc/systemd/system/hermes-dashboard.service
[Unit]
[Unit]
Line 85: Line 40:
WorkingDirectory=/root
WorkingDirectory=/root
Environment="PATH=/usr/local/bin:/root/.hermes/bin:/usr/local/share/uv/bin:/usr/bin:/bin"
Environment="PATH=/usr/local/bin:/root/.hermes/bin:/usr/local/share/uv/bin:/usr/bin:/bin"
ExecStart=/usr/local/bin/hermes dashboard --host 127.0.0.1 --port 9119 --no-open --skip-build
ExecStart=/usr/local/bin/hermes dashboard --host 127.0.0.1 --port 9118 --no-open --skip-build
Restart=always
Restart=always
RestartSec=5
RestartSec=3
StandardOutput=journal
StandardOutput=journal
StandardError=journal
StandardError=journal
Line 94: Line 49:
WantedBy=multi-user.target
WantedBy=multi-user.target
EOF
EOF
</pre>
'''۵. ساخت سرویس فورواردر پورت socat:'''
<pre>
cat << 'EOF' > /etc/systemd/system/hermes-proxy.service
[Unit]
Description=Expose Hermes Dashboard to Network
After=hermes-dashboard.service


[Service]
# ۴. ریستارت سرویس‌ها
Type=simple
ExecStart=/usr/bin/socat TCP4-LISTEN:9120,fork,reuseaddr TCP4:127.0.0.1:9119
Restart=always
RestartSec=3
 
[Install]
WantedBy=multi-user.target
EOF
</pre>
 
'''۶. فعال‌سازی و راه‌اندازی سرویس‌ها:'''
<pre>
systemctl daemon-reload
systemctl daemon-reload
systemctl enable --now hermes-dashboard hermes-proxy
systemctl restart hermes-dashboard
exit
nginx -t && systemctl restart nginx
</pre>
 
== بخش سوم: فوروارد پورت روی سرور اصلی (Host) ==
 
'''اتصال پورت به اینترنت از طریق Incus Proxy:'''
<pre>
incus config device add incus-ubuntu-hermes hermes-web-port proxy listen=tcp:0.0.0.0:9119 connect=tcp:127.0.0.1:9120
ss -tulpn | grep 9119
</pre>
 
== بخش چهارم: مشخصات ورود و دستورات مدیریتی ==
 
{| class="wikitable"
! پارامتر !! مقدار
|-
| آدرس در مرورگر || <code>http://s5.sovi.ir:9119</code>
|-
| نام کاربری (Username) || <code>admin</code>
|-
| رمز عبور تستی (Password) || <code>TestPass@2026</code>
|}


=== دستورات کاربردی مدیریت: ===
# ۵. بررسی باز بودن پورت‌ها
{| class="wikitable"
ss -tulpn | grep 911
! عملیات !! دستور
|-
| ورود به ترمینال کانتینر || <code>incus exec incus-ubuntu-hermes -- bash</code>
|-
| مشاهده لاگ زنده || <code>journalctl -u hermes-dashboard -f</code>
|-
| ریستارت داشبورد || <code>systemctl restart hermes-dashboard</code>
|-
| خاموش / روشن کردن || <code>incus stop incus-ubuntu-hermes</code> / <code>incus start incus-ubuntu-hermes</code>
|}

Revision as of 22:34, 27 August 2026

  1. ۱. نصب Nginx داخل کانتینر (تداخلی با هاست و X-UI ندارد چون داخل کانتینر ایزوله است)

apt update && apt install -y nginx

  1. ۲. ایجاد کانفیگ SSL در Nginx داخل کانتینر برای پورت 9119

cat << 'EOF' > /etc/nginx/sites-available/hermes-ssl.conf server {

   listen 9119 ssl;
   server_name s5.sovi.ir;
   ssl_certificate /root/.hermes/cert.pem;
   ssl_certificate_key /root/.hermes/key.pem;
   ssl_protocols TLSv1.2 TLSv1.3;
   location / {
       proxy_pass http://127.0.0.1:9118;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       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_set_header X-Forwarded-Proto https;
       proxy_buffering off;
   }

} EOF

ln -sf /etc/nginx/sites-available/hermes-ssl.conf /etc/nginx/sites-enabled/ rm -f /etc/nginx/sites-enabled/default 2>/dev/null || true

  1. ۳. اصلاح سرویس systemd داشبورد برای اجرا روی 9118

cat << 'EOF' > /etc/systemd/system/hermes-dashboard.service [Unit] Description=Hermes Agent Web Dashboard After=network.target

[Service] Type=simple User=root WorkingDirectory=/root Environment="PATH=/usr/local/bin:/root/.hermes/bin:/usr/local/share/uv/bin:/usr/bin:/bin" ExecStart=/usr/local/bin/hermes dashboard --host 127.0.0.1 --port 9118 --no-open --skip-build Restart=always RestartSec=3 StandardOutput=journal StandardError=journal

[Install] WantedBy=multi-user.target EOF

  1. ۴. ریستارت سرویس‌ها

systemctl daemon-reload systemctl restart hermes-dashboard nginx -t && systemctl restart nginx

  1. ۵. بررسی باز بودن پورت‌ها

ss -tulpn | grep 911