Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
tutoriaux:docker-related:creer-container-86box [2024/07/16 18:43] – créée frater | tutoriaux:docker-related:creer-container-86box [2024/07/18 15:19] (Version actuelle) – frater | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== 86box - PC vintage | + | ====== |
+ | Ce n'est un secret pour personne, j'ai toujours aimé les ordinateurs, | ||
+ | Je considère que je vis une époque formidable, car les machines d' | ||
+ | En surfant sur [[https:// | ||
+ | |||
+ | Je ne veux pas d'une image //ubuntu//, j'ai une vrai préférence pour //debian//, et dans le build de la vidéo, il y a beaucoup de chose qui me dérange (un serveur web par exemple) ou qui sont liée à l' | ||
+ | |||
+ | Voici donc mon interprétation de cette idée... | ||
+ | |||
+ | ===== le planning ===== | ||
+ | |||
+ | J'ai commencé par consulter le //build// de base (disponible [[https:// | ||
+ | |||
+ | On va retirer tout ce qui relève de la partie web streaming du vnc (novnc, gstreamer1.0-tools, | ||
+ | En parlant de packages, la vidéo télécharge des packages directement sans utiliser les packages managers; ce qui me désole également. | ||
+ | |||
+ | Toutes mes images sont disponibles sur mon [[https:// | ||
+ | |||
+ | ===== le dockerfile ===== | ||
+ | |||
+ | Je vais donc exposer mon '' | ||
+ | |||
+ | les lignes sont numérotés par " | ||
+ | |||
+ | **Image de base** | ||
+ | |||
+ | Cette image est une customisation que j'ai faites, je publierais sans doute un article plus tard, tant cette customisation est avancée. | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # | ||
+ | # 86Box | ||
+ | # | ||
+ | FROM saintfrater/ | ||
+ | ARG | ||
+ | |||
+ | # Create non root group & user | ||
+ | RUN | ||
+ | </ | ||
+ | |||
+ | Nous allons également executer l' | ||
+ | |||
+ | Cet utilisateur est créer en ligne 8. | ||
+ | |||
+ | **Paramétrage du serveur VNC** | ||
+ | <code yaml [enable_line_numbers=" | ||
+ | #User Settings for VNC | ||
+ | ENV PASSWORD=password1 | ||
+ | </ | ||
+ | |||
+ | Ici l'on peut changer le mot de passe "par défaut" | ||
+ | |||
+ | **Quelques variables d' | ||
+ | <code yaml [enable_line_numbers=" | ||
+ | #Variables for installation | ||
+ | ENV DEBIAN_FRONTEND=noninteractive | ||
+ | ENV DEBCONF_NONINTERACTIVE_SEEN=true | ||
+ | ENV XKB_DEFAULT_RULES=base | ||
+ | </ | ||
+ | |||
+ | **Téléchargement de l' | ||
+ | |||
+ | Une // | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # Download & Setup 86Box | ||
+ | RUN mkdir /opt/86box && \ | ||
+ | cd /opt/86box && \ | ||
+ | wget -nv https:// | ||
+ | mv 86Box-Linux-x86_64-b5634.AppImage 86Box.AppImage && \ | ||
+ | chmod +x 86Box.AppImage && \ | ||
+ | ./ | ||
+ | rm 86Box.AppImage | ||
+ | </ | ||
+ | |||
+ | Nous téléchargeons une version particulière de l'// | ||
+ | |||
+ | Cette // | ||
+ | |||
+ | **Téléchargement des BIOS** | ||
+ | |||
+ | Un PC ne peut démarrer sans //BIOS//, nous allons donc télécharger les //BIOS// depuis le github de 86box: | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | RUN | ||
+ | # Download BIOSes into ' | ||
+ | RUN cd / | ||
+ | git clone https:// | ||
+ | RUN | ||
+ | </ | ||
+ | |||
+ | Pour ce faire, nous avons besoin des outils git sur l' | ||
+ | |||
+ | **Préparation des dossiers de configuration** | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # Create symlink for configuration | ||
+ | RUN mkdir / | ||
+ | mkdir / | ||
+ | chown -R $LOCAL_USER: | ||
+ | chown -R $LOCAL_USER: | ||
+ | mkdir / | ||
+ | chown -R $LOCAL_USER: | ||
+ | </ | ||
+ | |||
+ | Nous créons 2 dossiers //customs// et //media// qui seront ensuite publiés en dehors du container pour sauvegarder les données de façons permanentes. | ||
+ | |||
+ | Un dossier "/ | ||
+ | |||
+ | **supervisor et publication de port** | ||
+ | <code yaml [enable_line_numbers=" | ||
+ | #Copy in supervisor configuration for startup | ||
+ | COPY supervisord.conf / | ||
+ | </ | ||
+ | |||
+ | nous copions une version personnalisée de supervisord.conf dans etc. | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | EXPOSE | ||
+ | </ | ||
+ | |||
+ | Nous exposons le port 5901 (VNC) du container. | ||
+ | |||
+ | **configuration du mode 'local user' | ||
+ | |||
+ | Comme nous désirons que l' | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # setup session as " | ||
+ | USER $LOCAL_USER | ||
+ | </ | ||
+ | |||
+ | **Configuration VNC Server** | ||
+ | |||
+ | Par défaut le password est // | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # Configure VNCServer | ||
+ | RUN mkdir ~/logs/ && \ | ||
+ | mkdir ~/.vnc/ && \ | ||
+ | echo $PASSWORD | / | ||
+ | chmod 0600 ~/ | ||
+ | </ | ||
+ | |||
+ | **configuration de ratpoison** | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # Configure application launch | ||
+ | RUN echo "set border 0" > ~/ | ||
+ | echo "exec cd / | ||
+ | </ | ||
+ | |||
+ | Nous réduisons à 0 la bordure des applications (ligne 2) afin de ne pas avoir de cadre a notre application, | ||
+ | |||
+ | **Quelques volumes** | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | # Create volumes mount | ||
+ | # VOLUME / | ||
+ | VOLUME / | ||
+ | VOLUME / | ||
+ | </ | ||
+ | | ||
+ | **Supervisord** | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code yaml [enable_line_numbers=" | ||
+ | #Copy in supervisor configuration for startup | ||
+ | ENTRYPOINT [ " | ||
+ | </ | ||
+ | |||
+ | ====== Configuration ====== | ||
+ | |||
+ | Si tout se passe bien, vous devirez pouvoir vous connecter en VNC sur votre 86Box, au premier contact l' | ||
+ | |||
+ | {{tutoriaux: | ||
+ | |||
+ | je vous suggère immédiatement de changer le paramètre: | ||
+ | |||
+ | {{tutoriaux: | ||
+ | |||
+ | pour utiliser tout l' | ||
+ | |||
+ | {{tutoriaux: |