# LXD: Création et configuration d'un conteneur {{INLINETOC}} # Configuration ## Serveur graphique ### Prise en charge d'une carte grpahique Intel Il faut donner les droits spéciaux **SETUID** et **STICKYBIT** (cf. [[notes:linux-droits-speciaux|les droits spéciaux]]) au device `/dev/dri/card0` afin qu'il puisse être utilisé par le serveur x. ``` sudo chmod 5700 /dev/dri/card0 ``` ### Démarrage de X11 depuis la console On peut utiliser **startx** de **Xorg**, Mais certains environnements de bureau fournissent leurs propres remplacements pour startx. Par exemple, Xfce4 fournit startxfce4: ``` startxfce4 -- vt7 ``` Généralement les 6 premiers terminaux virtuels sont réservés aux shells. Le VT numéro 7 est généralement réservé au serveur X. ## Limitation des ressources * `lxc config set ${hostname} limits.memory.swap true` Pas de Swap * `lxc config set ${hostname} limits.cpu 1` limite le nombre de CPU = 1 * `lxc config set ${hostname} limits.memory 256MB` limite la quantité de RAM = 256Mo * `lxc config device set ${hostname} root size 5GB` limite la taille du répertoire racine / = 5Go ## Réseau LXD dispose d'un proxy intégré, ce qui permet de créer des connexions proxy entre l'hôte et les conteneurs. Cela inclut les connexions de socket TCP, UDP et Unix, dans n'importe quelle combinaison entre elles, dans n'importe quelle direction. Par exemple, lorsqu'une personne se connecte à l'hôte sur le port 80 (http), cette connexion peut être envoyée par proxy à un conteneur à l'aide d'un périphérique proxy. De cette façon, on peut isoler le serveur Web dans un conteneur LXD. En utilisant un périphérique proxy TCP, il n'est pas besoin d'utiliser iptables à la place. ``` lxc config device add xfce VNCPort5900 proxy listen=tcp:0.0.0.0:5900 connect=tcp:localhost:5900 ``` La commande qui crée le périphérique proxy utilise les composants suivants: * **lxc config device add**, ajoute un device à la config, * **xfce**, au conteneur xfce, * **VNCPort5900** , avec le nom VNCPort5900, * **proxy**, on ajoute un périphérique proxy LXD. * **listen=tcp:0.0.0.0:5900**, écoute (sur l'hôte par défaut) sur toutes les interfaces réseau sur le port TCP 5900. * **connect=tcp:localhost:5900**, redirige le flux (dans le conteneur xfce) sur port TCP 5900 du localhost. ### Imprimante Installer **cups** et **system-config-printer-gnome**: - installer les paquets avec la commande `apt install cups system-config-printer-gnome` - Télécharger le fichier PostScript Printer Description ou \*.ppd correspondant au modèle d'imprimante utilisé. - décompacter l'archive. - en **root** lancer **system-config-printer** - appuyer sur `add` pour ajouter une imprimante - choisir **Network printer>Find Network Printer** - indiquer l'adresse ip de l'imprimante dans **Host** - appuyer sur `probe` - prendre le fichier ppd télécharger comme driver Donner les droits d'utilisation à l'utisateur normal e redémarrer cups (stop+start et non restart): ``` sudo usermod -aG lpadmin jacques.nougat sudo service cups start ``` Le service **cups.socket** doit être **Active: active (running)** ``` systemctl status cups.socket Failed to dump process list, ignoring: No such file or directory cups.socket - CUPS Scheduler Loaded: loaded (/lib/systemd/system/cups.socket; enabled; vendor preset: enab Active: active (running) since Mon 2021-01-04 09:42:49 UTC; 2h 7min ago Listen: /run/cups/cups.sock (Stream) CGroup: /system.slice/cups.socket ``` ## Applications ### Gnome Teminal Si lors du lancement du terminal Gnome une erreur est retornée ``` $ gnome-terminal Error constructing proxy for org.gnome.Terminal: /org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Process /usr/lib/gnome-terminal/gnome-terminal-server exited with status 8 ``` Mettre à jour le lanceur du terminal: - Clic droit sur l'icone du lanceur de terminal - choisir l'item **Properties** - cliquer sur Edit - Puis remplacer la commande `exo-open --launch TerminalEmulator` par `/usr/bin/dbus-launch /usr/bin/gnome-terminal` ### PHP Si NGINX renvoi une page d'erreur bad GATEWAY vérifier que PHP à bien démarrer ``` systemctl status php7.2-fpm php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor prese Active: active (running) since Mon 2021-01-04 07:11:15 UTC; 1h 26min ago Docs: man:php-fpm7.2(8) Main PID: 760 (php-fpm7.2) Status: "Processes active: 0, idle: 3, Requests: 209, slow: 0, Traffic: 0req/ Tasks: 4 (limit: 4569) CGroup: /system.slice/php7.2-fpm.service ├─ 760 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) ├─1038 php-fpm: pool www ├─1098 php-fpm: pool www └─1104 php-fpm: pool www ``` Si ce n'est pas le cas, vérifier que le répertoire `/run/php` existe bien, si ce n'est pas le cas créer le répertoire puis lancer **PHP** ``` mkdir /run/php sudo systemctl start php7.2-fpm ``` ### Capture d'écran Installer l'application `xfce4-screenshooter` ``` apt install xfce4-screenshooter ``` Dans `Menu XFCE -> Paramètres -> Clavier -> Raccourcis d'application`, ajouter la commande `xfce4-screenshooter -f` pour utiliser la touche "PrintScreen" afin de prendre des captures d'écran en plein écran.