diff --git a/NEBULA/nebula.md b/NEBULA/nebula.md index 6205c94..c7b2509 100644 --- a/NEBULA/nebula.md +++ b/NEBULA/nebula.md @@ -2,8 +2,9 @@ ## Мной, в качестве сервера выбран debian 12 (6Cores, 12GB RAM + 160gb SSD) ## Обязательно проверяйте, чтобы у вашего хостера/home-server была виртуализация ### Начало установки -## Для начала установим MariaDB сервер +## Для начала установим MariaDB сервер да и nginx ``` +apt install nginx certbot python3-certbot-nginx -y apt-get install mariadb-server curl gnupg2 -y mysql CREATE DATABASE opennebula; @@ -68,17 +69,135 @@ cat /var/lib/one/.one/one_auth systemctl start opennebula opennebula-sunstone systemctl enable opennebula opennebula-sunstone ``` +Думали всё? +Начинаем дебажить +В целом, нам, для начала, необходимо создать Host. Это место, где будут крутиться наши виртуалки +Имя хоста обязательно должно совпадать с записью в `/etc/hosts`, так-же, если хост находится на одном с небулой сервере, то необходимо что-бы он был с ip 127.0.0.1 +Далее +``` +su - oneadmin -c "ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa" +su - oneadmin -c "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys" +chmod 600 /var/lib/one/.ssh/authorized_keys +``` +Проверим возможность Oneadmin общаться с самим собой +``` +su - oneadmin +ssh -o StrictHostKeyChecking=no localhost +``` +Если нас пустило без пароля - шик +Пишем +``` +apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils +usermod -a -G libvirt,kvm oneadmin +``` +После этого мы почти готовы поднимать VM, но ещё не совсем +``` +ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm-one +chown -R oneadmin:oneadmin /var/lib/one/datastores +systemctl restart libvirtd +``` +Далее `nano /etc/libvirt/qemu.conf` +И туда пишем +``` +user = "oneadmin" +group = "oneadmin" +dynamic_ownership = 1 +``` +После +``` +apt-get install -y apparmor-utils +aa-complain /usr/sbin/libvirtd +systemctl restart libvirtd +chown -R oneadmin:oneadmin /var/lib/one/datastores +chmod -R 770 /var/lib/one/datastores +``` +После этого, ради работы VNC установим FireBridge +``` +apt-get install opennebula-fireedge +echo "$(openssl rand -base64 32)" > /etc/one/fireedge_key +chown oneadmin:oneadmin /etc/one/fireedge_key +chmod 600 /etc/one/fireedge_key +systemctl enable opennebula-fireedge +systemctl start opennebula-fireedge +``` +Установим "гуакд" +``` +apt-get install -y opennebula-guacd +systemctl enable --now opennebula-guacd +``` +Проверим его работоспособность +`ss -tlnp | grep 4822` +Далее идём в +``` +nano /etc/one/sunstone-server.conf +``` +И убеждаемя, что в самом конце этого файла у нас написанно +``` +:private_fireedge_endpoint: http://localhost:2616 +:public_fireedge_endpoint: http://ip_addr_of_your_server:2616 +:fireedge_verify_ssl: false +``` +Затем нагенерим самописные-серты для fireedge +``` +# Create the directory +mkdir -p /etc/one/ssl +cd /etc/one/ssl + +# Generate a self-signed certificate (valid for 365 days) +openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ + -keyout opennebula.key -out opennebula.crt \ + -subj "/C=US/ST=State/L=City/O=OpenNebula/CN=ip_addr_of_your_server" + +# Ensure the oneadmin user can read them +chown -R oneadmin:oneadmin /etc/one/ssl +chmod 600 /etc/one/ssl/opennebula.key +chmod 644 /etc/one/ssl/opennebula.crt +``` +Далее +``` +nano /etc/one/fireedge-server.conf +``` +Там проверяем, что +``` +:host: 127.0.0.1 +:port: 2617 меняем порт на 2617 +``` +``` +nano /etc/nginx/sites-available/fireedge +``` +Вставляем туда +``` +server { + listen 2616 ssl; + server_name ip_addr_of_your_server; + + ssl_certificate /etc/one/ssl/opennebula.crt; + ssl_certificate_key /etc/one/ssl/opennebula.key; + + location / { + proxy_pass http://127.0.0.1:2617; + 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; + } +} +``` +Потом +``` +ln -s /etc/nginx/sites-available/fireedge /etc/nginx/sites-enabled/ +rm /etc/nginx/sites-enabled/default +systemctl restart nginx +systemctl restart opennebula-fireedge +``` И в целом всё Ваша небула будет доступна через браузер **http://your-server-ip:9869** - +iptables -A INPUT -p tcp --dport 5900:6000 -j ACCEPT # Но это ведь слишком скучно. Хочется домен, хочется ходить без порта. -Качаем Nginx -``` -apt install nginx certbot python3-certbot-nginx -y -``` -После этого сгенерим конфигурационный файл для нашего облачка +Генерим конфигурационный файл для нашего облачка ``` nano /etc/nginx/sites-available/sunstone.conf ``` @@ -116,7 +235,19 @@ certbot --nginx -d pu-pu-pu-pu-pu-pu.domain.com Для загрузки ISO лучше всего использовать scp ```scp pupu.iso oneadmin@server:/var/lib/one/datastores/0/``` -Или грузить всё в домашнюю директорию рута и оттуда +Или грузить всё в домашнюю директорию рута и оттуда +Перед этим нужно подредачить настройки хранилища + +``` +onedatastore show 1 (ID_ХРАНИЛИЩА) + +Если видим дискомфортное количество или просто "/" в `RESTRICTED_DIRS` +То: +``` +onedatastore update 1 +``` +И просто сносим RESTRICTED_DIRS +После этого, через WEB-GUI можно будет добавлять ISO по их пути на сервере ``` sudo mv ~/pupu.iso /var/lib/one/datastores/0/