Outils pour utilisateurs

Outils du site


py-kms

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
py-kms [2020/05/27 13:04] – [Online installer] inc002py-kms [2025/05/02 12:55] (Version actuelle) – [Transfert du package] inc002
Ligne 163: Ligne 163:
 =====Online installer===== =====Online installer=====
 Vous povez installer le serveur KMS en copiant la commande ci-dessous. Elle est exactement basée sur le script présent en bas de cette page Vous povez installer le serveur KMS en copiant la commande ci-dessous. Elle est exactement basée sur le script présent en bas de cette page
-<code bash | kms-oneline-installer.sh>wget -O py-kms-installer.sh "https://wiki.loumy.fr/doku.php?do=export_code&id=py-kms&codeblock=1" sudo bash ./py-kms-installer.sh</code>+<code bash | kms-oneline-installer.sh>wget -O py-kms-installer.sh "https://wiki.loumy.fr/doku.php?do=export_code&id=py-kms&codeblock=1" && sudo bash ./py-kms-installer.sh</code>
 ====Introduction ==== ====Introduction ====
 Basé sur les commandes ci-dessus, vous pouvez copier et exécuter le contenu de ce script dans un fichier pour l'installer en une fois (sudo ./py-kms-installer.sh par exemple): Basé sur les commandes ci-dessus, vous pouvez copier et exécuter le contenu de ce script dans un fichier pour l'installer en une fois (sudo ./py-kms-installer.sh par exemple):
Ligne 176: Ligne 176:
  
 sudo apt update sudo apt update
-sudo apt install python3-tk python3-pip -y+sudo apt install python3-tk python3-pip libsqlite3-dev -y
 sudo pip3 install tzlocal pysqlite3 sudo pip3 install tzlocal pysqlite3
  
Ligne 207: Ligne 207:
 sudo systemctl status py-kms sudo systemctl status py-kms
 </code>  </code> 
 +
 +===== Offline installer=====
 +
 +==== Transfert du package ====
 +Transférez le dossier py-kms-offline-package ou l'archive py-kms-offline-package.tar.gz sur la machine de destination via une clé USB ou un autre moyen.
 +
 +[[https://wiki.loumy.fr/py-kms-offline-package-20250502-145306.tar.gz|py-kms-offline-package.tar.gz]]
 +
 +=== One line pour la creation de l'archive ===
 +<code bash | py-kms-offline-archive-creator.sh>wget -O py-kms-offline-archive-creator.sh "https://wiki.loumy.fr/doku.php?do=export_code&id=py-kms&codeblock=3" && sudo bash ./py-kms-offline-archive-creator.sh</code>
 +==== Extraction====
 +
 +  tar -xzvf py-kms-offline-package.tar.gz
 +
 +====Exécution du script d'installation====
 +
 +  cd py-kms-offline-package
 +  sudo ./py-kms-offline-installer.sh
 +
 +====Vérification de l'installation====
 +
 +  sudo systemctl status py-kms
 +
 +==== Résolution des problèmes courants====
 +===Dépendances manquantes===
 +
 +Si vous rencontrez des erreurs liées à des dépendances manquantes, vous devrez peut-être inclure plus de paquets dans votre package hors ligne. Vérifiez les messages d'erreur et ajoutez les paquets nécessaires.
 +
 +===Erreurs de permission===
 +Assurez-vous que tous les scripts ont les permissions d'exécution:
 +
 +  chmod +x py-kms-offline-installer.sh
 +
 +===Erreurs de service===
 +Si le service ne démarre pas, consultez les logs:
 +
 +  tail -f /var/log/py-kms/server.log
 +  
 +==== Creation du package offline =====
 +<code bash| py-kms-offline-archive-creator.sh>
 +#!/usr/bin/bash
 +# Script pour créer un package d'installation hors ligne de py-kms
 +# V 1.0 02.05.25
 +
 +# Vérifier que le script est exécuté avec les privilèges root
 +if [ "$(id -u)" -ne 0 ]; then
 +    echo "Ce script doit être exécuté en tant que root"
 +    exit 1
 +fi
 +
 +# Définir le répertoire de travail
 +WORK_DIR="py-kms-offline-package"
 +TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
 +ARCHIVE_NAME="py-kms-offline-package-${TIMESTAMP}.tar.gz"
 +
 +echo "Création du package hors ligne py-kms..."
 +echo "-------------------------------------"
 +
 +# Créer la structure de dossiers
 +echo "Création de la structure de dossiers..."
 +mkdir -p ${WORK_DIR}/debs
 +mkdir -p ${WORK_DIR}/pip
 +mkdir -p ${WORK_DIR}/py-kms
 +
 +# Mettre à jour la liste des paquets
 +echo "Mise à jour des informations de paquets..."
 +apt-get update
 +
 +# Télécharger les paquets principaux et leurs dépendances
 +echo "Téléchargement des paquets Debian et leurs dépendances..."
 +MAIN_PACKAGES="python3-tk python3-pip libsqlite3-dev"
 +
 +# Télécharger les paquets principaux et leurs dépendances récursivement
 +apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
 +  --no-conflicts --no-breaks --no-replaces --no-enhances \
 +  --no-pre-depends ${MAIN_PACKAGES} | grep "^\w" | sort -u)
 +
 +# Déplacer tous les fichiers .deb dans le dossier debs
 +mv *.deb ${WORK_DIR}/debs/
 +
 +# Télécharger les paquets Python
 +echo "Téléchargement des paquets Python..."
 +pip3 download tzlocal pysqlite3 --dest ${WORK_DIR}/pip
 +
 +# Cloner le dépôt py-kms
 +echo "Clonage du dépôt py-kms..."
 +git clone https://github.com/SystemRage/py-kms.git temp-py-kms
 +cp -r temp-py-kms/py-kms/* ${WORK_DIR}/py-kms/
 +rm -rf temp-py-kms
 +
 +# Appliquer la correction pour Python 3.10
 +echo "Application de la correction pour Python 3.10..."
 +sed -i 's/from collections import Sequence/from collections.abc import Sequence/' ${WORK_DIR}/py-kms/Etrigan.py
 +echo "Correction appliquée dans le package offline."
 +
 +# Créer le script d'installation
 +echo "Création du script d'installation hors ligne..."
 +cat > ${WORK_DIR}/py-kms-offline-installer.sh << 'EOL'
 +#!/usr/bin/bash
 +# py-kms offline installer
 +# V 1.2 02.05.25 
 +
 +# Définition des dossiers
 +FOLDER_INSTALL='/usr/local/bin/py-kms'
 +FOLDER_LOG='/var/log/py-kms'
 +OFFLINE_PACKAGE="." # Utilise le répertoire courant
 +
 +# Vérification des sous-dossiers nécessaires
 +if [ ! -d "$OFFLINE_PACKAGE/debs" ] || [ ! -d "$OFFLINE_PACKAGE/pip" ] || [ ! -d "$OFFLINE_PACKAGE/py-kms" ]; then
 +    echo "Erreur: Un ou plusieurs dossiers requis n'existent pas."
 +    echo "Vérifiez que vous avez bien les dossiers:"
 +    echo "- debs"
 +    echo "- pip"
 +    echo "- py-kms"
 +    echo "dans le répertoire courant."
 +    exit 1
 +fi
 +
 +echo "Installation des paquets .deb depuis les fichiers locaux..."
 +sudo dpkg -i $OFFLINE_PACKAGE/debs/*.deb || true
 +echo "Correction des dépendances (si possible avec les paquets existants)..."
 +sudo apt-get -f install --no-download -y || true
 +
 +echo "Installation des paquets Python depuis les fichiers locaux..."
 +sudo pip3 install --no-index --find-links=$OFFLINE_PACKAGE/pip tzlocal pysqlite3
 +
 +echo "Création des dossiers d'installation et de logs..."
 +sudo mkdir -p $FOLDER_INSTALL
 +sudo mkdir -p $FOLDER_LOG
 +
 +echo "Copie des fichiers py-kms depuis le package offline..."
 +sudo cp -r $OFFLINE_PACKAGE/py-kms/* $FOLDER_INSTALL/
 +sudo touch $FOLDER_LOG/server.log
 +sudo chown $USER $FOLDER_LOG/server.log
 +
 +# Vérification si systemd est disponible
 +if pidof systemd > /dev/null 2>&1; then
 +    echo "Configuration du service systemd..."
 +    sudo touch /etc/systemd/system/py-kms.service
 +    sudo bash -c "cat > /etc/systemd/system/py-kms.service << EOF
 +[Unit]
 +Description=py-kms service
 +After=network.target
 +StartLimitIntervalSec=0
 +[Service]
 +Type=simple
 +Restart=always
 +RestartSec=1
 +User=$USER
 +ExecStart=python3 $FOLDER_INSTALL/pykms_Server.py -V INFO -F $FOLDER_LOG/server.log
 +[Install]
 +WantedBy=multi-user.target
 +EOF"
 +
 +    echo "Activation et démarrage du service py-kms via systemd..."
 +    sudo systemctl enable py-kms
 +    sudo systemctl start py-kms
 +    sudo systemctl status py-kms
 +else
 +    echo "Systemd n'est pas disponible sur ce système."
 +    echo "Création d'un script de démarrage alternatif..."
 +    
 +    sudo bash -c "cat > $FOLDER_INSTALL/start-pykms.sh << EOF
 +#!/bin/bash
 +python3 $FOLDER_INSTALL/pykms_Server.py -V INFO -F $FOLDER_LOG/server.log
 +EOF"
 +    
 +    sudo chmod +x $FOLDER_INSTALL/start-pykms.sh
 +    
 +    echo "Pour démarrer le serveur py-kms manuellement, exécutez:"
 +    echo "  $FOLDER_INSTALL/start-pykms.sh &"
 +    echo ""
 +    echo "Voulez-vous démarrer le serveur maintenant? (o/n)"
 +    read -r response
 +    if [[ "$response" =~ ^([oO][uU][iI]|[oO])$ ]]; then
 +        echo "Démarrage du serveur py-kms..."
 +        sudo -u $USER $FOLDER_INSTALL/start-pykms.sh &
 +        echo "Serveur démarré avec PID: $!"
 +    fi
 +fi
 +
 +echo "Installation terminée avec succès!"
 +EOL
 +
 +# Rendre le script exécutable
 +chmod +x ${WORK_DIR}/py-kms-offline-installer.sh
 +
 +# Créer également un fichier README
 +cat > ${WORK_DIR}/README.txt << 'EOL'
 +# Package d'installation hors ligne de py-kms
 +
 +Ce package contient tous les fichiers nécessaires pour installer py-kms sans connexion Internet.
 +
 +## Contenu du package
 +- debs/ : Contient les paquets Debian et leurs dépendances
 +- pip/ : Contient les modules Python nécessaires
 +- py-kms/ : Contient les fichiers source de py-kms
 +
 +## Instructions d'installation
 +1. Décompressez ce package sur la machine cible
 +2. Accédez au répertoire décompressé
 +3. Exécutez le script d'installation : sudo ./py-kms-offline-installer.sh
 +
 +## Remarques importantes
 +- Le script tente d'installer le service via systemd. Si systemd n'est pas disponible 
 +  (ex. dans Docker ou WSL), un script de démarrage alternatif sera créé.
 +- Après l'installation, le serveur py-kms écoute sur le port 1688 par défaut.
 +- Les logs sont stockés dans /var/log/py-kms/server.log
 +EOL
 +
 +# Créer l'archive
 +echo "Création de l'archive ${ARCHIVE_NAME}..."
 +tar -czvf ${ARCHIVE_NAME} ${WORK_DIR}/
 +
 +echo "-------------------------------------"
 +echo "Package hors ligne py-kms créé avec succès!"
 +echo "L'archive est disponible à l'emplacement: $(pwd)/${ARCHIVE_NAME}"
 +echo "Pour l'installer sur une machine sans connexion Internet:"
 +echo "1. Transférez l'archive sur la machine cible"
 +echo "2. Décompressez avec: tar -xzvf ${ARCHIVE_NAME}"
 +echo "3. Accédez au répertoire: cd ${WORK_DIR}"
 +echo "4. Exécutez: sudo ./py-kms-offline-installer.sh"
 +</code>
py-kms.1590584679.txt.gz · Dernière modification : de inc002