VitalPBX : Différence entre versions
(39 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[VOIP|Retour]] | [[VOIP|Retour]] | ||
+ | ==Release Note== | ||
+ | === Version EMMC === | ||
+ | [[vitalpbx_releasenote_V1.1|V1.1 - 28/03/2021]] | ||
+ | |||
+ | [[vitalpbx_releasenote_V1.2|V1.2 - 18/04/2021]] | ||
+ | |||
+ | [[vitalpbx_releasenote_V1.3|V1.3 - 22/05/2021]] | ||
+ | |||
+ | === Version MSata === | ||
+ | [[vitalpbx_releasenote_V2.1|V2.1 - 11/09/2021]] | ||
+ | |||
+ | [[vitalpbx_releasenote_V2.2|V2.2 - 15/11-2021]] | ||
+ | |||
+ | [[vitalpbx_releasenote_V2.3|V2.3 - 25/03-2022]] | ||
+ | |||
+ | === [[vitalpbx_releasenote_Roadmap|Roadmap]] === | ||
==Trunk SIP== | ==Trunk SIP== | ||
Ligne 67 : | Ligne 83 : | ||
Ajouter le dialplan ci-dessous | Ajouter le dialplan ci-dessous | ||
− | <nowiki>[trk-1-in-custom] | + | <nowiki>; ********************************************************************************* |
− | exten => | + | ; @Date : Sun Apr 18 12:54:49 GMT 2021 |
− | + | ; @Document : extensions__50-1-dialplan_custom.conf | |
− | + | ; @Author : Sébastien LE MOAL <slemoal@tiscom.fr> | |
− | + | ; @Platform : VitalPBX 3.0.6-2 | |
− | + | ; ********************************************************************************* | |
− | + | ||
− | same => n,Set(DID= | + | [trk-1-in-custom] |
− | same => n,Goto( | + | exten => _s,1,NoOp(Incoming call through: Trunk_sip_Sewan) |
+ | same => n,Set(DID=${CUT(CUT(SIP_HEADER(To),@,1),:,2)}) | ||
+ | same => n,Goto(trk-1-in,${DID},1) | ||
+ | </nowiki> | ||
Mettre les droits d’exécution | Mettre les droits d’exécution | ||
Ligne 119 : | Ligne 138 : | ||
Pattern: | Pattern: | ||
− | <nowiki>1[ | + | <nowiki>1[578] |
11[0-59] | 11[0-59] | ||
116XXX | 116XXX | ||
Ligne 226 : | Ligne 245 : | ||
[[Fichier:COS-Exten.png]] | [[Fichier:COS-Exten.png]] | ||
+ | |||
+ | ==DynHost== | ||
+ | Afin d'assurer une télémaintenance ou service externe dans le cas ou le client dispose d'une IP public dynamique, il est possible d'utiliser le service Dynhost d'OVH dans le cadre de l'abonnement au domaine tiscom.fr | ||
+ | |||
+ | ===Configuration OVH=== | ||
+ | Se rendre sur la page d'administration: | ||
+ | https://www.ovh.com/manager/ | ||
+ | |||
+ | ====Ajouter un DynHost==== | ||
+ | Avant de pouvoir utiliser le DynHost, vous devez le déclarer dans l’interface client OVH. Pour cela sélection le domaine dans lequel vous souhaitez déclarer votre DynHost. | ||
+ | |||
+ | Cliquez ensuite sur l’onglet DynHost. Cet onglet vous affiche les DynHost déjà déclaré ainsi que les adresses IP courantes. Pour créer votre DynHost cliquez sur Ajouter un DynHost (à droite). | ||
+ | |||
+ | [[Fichier:ovh-add-dynhost1.png]] | ||
+ | |||
+ | La fenêtre suivante s’affiche, choisissez le sous-domaine voulu et entré l’IP 0.0.0.0. Cette adresse sera mise a jour par le script une fois celui-ci configuré. | ||
+ | |||
+ | [[Fichier:ovh-add-dynhost2.png]] | ||
+ | |||
+ | ====Créer un identifiant DynHost==== | ||
+ | Vous devrez maintenant créer un utilisateur ayant le droit de mettre à jour votre Dynhost précédemment créé. Pour cela cliquer sur Gérer les accès de la page précédente | ||
+ | [[Fichier:ovh-add-acces1.png]] | ||
+ | |||
+ | cliquer sur Créer un identifiant, la popup suivante s’ouvre. | ||
+ | |||
+ | [[Fichier:ovh-add-acces2.png]] | ||
+ | |||
+ | Spécifiez un suffixe d’identifiant, le nom de domaine que vous avez spécifié tout à l’heure ou * pour autoriser tout les sous domaine dynhost et le mot de passe. | ||
+ | |||
+ | Enregistrez bien ces informations car elles devront etre renseignés dans le script. | ||
+ | |||
+ | [[Fichier:ovh-add-acces3.png]] | ||
+ | |||
+ | ===Configuration IPBX=== | ||
+ | ====Script DynHost==== | ||
+ | Se connecter en ssh ou console sur le serveur. | ||
+ | |||
+ | Installer le package "dnsutils" : | ||
+ | yum install dnsutils | ||
+ | |||
+ | Créer le script | ||
+ | nano /var/lib/vitalpbx/scripts/dynhost.sh | ||
+ | |||
+ | Ajouter les lignes suivante: | ||
+ | |||
+ | <nowiki>#!/usr/bin/env sh | ||
+ | ######################################################### | ||
+ | # Création : Sebastien Lemoal <slemoal@tiscom.fr> # | ||
+ | # Modifications : # | ||
+ | ###################################################### | ||
+ | |||
+ | # Tous droits réservés | ||
+ | |||
+ | ###################### | ||
+ | # CHANGELOG # | ||
+ | ######################################################### | ||
+ | # 2021/07 - Script initial - slemoal # | ||
+ | ####################################################### | ||
+ | |||
+ | ####################################### | ||
+ | # Définition des Variables # | ||
+ | ##################################### | ||
+ | HOST=$(uname -n) # Se change depuis l'interface web "Admin -> Network -> Nom d'hote" | ||
+ | LOGIN=domaine-id | ||
+ | PASSWORD=LenSuperMotDePasseAutogénéréDuCompteOvh | ||
+ | |||
+ | PATH_LOG=/var/log/dynhostovh.log | ||
+ | |||
+ | HOST_IP=$(dig +short $HOST A) # Récupérer l'IP du domaine OVH | ||
+ | |||
+ | # Récupérer l'IP PUBLIC | ||
+ | CURRENT_IP=$(curl ifconfig.me) | ||
+ | echo curl "ifconfig.me="$CURRENT_IP | ||
+ | if [ -z $CURRENT_IP ] | ||
+ | then | ||
+ | CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com) | ||
+ | echo curl "dig + short myip.opendns.com="$CURRENT_IP | ||
+ | fi | ||
+ | CURRENT_DATETIME=$(date -R) | ||
+ | |||
+ | ####################################### | ||
+ | # Mise à jour du dynhost si besoin # | ||
+ | ##################################### | ||
+ | |||
+ | if [ -z $CURRENT_IP ] || [ -z $HOST_IP ] | ||
+ | then | ||
+ | echo "[$CURRENT_DATETIME]: No IP retrieved" >> $PATH_LOG | ||
+ | echo "[$CURRENT_DATETIME]: No IP retrieved" | ||
+ | else | ||
+ | if [ "$HOST_IP" != "$CURRENT_IP" ] | ||
+ | then | ||
+ | RES=$(curl -m 5 -L --location-trusted --user "$LOGIN:$PASSWORD" "https://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP") | ||
+ | echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES" >> $PATH_LOG | ||
+ | echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES" | ||
+ | else | ||
+ | echo "L'IP n'a pas changé, pas de mise à jour necessaire" | ||
+ | fi | ||
+ | echo "HOST_IP="$HOST_IP | ||
+ | echo "CURRENT_IP="$CURRENT_IP | ||
+ | fi</nowiki> | ||
+ | |||
+ | Donner les droits | ||
+ | chmod +x /var/lib/vitalpbx/scripts/dynhost.sh | ||
+ | |||
+ | ====Configuration Web GUI==== | ||
+ | Se connecter en page web à l'interface de l'IPBX | ||
+ | |||
+ | =====Définir le nom d'hôte===== | ||
+ | Admin -> Network -> Paramètre réseau | ||
+ | Celui ci doit être identique au sous domaine créer sur OVH | ||
+ | |||
+ | [[Fichier:Voice-host.png]] | ||
+ | |||
+ | =====Installer l'Addon Task Manager===== | ||
+ | Admin -> Add-ons -> Task Manager | ||
+ | |||
+ | =====Créer un profil Cron===== | ||
+ | PABX -> Outils -> Profils Cron | ||
+ | |||
+ | [[Fichier:Voice-Profil-cron.png]] | ||
+ | |||
+ | =====Créer une tache Cron===== | ||
+ | PABX -> Outils -> Task Manager | ||
+ | |||
+ | [[Fichier:Voice-tache-cron.png]] | ||
+ | |||
+ | == Bip au démarrage et arrêt == | ||
+ | === Installation package Beep === | ||
+ | cd /tmp/ | ||
+ | wget ftp://ftp.pbone.net/mirror/dag.wieers.com/redhat/el7/en/x86_64/dag/RPMS/beep-1.3-1.el7.rf.x86_64.rpm | ||
+ | yum localinstall -y beep-1.3-1.el7.rf.x86_64.rpm | ||
+ | rm -f beep-1.3-1.el7.rf.x86_64.rpm | ||
+ | |||
+ | === Créer le service === | ||
+ | nano /etc/init.d/beep | ||
+ | |||
+ | <nowiki>! /bin/sh -e | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: beep | ||
+ | # Required-Start: $syslog | ||
+ | # Required-Stop: $syslog | ||
+ | # Default-Start: 2 3 4 5 | ||
+ | # Default-Stop: 0 1 6 | ||
+ | # Short-Description: beep | ||
+ | # Description: | ||
+ | # | ||
+ | ### END INIT INFO | ||
+ | |||
+ | # Carry out specific functions (start, stop, restart etc) | ||
+ | case "$1" in | ||
+ | start) | ||
+ | beep -l 75 -f 500 -n -l 75 -f 1000 -n -l 75 -f 2000 -n -l 75 -f 3000 | ||
+ | ;; | ||
+ | stop) | ||
+ | beep -l 75 -f 3000 -n -l 75 -f 2000 -n -l 75 -f 1000 -n -l 75 -f 500 | ||
+ | ;; | ||
+ | *) | ||
+ | echo "Usage: /etc/init.d/beep {start|stop}" | ||
+ | exit 1 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | exit 0</nowiki> | ||
+ | |||
+ | === Mettre les droits === | ||
+ | sudo chmod a+x /etc/init.d/beep | ||
+ | |||
+ | === Activer au prochain démarrage === | ||
+ | systemctl enable beep.service | ||
+ | |||
+ | === Redemarrer === | ||
+ | systemctl reboot | ||
+ | |||
+ | === Tester === | ||
+ | systemctl reboot | ||
+ | |||
+ | ==Zabbix== | ||
+ | ===[[Zabbix_Agent_VitalPBX_proxy|integration et Supervision via Zabbix proxy]]=== | ||
+ | |||
+ | ===Script mise à jour host=== | ||
+ | Se connecter en ssh ou console sur le serveur. | ||
+ | |||
+ | Créer le script | ||
+ | nano /var/lib/vitalpbx/scripts/host_zabbix.sh | ||
+ | |||
+ | Ajouter les lignes suivante: | ||
+ | |||
+ | <nowiki>#!/bin/bash | ||
+ | ######################################################### | ||
+ | # Création : Sébastien Le Moal <slemoal@tiscom.fr> # | ||
+ | # Modifications : # | ||
+ | ###################################################### | ||
+ | |||
+ | # Tous droits réservés | ||
+ | |||
+ | ###################### | ||
+ | # CHANGELOG # | ||
+ | ######################################################### | ||
+ | # 2021/11 - Script initial - slemoal # | ||
+ | ####################################################### | ||
+ | |||
+ | ####################################### | ||
+ | # Définition des Variables # | ||
+ | ##################################### | ||
+ | |||
+ | host_zabbix=`uname -n` | ||
+ | path_zabbix_proxy=/etc/zabbix/zabbix_proxy.conf | ||
+ | path_zabbix_agent2=/etc/zabbix/zabbix_agent2.conf | ||
+ | |||
+ | ####################################### | ||
+ | # Début du script # | ||
+ | ##################################### | ||
+ | # Proxy zabbix | ||
+ | if ! grep -q $host_zabbix $path_zabbix_proxy; | ||
+ | then | ||
+ | sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_proxy} | ||
+ | /bin/systemctl restart zabbix-proxy.service | ||
+ | echo "zabbix proxy: Hostname="$host_zabbix $path_zabbix_proxy "modifié" | ||
+ | else | ||
+ | echo "zabbix proxy: Hostname="$host_zabbix" est à jour" | ||
+ | fi | ||
+ | |||
+ | # Agent2 Zabbix | ||
+ | if ! grep -q $host_zabbix $path_zabbix_agent2; | ||
+ | then | ||
+ | sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_agent2} | ||
+ | /bin/systemctl restart zabbix-agent2.service | ||
+ | echo "zabbix agent2: Hostname="$host_zabbix $path_zabbix_proxy "modifié" | ||
+ | else | ||
+ | echo "zabbix agent2: Hostname="$host_zabbix" est à jour" | ||
+ | fi</nowiki> | ||
+ | |||
+ | Donner les droits | ||
+ | chmod +x /var/lib/vitalpbx/scripts/host_zabbix.sh | ||
+ | |||
+ | ====Configuration Web GUI==== | ||
+ | Se connecter en page web à l'interface de l'IPBX | ||
+ | |||
+ | =====Définir le nom d'hôte===== | ||
+ | Admin -> Network -> Paramètre réseau | ||
+ | Celui ci doit être identique au sous domaine créer sur OVH | ||
+ | |||
+ | [[Fichier:Voice-host.png]] | ||
+ | |||
+ | =====Installer l'Addon Task Manager===== | ||
+ | Admin -> Add-ons -> Task Manager | ||
+ | |||
+ | =====Créer un profil Cron===== | ||
+ | PABX -> Outils -> Profils Cron | ||
+ | |||
+ | [[Fichier:Voice-Profil-cron.png]] | ||
+ | |||
+ | =====Créer une tache Cron===== | ||
+ | PABX -> Outils -> Task Manager | ||
+ | |||
+ | [[Fichier:Voice-tache-cron2.png]] | ||
+ | |||
+ | == MOTD personnalisé == | ||
+ | Lors d'une mise à jour, le motd vital PBX est réinitialisé, nous ne pouvons donc pas simplement le modifier. | ||
+ | |||
+ | Il va nous falloir en créer un nouveau, et contrôler au démarrage si le motd vitalpbx existe et dans quel cas le supprimer | ||
+ | |||
+ | === Création d'un nouveau Motd === | ||
+ | nano /etc/profile.d/tiscomwelcome.sh | ||
+ | |||
+ | <nowiki> | ||
+ | #!/bin/bash | ||
+ | #Bash Colour Codes | ||
+ | txtrst="\033[00;0m" | ||
+ | bleu="\033[1;34m" | ||
+ | |||
+ | linux_ver=`cat /etc/redhat-release` | ||
+ | vitalpbx_ver=`rpm -qi vitalpbx |awk -F: '/^Version/ {print $2}'` | ||
+ | vitalpbx_release=`rpm -qi vitalpbx |awk -F: '/^Release/ {print $2}'` | ||
+ | vpbx_version="${vitalpbx_ver}-${vitalpbx_release}" | ||
+ | |||
+ | echo -e " | ||
+ | ${bleu} | ||
+ | _______ _ __ __ _ | ||
+ | |__ __|(_) \ \ / / (_) | ||
+ | | | _ __ ___ ___ _ __ ___ \ \ / /___ _ ___ ___ | ||
+ | | | | |/ __| / __|/ _ \ | '_ ' _ \ \ \ / // _ \ | | / __|/ _ \ | ||
+ | | | | |\__ \| (__| (_) || | | | | | \ V /| (_) || || (__| __/ | ||
+ | |_| |_||___/ \___|\___/ |_| |_| |_| \_/ \___/ |_| \___|\___| | ||
+ | ${txtrst} | ||
+ | |||
+ | Version IPBX : ${vpbx_version//[[:space:]]} | ||
+ | Version Asterisk : `asterisk -rx "core show version" 2>/dev/null| grep -ohe 'Asterisk [0-9.]*'` | ||
+ | Version Linux : ${linux_ver} | ||
+ | Nom de domaine : `hostname` | ||
+ | Dispo depuis : `uptime | grep -ohe 'up .*' | sed 's/up //g' | awk -F "," '{print $1}'` | ||
+ | Charcge CPU : `uptime | grep -ohe 'load average[s:][: ].*' | awk '{ print "Last Minute: " $3" Last 5 Minutes: "$4" Last 15 Minutes: "$5 }'` | ||
+ | Utilisateurs : `uptime | grep -ohe '[0-9.*] user[s,]'` | ||
+ | Adresse(s) IP : ${bleu}`ip addr | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | xargs`${txtrst} | ||
+ | Heure courante :`timedatectl | sed -n '/Local time/ s/^[ \t]*Local time:\(.*$\)/\1/p'` | ||
+ | Syncro NTP :`timedatectl |awk -F: '/NTP sync/ {print $2}'` | ||
+ | "</nowiki> | ||
+ | |||
+ | === Création d'un script afin de le jouer au démarrage === | ||
+ | nano /var/lib/vitalpbx/scripts/boot.sh | ||
+ | |||
+ | <nowiki>#!/bin/bash | ||
+ | ## Supprime le motd vitalpbx si existe | ||
+ | if [ -e /etc/profile.d/vitalwelcome.sh ] | ||
+ | then | ||
+ | rm -f /etc/profile.d/vitalwelcome.sh | ||
+ | echo "vitalwelcome.sh a été supprimé" | ||
+ | fi | ||
+ | </nowiki> | ||
+ | |||
+ | === Donner au script des droits d’exécution === | ||
+ | chmod +x /var/lib/vitalpbx/scripts/boot.sh | ||
+ | |||
+ | === Créer une nouveau service systemd === | ||
+ | nano /etc/systemd/system/SLM_boot.service | ||
+ | |||
+ | <nowiki>[Unit] | ||
+ | Description=Lancement d'un script au démarrage du serveur | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=/var/lib/vitalpbx/scripts/boot.sh | ||
+ | TimeoutStartSec=0 | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=default.target</nowiki> | ||
+ | |||
+ | === Recharger === | ||
+ | Reloader le process systemd pour que notre nouveau service soit pris en compte: | ||
+ | systemctl daemon-reload | ||
+ | |||
+ | === Activer === | ||
+ | “Activer” le service pour qu’il se lance automatiquement au démarrage de la machine: | ||
+ | systemctl enable SLM_boot.service | ||
+ | |||
+ | === Tester === | ||
+ | cp /etc/profile.d/tiscomwelcome.sh /etc/profile.d/vitalwelcome.sh | ||
+ | systemctl reboot | ||
+ | |||
+ | == OpenVPN == | ||
+ | === Installation === | ||
+ | Admin -> Add-ons -> Addons | ||
+ | Installer le module '''OpenVPN''' | ||
+ | |||
+ | === Configuration Serveur === | ||
+ | Admin -> Network -> OpenVPN Serveur | ||
+ | * Enabled: Yes | ||
+ | * Port: 1194 | ||
+ | * Server Range: 10.8.0.0 | 255.255.255.0 | ||
+ | * Public Host: client.tiscom.fr (le nom du dynhost ovh) | ||
+ | * Keep-Alive: 10 | 120 | ||
+ | * Cipher Method: Blowfish | ||
+ | * Redirect Gateway: yes (permet d'accéder au autres équipements du réseau client joignable par l'ipbx) | ||
+ | * Primary DNS: 1.1.1.1 | ||
+ | * Secondary DNS: 1.0.0.1 | ||
+ | * Max Clients: 100 | ||
+ | * Compression: None | ||
+ | |||
+ | === Configuration Client === | ||
+ | Il est possible de visualiser l'état des clients connectés dans le menu | ||
+ | Admin -> Network -> OpenVPN Serveur: onglet Clients | ||
+ | |||
+ | ==== PC Windows ==== | ||
+ | Coté VitalPBX | ||
+ | Admin -> Network -> OpenVPN Serveur: Add Client | ||
+ | * Description: Exemple: Sébastien Le Moal | ||
+ | * Fixed IP: Optionnel, laisser vide pour dhcp | ||
+ | * Type: Generic | ||
+ | * Enabled: Yes | ||
+ | Save | ||
+ | |||
+ | Admin -> Network -> OpenVPN Serveur: onglet Clients | ||
+ | Cliquer sur l'icone download du client précédemment créer afin de télécharger l'archive. | ||
+ | Coté PC | ||
+ | Télécharger, installer, executer OpenVPN Connect pour Windows | ||
+ | https://openvpn.net/client-connect-vpn-for-windows/ | ||
+ | |||
+ | Glisser le fichier "Client full.ovpn" contenu dans l'archive précédemment téléchargé au centre de l'appli. | ||
+ | |||
+ | Add | ||
+ | |||
+ | == Gestion UPS == | ||
+ | === Installation === | ||
+ | Se connecter en ssh | ||
+ | cd /tmp | ||
+ | wget https://dl4jz3rbrsfum.cloudfront.net/software/PPL_64bit_v1.4.1.rpm | ||
+ | rpm -ivh PPL_64bit_v1.4.1.rpm | ||
+ | |||
+ | === Obtenir l'état de l'onduleur === | ||
+ | pwrstat -status | ||
+ | |||
+ | <nowiki>The UPS information shows as following: | ||
+ | |||
+ | Properties: | ||
+ | Model Name................... Value600EIGP | ||
+ | Firmware Number.............. BZDB103&2F4.x | ||
+ | Rating Voltage............... 230 V | ||
+ | Rating Power................. 360 Watt(600 VA) | ||
+ | |||
+ | Current UPS status: | ||
+ | State........................ Normal | ||
+ | Power Supply by.............. Utility Power | ||
+ | Utility Voltage.............. 234 V | ||
+ | Output Voltage............... 234 V | ||
+ | Battery Capacity............. 100 % | ||
+ | Remaining Runtime............ 60 min. | ||
+ | Load......................... 0 Watt(0 %) | ||
+ | Line Interaction............. None | ||
+ | Test Result.................. Unknown | ||
+ | Last Power Event............. Blackout at 2022/01/25 16:02:34 | ||
+ | </nowiki> | ||
+ | |||
+ | === Obtenir les paramètres du démon === | ||
+ | pwrstat -config | ||
+ | |||
+ | Répertori les paramètres de démon actuels comme suit. | ||
+ | <nowiki>Daemon Configuration: | ||
+ | |||
+ | Alarm .............................................. On | ||
+ | Hibernate .......................................... Off | ||
+ | Cloud .............................................. Off | ||
+ | |||
+ | Action for Power Failure: | ||
+ | |||
+ | Delay time since Power failure ............. 60 sec. | ||
+ | Run script command ......................... On | ||
+ | Path of script command ..................... /etc/pwrstatd-powerfail.sh | ||
+ | Duration of command running ................ 0 sec. | ||
+ | Enable shutdown system ..................... On | ||
+ | |||
+ | Action for Battery Low: | ||
+ | |||
+ | Remaining runtime threshold ................ 300 sec. | ||
+ | Battery capacity threshold ................. 35 %. | ||
+ | Run script command ......................... On | ||
+ | Path of command ............................ /etc/pwrstatd-lowbatt.sh | ||
+ | Duration of command running ................ 0 sec. | ||
+ | Enable shutdown system ..................... On | ||
+ | </nowiki> | ||
+ | |||
+ | === Configurer l'onduleur et le démon === | ||
+ | |||
+ | ==== Action de configuration en cas de panne de courant à titre d'exemple ==== | ||
+ | pwrstat -pwrfail -delay 60 -active on -cmd /etc/pwrstatd-powerfail.sh -duration 1 -shutdown off | ||
+ | |||
+ | Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-powerfail.sh et eteindre le système si l'alimentation secteur est en panne pendant 1 minute. | ||
+ | |||
+ | ==== Action de configuration pour batterie faible comme exemple ==== | ||
+ | pwrstat -lowbatt -capacity 15 -active on -cmd /etc/pwrstatd-lowbatt.sh -duration 1 -shutdown on | ||
+ | |||
+ | Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-lowbatt.sh et eteindre le système car la capacité de la batterie de l'onduleur est faible puis un seuil pendant 5 secondes. | ||
+ | |||
+ | Noter: | ||
+ | # Le seuil de capacité de la batterie peut être modifié dans le fichier /etc/pwrstatd.conf. | ||
+ | # Les paramètres -pwrfail et -lowbatt sont exclusivement. | ||
+ | # L'unité de l'option -delay est la seconde. | ||
+ | # Les deux scripts shell /etc/pwrstatd-powerfail.sh et /etc/pwrstatd-lowbatt.sh ont été copiés pendant la procédure d'installation. | ||
+ | # Au moins un des paramètres -delay, -active, -cmd, -duration ou -shutdown est nécessaire. | ||
+ | # L'option -cmd peut être n'importe quel script shell du système, mais elle sera exécutée par l'autorité root. | ||
+ | # Le paramètre d'action par défaut pour -pwrfail et -lowbatt est identique au paramètre ci-dessus de l'exemple. | ||
+ | |||
+ | ==== Désinstallation ==== | ||
+ | rpm -e powerpanel | ||
[[Catégorie:VOIP]] | [[Catégorie:VOIP]] |
Version actuelle datée du 31 octobre 2024 à 07:21
Sommaire
Release Note
Version EMMC
Version MSata
Roadmap
Trunk SIP
SEWAN
Information communiqué par l'opérateur SIP
Il faut demander à celui ci de définir le plan de numérotation en national (non international)
Login: trunkyyyyy@test.sewan.eu Mot de passe: PASSzzzzz Information du serveur : 37.97.65.78 - trunkfsc11.sewan.fr Port d'authentification : 5070 [ ] Durée du bail REGISTER : 600 secondes STUN Server (optionnel) : stun.sewan.fr
SDA : 0351123456
Configuration du trunk
Se rendre sur l'interface VitalPBX
PBX >> External >> Trunks
Configurer comme l'image ci dessous
Le registrar doit avoir ce format
Login:Password@serveur:portSIP
Exemple:
trunkyyyyy@test.sewan.eu:PASSzzzzz@37.97.65.78:5070
Pour information, les fichiers de configurations auto-généré:
/etc/asterisk/vitalpbx/sip__50-1-trunks.conf
[trunk](p11) context=trk-1-in description=Trunk_sip_Sewan dtmfmode=rfc2833 allow=!all,alaw host=37.97.65.78 port=5070 secret=PASSzzzzz insecure=port,invite defaultuser=trunkyyyyy remotesecret=PASSzzzzz fromdomain=test.sewan.eu qualify=yes type=peer context=trk-1-in-custom
/etc/asterisk/vitalpbx/sip__20-1-registers.conf
[general](+) register => trunkyyyyy@test.sewan.eu:PASSzzzzz@37.97.65.78:5070
Appel Entrant
SEWAN a la particularité d'envoyer le DID (SDA) dans le champs TO de la requête SIP.
Bien qu'il existe une option pour le recuperer depuis la GUI il s'avere qu'a ce jour ça ne peux fonctionner dans notre cas.
Voir sujet sur le forum: https://community.vitalpbx.org/forums/topic/incoming-call-problem-2/
La solution de contournement est la suivante
créer un fichier custom
nano /etc/asterisk/vitalpbx/extensions__50-1-dialplan_custom.conf
Ajouter le dialplan ci-dessous
; ********************************************************************************* ; @Date : Sun Apr 18 12:54:49 GMT 2021 ; @Document : extensions__50-1-dialplan_custom.conf ; @Author : Sébastien LE MOAL <slemoal@tiscom.fr> ; @Platform : VitalPBX 3.0.6-2 ; ********************************************************************************* [trk-1-in-custom] exten => _s,1,NoOp(Incoming call through: Trunk_sip_Sewan) same => n,Set(DID=${CUT(CUT(SIP_HEADER(To),@,1),:,2)}) same => n,Goto(trk-1-in,${DID},1)
Mettre les droits d’exécution
chmod +x /etc/asterisk/vitalpbx/extensions__50-1-dialplan_custom.conf
Dans l’onglet avancé du trunk, ajouter le nouveau context dans Custom Settings
type = peers parameter = context value = trk-1-in-custom
Cette procédure doit être valable pour tout les opérateurs SIP qui indique le DID dans le champs TO (comme OVH)
Route entrante
SDA
Si joint la configuration d'une SDA sur 10 chiffres (format envoyé par SEWAN)
Format standard:
Etsi: 9 chiffres VN6: 6 chiffres VN4: 4 chiffres
Route par défaut
Il est possible de créer une règle par défaut, afin de ne pas perdre d'appel si la SDA n'est pas renseigné.
Route Sortante
PBX >> External >> Outbound Routes
Afin de conserver de la souplesse au niveau des routes sortante, nous allons créer 5 routes:
- Urgence
- National
- GSM
- Spéciaux
- International
1 - Urgence
Pattern:
1[578] 11[0-59] 116XXX 19[167]
2 - National
Pattern:
0[1-59]XXXXXXXX
3 - GSM
Pattern:
0[67]XXXXXXXX
4 - Spéciaux
Pattern:
08XXXXXXXX 118XXX [13]XXX
5 -International
Pattern:
_00X.
ou pour limiter à l'union européenne
_00[34].
Restriction d'appel
Règle de restriction d'appel
PBX >> Class of Service >> Dialing Restriction rules
Nous allons créer 4 règles de discrimination:
- Urgence
- National
- GSM
- Spéciaux
L'international est joignable lorsque qu'aucune restriction n'est appliqué, il n'y a donc pas besoin de la créer.
1 - Urgence
Pattern:
118XXX 0XXXXXXXXX _00X. [13]XXX
2 - National
Pattern:
118XXX 0[678]XXXXXXXX _00X. [13]XXX
3 - GSM
Pattern:
0[67]XXXXXXXX
4 - Spéciaux
Pattern:
08XXXXXXXX 118XXX [13]XXX
Classe de Service
PBX >> Class of Service >> Class of Service
Nous allons affecter les Regle de restriction d'appel à des Classe de Service
1 - Urgence
2 - National
3 - GSM
4 - Spéciaux
5- International
Cette règle existe et s'appelle ALL, nous allons simplement modifier sa description
Affecter une restriction à un utilisateur
PBX >> Extensions >> Extensions
Sélectionner l'extension sur la quelle vous souhaitez affecter une discrimination
Et choisissez dans le menu déroulant la classe à lui affecter.
DynHost
Afin d'assurer une télémaintenance ou service externe dans le cas ou le client dispose d'une IP public dynamique, il est possible d'utiliser le service Dynhost d'OVH dans le cadre de l'abonnement au domaine tiscom.fr
Configuration OVH
Se rendre sur la page d'administration: https://www.ovh.com/manager/
Ajouter un DynHost
Avant de pouvoir utiliser le DynHost, vous devez le déclarer dans l’interface client OVH. Pour cela sélection le domaine dans lequel vous souhaitez déclarer votre DynHost.
Cliquez ensuite sur l’onglet DynHost. Cet onglet vous affiche les DynHost déjà déclaré ainsi que les adresses IP courantes. Pour créer votre DynHost cliquez sur Ajouter un DynHost (à droite).
La fenêtre suivante s’affiche, choisissez le sous-domaine voulu et entré l’IP 0.0.0.0. Cette adresse sera mise a jour par le script une fois celui-ci configuré.
Créer un identifiant DynHost
Vous devrez maintenant créer un utilisateur ayant le droit de mettre à jour votre Dynhost précédemment créé. Pour cela cliquer sur Gérer les accès de la page précédente
cliquer sur Créer un identifiant, la popup suivante s’ouvre.
Spécifiez un suffixe d’identifiant, le nom de domaine que vous avez spécifié tout à l’heure ou * pour autoriser tout les sous domaine dynhost et le mot de passe.
Enregistrez bien ces informations car elles devront etre renseignés dans le script.
Configuration IPBX
Script DynHost
Se connecter en ssh ou console sur le serveur.
Installer le package "dnsutils" :
yum install dnsutils
Créer le script
nano /var/lib/vitalpbx/scripts/dynhost.sh
Ajouter les lignes suivante:
#!/usr/bin/env sh ######################################################### # Création : Sebastien Lemoal <slemoal@tiscom.fr> # # Modifications : # ###################################################### # Tous droits réservés ###################### # CHANGELOG # ######################################################### # 2021/07 - Script initial - slemoal # ####################################################### ####################################### # Définition des Variables # ##################################### HOST=$(uname -n) # Se change depuis l'interface web "Admin -> Network -> Nom d'hote" LOGIN=domaine-id PASSWORD=LenSuperMotDePasseAutogénéréDuCompteOvh PATH_LOG=/var/log/dynhostovh.log HOST_IP=$(dig +short $HOST A) # Récupérer l'IP du domaine OVH # Récupérer l'IP PUBLIC CURRENT_IP=$(curl ifconfig.me) echo curl "ifconfig.me="$CURRENT_IP if [ -z $CURRENT_IP ] then CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com) echo curl "dig + short myip.opendns.com="$CURRENT_IP fi CURRENT_DATETIME=$(date -R) ####################################### # Mise à jour du dynhost si besoin # ##################################### if [ -z $CURRENT_IP ] || [ -z $HOST_IP ] then echo "[$CURRENT_DATETIME]: No IP retrieved" >> $PATH_LOG echo "[$CURRENT_DATETIME]: No IP retrieved" else if [ "$HOST_IP" != "$CURRENT_IP" ] then RES=$(curl -m 5 -L --location-trusted --user "$LOGIN:$PASSWORD" "https://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP") echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES" >> $PATH_LOG echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES" else echo "L'IP n'a pas changé, pas de mise à jour necessaire" fi echo "HOST_IP="$HOST_IP echo "CURRENT_IP="$CURRENT_IP fi
Donner les droits
chmod +x /var/lib/vitalpbx/scripts/dynhost.sh
Configuration Web GUI
Se connecter en page web à l'interface de l'IPBX
Définir le nom d'hôte
Admin -> Network -> Paramètre réseau
Celui ci doit être identique au sous domaine créer sur OVH
Installer l'Addon Task Manager
Admin -> Add-ons -> Task Manager
Créer un profil Cron
PABX -> Outils -> Profils Cron
Créer une tache Cron
PABX -> Outils -> Task Manager
Bip au démarrage et arrêt
Installation package Beep
cd /tmp/ wget ftp://ftp.pbone.net/mirror/dag.wieers.com/redhat/el7/en/x86_64/dag/RPMS/beep-1.3-1.el7.rf.x86_64.rpm yum localinstall -y beep-1.3-1.el7.rf.x86_64.rpm rm -f beep-1.3-1.el7.rf.x86_64.rpm
Créer le service
nano /etc/init.d/beep
! /bin/sh -e ### BEGIN INIT INFO # Provides: beep # Required-Start: $syslog # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: beep # Description: # ### END INIT INFO # Carry out specific functions (start, stop, restart etc) case "$1" in start) beep -l 75 -f 500 -n -l 75 -f 1000 -n -l 75 -f 2000 -n -l 75 -f 3000 ;; stop) beep -l 75 -f 3000 -n -l 75 -f 2000 -n -l 75 -f 1000 -n -l 75 -f 500 ;; *) echo "Usage: /etc/init.d/beep {start|stop}" exit 1 ;; esac exit 0
Mettre les droits
sudo chmod a+x /etc/init.d/beep
Activer au prochain démarrage
systemctl enable beep.service
Redemarrer
systemctl reboot
Tester
systemctl reboot
Zabbix
integration et Supervision via Zabbix proxy
Script mise à jour host
Se connecter en ssh ou console sur le serveur.
Créer le script
nano /var/lib/vitalpbx/scripts/host_zabbix.sh
Ajouter les lignes suivante:
#!/bin/bash ######################################################### # Création : Sébastien Le Moal <slemoal@tiscom.fr> # # Modifications : # ###################################################### # Tous droits réservés ###################### # CHANGELOG # ######################################################### # 2021/11 - Script initial - slemoal # ####################################################### ####################################### # Définition des Variables # ##################################### host_zabbix=`uname -n` path_zabbix_proxy=/etc/zabbix/zabbix_proxy.conf path_zabbix_agent2=/etc/zabbix/zabbix_agent2.conf ####################################### # Début du script # ##################################### # Proxy zabbix if ! grep -q $host_zabbix $path_zabbix_proxy; then sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_proxy} /bin/systemctl restart zabbix-proxy.service echo "zabbix proxy: Hostname="$host_zabbix $path_zabbix_proxy "modifié" else echo "zabbix proxy: Hostname="$host_zabbix" est à jour" fi # Agent2 Zabbix if ! grep -q $host_zabbix $path_zabbix_agent2; then sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_agent2} /bin/systemctl restart zabbix-agent2.service echo "zabbix agent2: Hostname="$host_zabbix $path_zabbix_proxy "modifié" else echo "zabbix agent2: Hostname="$host_zabbix" est à jour" fi
Donner les droits
chmod +x /var/lib/vitalpbx/scripts/host_zabbix.sh
Configuration Web GUI
Se connecter en page web à l'interface de l'IPBX
Définir le nom d'hôte
Admin -> Network -> Paramètre réseau
Celui ci doit être identique au sous domaine créer sur OVH
Installer l'Addon Task Manager
Admin -> Add-ons -> Task Manager
Créer un profil Cron
PABX -> Outils -> Profils Cron
Créer une tache Cron
PABX -> Outils -> Task Manager
MOTD personnalisé
Lors d'une mise à jour, le motd vital PBX est réinitialisé, nous ne pouvons donc pas simplement le modifier.
Il va nous falloir en créer un nouveau, et contrôler au démarrage si le motd vitalpbx existe et dans quel cas le supprimer
Création d'un nouveau Motd
nano /etc/profile.d/tiscomwelcome.sh
#!/bin/bash #Bash Colour Codes txtrst="\033[00;0m" bleu="\033[1;34m" linux_ver=`cat /etc/redhat-release` vitalpbx_ver=`rpm -qi vitalpbx |awk -F: '/^Version/ {print $2}'` vitalpbx_release=`rpm -qi vitalpbx |awk -F: '/^Release/ {print $2}'` vpbx_version="${vitalpbx_ver}-${vitalpbx_release}" echo -e " ${bleu} _______ _ __ __ _ |__ __|(_) \ \ / / (_) | | _ __ ___ ___ _ __ ___ \ \ / /___ _ ___ ___ | | | |/ __| / __|/ _ \ | '_ ' _ \ \ \ / // _ \ | | / __|/ _ \ | | | |\__ \| (__| (_) || | | | | | \ V /| (_) || || (__| __/ |_| |_||___/ \___|\___/ |_| |_| |_| \_/ \___/ |_| \___|\___| ${txtrst} Version IPBX : ${vpbx_version//[[:space:]]} Version Asterisk : `asterisk -rx "core show version" 2>/dev/null| grep -ohe 'Asterisk [0-9.]*'` Version Linux : ${linux_ver} Nom de domaine : `hostname` Dispo depuis : `uptime | grep -ohe 'up .*' | sed 's/up //g' | awk -F "," '{print $1}'` Charcge CPU : `uptime | grep -ohe 'load average[s:][: ].*' | awk '{ print "Last Minute: " $3" Last 5 Minutes: "$4" Last 15 Minutes: "$5 }'` Utilisateurs : `uptime | grep -ohe '[0-9.*] user[s,]'` Adresse(s) IP : ${bleu}`ip addr | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | xargs`${txtrst} Heure courante :`timedatectl | sed -n '/Local time/ s/^[ \t]*Local time:\(.*$\)/\1/p'` Syncro NTP :`timedatectl |awk -F: '/NTP sync/ {print $2}'` "
Création d'un script afin de le jouer au démarrage
nano /var/lib/vitalpbx/scripts/boot.sh
#!/bin/bash ## Supprime le motd vitalpbx si existe if [ -e /etc/profile.d/vitalwelcome.sh ] then rm -f /etc/profile.d/vitalwelcome.sh echo "vitalwelcome.sh a été supprimé" fi
Donner au script des droits d’exécution
chmod +x /var/lib/vitalpbx/scripts/boot.sh
Créer une nouveau service systemd
nano /etc/systemd/system/SLM_boot.service
[Unit] Description=Lancement d'un script au démarrage du serveur After=network.target [Service] Type=simple ExecStart=/var/lib/vitalpbx/scripts/boot.sh TimeoutStartSec=0 [Install] WantedBy=default.target
Recharger
Reloader le process systemd pour que notre nouveau service soit pris en compte:
systemctl daemon-reload
Activer
“Activer” le service pour qu’il se lance automatiquement au démarrage de la machine:
systemctl enable SLM_boot.service
Tester
cp /etc/profile.d/tiscomwelcome.sh /etc/profile.d/vitalwelcome.sh systemctl reboot
OpenVPN
Installation
Admin -> Add-ons -> Addons
Installer le module OpenVPN
Configuration Serveur
Admin -> Network -> OpenVPN Serveur
- Enabled: Yes
- Port: 1194
- Server Range: 10.8.0.0 | 255.255.255.0
- Public Host: client.tiscom.fr (le nom du dynhost ovh)
- Keep-Alive: 10 | 120
- Cipher Method: Blowfish
- Redirect Gateway: yes (permet d'accéder au autres équipements du réseau client joignable par l'ipbx)
- Primary DNS: 1.1.1.1
- Secondary DNS: 1.0.0.1
- Max Clients: 100
- Compression: None
Configuration Client
Il est possible de visualiser l'état des clients connectés dans le menu
Admin -> Network -> OpenVPN Serveur: onglet Clients
PC Windows
Coté VitalPBX
Admin -> Network -> OpenVPN Serveur: Add Client
- Description: Exemple: Sébastien Le Moal
- Fixed IP: Optionnel, laisser vide pour dhcp
- Type: Generic
- Enabled: Yes
Save
Admin -> Network -> OpenVPN Serveur: onglet Clients
Cliquer sur l'icone download du client précédemment créer afin de télécharger l'archive. Coté PC Télécharger, installer, executer OpenVPN Connect pour Windows https://openvpn.net/client-connect-vpn-for-windows/
Glisser le fichier "Client full.ovpn" contenu dans l'archive précédemment téléchargé au centre de l'appli.
Add
Gestion UPS
Installation
Se connecter en ssh
cd /tmp wget https://dl4jz3rbrsfum.cloudfront.net/software/PPL_64bit_v1.4.1.rpm rpm -ivh PPL_64bit_v1.4.1.rpm
Obtenir l'état de l'onduleur
pwrstat -status
The UPS information shows as following: Properties: Model Name................... Value600EIGP Firmware Number.............. BZDB103&2F4.x Rating Voltage............... 230 V Rating Power................. 360 Watt(600 VA) Current UPS status: State........................ Normal Power Supply by.............. Utility Power Utility Voltage.............. 234 V Output Voltage............... 234 V Battery Capacity............. 100 % Remaining Runtime............ 60 min. Load......................... 0 Watt(0 %) Line Interaction............. None Test Result.................. Unknown Last Power Event............. Blackout at 2022/01/25 16:02:34
Obtenir les paramètres du démon
pwrstat -config
Répertori les paramètres de démon actuels comme suit.
Daemon Configuration: Alarm .............................................. On Hibernate .......................................... Off Cloud .............................................. Off Action for Power Failure: Delay time since Power failure ............. 60 sec. Run script command ......................... On Path of script command ..................... /etc/pwrstatd-powerfail.sh Duration of command running ................ 0 sec. Enable shutdown system ..................... On Action for Battery Low: Remaining runtime threshold ................ 300 sec. Battery capacity threshold ................. 35 %. Run script command ......................... On Path of command ............................ /etc/pwrstatd-lowbatt.sh Duration of command running ................ 0 sec. Enable shutdown system ..................... On
Configurer l'onduleur et le démon
Action de configuration en cas de panne de courant à titre d'exemple
pwrstat -pwrfail -delay 60 -active on -cmd /etc/pwrstatd-powerfail.sh -duration 1 -shutdown off
Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-powerfail.sh et eteindre le système si l'alimentation secteur est en panne pendant 1 minute.
Action de configuration pour batterie faible comme exemple
pwrstat -lowbatt -capacity 15 -active on -cmd /etc/pwrstatd-lowbatt.sh -duration 1 -shutdown on
Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-lowbatt.sh et eteindre le système car la capacité de la batterie de l'onduleur est faible puis un seuil pendant 5 secondes.
Noter:
- Le seuil de capacité de la batterie peut être modifié dans le fichier /etc/pwrstatd.conf.
- Les paramètres -pwrfail et -lowbatt sont exclusivement.
- L'unité de l'option -delay est la seconde.
- Les deux scripts shell /etc/pwrstatd-powerfail.sh et /etc/pwrstatd-lowbatt.sh ont été copiés pendant la procédure d'installation.
- Au moins un des paramètres -delay, -active, -cmd, -duration ou -shutdown est nécessaire.
- L'option -cmd peut être n'importe quel script shell du système, mais elle sera exécutée par l'autorité root.
- Le paramètre d'action par défaut pour -pwrfail et -lowbatt est identique au paramètre ci-dessus de l'exemple.
Désinstallation
rpm -e powerpanel