Skip to content

Installation Manuelle

Hype² edited this page Aug 1, 2024 · 2 revisions

Installer les exigences

Pour votre sécurité, vous pouvez également trouver les paquets sur pip ou pipx et l'exigence. Fichier txt.

Mettre à jour et installer les paquets

apt-get update -y -qq
apt-get install git lxc lxcfs lxc-templates qemu qemu-utils qemu-kvm virtinst bridge-utils virt-manager libvirt-daemon libvirt-daemon-system virt-viewer libvirt-clients libosinfo-bin websockify sqlite3 novnc ovmf swtpm swtpm-tools -y
apt-get install python3 python3-flask python3-flask-login python3-flask-sqlalchemy python3-requests python3-lxc python3-libvirt python3-psutil python3-werkzeug python3-websockify python3-novnc python3-flask-socketio python3-openssl
apt-get install openvswitch-switch openvswitch-common

Cloner le dépôt

git clone https://github.com/pyhype2/Hype2.git
cd Hype2

Configurer Libvirt pour démarrer au démarrage

systemctl --quiet enable --now libvirtd
systemctl --quiet  start libvirtd

Créer un réseau de ponts

Ce pont vous permettra de connecter vos serveurs et conteneurs virtuels à votre réseau local afin d'y accéder facilement.

cp ./bridged.xml /usr/share/libvirt/networks/
virsh net-define bridged.xml
virsh net-start bridged
virsh net-autostart bridged

Sur votre hôte, créez l'interface de pont "br0", selon votre réseau avec :

  • int L'interface physique (exemple : enp1s0)
  • ip votre IP fixe
  • netmask votre netmask (exemple: 255.255.255.0)
  • ** passerelle** votre passerelle
auto br0
iface br0 inet static
bridge_ports <int>
bridge_fd 0
bridge_maxwait 0
address <ip>
netmask <netmask>
gateway <gateway>

Modifier Configuration de Qemu

Cela permettra à Qemu de fonctionner comme root et d'activer VNC sur toutes les adresses de la console.

Base de données pour les utilisateurs

Une base de données par défaut est fournie dans le git (install/db.db.admin_exemple), l'utilisateur par défaut est admin@admin.com / admin. Pour utiliser cette base de données, il suffit de changer le nom de db.db.admin_exemple à db.db

Une fois connecté, vous pourrez créer/gérer des utilisateurs directement sur le logiciel.

cp db.db.admin_example db.db

Pour des raisons de sécurité, vous devez supprimer db.db.admin_example

Si vous voulez créer cette base de données par vous-même, vous pouvez :

Créer une base de données pour les utilisateurs

sqlite3 db.db

CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username NVARCHAR(200) NULL, email NVARCHAR(200) NULL, password NVARCHAR(200) NULL);

Créer le premier utilisateur

Générer un mot de passe chiffré

python3
import app
app.encrypt('Password')

Remplir la base de données avec les informations utilisateur

sqlite3 db.db

INSERT INTO user (id,username,email,password) VALUES (1,'<votre_login>','<votre_email>','<votre_precedent_motdepasse_chifré>');

Configurer le proxy inverse pour accéder aux consoles

Afin d'accéder aux consoles qui exécutent des sockets web sur d'autres ports (6080 vor VNC et 5008 pour Pyxterm), Un proxy inverse est nécessaire.

Sans cela, vous pouvez toujours accéder aux consoles en utilisant CLI pour l'accès en série :

lxc-attach <container>

et en utilisant un outil tel que :

https://www.realvnc.com/fr/connect/download/viewer/

Pour l'accès VNC (au port 6080).

Pour définir votre Proxy inversé, vous pouvez utiliser les exemples ci-dessous (adapté à votre cas bien sûr).

Exemple pour nginx:

server {
    listen 443 ssl;
    server_name www.example.com;

    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/privkey.pem;
    ssl_verify_client off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    proxy_read_timeout 20m;
    proxy_connect_timeout 20m;
    proxy_send_timeout 20m;
    client_max_body_size 10G;

    location /websockify {
        proxy_pass http://<your_ip>:6080/websockify;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /socket.io {
        proxy_pass http://<your_ip>:5008/socket.io;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location / {
        proxy_pass https://<your_ip>:5007/;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Exemple pour apache2 :

<VirtualHost *:443>
ServerName www.example.com
RewriteEngine on
SSLEngine On
SSLCertificateFile /path/to/your/cert.pem
SSLCertificateKeyFile /path/to/your/privkey.pem
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyEngine          On
SSLProxyCheckPeerExpire off
ProxyRequests     Off
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass /websockify ws://<your_ip>:6080/websockify retry=3
ProxyPassReverse /websockify ws://<your_ip>:6080/websockify retry=3
ProxyPass /socket.io ws://<your_ip>:5008/socket.io retry=3
ProxyPassReverse /socket.io ws://<your_ip>:5008/socket.io retry=3
ProxyPass         / https://<your_ip>:5007/
ProxyPassReverse  / https://<your_ip>:5007/
</VirtualHost>

NB : vous pouvez définir le nom du serveur à server_name _;

Cela permettra de capturer tout le trafic sans filtrer la source.

Clone this wiki locally