• FreeBSD

    Bienvenue sur la page consacrée à l'univers FreeBSD

    Vous y trouverez :

    Script de configuration global
    Toutes les commandes de base 
    Liste des Paquets (applications) de Base pour la formation 

    Installation de FreeBSD et configuration d'un environnement de bureau : 
    - Créer une VM FreeBSD 14 sur le cloud Contabo
    - Installer FreeBSD sur un serveur OVH dédié : le "KS-STOR | Intel Xeon-D 1521"
    Installer un environnement de bureau sur FreeBSD
    Liste des modules de l'environnement de bureau KDE 
    Liste des modules de l'environnement de bureau XFCE 
    Liste des modules de l'environnement de bureau GNOME
    Installer FreeBSD/Linux : compatibilité du matériel
    - Installer FreeBSD sur un Dell Precision 7560

    Installer FreeBSD avec XFCE/SDDM sur un Lenovo T495
    - Installer FreeBSD avec XFCE/Slim sur Virtualbox
    Installer HardenedBSD avec XFCE/Slim sur un CHUWI Larkbox  
    Installer FreeBSD avec KDE/SDDM sur un Fujitsu Esprimo Q920
    Installer FreeBSD avec KDE/SDDM sur un Lenovo T495 
    Installer FreeBSD avec KDE/SDDM sur un CHUWI Larkbox  
    - Installer FreeBSD avec XFCE/SLIM sur XFCE/slim sur un HP Z440 (i5-1650 v4 et GPU NVS 510) 
    Installer FreeBSD avec CINNAMON/lightdm sur un Fujitsu Esprimo Q920 
    Passer du dépôt quarterly au latest et vice-versa
    - S'identifier automatiquement avec sddm
    - NomadBSD, un FreeBSD tout en un !
    Réglages du BIOS/UEFI du Dell 7720 pour l'installation de FreeBSD/OI
    Mettre FreeBSD à jour 
    Tous les modules pour XFCE
    - Configurer Slim/SDDM/KDE/XFCE avec le clavier Français
    - Configurer SDDM afin que l'affichage soit en Français
    Le cas d'une carte graphique intégrée au CPU, non reconnue
    Changer le thème de Slim
    Exécutez une commande via un raccourci clavier  
    Désactiver le démarrage verbeux de FreeBSD 
    Configurer le client mail Mutt (en CLI) avec les adresses mail Yahoo

    Configuration personnalisée de XFCE/lightdm :
    S'identifier automatiquement avec lightdm
    - Personnaliser les dossiers "Bureau", "Documents", "Images"... avec XFCE 
    - Mettre XFCE en Français 
    Le Whisker Popup Menu sous XFCE, équivalent du menu Windows sous XFCE
    - Raccourcis pour redimensionner les fenêtres automatiquement avec XFCE
    - Démonter automatiquement les périphériques USB avec XFCE
    - Ajouter "Formater da0 en NTFS" au menu contextuel (clic-droit) de thunar (XFCE)
    - Ajouter "Compresser en .zpaq" et "Décompresser le .zpaq" au menu contextuel (clic-droit) de thunar (XFCE)

    Virtualisation :
    - Créer une VM avec VirtualBox, en ligne de commande !
    - Installer VirtualBox sur FreeBSD 13.2/14
    - Installer Phpvirtualbox sur FreeBSD
    - Qu'est-ce que Bhyve ? 
    - Créer simplement une VM avec Bhyve et ZFS (pour pouvoir faire des snapshots !)
    Créer une machine virtuelle FreeBSD avec Bhyve 
    Créer une machine virtuelle Debian 11.6 avec Bhyve
    - Répliquer des labos d'entraînement pour stagiaires avec Bhyve sous FreeBSD
    - Transformer votre serveur en serveur de virtualisation avec bhyve et BVCP-NetPulse
    - BVCP (bhyve) : Ma VM Debian ne boot pas après l'installation. Que faire ? 
    Régler le problème de boot de Lunar avec BVCP (bhyve)
    - Recommandations pour l'installation de VMs avec BVCP-NetPulse
    Installer Virtualbox sur FreeBSD 13.0 +
    - Installer MacOS Catalin/Ventura sur VirtualBox
    - Faire fonctionner la souris sur une VM FreeBSD avec Kamatera
    - Déployer l'environnement de bureau XFCE/SLIM sur Kamatera
    - Exécuter un .msi en PowerShell (utile pour installer le driver virtio sur un serveur windows Core)
    - Convertir une VM Hyper-V pour VirtualBox

    - Redimensionner la partition /dev/da0p2 sur une VM Kamatera

    VMWare :
    - Régler le problème de souris qui ne bouge pas sur VMWare

    Boîte à outils, usage bureautique et avancé
    Comment imprimer sous FreeBSD (cups) 
    - Meilleurs clients Mail sous FreeBSD 
    Meilleure suite Office et traitements de texte pour FreeBSD
    Créez un stockage en RAIDz sur FreeBSD 
    Configurer une cible iSCSI sur un volume ZFS (avec raidz)
    Encrypter un "dossier" (créer une image encryptée avec geli)
    En cas d'erreur lors du boot (mauvaise syntaxe fstab)
    Formater un disque dur ou une clef USB, en UFS, FAT32, NTFS
    Monter un DVD, un ISO, un périphérique USB en NTFS/exFAT
    Graver un CD/DVD/Blu-ray 
    Graver une image .iso sur une clef USB
    Utilisation du cloud Mega
    Utiliser Netflix sur FreeBSD 
    Installation de Tor
    Compresser/décompresser en zip, bzip2 (.bz2, .tbz2, .tbz, .tar.bz2) 
    Séparer/Fusionner (split/merge) un fichier PDF 
    Installer un serveur de courriels Postfix
    Réglages Son & Luminosité en commandes 
    Utilisation d'une webcam (intégrée au T495 ou C920 HD de Logitech) 
    Activer automatiquement la Webcam pour un utilisateur au démarrage de l'ordinateur
    Convertir un disque dynamic en fixed et réciproquement (VirtualBox) 
    - ffmpeg : x264, x265, AV1 
    Script en BASH sur FreeBSD 
    Exécuter un Script à distance 
    CPU Multi-coeur : Assigner un coeur du CPU à un processus en particulier 
    Découper un fichier en plusieurs et le réassembler (Split et Cat) 
    Empêcher l'affichage des notifications intempestives sur la console 
    Télécharger des vidéos Youtube et autres sites 
    Voir les processus (PID) en cours et les arrêter 
    Musiciens ! l'éditeur de partition MuseScore existe sur FreeBSD !! 
    Incompatibilité du dongle USB Wi-FI MU-MIMO, D-Link DWA-181, AC1300 USB2.0 
    Copier un DVD/Blu-ray (protégé ou non protégé)
    Exécutez une tâche au démarrage avec Cron 
    - Aspirer un site web avec wget  
    Configurer NTPD et le fuseau horaire pour régler la date et l'heure
    - Faciliter les recherches de fichiers avec "locate" 
    Installer un serveur de logs (Rsyslog) sur FreeBSD 13.2 et configurer un client debian 12
    - Créer une clef/périphérique USB en ZFS 
    Installer VScode (Code OSS) sur FreeBSD 13.2
    - Se connecter à un réseau Wifi en CLI sur FreeBSD 
    Rendre les alias permanents sur FreeBSD 
    qutebrowser, un navigateur web minimaliste mais complet, ultra rapide 
    password-store : un gestionnaire de mots de passe en CLI
    - Haute Disponibilité avec HAST et CARP et ZFS   
    - Créer une borne Wifi avec un serveur FreeBSD
    - Effectuer un benchmark avec sysbench
    - Empêcher la mise en veille de l'écran

    Se connecter à distance :
    - Configurer tigervnc-server avec certificat SSL X509
    - Utiliser AnyDesk sous FreeBSD
    Se connecter en VNC à un serveur/bureau OpenIndiana en créant un tunnel SSH avec Putty
    - RDP : se connecter à un serveur FreeBSD depuis Windows, Linux, MacOS 
    - Se connecter en RDP à un bureau à distance (rdesktop)

    Webmin
    Installation de webmin sur FreeBSD 13.1+ 

    Base SQL : (voir la rubrique MySQL)
    Installer MySQL/MariaDB
    - Installer MySQL 8.0 sur FreeBSD 13.1+

    Configuration d'un serveur Web et outils d'administration
    Configurer un site internet en http sur Nginx (FreeBSD 13.0 STABLE)
    Configurer un site internet en http sur Apache24 (FreeBSD 13.0 STABLE ou HardenedBSD) 
    Configurer un site intranet en https sur Apache24 (AUTO-SIGNE) 
    Configurer un site internet en https sur Apache24 (signé par une autorité distante) 
    Configurer un site internet en https sur apache24 (SCRIPT)

    Mise en place d'un Reverse Proxy sur Nginx
    Installer GLPI 10.0.6 
    - Connectez votre AD à GLPI
    (Merci à Louis et Mathias)
    - Installer Wordpress 
    Installer Wordpress avec SSL (SCRIPT)
    Installer Wordpress avec SSL (certificat auto-signé) 
    Installer Wordpress avec SSL (signé par une autorité distante) 
    Installer TikiWiki 23 
    - Installer TikiWiki 25.0
    Installer Concrete5
    Héberger un site web avec une adresse IP dynamique (NOIP) 
    Rsync 
    - Rediriger les requêtes HTTP vers HTTPS, avec ou sans changement des ports par défaut d'Nginx
    - Rediriger les requêtes HTTP vers HTTPS, avec ou sans changement des ports par défaut d'Apache
    SSL - Comment retrouver les informations entrées dans votre demande de signature .csr


    Sécuriser son serveur et outils d'administration

    Sécuriser l'accès en SSH 
    sshpass, pour facilier la connexion SSH via mots de passes
    Installation de l'antivirus ClamAV avec base de signatures SecuriteInfo/SaneSecurity
    Configurer Fail2ban (blocage IP tentant de se connecter en SSH pour un temps donné) 
    IPFW sur FreeBSD 13/14 
    - PF sur FreeBSD 13/14
    - Faire un scan de ports avec Nmap
    Sécuriser un Serveur FreeBSD 
    Génerer des clefs SSH pour se connecter à un serveur distant 
    Configurer rkhunter sur FreeBSD 
    Installation du VPN OVPN

    Serveur FTP
    - Configurer un serveur SFTP avec OpenSSH
    Installation d'un serveur FTP (ProFTPd)
    Installation d'un serveur FTP (Pure-FTPd) 
    Déployer un serveur sFTP en un seul script, avec stockage externe 
    Afficher un volume SFTP sur le bureau avec XFCE 
    Afficher un volume SFTP sur le bureau avec KDE

    Haute-Disponibilité :
    - Mise en Haute-Disponibilité avec RSF-1 ZFS

    Stockage décentralisé :
    - Connecter un bucket STORJ à FreeBSD grâce à rclone-browser
    - Compiler Sia sous FreeBSD 14.1

    Serveur DNS
    - Déployer un serveur DNS local avec Bind918 

    Chats :
    Configurer simplement un serveur XMPP (Openfire) avec salons de discussions
    - Configurer miniIRCd sur FreeBSD 14.1

  • Il y a des activités où un écran doit rester allumé en continu (monitoring etc..)
    Sauf que même avec un environnement de bureau minimaliste (avec Xorg, comme twm...), l'écran continue de s'éteindre... Pourquoi ?

    C'est à cause de DPMS.

    Pour afficher les valeurs, ouvrez un terminal et tapez :

    xset q

    Vous devriez voir un encart :

    DPMS (Display Power Management Signaling):
    Standby: 600 Suspend: 600 Off: 600
    DPMS is Enabled
    Monitor is On


    Nous allons simplement le désactiver :

    xset -dpms

    Et également exécuter cette commande pour désactiver un éventuel screensaver :

    xset s off


    Et voilà. L'écran ne s'éteindra plus.


    votre commentaire
  • Il est tout à fait possible d'installer FreeBSD 14.1 sur ce serveur dédié chez OVH.
    La technique est simple :
    - Passer le boot rescue (debian-10), connectez-vous en SSH, listez les supports de stockage connectés au serveur :

    lsblk

    - Effacer les disques :

    nohup dd if=/dev/zero of=/dev/sda bs=1M &
    nohup dd if=/dev/zero of=/dev/sdb bs=1M &

    [...]

    nohup dd if=/dev/zero of=/dev/nvme0n1 bs=1M &

    - Surveiller lorsque les opérations d'effacement sont terminées :

    ps -ef | grep 'dd if=' | grep -v grep

    - Installer parted

    apt update
    apt install parted -y

    - Créer des tables GPT sur les disques :

    parted /dev/sda mklabel gpt
    parted /dev/sdb mklabel gpt

    [...]

    parted /dev/nvme0n1 mklabel gpt


    - Téléchargez l'image memstick de FreeBSD :

    wget https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.1/FreeBSD-14.1-RELEASE-amd64-memstick.img

    - Graver l'image sur l'un des disques HDD :

    dd if=FreeBSD-14.1-RELEASE-amd64-memstick.img of=/dev/sda bs=1M status=progress


    Sur votre interface OVH, régler le boot sur disk (au lieu de rescue).
    Redémarrez le serveur et utilisez la console IPMI/KVM (depuis votre navigateur web par exemple.. ça fonctionne très bien avec Firefox contrairement à ce qui est dit) pour assister au boot du serveur sur l'image FreeBSD.

    Faîtes l'installation de FreeBSD normalement sur le NVMe... configurez statiquement le réseau grâce aux informations données sur la page IP/passerelle... (ça ne fonctionne pas via DHCP.. alors que ça fonctionne sur NetBSD.. bizarre...).

    Après avoir passé 2 jours à essayer de faire fonctionner ce serveur avec omniosce et netbsd, je dois dire que je suis soulagé de voir que ça fonctionne au moins pour un BSD !!! :-D

     


    votre commentaire
  • A mon grand mécontentement, le cloud Kamatera n'a pas jugé utile de déployer ZFS sur ses images de FreeBSD..
    Non mais franchement !?!? C'est une blague ?!?

    En gros, chargez vos propres images !!
    Non pas qu'il y ait à redire d'UFS, mais le switch entre les deux est extrêmement délicat dans une VM hébergée !!
    Ils pourraient proposer de facto !


    Et plus rigolo encore, leur image est tellement pourrie que la partition système (/dev/da0p2) ne fait que 4Go alors que vous pouvez parfois avoir demandé 50Go de SSD !!!

    Et les objections sur leurs choix de configuration d'image sont relativement nombreux par ailleurs (me concernant tout du moins !!!).

    Donc un petit tuto rapide pour savoir comment faire pour récupérer la totalité de l'espace que vous payez pour le système !
    Evidemment, si vous comptez créer des partitions séparées pour chaque truc, ce sera différent !
    Au moins vous aurez les bases en UFS !!

    1) Faire un état des lieux :

    df -h
    gpart show da0

    Voici ce que vous pouvez typiquement obtenir :

    root@image-kamatera:~ # df -h
    Filesystem Size Used Avail Capacity Mounted on
    /dev/da0p2 4.6G 3.8G 431M 90% /
    devfs 1.0K 0B 1.0K 0% /dev

    root@image-kamatera:~ # gpart show da0
    => 40 104857520 da0 GPT (50G)
    40 1024 1 freebsd-boot (512K)
    1064 9958400 2 freebsd-ufs (4.7G)
    9959464 524288 3 freebsd-swap (256M)
    10483752 94373808 - free - (45G)

    Encore une fois, non mais franchement !! Votre système occupe 90% de la partition principale !!

    Pour récupérer les 50G promis (hormis le fait que vous souhaitiez créer des partitions séparées, encore une fois).
    Voici ce qu'il faut faire :

    2) Redimensionner :

    # Arrêter le swap :

    swapoff /dev/da0p3

    # Supprimer la partition de swap :

    gpart delete -i 3 da0

    # Redimensionner la partition UFS (da0p2) pour récupérer les 50GB, mais laisser 4G pour un nouveau swap :

    gpart resize -i 2 -s 96179504 da0

    # Redimensionner le système de fichiers UFS pour occuper la nouvelle taille !

    growfs /dev/da0p2

    ## (vous devez impérativement confirmer par 'yes')

    # Recréer la partition swap

    gpart add -t freebsd-swap -s 4G da0

    # Réactiver le swap

    swapon /dev/da0p3


    Voilà, c'est terminé !

    Voici un résultat typique après les résultats ci-dessus :

    root@image-kamatera:~ # df -h
    Filesystem Size Used Avail Capacity Mounted on
    /dev/da0p2 44G 3.8G 37G 9% /
    devfs 1.0K 0B 1.0K 0% /dev

    root@image-kamatera:~ # gpart show da0
    => 40 104857520 da0 GPT (50G)
    40 1024 1 freebsd-boot (512K)
    1064 96179504 2 freebsd-ufs (46G)
    96180568 8388608 3 freebsd-swap (4.0G)
    104569176 288384 - free - (141M)

     


    votre commentaire
  • sysbench a le gros avantage d'être multi-plateforme, et d'être "simple" !
    Il existe dans le monde linux comme dans le monde BSD.
    Un script complet, analysant les résultats et donnant une note globale est présenté tout en bas.

    ATTENTION : l'objectif n'est pas de comparer Debian à FreeBSD.
    Les versions de sysbench ne sont pas les mêmes et celles de LuaJIT non plus, et les noyaux fonctionnent très différemment.. C'est plutôt pour vous aider lors de vos optimisations de ces systèmes respectifs, en comparant des sytèmes optimisés à d'autres qui ne le sont pas.

    L'installer sur Debian :

    apt update
    apt install sysbench -y


    L'installer sur FreeBSD :

    pkg ins -y sysbench


    Maintenant que sysbench est installé, voici une petite procédure de tests globaux :

    1) Préparer un dossier pour des fichiers tests

    mkdir sysbench-test ; cd sysbench-test

    2) Préparer des fichiers tests

    sysbench fileio --file-total-size=4G prepare

    3) Exécuter la série de tests :

    sysbench cpu --threads=$(nproc) --cpu-max-prime=20000 run ; sysbench memory --threads=$(nproc) --memory-oper=read --memory-access-mode=seq run ; sysbench fileio --file-total-size=4G --file-test-mode=rndrw --time=60 --max-requests=0 run ; sysbench fileio --file-total-size=4G --file-test-mode=seqrd --time=60 --max-requests=0 run ; sysbench fileio --file-total-size=4G --file-test-mode=seqwr --time=60 --max-requests=0 run  

    Le résultat des tests s'affiche sur le shell.

    4) A la fin des tests, nettoyer les fichiers de tests (ne pas les réutiliser)

    sysbench fileio cleanup

     

    ------------------------------------------------------------------------------------------------------------------------------

    Voici un script qui fait tout le travail, de l'installation à la réalisation du bench, et qui donne une note globale.
    Il est compatible Debian et FreeBSD.
    Vous devez être root pour l'exécuter.

    Télécharger « script_benchmark.sh »

    wget http://ekladata.com/AiHHnwllxAp7lVLwEMweFNELXZU/script_benchmark.sh -P /tmp

     

    Voici le code :

    #!/bin/sh

    clear

    system="0"

    # Vérifier quel est le système (debian ou freebsd) et installer sysbench
    if uname -a | grep -iq FREEBSD >/dev/null 2>&1; then
    echo "-------------------------------------------------------"
    echo "| Votre Système est un Système FreeBSD" ; echo
    if ! pkg info -e sysbench; then
    if pkg ins -y sysbench >/dev/null 2>&1; then
    echo " - Sysbench vient de s'installer."
    fi
    else
    echo " - Sysbench est déjà installé"
    fi
    system="1"
    fi
    if uname -a | grep -iq 'debian' >/dev/null 2>&1; then
    echo "-------------------------------------------------------"
    echo "| Votre Système est un Système Debian" ; echo
    if ! dpkg -l | grep -q sysbench >/dev/null 2>&1; then
    if apt update >/dev/null 2>&1; then
    if apt-get install sysbench bc -y >/dev/null 2>&1; then
    echo " - Sysbench vient de s'installer."
    fi
    fi
    else
    echo " - Sysbench est déjà installé."
    fi
    system="1"
    fi

    if [ ! "$system" -eq "1" ]; then
    echo
    echo "Système non reconnu, désolé..."
    exit 0
    fi

    # Création du répertoire pour les fichiers de test :
    [ -d /root/sysbench-test ] && { echo " - Le répertoire /root/sysbench-test existe, nous nous positionnons dedans."; cd /root/sysbench-test; } || { mkdir /root/sysbench-test && cd /root/sysbench-test && echo " - Le répertoire /root/sysbench-test a été créé, nous nous positionnons dedans."; }

    # Créer les fichiers nécessaires pour le benchmark
    echo " - Préparation des fichiers pour le benchmark en cours..."
    sysbench fileio --file-total-size=4G prepare > /dev/null 2>&1

    # Reposer le système avant le début du test
    echo " - Pause de 30 secondes pour reposer le système avant démarrage du benchmark..."
    sleep 30

    # Démarrage du benchmark
    echo
    echo "-------------------------------------------------------"
    echo "| Démarrage du benchmark..."
    echo
    echo " - Test du CPU..."
    sysbench cpu --threads=$(nproc) --cpu-max-prime=20000 run > resultats.txt
    echo " - Test de la mémoire..."
    sysbench memory --threads=$(nproc) --memory-oper=read --memory-access-mode=seq run >> resultats.txt
    sysbench fileio --file-total-size=4G --file-test-mode=rndrw --time=60 --max-requests=0 run >> resultats.txt
    echo " - Tests IO... (ce test dure plusieurs minutes, patience...)"
    sysbench fileio --file-total-size=4G --file-test-mode=seqrd --time=60 --max-requests=0 run >> resultats.txt
    sysbench fileio --file-total-size=4G --file-test-mode=seqwr --time=60 --max-requests=0 run >> resultats.txt

    # Supprimer les fichiers de test (ils ne peuvent pas être réutilisés après un bench)
    echo " - Nettoyage des fichiers de test..."
    sysbench fileio cleanup > /dev/null 2>&1


    # Partie de l'analyse des résultats :

    # Fichier contenant les résultats
    fichier="/root/sysbench-test/resultats.txt"

    # Initialisation des variables pour stocker les résultats
    cpu_events_per_sec=0
    memory_transfer_rate=0
    random_rw_read_rate=0
    sequential_read_rate=0
    sequential_write_rate=0

    # Lecture du fichier et extraction des données
    while read -r line; do
    case "$line" in
    *"events per second:"*)
    cpu_events_per_sec=$(echo "$line" | sed 's/.*events per second: *\([0-9.]*\).*/\1/')
    ;;
    *"MiB transferred"*)
    memory_transfer_rate=$(echo "$line" | sed 's/^\([0-9.]*\).*/\1/')
    ;;
    *"reads/s:"*)
    if [ "$random_rw_read_rate" = "0" ]; then
    random_rw_read_rate=$(echo "$line" | sed 's/.*reads\/s: *\([0-9.]*\).*/\1/')
    fi
    ;;
    *"read, MiB/s:"*)
    if [ "$sequential_read_rate" = "0" ]; then
    sequential_read_rate=$(echo "$line" | sed 's/.*read, MiB\/s: *\([0-9.]*\).*/\1/')
    fi
    ;;
    *"written, MiB/s:"*)
    if [ "$sequential_write_rate" = "0" ]; then
    sequential_write_rate=$(echo "$line" | sed 's/.*written, MiB\/s: *\([0-9.]*\).*/\1/')
    fi
    ;;
    esac
    done < "$fichier"

    # Normalisation des scores (valeurs de référence basées sur des benchmarks moyens)
    cpu_norm=$(echo "scale=6; ($cpu_events_per_sec / 5000000) * 100" | bc)
    mem_norm=$(echo "scale=6; ($memory_transfer_rate / 40000) * 100" | bc)
    rw_norm=$(echo "scale=6; ($random_rw_read_rate / 8000) * 100" | bc)
    read_norm=$(echo "scale=6; ($sequential_read_rate / 1000) * 100" | bc)
    write_norm=$(echo "scale=6; ($sequential_write_rate / 500) * 100" | bc)

    # Calcul de la moyenne des scores normalisés
    note_globale=$(echo "scale=6; ($cpu_norm + $mem_norm + $rw_norm + $read_norm + $write_norm) / 5" | bc)

    # Affichage des résultats
    echo
    echo "-------------------------------------------------------"
    echo "| Résultats du benchmark système |"
    echo "-------------------------------------------------------"
    echo "| CPU : $cpu_events_per_sec events/sec"
    echo "| Mémoire : $memory_transfer_rate MiB/sec"
    echo "| I/O Random R/W : $random_rw_read_rate reads/sec"
    echo "| I/O Sequential Read : $sequential_read_rate MiB/sec"
    echo "| I/O Sequential Write : $sequential_write_rate MiB/sec"
    echo "|------------------------------------------------------"
    echo "| Note globale : $note_globale %"
    echo "-------------------------------------------------------"

    echo
    echo "Résultats détaillés dans le fichier '/root/sysbench-test/resultats.txt'"
    echo

     

     

     


    votre commentaire
  • Comme je l'ai déjà souligné, Contabo est un cloud vraiment très abordable et pratique.
    Il faut un peu de temps lorsqu'on se lance sur leur API, mais pour du basique via l'interface web, c'est top !!


    Et surtout... on peut y installer une VM FreeBSD .. sans toucher à l'API ni manipuler cloud-init (enfin.. vous apprendrez ça plus tard !)

    Contabo ne propose pas par défaut la possibilité de créer un VPS avec FreeBSD, mais en réalité c'est parfaitement possible !! Et sans aucune ligne de commande ! L'installation de l'image FreeBSD se fait APRES l'achat du VPS... en 3 clics !


    Pour ce faire, il y a 3 étapes : (en plus d'avoir ouvert un accès chez eux - gratuit)

    1) Acheter un VPS (une VM) avec image custom
    2) Installer l'image standard de FreeBSD 14 sur le VPS
    3) Configurer immédiatement le VPS (!).

    Tout va très vite !

     On y va. (Je présuppose que vous avez déjà un compte sur contabo.com)

     

    1) Acheter un VPS !

    Dans votre espace web, dans le menu latéral de gauche, en bas, (New Order), cliquez sur "VPS"

    Choisissez les caractéristiques de votre serveur, et en bas, lors du choix de l'image (4.), choisissez "Popular > Custom Images > Use your existing Custom Image Storage" surtout !

    Payez... et revenez dans votre espace web.
    Attendez quelques minutes (oui j'insiste, je me suis déjà retrouvé planté plusieurs fois car le déploiement n'était fini avant que je tente l'installation de l'image !!) que le déploiement se fasse

    2) Installer l'image standard de FreeBSD

    Dans votre espace web, dans le menu latéral de gauche (control panel), cliquez sur "Control VPS".
    Vous allez voir votre VPS, avec une adresse IP publique attribuée et l'a possibilité d'Install VPS/VDS
    Cliquez sur le bouton...
    ATTENTION ici :
    Vous choisissez donc une image standard, déroulez la liste, FreeBSD 14 !

    Ne rentrez pas de mot de passe administrateur, activer root et fournissez une clef SSH publique !

    Une fois l'installation terminée (attendez 3min), puis connectez-vous via SSH au serveur :

    ssh root@IP-PUBLIQUE-SERVEUR


    Dès lors que vous avez réussi à vous connecter via SSH, allez sur votre console web de Contabo, control panel > VPS control et faîtes un snapshot de la VM !

     

    3) Configurer immédiatement le VPS

    Une fois connecté au VPS via SSH, il faut impérativement effectuer les opérations suivantes RAPIDEMENT :

    - Désactiver cloud-init :

    service cloudinit stop
    sysrc cloudinit_enable=NO

    N'oubliez pas de le désactiver également depuis votre interface web.

    - modifier le mot de passe de root

    passwd root

    - Installer nano (uniquement pour ceux qui ne sont pas familiers de vi, car on va avoir besoin d'éditer des fichiers):

    pkg ins -y nano

    - Créer un utilisateur administrateur (pour l'instant il n'y a que root). Ici ce sera marcel.

    adduser

    (Invite marcel into other groups? : wheel)

    - restreindre la connexion SSH à root et/ou omnios :

    nano /etc/ssh/sshd_config
    # chercher les lignes suivantes et effectuer les modifications comme ci-dessous :
    PermitRootLogin prohibit-password
    PasswordAuthentication yes
    KbdInteractiveAuthentication yes

    # Ajouter la directive suivante :
    AllowUsers root marcel

    Bien entendu, vous adapterez la configuration SSH en fonction de vos besoins !!
    Ici vous permettez uniquement à root d'être contacté via des clefs SSH et à marcel d'être contacté par mot de passe et/ou clefs SSH.
    N'oubliez pas de redémarrer le service ssh pour mettre à jour les modifications :

    service sshd restart

     

    - profitez-en pour mettre le serveur à jour : (Il faut passer à la 14.1 impérativement ! La 14.0 n'est plus supportée par FreeBSD !)

    freebsd-update fetch ; freebsd-update install

    Puis

    freebsd-update upgrade -r 14.1-RELEASE

    Puis à nouveau :

    freebsd-update fetch ; freebsd-update install

    - Corriger un petit bug de la conf cloudinit de Contabo :
    Dans le fichier /etc/rc.conf, la ligne hostname apparaît 10 fois.. (allez savoir pourquoi), growfs_enable apparaît 5 fois, zfs_enable 2 fois, zpool_rguid et zpool_upgrade 2 fois !
    N'en gardez qu'une seule de chaque !

    nano /etc/rc.conf

    Si vous ne voulez pas d'adressage IPv6, commentez la ligne ifconfig_eth0_ipv6 !

    - Redémarrer le serveur :

    reboot

     

    Reconnectez-vous et faîtes votre préparation habituelle d'un serveur freebsd.

     


    votre commentaire
  • On veut transformer un serveur FreeBSD en borne Wifi (point d'accès) sécurisée, simplement.

    Le serveur possède 2 interfaces réseaux (a minima)
    - une ethernet (re0 pour l'exemple), configurée et connectée à internet.
    - une wifi (wlan0 - l'interface logique, rtwn0 étant la carte wifi physique (realtek))

    Je ne vais pas détailler tout le processus, (demandez à n'importe quel modèle d'IA, il vous expliquera le pourquoi du comment), simplement vous donner des fichiers de configurations fonctionnels, avec une configuration pf un minimum sécurisée (pour éviter le bruteforce etc..).

    1) Installer les programmes nécessaires: 

    pkg info -e hostapd >/dev/null 2>&1 || pkg ins -y hostapd
    pkg info -e isc-dhcp44-server >/dev/null 2>&1 || pkg ins -y isc-dhcp44-server

    2) Ce qui concerne le schmilblick dans /etc/rc.conf : (ce n'est pas le fichier entier !! juste la partie point d'accès). Veillez à ne pas avoir d'instructions redondantes ou concurrentes.

    ifconfig_re0="DHCP"
    wlans_rtwn0="wlan0"
    create_args_wlan0="wlanmode hostap"
    ifconfig_wlan0="inet 172.18.19.1 netmask 255.255.255.0 ssid MonSuperWifi mode 11g channel 6"
    gateway_enable="YES"
    hostapd_enable="YES"
    dhcpd_delay="10"
    dhcpd_conf="/usr/local/etc/dhcpd.conf"
    dhcpd_enable="YES"
    dhcpd_ifaces="wlan0"
    dhcpd_flags="-q"
    pf_enable="YES
    pf_rules="/etc/pf.conf"

    3) Le contenu du fichier /etc/hostapd.conf (le point d'accès wifi)

    interface=wlan0
    ssid=MonSuperWifi
    hw_mode=g
    channel=6
    wpa=2
    wpa_passphrase=SuperMotDePasse
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP

    4) Le fichier de configuration pour /etc/pf.conf (pour le NAT et la protection du réseau wifi)

    # Définition des interfaces
    ext_if = "re0" # Interface ethernet reliée à Internet
    int_if = "wlan0" # Interface wifi du hotspot

    # Tables pour les adresses bloquées et les limites de connexion
    table <bruteforce> persist
    table <conn_limit> persist

    # Options de normalisation
    scrub in all

    # NAT pour le trafic sortant
    nat on $ext_if from $int_if:network to any -> ($ext_if)

    # Règles par défaut
    block all
    pass out quick keep state

    # Autoriser le trafic entrant sur l'interface WiFi
    pass in on $int_if keep state

    # Protection contre les attaques par force brute
    block quick from <bruteforce>

    # Limiter les nouvelles connexions
    pass in on $int_if proto tcp to port { 22 80 443 } flags S/SA \
    keep state (max-src-conn 100, max-src-conn-rate 15/5, \
    overload <conn_limit> flush global)

    # Bloquer les adresses qui dépassent la limite de connexion
    block quick from <conn_limit>

    # Autoriser le trafic DNS
    pass out proto udp to port 53 keep state

    # Journalisation
    pass log (all)

    5) Le contenu du fichier /usr/local/etc/dhcpd.conf (pour le serveur DHCP qui fournira les configurations IP des clients connectés au wifi)

    authoritative;
    default-lease-time 600;
    max-lease-time 7200;
    lease-file-name "/var/db/dhcpd/dhcpd.leases";

    subnet 172.18.19.0 netmask 255.255.255.0 {
    interface wlan0;
    range 172.18.19.100 192.168.1.200;
    option routers 172.18.19.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    }

    6) Activer le routage des paquets :

    sysctl net.inet.ip.forwarding
    sysctl net.inet.ip.forwarding=1
    echo "net.inet.ip.forwarding=1" >> /etc/sysctl.conf

    7) Lancer les services

    service netif restart ; sleep 2
    service routing restart ; sleep 2
    service hostapd restart ; sleep 2
    service isc-dhcpd restart
    service pf restart

     

     


    votre commentaire
  • Pour ceux/celles qui utilisent zpaq au quotidien, 2 petites entrées contextuelles pour compresser en .zpaq et décompresser un .zpaq plus vite.

    Pré-requis :
    - Xfce bien sûr, avec le gestionnaire de fichiers Thunar
    - le paquet "zpaqfranz" installé

    On y va !

    1) Ouvrez le gestionnaire de fichiers Thunar.

    2) Cliquez sur "Modifier" > "Configurer les actions personnalisées..."

    3) Cliquez sur le + pour ajouter une action personnalisée.

    ONGLET "Base" :
    - Nom : Compresser en .zpaq
    - Description : (laisser vide)
    - Sous-menu : (laisser vide)
    - Commande :

    zpaqfranz add /tmp/'%n'.zpaq '%f' -method 2 && mv /tmp/'%n'.zpaq '%d'

    - Icône : sélectionnez l'icone "add-files-to-archive" par exemple.

    ONGLET "Conditions d'apparition" :
    - Motif des fichiers : *
    - Etendu (min-max) : *
    - Apparaît si la sélection contient : TOUT COCHER

    Valider.

    Faîtes l'essai, ça marche pour n'importe quel fichier ou dossier.
    Ils sont d'abord compressés dans un dossier temporaire et n'apparaissent qu'une fois la compression terminée.

     

    Il faut à présent créer l'action inverse, qui décompresse un fichier .zpaq :

    1) Ouvrez le gestionnaire de fichiers Thunar.

    2) Cliquez sur "Modifier" > "Configurer les actions personnalisées..."

    3) Cliquez sur le + pour ajouter une action personnalisée.

    ONGLET "Base" :
    - Nom : Décompresser le .zpaq
    - Description : (laisser vide)
    - Sous-menu : (laisser vide)
    - Commande :

    zpaqfranz extract '%f'

    - Icône : sélectionnez l'icone "extract-archive" par exemple.

    ONGLET "Conditions d'apparition" :
    - Motif des fichiers : *.zpaq
    - Etendu (min-max) : *
    - Apparaît si la sélection contient : TOUT COCHER

    Valider.


    votre commentaire
  • Voilà une configuration bien agréable, étant donnée que pour le moment, il n'est pas encore possible de formater "simplement" un périphérique USB en NTFS pour un utilisateur à partir de l'interface graphique d'xfce sur FreeBSD.

    Nous allons donc créer une entrée dans le menu contextuel (clic-droit de la souris) qui ne s'affichera QUE lorsque vous cliquerez-droit sur le volume da0 (ou l'une de ses partitions, type da0p1..) dans l'explorateur Thunar et qui vous permettra de formater automatiquement en NTFS.

    Pré-requis :
    - Xfce bien sûr, avec le gestionnaire de fichiers Thunar
    - le paquet "fusefs-ntfs" installé et chargé (kldload fusefs)

    On y va !

    1) Ouvrez le gestionnaire de fichiers Thunar.


    2) Cliquez sur "Modifier" > "Configurer les actions personnalisées..."

    3) Cliquez sur le + pour ajouter une action personnalisée.

    ONGLET "Base" :
    - Nom : Formater da0 en NTFS
    - Description : Formater le périphérique USB da0 en NTFS
    - Sous-menu : (laisser vide)
    - Commande :

    gpart destroy -F da0 ; gpart create -s GPT da0 ; gpart add -t ms-basic-data da0 ; chmod 760 /dev/da0p1 ; export NTFS_USE_UBLIO=0 ; mkntfs -vFQ /dev/da0p1

    - Icône : sélectionnez l'icone "drive-harddisk-usb" par exemple

    ONGLET "Conditions d'apparition" :
    - Motif des fichiers : da0*
    - Etendu (min-max) : laisser vide
    - Apparaît si la sélection contient : ne cocher que "Répertoires **"

    Valider.

    Faîtes l'essai, ça marche !

     

    Bien entendu, cette manoeuvre peut être répétée (via l'ajout d'une nouvelle action personnalisée à chaque fois) pour d'autres disques (da1*, da2*, ada0*, ada1* etc..) et dans d'autres formats !!

    Pour intégrer cela de manière scriptée, ces configurations personnalisées se trouve dans ~/.config/Thunar/uca.xml
    à bons entendeurs ... ;-)



    votre commentaire
  • FreeBSD n'est pas permissif, c'est un fait (et tant mieux).
    Il n'est donc pas possible pour des utilisateurs ayant un environnement de bureau comme Xfce de démonter et d'éjecter eux-mêmes leurs périphériques USB.
    Il leur est possible de les monter automatiquement grâce à automount mais ils ne peuvent, en revanche, pas les démonter et les éjecter... un comble.. c'est agaçant pour un usage de bureau !

    Il existe plusieurs méthodes pour palier ce problème : DSBMC+DSBMD, configurer polkit etc..

    Je vous en montre une qui utilise sudo et un script wrapper.
    On ne pas donne de droits sudo complets, juste celui d'utiliser la commande umount.

    ATTENTION !! Ne réexécutez pas ces commandes 2 fois, où vous allez perdre le véritable binaire umount !


    Pré-requis :
    - Avoir installé sudo
    - L'utilisateur doit avoir un environnement xfce fonctionnel.

    Passez en root avant de continuer !

    1) Ecrire un script wrapper pour umount :

    echo '#!/bin/sh' > /usr/local/bin/umount-wrapper
    echo 'sudo /sbin/umount.original "$@"' >> /usr/local/bin/umount-wrapper

    2) Rendre le script exécutable

    chmod +x /usr/local/bin/umount-wrapper

    3) Renommez le binaire "umount" originel et créer un lien symbolique depuis notre wrapper :
    (surtout, ici, ne réexécutez pas la commande mv 2 fois !!)

    mv /sbin/umount /sbin/umount.original
    ln -s /usr/local/bin/umount-wrapper /sbin/umount

    4) Modifier le fichier sudoers pour permettre à l'utilisateur d'exécuter la commande umount originelle sans mot de passe : (remplacez VOTRE-UTILISATEUR par le login de l'utilisateur qui doit être autorisé à démonter/éjecter les périphériques USB !)

    printf "\n" >> /usr/local/etc/sudoers
    echo "# Démonter les périphériques USB :" >> /usr/local/etc/sudoers
    echo "VOTRE-UTILISATEUR ALL=(ALL) NOPASSWD: /sbin/umount.original" >> /usr/local/etc/sudoers

    5) Redémarrer le système

    reboot


    Votre utilisateur pourra désormais démonter et éjecter un périphérique USB simplement en cliquant sur l'icône éjecter !

     


    votre commentaire
  • Voici une procédure simple et complète de configuration d'un serveur VNC avec certificat X509 afin de permettre la connexion entre un ordinateur client et un ordinateur serveur (srvweb) avec environnement de bureau - xfce4 ici.
    La connexion se fait depuis l'ordinateur client vers l'ordinateur serveur.

    L'objectif : afficher la session de bureau xfce4 de l'utilisateur "marcel" de l'ordinateur serveur depuis l'ordinateur client.

    On va installer le logiciel serveur sur l'ordinateur serveur, configurer le logiciel afin qu'un utilisateur distant puisse se connecter à la session de bureau de marcel sur le serveur et créer un certificat (autosigné) SSL X509.
    Il faudra transférer le certificat X509 créé sur l'ordinateur serveur sur l'ordinateur client car c'est lui qui permettra la connexion (sinon impossible de se connecter au serveur).

    Pré-requis : marcel a un environnement de bureau fonctionnel sur l'ordinateur serveur.

    1. Installation du serveur TigerVNC sur l'ordinateur serveur :
    (il faut être root)

    pkg ins -y tigervnc-server


    2. Configurer VNC pour l'utilisateur "marcel" sur le serveur
    2.1 Se connecter en tant que marcel depuis le serveur :

    user="marcel"
    su - $user

    Recréer la variable utilisateur lorsque vous êtes connecté à marcel :

    user="marcel"


    2.2. Configurer le serveur VNC pour "marcel"
    Crée les fichiers de configuration VNC pour cet utilisateur en démarrant le serveur VNC pour la première fois :

    vncserver :1 -rfbport 42654

    Le serveur demandera de définir un mot de passe pour l'accès VNC (exemple ici : P@ssw0rd) puis d'entrer un view-only password (répondre non).
    Les fichiers de configuration initiaux se créent et le serveur se lance pour la première fois.
    Arrêter le serveur tout de suite pour pouvoir continuer la configuration :

    vncserver -kill :1


    2.3. Configurer l'affichage graphique dans la session VNC
    Modifier le fichier xstartup pour utiliser un environnement de bureau comme XFCE (ou GNOME/KDE selon ce qui est installé sur le serveur) via VNC :

    echo '#!/bin/sh' > /home/$user/.vnc/xstartup
    echo 'unset SESSION_MANAGER' >> /home/$user/.vnc/xstartup
    echo 'unset DBUS_SESSION_BUS_ADDRESS' >> /home/$user/.vnc/xstartup
    echo 'startxfce4 &' >> /home/$user/.vnc/xstartup
    echo '# gnome-session &' >> /home/$user/.vnc/xstartup
    echo '# startkde &' >> /home/$user/.vnc/xstartup

     

    4. Configuration du certificat X509 pour l'utilisateur "marcel"
    4.1 Génération du certificat X509 sur le serveur
    (toujours en tant qu'utilisateur marcel)

    openssl req -new -x509 -days 365 -nodes -out /home/$user/.vnc/x509_ca.pem -keyout /home/$user/.vnc/x509_key.pem

    (Remarque importante : lorsque OpenSSL demande un Common Name (CN), il faut entrer le hostname du serveur (srvweb))

    4.2 Editer le fichier ~/.vnc/config pour y inclure les informations sur le certificat créé plus haut :

    echo 'securitytypes=x509vnc' > /home/$user/.vnc/config
    echo "X509Cert=/home/$user/.vnc/x509_ca.pem" >> /home/$user/.vnc/config
    echo "X509Key=/home/$user/.vnc/x509_key.pem" >> /home/$user/.vnc/config
    echo "AlwaysShared=1" >> /home/$user/.vnc/config
    echo "NeverShared=0" >> /home/$user/.vnc/config



    5. Redémarrer le serveur VNC avec un port personnalisé (42654 par exemple)

    vncserver :1 -rfbport 42654


    Pour visualiser le log en direct :

    tail -f /home/$user/.vnc/srvweb:1.log


    6. Sur l'ordinateur client, installer un client VNC (tigervnc-viewer par exemple si Unix..)
    (il faut être root)

    pkg install -y tigervnc-viewer


    7. Transmettre le certificat au client
    Transférer le fichier /home/marcel/.vnc/x509_ca.pem depuis l'ordinateur serveur vers l'ordinateur client.
    Tout dépend du système sur l'ordinateur client, mais s'il s'agît de FreeBSD, alors il vaut mieux copier le certificat dans l'arborescence de l'utilisateur qui se connectera à l'utilisateur distant marcel :
     /home/UTILISATEUR-CLIENT/.vnc/

    L'échange peut être fait via scp entre les 2 marchines (par exemple)


    8. Configurer le client VNC sur l'ordinateur client
    8.1. DNS ou /etc/hosts sur le client

    Sur le client, ajouter l'enregistrement DNS (ou dans /etc/hosts) entre l'adresse IP de l'ordinateur serveur et son nom :

    echo '45.56.67.78  srvweb' >> /etc/hosts


    8.2. Lancer TigerVNC Viewer sur l'ordinateur client :
    Ouvrir TigerVNC Viewer et entrer le nom d'hôte avec le port personnalisé :

    srvweb:42654


    Avant de lancer la connection, cliquer sur Options > Sécurité :

        Décocher "Aucun" et "TLS avec certificats anonymes"
        Cocher "TLS avec certificat X509"

    Dans la case Certificat du chemin pour X509 CA, entrer le chemin du certificat TLS de l'ordinateur serveur distant fraîchement transféré :

        /home/UTILISATEUR-CLIENT/.vnc/x509_ca.pem
        Ne pas remplir la case X509 CRL.


    Initier à présent la connexion. Le mot de passe VNC sera alors demandé (P@ssw0rd).

    9. Arrêter le serveur VNC (lorsque nécessaire)
    Sur l'ordinateur serveur :

    vncserver -kill :1

    votre commentaire
  • Pour choisir soi-même le nom et l'emplacement des répertoires usuels dans le répertoire de base d'un utilisateur, on peut utiliser xdg-user-dirs :

    - Installer xdg-user-dirs (en root) :

    pkg ins -y xdg-user-dirs

    - Créer le fichier de configuration pour votre utilisateur ~/.config/user-dirs.dirs avec le contenu suivant :
    (modifiez selon vos désirs)

    XDG_DESKTOP_DIR="$HOME/Bureau"
    XDG_DOWNLOAD_DIR="$HOME/Téléchargements"
    XDG_DOCUMENTS_DIR="$HOME/Documents"
    XDG_MUSIC_DIR="$HOME/Musique"
    XDG_PICTURES_DIR="$HOME/Images"
    XDG_VIDEOS_DIR="$HOME/Vidéos"
    XDG_TEMPLATES_DIR="$HOME/Modèles"
    XDG_PUBLICSHARE_DIR="$HOME/Public"

    - Appliquez les bonnes permissions :
    (mon utilisateur s'appelle marcel)

    chown marcel:marcel  ~/.config/user-dirs.dirs
    chmod 600 ~/.config/user-dirs.dirs

    - Relancez la configuration  :

    xdg-user-dirs-update


    A la rigueur, redémarrez même l'ordinateur.

    reboot

     


    votre commentaire
  • Xfce4 est vraiment formidable, mais je ne lui trouve qu'un seul défaut : à la différence des autres bureaux, il ne permet pas par défaut de redimensionner les fenêtres des applications lorsqu'on les envoie sur un bord de l'écran... et c'est pourtant vraiment vraiment très pratique !!!

    Qu'à cela ne tienne, on peut toujours écrire 3 raccourcis claviers pour le faire !
    Et le résultat est pas mal du tout !



    Aller dans le Gestionnaire de Paramètres (clic-droit sur le bureau, Applications, Paramètres, Gestionnaire de Paramètres) :
    Ouvrez "Clavier", puis cliquez dans l'onglet Raccourcis d'applications et ajoutez les commandes suivantes :

    D'abord un premier raccourci : pour envoyer la fenêtre active dans la partie gauche de l'écran

    wmctrl -r :ACTIVE: -e 0,0,0,1080,1440

    Vous choisirez comme raccourci-clavier la combinaison des touches Windows (Super) + flèche de gauche

    Puis un deuxième raccrouci :pour envoyer la fenêtre activedans la partie droite de l'écran

    wmctrl -r :ACTIVE: -e 0,1080,0,1080,1440

    Vous choisirez comme raccourci-clavier la combinaison des touches Windows (Super) + flèche de droite

    Enfin, le dernier raccourci : pour occuper tout l'écran

    wmctrl -r :ACTIVE: -e 0,0,0,2160,1440

     

    Vous devrez probablement adapter les valeurs chiffrées.
    Sur mon écran, la résolution est de 2160x1440
    Il est facile de voir comment je m'y suis pris.
    Pour la première commande, j'ai divisé la largeur de l'écran (2160) par 2, ça donne 1080, mais j'ai gardé la hauteur normale (1440).
    Pour la seconde commande, idem.. Mais regardez bien le positionnement des valeurs cette fois.

    C'est un moyen très simple de décupler la productivité sur Xfce4.

    Bien entendu, vous devrez adapter ces valeurs à votre configuration !
    J'entends par là que vous avez probablement des menus, tableaux de bords ou autres qui occupent déjà une partie de votre écran (sur xfce, par défaut, nous avons le tableau de bord 1 en haut). Ce qui signifie que lorsque vos fenêtres se placeront et se redimensionneront, elles n'occuperont pas l'espace déjà utilisé par ces barres, mais se positionneront en-dessous.
    Il faudra donc réduire d'au moins 50/70 pixels la hauteur de vos fenêtres dans les commandes ci-dessus, où elles se redimensionneront trop bas (vous ne verrez pas le bas de la page !).
    En tâtonnant 2min, on y arrive très bien :-).

    Suivant la même logique, vous pouvez créer des raccourcis pour occuper le 1er quart en haut à gauche etc...

     


    votre commentaire
  • Méthode agressive... le mieux étant de créer un fichier dans /usr/local/etc/ ...

    # Passer du quarterly au latest :

    sed -i "" 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
    pkg udpate -f

     

    # (Re)passer du latest au quarterly :

    sed -i "" 's/latest/quarterly/' /etc/pkg/FreeBSD.conf
    pkg remove -yf pkg
    pkg ins -y 
    pkg update -f


    ça suppose que vous n'avez aucun paquet installé sur votre serveur... pour éviter de foutre le bazard !


    votre commentaire
  • miniIRCd est un serveur IRC minimaliste.
    Pas de contrôle des utilisateurs entrants, pas d'authentification (autre qu'un mot de passe d'accès), juste du SSL.
    ça peut servir dans certains cas...
    On peut facilement écrire un filtre fail2ban et configurer le pare-feu pour limiter les risques.

    Passez en root pour toute la procédure


    1) Installer git et python3

    pkg ins -y git python311 tmux

    2) Télécharger installer miniIRCd 

    cd /tmp && git clone https://github.com/jrosdahl/miniircd.git && cd miniircd && cp miniircd /usr/local/bin/

    3) Générer le certificat SSL autosigné et créer le chroot

    mkdir -p /var/jail/miniircd ; cd /var/jail/miniircd ; openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout miniircd.key -out miniircd.crt

    4) Créer un lien symbolique pour Python3

    ln -s /usr/local/bin/python3.11 /usr/local/bin/python3

    5) Lancer le serveur en arrière-plan

    /usr/local/bin/miniircd --listen=0.0.0.0 --ssl-cert-file=/var/jail/miniircd/miniircd.crt --ssl-key-file=/var/jail/miniircd/miniircd.key --verbose --chroot=/var/jail/miniircd --setuid=nobody --password "Mon-Super-Mot-DE-PaSse" -d

     

    Sur Android, l'application CoreIRC Go (ou sa version payante) sont compatibles avec miniIRCd


    Rappel des commandes IRC de base (compatibles avec miniIRCd) :

    - Rejoindre un canal ou en créer un :

    /join #NOM-DU-CANAL-A-CREER-OU-A-JOINDRE

    - Quitter le canal "#CANAL" avec un message d'au-revoir

    /part #CANAL Au revoir tout le monde

    - Changer de pseudonyme

    /nick NouveauPseudo

    - Envoyer le message "Bonjour" à l'utilisateur "Utilisateur"

    /msg Utilisateur Bonjour !

    - Envoyer un fichier à un utilisateur

    /dcc send UTILISATEUR-DESTINATAIRE

     

     

    Comment sécuriser un peu miniIRCd.

    1) Mettre en place IPFW :

    sysrc firewall_enable=YES firewall_script="/etc/ipfw.conf"

    2) rédiger un fichier de règles pour IPFW : /etc/ipfw.conf :
    (Attention à bien remplacer le nom de votre interface WAN !!)

    #!/bin/sh
    
    ipfw -q -f flush
    cmd="ipfw -q add"
    pif="vtnet0"     # Interface WAN
    
    $cmd 00010 allow all from any to any via lo0
    $cmd 00101 check-state
    
    # Autoriser les connexions sortantes sur le port 6697 et garder l'état
    $cmd 00112 allow tcp from any to any 6697 out via $pif keep-state
    # règle miniIRCd
    
    # Autoriser les connexions entrantes sur le port 6697 en mode stateful
    $cmd 00400 allow tcp from any to me 6697 in via $pif setup keep-state
    # Autoriser les connexions entrantes sur le port 22 (SSH) en mode stateful
    $cmd 00410 allow tcp from any to me 22 in via $pif setup keep-state
    
    # Bloquer et journaliser tout le reste entrant via l'interface WAN
    $cmd 00497 deny log all from any to any in via $pif
    
    # Bloquer et journaliser tout le reste
    $cmd 00999 deny log all from any to any

    - Lancer IPFW :

    service ipfw start

    La connexion SSH saute, c'est normal... mais si vous ne vous êtes pas trompés dans le fichier de règles, vous pouvez vous reconnecter.

    3) Ecrire un petit démon de ban d'IP : /var/jail/miniircd/banip.sh

    #!/bin/sh

    LOG_FILE="/var/jail/miniircd/miniircd.log"
    IPFW_RULES_FILE="/etc/ipfw.rules"
    LAST_LINE=""

    ban_ip() {
    IP=$1
    # Vérifier si l'IP est déjà bannie
    if ! ipfw list | grep -q "deny ip from $IP to any"; then
    # Ajouter la règle pour bannir l'IP
    ipfw add deny ip from "$IP" to any
    # Sauvegarder la règle dans le fichier de configuration IPFW
    echo "deny ip from $IP to any" >> "$IPFW_RULES_FILE"
    echo "$(date): Banned IP $IP" >> /var/log/miniircd_bans.log
    fi
    }

    # Utiliser tail -F pour suivre le fichier de log
    tail -F "$LOG_FILE" | while read -r line; do
    # Vérifier si la ligne contient le code d'erreur 464
    if echo "$line" | grep -q "464 :Password incorrect"; then
    # Extraire l'adresse IP
    IP=$(echo "$line" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
    if [ -n "$IP" ]; then
    ban_ip "$IP"
    fi
    fi
    done

    - Autoriser son exécution :

    chmod 740 /var/jail/miniircd/banip.sh

    4) Lancer le serveur et exécuter le script banip. Le tout dans des sessions tmux différentes :

    tmux new-session -d -s MINIIRCD "/usr/local/bin/miniircd --listen=0.0.0.0 --ssl-cert-file=/var/jail/miniircd/miniircd.crt --ssl-key-file=/var/jail/miniircd/miniircd.key --verbose --chroot=/var/jail/miniircd --setuid=nobody --password 'Super-Mot-De-Passe' --debug > /var/jail/miniircd/miniircd.log"
    tmux new-session -d -s BANIP "/var/jail/miniircd/banip.sh"


    En cas de redémarrage du serveur, relancer les 2 commandes ci-dessus ou mettre en place un démarrage au démarrage du serveur.

     

     

    5) Configurer SSH pour une connexion par clef uniquement...  etc..
     

    Comment débannir une IP :

    ipfw list

    relever le numéro de la règle (exemple 01099)

    ipfw delete 01099

    La désactivation est immédiate.


    votre commentaire
  • Sia est un outil de stockage décentralisé accessible sous Linux et Windows, mais il est aisé de le compiler sous FreeBSD.
    Voici comment faire.

     

    D'abord, installer les outils de build go :
    (passer en root)

    pkg ins -y go git

    Télécharger les sources pour Linux :

    cd /tmp
    git clone https://github.com/SiaFoundation/renterd.git
    cd renterd/

    Télécharger les outils de go :

    go build ./...

    répétez la commande une seconde fois

    go build ./...

    Compilez à présent renterd :

    cd /tmp/renterd/cmd/renterd/
    go build

    A présent, un exécutable ./renterd est apparu.
    Mais ne le lancez pas tout de suite ! Il manque notamment les autorisations.

    Créer un répertoire d'accueil pour le logiciel :

    mkdir -p /usr/local/renterd

    Déplacez le dossier /tmp/renterd dans le nouveau répertoire :

    mv /tmp/renterd /usr/local/renterd/src

    Octroyer les autorisations d'exécution à votre utilisateur standard (ici, c'est marcel comme toujours):

    chown -R marcel:wheel /usr/local/renterd

    Créer un lien symbolique pour faciliter l'exécution :

    ln -s /usr/local/renterd/src/cmd/renterd/renterd /usr/bin/renterd

    Voilà, il ne vous reste plus qu'à lancer renterd, puis à ouvrir votre navigateur web (http://127.0.0.1:9980)

    (redevenez votre utilisateur normal)

    ./renterd


     

     

     


    votre commentaire
  • RSF-1 ZFS est disponible pour FreeBSD, Debian (et d'autres Linux), OmniOSce ...
    Sa licence pour une utilisation domestique est de l'ordre de 200€, beaucoup plus pour du commercial.
    Il ne fonctionne qu'avec 2 serveurs. Son but est de mettre en place une haute disponibilité avec réplication des données périodique.


    ##############################################################################
    # CONFIGURATION DE RSF-1

    # But :
    Monter 2 serveurs (s1 et s2) en un cluster de stockage avec réplication des données automatique entre les serveurs à l'intervalle voulu.
    Il faut également pouvoir gérer le nombre maximal de snapshots accumulés.

    Nous allons :
    - Installer 2 serveurs FreeBSD 14.0 avec 3 supports de stockage par serveur (1 de 10G pour le système, 2 de 30G chacun pour le stockage)
    - leur permettre de se contacter via SSH par clefs,
    - installer RSF-1 ZFS sur les 2 serveurs
    - Initialiser RSF-1 ZFS depuis la console web RSF de s1
    - Créer le cluster HA-Cluster depuis la console web RSF de s1, en incluant s1 et s2 au cluster
    - activer les heartbeats encryptés
    - Créer le pool ZFS en miroir nommé "SFTP" depuis la console web RSF de s1
    - Créer le pool ZFS en miroir nommé "SFTP" depuis la console web RSF de s2
    - Mise en cluster du pool ZFS "SFTP"

    # Pré-requis :
    - 2 serveurs FreeBSD 14.0 (attention, RSF n'est pas encore compatible avec la 14.1) avec 4G de RAM, connectés à un même réseau local (pour commencer)
    -- sX : 1 support de stockage système (10G) , 2 supports de stockage (pour les données) de taille identique (30G pour l'essai).
    -- les 2 supports de stockage pour les données seront montés en raidz miroir directement depuis la console web de RSF-1 ZFS

    # Préparation :
    - Installer les serveurs, faire les MAJ sur chacun.
    --- se loguer en root
    --- faire les MAJ :
    pkg ins -y ; pkg update
    --- Repérer l'adresse IP de chaque serveur :
    ifconfig
    --- sur chaque noeud, y compris sur l'ordinateur hôte pour faciliter la gestion (notamment si les noeuds sont des VMs), ajouter les correspondances nom-IP dans le fichier /etc/hosts :
    192.168.0.47    s1
    192.168.0.48    s2

    - Préparer les connexions SSH entre serveurs par clef (avec l'utilisateur root)
    --- sur s1 et s2 : dans le fichier /etc/ssh/sshd_config, autoriser la connexion au compte root comme ceci:
    PermitRootLogin yes
    --- Relancer ssh :
    service sshd restart

    --- sur s1, créer la paire de clefs SSH en étant root :
    ------ se loguer en tant que root puis :
    ssh-keygen -t ed25519
    # (ne pas créer de passphrase !!)
    ------ envoyer la clef publique à l'autre serveur (exemple ici depuis s1) :
    ssh-copy-id -i /root/.ssh/id_ed25519.pub root@s2
    ------ Initier une première connexion de test depuis s1 vers s2
    ssh root@s2
    exit
    - Refaire la manip depuis s2 (et envoyer la publique à s1)

    - Installer RFS-1 ZFS sur chaque serveur.
    --- Télécharger le soft sur chaque serveur directement :
    fetch https://packages2.high-availability.com/offline-packages/rsf-1-offline-latest-freebsd140.pkg -o /tmp
    --- Installer le logiciel :
    pkg install -y /tmp/rsf-1-offline-latest-freebsd140.pkg
    --- Redémarrer le serveur (impératif) :
    reboot


    - Depuis un ordinateur client (ou depuis votre hôte), se connecter à l'interface web de s1
    https://s1:8330
    [...]
    ------ Créer l'utilisateur administrateur :
    majekla
    ------ Nom Réel
    ------ Mot de passe

    Il n'y a pas besoin de faire cette manip (créer cet utilisateur administrateur de la console web RSF) sur le noeud s2.
    Lorsque le cluster des 2 noeuds sera créé depuis la console web RSF de s1, l'utilisateur administrateur deviendra automatiquement celui de s2 aussi.


    - Une fois authentifié sur la console web de RSF sur s1, cliquer sur Create/Destroy cluster
    --- Choisir "Shared-nothing" surtout car il s'agît de stockages distincts (chaque serveur a son propre stockage pour les données. Il ne s'agît pas d'un stockage mutualisé entre chaque serveur)
    --- Logiquement, les 2 noeuds apparaissent dans la section "Node Selection" puisque nous avons correctement renseigné le fichier /etc/hosts de chaque noeud
    --- Il faut entrer le numéros de licence des 2 noeuds puis créer le cluster.

    - Activer les heartbeats encryptés dès maintenant !
    --- Il est fondamental d'effectuer cette opération AVANT la mise en ligne d'un service de clustering !! Galère assurée autrement.
    --- Aller dans le menu "Settings", "General", "Encrypted Heartbeats" sur "on". Sauvegardez le changement puis retourner dans le Dashboard pour démarrer le service.

    - Une fois le cluster créé, il nous faut créer le service de stockage.
    - Nous allons donc créer les pools sur s1 et s2, composés de nos 2 supports de stockage sur chaque serveur prévus à cet effet

    Mais je dois faire ici un aparte. RSF ne permet pas, à ce jour, la création de pools et de datasets encryptés. C'est une énorme lacune du logiciel à mon sens !! (même si son objectif premier, rappelons-le, c'est la Haute Disponibilité.. pas la création des pool et datasets)
    Les besoins en sécurité de ce type aujourd'hui sont fondamentaux, et cela m'a beaucoup interrogé lorsque j'ai testé ce logiciel. Il faut implémenter cette solution ! Impérativement.
    Il est néanmoins tout à fait possible de réaliser les 2 étapes suivantes (création du pool et des datasets) directement en ligne de commande sur chaque serveur afin de créer ces pools encryptés puis de mettre en cluster le pool créé, c'est même la meilleure option.
    Néanmoins, c'est toujours la même consigne : même nom de pool, et mêmes noms pour les datasets sur chaque serveur. Les caractéristiques doivent être rigoureusement identiques !!
    Il faudra néanmoins bien réfléchir aux conséquences de l'encryption du pool et/ou des datasets lors d'un crash. Je n'ai pas pu tester cette caractéristique avec RSF, mais il est connu que les pool et datasets ZFS encryptés posent des problèmes plus particuliers lors des send/receive !
    Je ferai d'ailleurs un article à ce sujet car ça n'a rien d'évident.

    --- Toujours depuis la console web RSF de s1, Aller dans le menu ZFS, +Create.
    --- Nommer le pool "SFTP", prendre le mode "mirror" et choisir les 2 disques (pas le premier car c'est généralement c'est celui du système)
    -- Sélectionnez les disques en tant que DATA puis créer le pool ZFS.

    - Il faut à présent créer le second pool ZFS "SFTP" (sur s2).
    --- Se connecter à la console web RSF de s2, et faire la même manip pour créer le pool.
    --- Attention, le nom du pool doit être IDENTIQUE (SFTP ici), le mode de pool (mirror) aussi, le type (DATA) aussi.
    --- Une fois ce second pool créé, le pool SFTP devient soudainement "CLUSTERABLE" en bleu. (depuis la console web RSF de s1, rafraîchissez la page web pour la console de s1 et la ligne qui était rouge devient bleue !)
    --- Vous pouvez fermer la console de s2, on en a plus besoin. On va faire le reste sur la console de s1

    - Mise en cluster du pool ZFS "SFTP".
    --- Sur la console web RSF de s1, aller dans le menu "Volumes" puis cliquer sur Actions (notre pool SFTP apparaît en bleu), "Cluster this pool".
    --- Choisir le noeud préféré (s1), si vous ajoutez une VIP, attention à ne pas la nommer avec des majuscules !!! Elle ne fonctionnera pas autrement et vous allez tout faire foirer !!!! Donnez-lui un nom en minuscule et plutôt court.
    --- Une fois créé, le pool ZFS "SFTP" va démarrer sur chaque noeud puis afficher "Running on s1".

    - Créer les datasets sur le cluster de pools
    --- Aller dans le menu ZFS, Datasets, Cliquer sur "CREATE DATASET"
    --- Remplissez les champs. (Par exemple, vous pourriez dédier un dataset à un utilisateur et donc le nommer comme le nom de l'utilisateur...). Prenons USER1 par exemple
    --- Mountpoint path : /SFTP/USER1
    --- Activer la compression ("on")

    - Configurer les intervalles entre 2 snapshots (i.e avant la synchronisation des données entre les noeuds)
    --- Par défaut, elle est fixée à 15min pour le noeud actif. C'est souvent suffisant, inutile de le descendre d'avantage. Pour changer ce réglage, aller dans "Settings", "Shared Nothing".
    --- Vous pouvez également régler le nombre de snapshots à conserver (ce qui peut être pratique si vous avez besoin de restaurer à une date précise).







    - Attention aux pare-feux !
    Ouvrir les ports :
    --- 1195 (TCP & UDP)
    --- 4330 (TCP)
    --- 4331 (TCP)
    --- 8330 (TCP)

    - Comment faire pour updater dynamiquement le nom de domaine si l'un des serveurs tombe ?
    Plusieurs solutions.
    --- Utiliser uptimerobot par exemple, qui permet de déclencher un webhook en cas de soucis (on peut alors tricher et placer l'IP de l'API de no-ip pour modifier instantanément l'enregistrement AAAA)
    --- Ecrire un simpe script qui teste la connexion SSH entre les serveurs. Dès qu'elle n'est plus disponible, on exécute l'API de No-IP (c'est une simple URL à taper).
    ... ce sont les solutions pas chères ça ! Mais ça fonctionne.
    Sinon, il y a la grosse artillerie avec AWS & co !


    votre commentaire
  • Pour utiliser le célèbre logiciel, il vous faut un environnement de bureau ainsi que la librairie gtkglext

    pkg ins -y gtkglext

    Ensuite, télécharger la version d'AnyDesk pour FreeBSD via votre navigateur (ou via le shell :)

    fetch https://download.anydesk.com/freebsd/anydesk-freebsd-6.1.1-x86_64.tar.gz 

    Décompresser le .tar.gz :

    tar -xvzf anydesk-freebsd*

    Entrer dans le dossier :

     cd anydesk-6*

    et double-cliquer sur "anydesk" ! (ou le lancer depuis le shell) :

    ./anydesk


    C'est aussi simple.
    Vous pouvez copier l'exécutable vers /usr/local/bin et créer un raccourci ou un lanceur !

    OU encore utiliser le script freebsd-desktop dans un autre article qui fera l'installation pour vous.


    votre commentaire
  • Soit 2 serveurs nX sous FreeBSD 14.0.
    On considère la configuration réseau effective sur les serveurs :
    10.10.10.10    n1
    10.10.10.20    n2

    Chaque serveur possède 2 supports de stockage.
     - Un support pour le système,
     - l'autre pour le stockage des données, qui sera dévolu à HAST (genre 16Go).
     Le second support fait la même taille sur les 2 serveurs.

    Nous aurons besoin d'une IP libre sur le réseau 10.10.10.0/24 pour notre VIP
    Décidons par exemple que la VIP aura pour IP : 10.10.10.50


    ### SUR n1
    - Vérifier le nom de la carte réseau connectée :

    ifconfig # prenons em0 pour exemple

    - Configurer le bon nom d'hôte, la bonne adresse IP et la route par défaut puis redémarrez

    sysrc hostname=n1
    sysrc ifconfig_em0="inet 10.10.10.10 netmask 255.255.255.0"
    sysrc defaultrouter="10.10.10.1"
    reboot


    ### SUR n2
    - Vérifier le nom de la carte réseau connectée :

    ifconfig # prenons em0 pour exemple

    - Configurer le bon nom d'hôte, la bonne adresse IP et la route par défaut puis redémarrez

    sysrc hostname=n2
    sysrc ifconfig_em0="inet 10.10.10.20 netmask 255.255.255.0"
    sysrc defaultrouter="10.10.10.1"
    eboot


    ### SUR n1 ET n2 :
    - Ajouter le service pour un lancement au démarrage des serveurs :

    sysrc hastd_enable="YES"

    - Renseigner le fichier /etc/hosts pour que chaque nX connaisse l'IP de l'autre :

    10.10.10.10    n1
    10.10.10.20    n2

    - Repérer les périphériques de stockage dévolus pour HAST :

    camcontrol devlist

    (on va dire que sur n1 j'ai ada1 et sur n2 ada1 aussi)

    - Créer le fichier de configuration /etc/hast.conf

    resource shared {

        on n1 {
            local /dev/ada1
            remote n2
        }

        on n2 {
            local /dev/ada1
            remote n1
        }

        replication memsync
    }


    # Démarrer le service HAST :

    service hastd start


    ### SUR n1
    # Définir n1 comme serveur primaire :

    hastctl role init shared
    hastctl create shared
    hastctl role primary shared



    ### SUR n2
    # Définir n2 comme serveur secondaire :

    hastctl role init shared
    hastctl create shared
    hastctl role secondary shared



    ### SUR n1 ET n2

    # Vérifier l'état de la configuration HAST :

    hastctl status shared # il doit être "completed" sur les n1 et n2


    # LA CONFIGURATION DE HAST EST TERMINEE.



    ##############################
    # CONFIGURATION DU POOL ZFS

    ### SUR n1

    - Créer le pool ZFS sur le périphérique HAST :

    zpool create hastpool /dev/hast/shared

    - Créer un système de fichiers ZFS

    zfs create hastpool/shared


    # LA CONFIGURATION ZFS EST TERMINEE.


    ##############################
    # TESTER HAST MANUELLEMENT (AVANT DE METTRE CARP EN PLACE)

    ### SUR n1

    # Créer un fichier de test :

    echo "Hello from n1" > /hastpool/shared/testfile.txt

    - Changer le rôle de n1 à secondaire :

    zpool export hastpool
    hastctl role secondary shared


    ### SUR n2
    # Changer le rôle de n2 à primaire :

    hastctl role primary shared
    zpool import hastpool

    - Regarder si le fichier y est :

    cat /hastpool/shared/testfile.txt


    # LE TEST EST CONCLUANT
    # REFAIRE LE CHEMIN INVERSE POUR REMETTRE n1 EN PRIMARY


    ##############################
    # QUE FAIRE EN CAS DE PLANTAGE ET DE REDEMARRAGE DES 2 SERVEURS  :

    ### SUR n1 ET n2 :

    # Démarrer le service HAST :

    service hastd start



    ### SUR n1
    # Définir n1 comme serveur primaire

    hastctl role init shared
    hastctl create shared
    hastctl role primary shared



    ### SUR n2
    # Définir n2 comme serveur secondaire :

    hastctl role init shared
    hastctl create shared
    hastctl role secondary shared


    ### SUR n1
    # Remonter le pool

    zpool import hastpool




    ##############################
    # CONFIGURATION DE UCARP POUR LA HAUTE DISPONIBILITE (ECHANGE DE VIP)

    ### SUR n1 ET n2

    - Installer ucarp

    pkg ins -y ucarp


    # Créer les scripts de montée et descente de la VIP :
    -
    /usr/local/etc/ucarp-up.sh :

    #!/bin/sh
    /sbin/ifconfig $1 alias $2 netmask 255.255.255.255

    - /usr/local/etc/ucarp-down.sh :

    #!/bin/sh
    /sbin/ifconfig $1 -alias $2 2>/dev/null

    - Ne pas oublier de les rendre exécutables :

    chmod +x /usr/local/etc/ucarp-up.sh
    chmod +x /usr/local/etc/ucarp-down.sh

    - Créer un script de démarrage personnalisé : /usr/local/etc/rc.d/ucarp_custom

    #!/bin/sh

    # PROVIDE: ucarp_custom
    # REQUIRE: NETWORKING
    # BEFORE:  DAEMON
    # KEYWORD: shutdown

    . /etc/rc.subr

    name="ucarp_custom"
    rcvar="ucarp_custom_enable"

    start_cmd="${name}_start"
    stop_cmd="${name}_stop"

    ucarp_custom_start() {
        /usr/local/sbin/ucarp -i ${ucarp_if} -s ${ucarp_src} -v ${ucarp_vhid} -p ${ucarp_pass} -a ${ucarp_addr} -b ${ucarp_advbase} -k ${ucarp_advskew} -P -u /usr/local/etc/ucarp-up.sh -d /usr/local/etc/ucarp-down.sh &
        echo $! > /var/run/ucarp_${ucarp_vhid}.pid
    }

    ucarp_custom_stop() {
        if [ -f /var/run/ucarp_${ucarp_vhid}.pid ]; then
            kill $(cat /var/run/ucarp_${ucarp_vhid}.pid)
            rm /var/run/ucarp_${ucarp_vhid}.pid
        fi
    }

    load_rc_config $name
    run_rc_command "$1"

    - Ne pas oublier de le rendre exécutable :

    chmod +x /usr/local/etc/rc.d/ucarp_custom



    ### SUR n1 uniquement :
    - Pour un lancement des options de ucarp au démarrage du service :

    sysrc ucarp_custom_enable="YES"
    sysrc ucarp_if="em0"
    sysrc ucarp_src="10.10.10.10"
    sysrc ucarp_pass="testpass"
    sysrc ucarp_vhid="1"
    sysrc ucarp_addr="10.10.10.50"
    sysrc ucarp_advbase="1"
    sysrc ucarp_advskew="1"




    ### SUR n2 uniquement :
    - Pour un lancement des options de ucarp au démarrage du service :

    sysrc ucarp_custom_enable="YES"
    sysrc ucarp_if="em0"
    sysrc ucarp_src="10.10.10.20"
    sysrc ucarp_pass="testpass"
    sysrc ucarp_vhid="1"
    sysrc ucarp_addr="10.10.10.50"
    sysrc ucarp_advbase="1"
    sysrc ucarp_advskew="100"




    ### SUR n1 PUIS n2 :
    # Démarrer le protocole CARP :

    service ucarp_custom start


    # LE SYSTEME DE HA EST EN PLACE



    ##############################
    # TEST FINAL DE LA HA :

    ### SUR n1

    service ucarp_custom start


    ### SUR n2

    service ucarp_custom start


    ### SUR n1

    ifconfig em0

    # (vous devez voir l'attribution de la VIP sur em0)


    ### SUR n1
    # A présent, c'est le grand test !
    # Eteignez n1 ! et regardez ce qui se passe sur le prompt de n2 :

    poweroff


    ### SUR n2
    # Regardez l'attribution de la VIP

    ifconfig em0


    # LE TEST EST CONCLUANT


    ### SUR n1
    # Rallumer n1 à présent et regarder si la VIP revient sur n1

    ifconfig em0

    # (oui, la VIP est revenue sur n1)


    ##############################
    # importation forcée du pool

    # Nous avons un problème.
    # Si n1 tombe, n2 prend le relais de la VIP. Cela fonctionne !
    # Mais, le pool hastpool ne se réimporte pas automatiquement... Il faut le remonter manuellement pour l'instant (je vous laisse scripter ça !)






    votre commentaire
  • Voici un exemple de configuration d'un pare-feu avec PF sur FreeBSD
    Considérons que ma machine a 2 cartes réseaux (wlan0 et ue0).
    Par défaut ici, je bloque tout accès entrant depuis le WAN mais permet à ma machine de communiquer sans restrictions avec internet (stateful).

    Adaptez les règles en fonction de vos besoins :

    - Passer en root

    su -

    - Créez le fichier de règles : /etc/pf.conf avec le contenu suivant et adaptez-le à vos besoins.

    #--- Variables pour les interfaces
    wan1="ue0" # Première interface WAN
    wan2="wlan0" # Seconde interface WAN

    #--- Options de normalisation
    set block-policy drop
    set skip on lo0

    #--- Définition de la table bruteforce
    table <bruteforce> persist

    #--- Scrub (nettoyage) tout le trafic passant par les interfaces
    scrub in on {$wan1 $wan2} all fragment reassemble

    #--- Règles de blocage et de passage par défaut : autoriser la machine à communiquer avec internet sans restriction (stateful)
    block in all
    pass out on {$wan1 $wan2} inet from any to any keep state


    ##############################################
    # Exemples de règles pour autoriser des flux entrants spécifiques

    #--- Limiter les tentatives de connexion SSH à 5 par minute par IP
    #pass in on {$wan1 $wan2} proto tcp from any to any port 22 \
    # flags S/SA keep state \
    # (max-src-conn-rate 5/60, overload <bruteforce> flush global)

    #--- Autoriser les pings ICMP entrants (IPv4) et ICMPv6 (IPv6)
    #pass in on {$wan1 $wan2} inet proto icmp all icmp-type echoreq keep state
    #pass in on {$wan1 $wan2} inet6 proto icmp6 all icmp-type echoreq keep state

    #--- Autoriser SSH (port 22) de n'importe quelle adresse IP (IPv4 et IPv6)
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 22 keep state

    #--- Autoriser HTTP (port 80) et HTTPS (port 443) uniquement depuis des plages IP spécifiques (IPv4 et IPv6)
    #pass in on {$wan1 $wan2} all proto tcp from {192.0.2.0/24, 2001:DB8::/32} to any port {80 443} keep state

    #--- Autoriser HTTP (port 80) en limitant les tentatives de connexion à 5 par minute par IP pass in on $wan1 proto tcp from any to any port 80 \ flags S/SA keep state \ (max-src-conn-rate 5/60, overload <bruteforce> flush global)

    #--- Autoriser le trafic FTP (port 21) (IPv4 et IPv6)
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 21 keep state

    #--- Autoriser le trafic vers un serveur DNS spécifique sur le port 53 (TCP et UDP) (IPv4 et IPv6)
    #pass in on {$wan1 $wan2} all proto {tcp udp} from any to {198.51.100.5, 2001:DB8::1} port 53 keep state

    #--- Autoriser les connexions DNS (Domain Name System)
    #pass in on {$wan1 $wan2} all proto {tcp udp} from any to any port 53 keep state

    #--- Autoriser NTP (Network Time Protocol)
    #pass in on {$wan1 $wan2} all proto udp from any to any port 123 keep state

    #--- Autoriser SMTP (Simple Mail Transfer Protocol) pour un serveur de messagerie
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 25 keep state

    #--- Autoriser IMAP (Internet Message Access Protocol) pour un serveur de messagerie
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 143 keep state

    #--- Autoriser POP3 (Post Office Protocol version 3) pour un serveur de messagerie
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 110 keep state

    #--- Autoriser HTTPS (HTTP Secure)
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 443 keep state

    #--- Autoriser les connexions entrantes pour un service de jeu en ligne (ex : port 27015 pour un serveur de jeux)
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 27015 keep state
    #pass in on {$wan1 $wan2} all proto udp from any to any port 27015 keep state

    #--- Autoriser les accès à un serveur de base de données MySQL
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 3306 keep state

    #--- Autoriser les connexions entrantes pour un service VoIP (SIP sur le port 5060)
    #pass in on {$wan1 $wan2} all proto tcp from any to any port 5060 keep state
    #pass in on {$wan1 $wan2} all proto udp from any to any port 5060 keep state

    #--- Autoriser le trafic pour les serveurs VPN (ex : OpenVPN sur le port 1194)
    #pass in on {$wan1 $wan2} all proto udp from any to any port 1194 keep state

    #--- Autoriser les connexions SSH seulement depuis une adresse IP spécifique
    #pass in on {$wan1 $wan2} all proto tcp from {203.0.113.0/24, 2001:DB8:1234::/48} to any port 22 flags S/SA keep state

    #--- Logger et passer le trafic autorisé spécifiquement
    #pass in log on {$wan1 $wan2} all proto tcp from any to any port 80 keep state

    #--- Logs spécifiques pour le trafic entrant non autorisé
    #block in log on {$wan1 $wan2} all

    - Activez le pare-feu au démarrage du serveur :

    sysrc pf_enable=YES pf_rules="/etc/pf.conf"

    - Démarrer le pare-feu pf :

    service pf start

    - Voir la liste de règles actives :

    pfctl -s rules

    - Voir l'état et les stats :

    pfctl -s info

    - Arrêter le pare-feu (si besoin)

    service pf stop

     


    votre commentaire
  • Nouvelle version stable : 01-10-2024, compatible avec la 14.1

    Voici un script graphique pour automatiser l'installation d'un environnement de bureau sur FreeBSD :

    Télécharger « freebsd-desktop.sh »

     

    Pour télécharger et exécuter le script directement depuis votre machine :

    1) Passez en root :

    su -

     2) Télécharger le script :

    fetch https://lstu.fr/freebsd-desktop1401 -o /tmp

    3) Exécuter le script :

    cd /tmp
    chmod 740 freebsd-desktop1401
    ./freebsd-desktop1401

     

    Une version CLI est présente dans le script de configuration global


    votre commentaire
  • Passer en root :

    su -

    Modifier /usr/local/etc/lightdm/lightdm.conf 

    sed -i "" 's/#autologin-user=/autologin-user=VOTRE-UTILISATEUR/' /usr/local/etc/lightdm/lightdm.conf
    sed -i "" 's/#autologin-user-timeout=0/autologin-user-timeout=0/' /usr/local/etc/lightdm/lightdm.conf

    Redémarrez


    votre commentaire
  • Pour démarrer l'ordinateur et attérir directement sur l'environnement de bureau installé (LXQT ici en exemple) :

    Passer en root :

    su -

    Puis créez le fichier /usr/local/etc/sddm.conf avec le contenu suivant :

    [Autologin]
    User=VOTRE-UTILISATEUR
    Session=lxqt.desktop

    ou copiez/collez le bloc suivant dans le terminal après avoir mis votre nom d'utilisateur :

    {
    echo '[Autologin]'

    echo 'User=VOTRE-UTILISATEUR'
    echo 'Session=lxqt.desktop'
    } > /usr/local/etc/sddm.conf

    Redémarrez ensuite l'ordinateur.

    reboot

     


    votre commentaire
  • password-store (ou "pass" pour les intimes) est un gestionnaire de mots de passe en ligne de commande, existant sur tous les sytèmes de type Unix (Linux et BSD).

    Bien qu'en ligne de commandes, il est extrêmement polyvalent, permettant la création d'un git privé et assurant la synchronisation de votre base de mots de passes entre plusieurs machines.

    Nous allons voir les bases :

    1) l'Installer :
    (en root) 

    pkg ins -y password-store

    2) Créer votre clef GPG
    (en tant que votre utilisateur, pas root ici)

    gpg --full-gen-key

    Vous devrez répondre à plusieurs questions.
    Prenez les choix par défaut.
    Remplissez une adresse mail (ce sera plus facile pour la suite).

    A la fin, vous obtiendrez 2 informations :
    - une clef pub (clef publique), série de chiffres et de lettres, qu'il faut impérativement noter
    - un uid, votre email, si vous l'avez rentré.

    3) Initialiser votre password-store

    pass init votre@mail.truc


    Voilà, c'est terminé pour la configuration

    Comment s'en servir à présent :

    #) Créer un mot de passe
    Principalement 2 commandes, mais très vite, vous n'en utiliserez plus qu'une seule, celle-ci :

    pass edit LOGICIELS/MICROSOFT/WINDOWS/LICENCES-WINDOWS/WINDOWS-11PRO

    Cette très longue ligne ci-dessus sert d'exemple pour vous montrer comment vous pouvez organiser l'architecture de votre password-store. Mettez des minuscules et des accents si ça vous chante, personnellement je reste très vieux jeu.
    J'ai créé plusieurs "dossiers" en une seule ligne (appelez ça "catégories" si vous le souhaitez).
    Tout au bout, je veux créer une entrée pour une licence windows 11 pro.
    C'est assez pratique.

    Cette commande vous ouvre directement l'éditeur par défaut de votre système (attention pour FreeBSD, c'est vi ! Vous devrez apprendre à vous servir de vi ou changer l'éditeur par défaut. Une fois vos entrées tappées, on quitte comme on quitte vi :wq ).

    Il y a un ordre précis dans lequel entrer les informations lorsque l'éditeur se lance :

    1) La première ligne sert EXCLUSIVEMENT pour le mot de passe (la clef de license Windows 11 pro dans notre cas ici). Vous ne devez rien mettre d'autre que le mot de passe, sans phrase du style "mot-de-passe : ...."

    2) Mettez ce que vous voulez sur les autres lignes ! 
    Traditionnellement, on mettra :
    Utilisateur: ...
    URL : ...
    Commentaire : ...

     

    Pourquoi est-ce que je dis qu'il y a 2 commandes, parce que la commande de base pour créer une entrée est : 

    pass insert LOGICIELS/MICROSOFT/WINDOWS/LICENCES-WINDOWS/WINDOWS-11PRO

    Sauf que là, vous n'aurez droit qu'à une ligne : le mot de passe. Rien d'autre.
    Pour obtenir une entrée multi-ligne (telle qu'avec la commande plus haut), vous devrez tapper :

    pass insert --multiline LOGICIELS/MICROSOFT/WINDOWS/LICENCES-WINDOWS/WINDOWS-11PRO

    Et vous arriverez alors dans un éditeur de merde où il faut tapper CTRL+D 2 fois pour quitter et où on ne peut pas revenir à la ligne précédente pour faire une modification.
    Donc, passez par la commande pass edit... ce sera beaucoup plus rapide, d'autant que c'est cette commande qu'il faut utiliser pour modifier une entrée..

    #) Voir toute l'architecture de votre password-store

    pass

    C'est là que vous comprendrez l'importance de faire des catégories !

    #) Afficher une entrée
    (mot de passe, utilisateur etc..)

    pass EMAIL/GMAIL

    #) N'afficher que le mot de passe d'une entrée :

    pass show EMAIL/GMAIL

    #) Supprimer une entrée :

    pass rm EMAIL/GMAIL

     

    Je vous laisse approfondir le sujet. Si besoin d'une explication pour la création du git et la synchro, je rajouterai.
    Pour transférer sur une autre machine (autre que par un git), il faut bien garder ~/.password-store


    votre commentaire
  • Configurer une adresse mail avec un client mail en CLI relève de plus en plus de l'exploit, tant il devient compliqué de s'accommoder des mesures de sécurité requises par les géants du web.
    Néanmoins, ce n'est pas difficile avec les adresses Yahoo.. et mutt.

    mutt est un petit client mail en ligne de commandes qui s'installe et se configure très facilement.

     

    Nous allons créer une configuration IMAP avec un stockage du corps et des en-têtes de mails en local.


    Pré-requis :
    - avoir installé mutt... ! ("pkg ins -y mutt" sur FreeBSD, ou "pkgin -y in mutt" sur NetBSD) ainsi, au besoin, d'un module pour l'authentification "plain" demandée par Yahoo. Plusieurs paquets existent selon les BSD. Sur NetBSD, c'est "cy2-plain".
    - obtenir un mot de passe d'application sur le compte yahoo.
    - avoir créé quelques dossiers :

    mkdir -p ~./mutt/cache



    Pour cela, allez dans vos mails sur le site de Yahoo, cliquez sur la bulle avec votre nom en haut à droite, "infos compte", puis l'onglet "Sécurité.
    Vous y trouverez "Autres méthodes de connexion", "Mot de passe d'application".
    Il suffit tout simplement d'en générer un.. ET DE LE NOTER !! Parce que vous ne pourrez pas le revoir ensuite. 

    A savoir, éviter d'en créer/supprimer trop souvent ou cette fonctionnalité se bloque plusieurs jours...
    C'est un peu pénible [...].

    Désormais, avec mutt, ce n'est pas votre mot de passe d'accès à votre interface web de yahoo mail dont vous aurez besoin, mais du mot de passe d'application !


    Pour la configuration :
    1) Créer un fichier .muttrc dans votre répertoire racine (home/marcel/.muttrc) et y mettre les éléments suivants (en changeant selon vos coordonnées bien entendu !)

    # IDENTITE
    set realname = "Marcel Dublog"
    set date_format="%A %d %b %Y à %H:%M:%S (%Z)"
    set attribution="Le %d, %n a écrit :"
    set forward_format="[Fwd: %s]"
    set forward_quote

    # SECURITE
    set ssl_starttls = yes
    set ssl_force_tls = yes

    # [RECEPTION] : IMAP
    set imap_authenticators="gssapi:cram-md5:login:plain"
    set imap_user = "marcel.dublog@yahoo.com"
    set imap_pass = "mot-de-passe-dapplication-yahoo"
    set folder = "imaps://imap.mail.yahoo.com/"
    set spoolfile = "+INBOX"
    set postponed ="+Drafts"
    set record = "+Sent"
    set mail_check_stats=yes

    # [ENVOI] : SMTP
    set smtp_authenticators="gssapi:cram-md5:login:plain"
    set smtp_url = "smtp://marcel.dublog@smtp.mail.yahoo.com:587"
    set smtp_pass = "mot-de-passe-dapplication-yahoo"
    set from = "marcel.dublog@yahoo.com"
    set use_from = yes
    set use_envelope_from = yes

    # [STOCKAGE LOCAL]
    set header_cache=~/.mutt/cache/headers
    set message_cachedir=~/.mutt/cache/bodies

    # [AFFICHAGE] : CONFIGURATION PERSONNALISEE
    message-hook "~N" "tag-new"
    set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %{%f %3n %4.4k %s%}\n"
    set pager_index_lines=7
    set pager_stop
    set date_format="%A %d %b %Y à %H:%M:%S (%Z)"
    set attribution="Le %d, %n a écrit :"
    set forward_format="[Fwd: %s]"
    set forward_quote
    color attachment magenta default
    color body brightred default "(ftp|http)://[^ ]+"
    color body brightcyan default [-a-z_0-9.]+@[-a-z_0-9.]+
    color bold brightblue default
    color error brightwhite red
    color hdrdefault magenta default
    color header brightmagenta default ^(From):
    color header brightwhite default ^(Subject):
    color header brightwhite default ^(Date):
    color header white default ^(In-Reply-To):
    color indicator brightred default
    color markers brightblue default
    color message brightblack green
    color normal default default
    color quoted yellow default
    color quoted1 green default
    color quoted2 brightblue default
    color quoted3 blue default
    color search black yellow
    color signature red default
    color status default blue
    color tilde brightblue default
    color tree green default
    color underline brightgreen default

    2) Ensuite, lancez simplement mutt dans un shell sur votre session... (tappez "mutt")

    Mutt est hautement configurable et léger. Vous pouvez même changer les raccourcis claviers...

    Par contre, il vous faudra des rudiments de vi pour écrire les mails (notamment pour quitter vi !) ou bien, il suffit de changer l'éditeur pour nano avec la ligne suivante, à rajouter dans le fichier ~/.muttrc

    set editor = nano

    votre commentaire
  • qutebrowser est un navigateur web graphique developpé par Florian Bruhin depuis près de 10 ans maintenant.
    Open-source, léger, rapide, basé sur l'utilisation du clavier et de commandes pour fonctionner, il est rapide à prendre en main, hautement configurable. En un mot, je le trouve superbe !!
    Divers scripts sont disponibles sur github pour en améliorer les qualités (importation de bookmarks etc..).


    Voici pour vous aider, quelques raccourcis pour apprendre à le maîtriser plus vite : 

    i       : pour rentrer en mode "insertion" dans un champs de texte sur un site web.

    O ou CTRL+T : créer un nouvel onglet

    CTRL+N : créer une nouvelle page

    gC : dupliquer l'onglet actuel

    gD : faire de l'onglet actuel une nouvelle fenêtre

    d : fermer l'onglet en cours

    u : pour restaurer l'onglet fermé

    /truc : faire une recherche de 'truc' dans la page web

    :q : quitter qutebrowser

    :wq : quitter en sauvegardant les onglets ouverts

     

    :adblock-update : télécharge la liste des pub à bloquer et active adblock

     

    H : revenir à la page précédente

    J : revenir à la page suivante

    (g)J et (g)K : passer d'un onglet à l'autre par le clavier

    gd : télécharger

     

    ESC : arrêter ce qui en cours

    -------------------------------------------------------------------------- 

    :set url.searchengines '{"DEFAULT": "https://www.startpage.com/do/dsearch?query={}"}'

    :set url.default_page https://startpage.com

    :set url.start_pages https://startpage.com

    Pour configurer la recherche par défaut avec startpage ainsi que la page d'accueil de toute nouvelle fenêtre/onglet (et non avec duckduckgo, qui est la valeur par défaut)

     

    qutebrowser, un navigateur web minimaliste mais complet, ultra rapide

     

     

    -------------------------------------------------------------------------- 

    Passer les pubs plus rapidement sur Youtube :
    Un simple petit script pour accélérer les pubs à 3000% et les passer en 1 seconde.
    Ouvrez un terminal, loguez-vous en root :

    su -

    Créer un fichier de configuration pour la session de votre utilisateur (celui qui se sert de qutebrowser)

    touch /home/majekla/.local/share/qutebrowser/greasemonkey/nopub.js

    Copiez/collez le script suivant dedans :

    setInterval(() => {
        const btn = document.querySelector('.videoAdUiSkipButton,.ytp-ad-skip-button')
        if (btn) {
            btn.click()
        }
        const ad = [...document.querySelectorAll('.ad-showing')][0];
        if (ad) {
            document.querySelector('video').playbackRate = 1;
        }
    }, 50)

     

    Lancer qutebrowser puis tapez : 

    :greasemonkey-reload

     

     


    votre commentaire
  • J'ai un peu tardé à m'occuper de ce module, qui permet d'administrer VirtualBox via une console web (donc à distance). Il est intéressant, mais limité (pas de console vraiment fonctionnelle permettant d'accéder aux VMs... juste les lancer/arrêter/configurer).
    J'ai donc décidé de m'y mettre.

    Voici comment faire.

    Pré-requis :
    - un serveur avec FreeBSD 13.2/14 installé
    - une connexion internet configurée.

    1) Installer Virtualbox
    - Passer en root :

    su -

    - Pour l'installation de VirtualBox, je mets tout en blocs pour aller plus vite.
    Faîtes des copiers/collers !

    pkg ins -y virtualbox-ose ; pkg ins -y virtualbox-ose-additions
    sysrc vboxguest_enable=YES vboxservice_enable=YES vboxnet_enable=YES
    echo 'vboxdrv_load="YES"' >> /boot/loader.conf ; echo "[system=10]" >> /etc/devfs.rules ; echo "add path 'usb/*' mode 0660 group operator" >> /etc/devfs.rules ; sysrc devfs_system_ruleset="system"

    - Veuillez remplacer $user par le nom de l'utilisateur de VirtualBox (un utilisateur système que vous avez créé lors de l'installation de FreeBSD.. sur le blog c'est toujours marcel) dans les 2 commandes suivantes :

    pw groupmod vboxusers -m $user 
    pw groupmod operator -m $user

    Derniers petits réglages relatifs aux accès aux CD, cartes réseaux en ponts etc..
    (copier/coller) :

    sysrc hald_enable=YES ; echo "perm cd* 0660" >> /etc/devfs.conf ; echo "perm xpt0 0660" >> /etc/devfs.conf ; echo "perm pass* 0660" >> /etc/devfs.conf ; chown root:vboxusers /dev/vboxnetctl ; chmod 0660 /dev/vboxnetctl ; echo 'own vboxnetctl root:vboxusers' >> /etc/devfs.conf ; echo 'perm vboxnetctl 0660' >> /etc/devfs.conf

    - Redémarrez votre système :

    reboot

     

    2) Installer PhpVirtualBox
    Comme je le disais, un paquet phpvirtualbox existe sur FreeBSD... et il est "presque" parfait.
    Presque, car phpvirtualbox ne peut pas fonctionner sans serveur web [...]
    Nous allons donc également installer apache et le module php pour apache et configurer tout ça.

    Passer en root

    su -

    - Installer :

    pkg ins -y apache24 mod_php81 phpvirtualbox
    service apache24 enable

    - Configurer php pour Apache :
    (copiez/collez)

    echo '<FilesMatch "\.php$">' > /usr/local/etc/apache24/Includes/php.conf ; echo '    SetHandler application/x-httpd-php' >> /usr/local/etc/apache24/Includes/php.conf ; echo '</FilesMatch>' >> /usr/local/etc/apache24/Includes/php.conf ; echo '<FilesMatch "\.phps$">' >> /usr/local/etc/apache24/Includes/php.conf ; echo '    SetHandler application/x-httpd-php-source' >> /usr/local/etc/apache24/Includes/php.conf ; echo '</FilesMatch>' >> /usr/local/etc/apache24/Includes/php.conf

    - Placer le dossier phpvirtualbox (qui est apparu lors de l'installation du paquet) dans le répertoire du site par défaut d'apache :

    mv /usr/local/www/phpvirtualbox /usr/local/www/apache24/data/

    - Modifiez le fichier de configuration config.php dans le dossier phpvirtualbox

    nano /usr/local/www/apache42/data/phpvirtualbox/config.php

    La première chose que nous allons modifier, c'est indiquer à phpvirtualbox le nom et le mot de passe de l'utilisateur système qui va se servir de virtualbox (rappelez-vous, ici c'est toujours marcel, mot de passe marcel)

    ###### Repérer les lignes suivantes ######
    /* Username / Password for system user that runs VirtualBox */
    var $username = 'vbox';
    var $password = 'pass';

    /* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
    var $location = 'http://127.0.0.1:18083/';



    ###### Les modifier en ######
    var $username = 'marcel';
    var $password = 'marcel';

    /* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
    var $location = 'http://localhost:18083/';

     

    (ne pas oublier de bien remplacer 127.0.0.1 par localhost en bas ! Sinon ça ne fonctionnera pas !)

    - Lancer le service vboxwebsrv

    service vboxwebsrv enable ; service vboxwebsrv start

    malheureusement, ça ne suffit pas... Il faut VRAIMENT le lancer.
    Donc on va le faire en arrière-plan pour ne pas se gâcher un shell :

    nohup vboxwebsrv &

    (tappez sur la touche Entrée après pour revenir au shell, vboxwebsrv travaille en arrière-plan)

    - On relance Apache et le tour est joué :

    service apache24 restart

    - Rendez-vous à présent dans votre navigateur internet et tapez l'adresse IP du serveur FreeBSD :

    http://IP-SRV-FREEBSD/phpvirtualbox


    Un écran d'identification apparaît, par défaut c'est admin / admin
    Vous pourrez le changer plus tard dans "File", "Change password".


    votre commentaire
  • Placer dans le fichier /boot/loader.conf les instructions suivantes :

    verbose_loading="NO"
    autoboot_delay="-1"
    boot_mute="YES"

    Pour de plus amples informations, consulter le fichier /etc/defaults/loader.conf

    Je ne polémiquerai pas sur le fait que rendre le démarrage muet est globalement une mauvaise idée...
    Les informations affichées lors du démarrage permettent de savoir si quelque chose a mal fonctionné...
    C'est assez essentiel sur un serveur.


    votre commentaire
  • Pour rendre les alias de commandes permanents sur FreeBSD, il faut les écrire dans le fichier /etc/profile.
    Ils seront alors disponibles pour tous les utilisateurs (root compris).
    Si vous souhaitez qu'ils ne soient disponibles QUE pour un utilisateur spécifique, il faudra placer ces alias dans le fichier .profile de son répertoire personnel.

    alias "nom-choisi"='commande ou enchaînement de commandes ; commande 2 ; commande 3'

    Pour activer le profil immédiatement : 

    . /etc/profile # ou . ~/.profile

    votre commentaire
  • Si votre matériel Wifi est détecté lors de l'installation du systèùe (si la carte est reconnue par FreeBSD), une ligne viendra automatiquement s'ajouter au fichier /etc/rc.conf

    Toute la question est de savoir comment vous connecter en ligne de commande à un réseau wifi.
    Ce n'est pas si complexe !

    D'abord, regardons la liste de vos cartes réseaux

    ifconfig

    Généralement cette carte se nomme wlan0 (s'il s'agît d'une carte reliée à la carte mère).. le nom peut différer s'il s'agît d'une clef USB.

    Partons du principe que c'est wlan0

    Nous allons activer cette carte :

    sudo ifconfig wlan0 up

    Puis nous allons scanner les réseaux alentours :

    ifconfig wlan0 list scan

    Une fois le SSID du réseau auquel vous souhaitez vous connecter repéré, nous devons rédiger un petit fichier de conf :

    nano /etc/wpa_supplicant.conf

    Voici le contenu minimaliste que vous devez indiquer dans ce fichier :

    network={
    ssid="NOM-DE-VOTRE-RESEAU"
    psk="MOT-DE-PASSE-DU-RESEAU"
    }

     (il y a bien d'autres options, mais c'est le strict minimum)

    A la suite de cela, vous pouvez lancer la commande pour vous connecter au réseau :

    wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

    Attendez un peu, et logiquement vous devriez pouvoir faire un ping.


    votre commentaire
  • Juste pour vous informer que le Dell Precision 7560 fonctionne très bien sur FreeBSD.
    J'ai pu en tester un :

    Voici ses caractéristiques :
    - CPU : Xeon X-11855
    - GPU : Nvidia RTX A4000

    Wifi : ok
    Ethernet : ok
    GUI : ok (avec le driver nvidia-driver. la GPU NVIDIA est sur PCI:1:0:0 - pour le fichier xorg)
    La Webcam intégrée fonctionne
    Le son et le microphone sont ok
    Par contre : pas de bluetooth intégré, ni de mise en veille (comme quasiemment avec tous les portables sur FreeBSD).

    Voici la sortie de la commande pciconf -lv :

    Code:
    hostb0@pci0:0:0:0:      class=0x060000 rev=0x05 hdr=0x00 vendor=0x8086 device=0x9a26 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = '11th Gen Core Processor Host Bridge/DRAM Registers'
        class      = bridge
        subclass   = HOST-PCI
    pcib1@pci0:0:1:0:       class=0x060400 rev=0x05 hdr=0x01 vendor=0x8086 device=0x9a01 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = '11th Gen Core Processor PCIe Controller'
        class      = bridge
        subclass   = PCI-PCI
    none0@pci0:0:4:0:       class=0x118000 rev=0x05 hdr=0x00 vendor=0x8086 device=0x9a03 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'TigerLake-LP Dynamic Tuning Processor Participant'
        class      = dasp
    pcib2@pci0:0:6:0:       class=0x060400 rev=0x05 hdr=0x01 vendor=0x8086 device=0x9a0f subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = '11th Gen Core Processor PCIe Controller'
        class      = bridge
        subclass   = PCI-PCI
    pcib3@pci0:0:7:0:       class=0x060400 rev=0x05 hdr=0x01 vendor=0x8086 device=0x9a2b subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Thunderbolt 4 PCI Express Root Port'
        class      = bridge
        subclass   = PCI-PCI
    pcib4@pci0:0:7:1:       class=0x060400 rev=0x05 hdr=0x01 vendor=0x8086 device=0x9a2d subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Thunderbolt 4 PCI Express Root Port'
        class      = bridge
        subclass   = PCI-PCI
    none1@pci0:0:10:0:      class=0x118000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x9a0d subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tigerlake Telemetry Aggregator Driver'
        class      = dasp
    xhci0@pci0:0:13:0:      class=0x0c0330 rev=0x05 hdr=0x00 vendor=0x8086 device=0x9a17 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Thunderbolt 4 USB Controller'
        class      = serial bus
        subclass   = USB
    none2@pci0:0:13:2:      class=0x0c0340 rev=0x05 hdr=0x00 vendor=0x8086 device=0x9a1f subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Thunderbolt 4 NHI'
        class      = serial bus
        subclass   = USB
    none3@pci0:0:18:0:      class=0x070000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43fc subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Integrated Sensor Hub'
        class      = simple comms
        subclass   = UART
    xhci1@pci0:0:20:0:      class=0x0c0330 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43ed subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller'
        class      = serial bus
        subclass   = USB
    none4@pci0:0:20:2:      class=0x050000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43ef subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Shared SRAM'
        class      = memory
        subclass   = RAM
    ig4iic0@pci0:0:21:0:    class=0x0c8000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43e8 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Serial IO I2C Controller'
        class      = serial bus
    ig4iic1@pci0:0:21:1:    class=0x0c8000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43e9 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Serial IO I2C Controller'
        class      = serial bus
    none5@pci0:0:22:0:      class=0x078000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43e0 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H Management Engine Interface'
        class      = simple comms
    none6@pci0:0:22:3:      class=0x070002 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43e3 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        class      = simple comms
        subclass   = UART
    ig4iic2@pci0:0:25:0:    class=0x0c8000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43ad subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        class      = serial bus
    pcib5@pci0:0:28:0:      class=0x060400 rev=0x11 hdr=0x01 vendor=0x8086 device=0x43b9 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        class      = bridge
        subclass   = PCI-PCI
    pcib6@pci0:0:28:2:      class=0x060400 rev=0x11 hdr=0x01 vendor=0x8086 device=0x43ba subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H PCIe Root Port'
        class      = bridge
        subclass   = PCI-PCI
    isab0@pci0:0:31:0:      class=0x060100 rev=0x11 hdr=0x00 vendor=0x8086 device=0x4389 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'WM590 LPC/eSPI Controller'
        class      = bridge
        subclass   = PCI-ISA
    hdac1@pci0:0:31:3:      class=0x040380 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43c8 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H HD Audio Controller'
        class      = multimedia
        subclass   = HDA
    ichsmb0@pci0:0:31:4:    class=0x0c0500 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43a3 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H SMBus Controller'
        class      = serial bus
        subclass   = SMBus
    none7@pci0:0:31:5:      class=0x0c8000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43a4 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Tiger Lake-H SPI Controller'
        class      = serial bus
    em0@pci0:0:31:6:        class=0x020000 rev=0x11 hdr=0x00 vendor=0x8086 device=0x15f9 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Intel Corporation'
        device     = 'Ethernet Connection (14) I219-LM'
        class      = network
        subclass   = ethernet
    vgapci0@pci0:1:0:0:     class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x24b7 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'NVIDIA Corporation'
        device     = 'GA104GLM [RTX A4000 Mobile]'
        class      = display
        subclass   = VGA
    hdac0@pci0:1:0:1:       class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de device=0x228b subvendor=0x10de subdevice=0x0000
        vendor     = 'NVIDIA Corporation'
        device     = 'GA104 High Definition Audio Controller'
        class      = multimedia
        subclass   = HDA
    nvme0@pci0:2:0:0:       class=0x010802 rev=0x01 hdr=0x00 vendor=0x10ec device=0x5765 subvendor=0x10ec subdevice=0x5765
        vendor     = 'Realtek Semiconductor Co., Ltd.'
        device     = 'RTS5765DL NVMe SSD Controller (DRAM-less)'
        class      = mass storage
        subclass   = NVM
    iwlwifi0@pci0:147:0:0:  class=0x028000 rev=0x1a hdr=0x00 vendor=0x8086 device=0x2725 subvendor=0x8086 subdevice=0x4020
        vendor     = 'Intel Corporation'
        device     = 'Wi-Fi 6 AX210/AX211/AX411 160MHz'
        class      = network
    rtsx0@pci0:148:0:0:     class=0xff0000 rev=0x01 hdr=0x00 vendor=0x10ec device=0x5260 subvendor=0x1028 subdevice=0x0a69
        vendor     = 'Realtek Semiconductor Co., Ltd.'
        device     = 'RTS5260 PCI Express Card Reader'


    Et celle de la commande usbconfig

    Code:
    ugen1.1: <Intel XHCI root HUB> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
    ugen0.1: <Intel XHCI root HUB> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
    ugen1.2: <CN0V976R8LG00155A5VPA01 IntegratedWebcamHD> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    ugen1.3: <Compx 2.4G Receiver> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
    ugen1.4: <vendor 0x8087 product 0x0032> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

    Voici le lien vers hw-probe :
    https://bsd-hardware.info/?probe=a0e5297849

     

    Installer FreeBSD sur un Dell Precision 7560

     

    Je rajoute cependant un petit bémol pour le réglage de la luminosité de l'écran.
    Cette fonction n'est pas disponible dans KDE sur cet ordi...

    Voici comment contourner :
    - passer en root

    su -

    - Charger le module acpi_video

    kldload acpi_video

    - redevenir utilisateur

    exit

    - Récupérer le nom de l'écran :

    xrandr --listactivemonitors

    Monitors: 1
    0: +*DP-4 1920/344x1080/194+0+0  DP-4

    Notre écran est le "DP-4"


    - baisser la luminosité à 90%

    xrandr --output DP-4 --brightness 0.9

    - baisser la luminosité à 30%

    xrandr --output DP-4 --brightness 0.3

    - revenir à 100%

    xrandr --output DP-4 --brightness 1

    votre commentaire


    Suivre le flux RSS des articles de cette rubrique
    Suivre le flux RSS des commentaires de cette rubrique