🛰️ Installation complète d'un réflecteur YSFReflector sur VPS Infomaniak – Ce guide vous permettra d'installer et configurer votre propre réflecteur System Fusion (C4FM) hébergé en Suisse, avec dashboard web, HTTPS et enregistrement officiel sur DVRef. Compatible Debian 11/12 et Ubuntu 22.04/24.04.

📡 Qu'est-ce qu'un Réflecteur YSF ?

Un réflecteur YSF (Yaesu System Fusion) est un serveur qui permet de connecter plusieurs stations radioamateurs utilisant le mode numérique C4FM de Yaesu via Internet. Il agit comme un point de rencontre central où tous les utilisateurs connectés peuvent communiquer ensemble, créant ainsi des "salles" de discussion mondiales.

🎯 Principe de fonctionnement : Lorsqu'un radioamateur transmet sur sa radio connectée au réflecteur, le signal est instantanément redistribué à tous les autres utilisateurs connectés, permettant des QSO en groupe à l'échelle mondiale.

Pourquoi pYSFReflector ?

Ce tutoriel utilise pYSFReflector, développé par IU5JAE. C'est une version Python moderne qui remplace l'ancienne version C++ de G4KLX.

🐍 Python Moderne

Pas besoin de compiler du C++, installation directe et simple

✅ Compatible

Fonctionne avec Pi-Star, WPSD et toutes les radios YSF

🔄 Maintenu

Mises à jour régulières et corrections de bugs actives

💪 Stable

Meilleure gestion des connexions, moins de crashes

🇨🇭 Pourquoi Infomaniak ?

Infomaniak est un hébergeur suisse de référence, particulièrement adapté pour héberger un réflecteur radioamateur :

🇨🇭 Hébergement Suisse

Protection des données optimale

🌱 100% Renouvelable

Datacenters écologiques certifiés

⚡ Performant

Infrastructure SSD NVMe

💰 Prix Accessible

À partir de 7 CHF/mois

📋 Prérequis

Configuration VPS Minimale

  • 1 vCPU
  • 1 GB RAM
  • 10 GB SSD
  • Système : Debian 12 ou Ubuntu 24.04 LTS (recommandé)

Informations à Préparer

📝 Avant de commencer, ayez sous la main :

  • Nom du réflecteur : Maximum 16 caractères (ex: "HB9 SUISSE")
  • Description : Maximum 14 caractères (ex: "Reflecteur CH")
  • Votre email : Pour l'enregistrement DVRef et Let's Encrypt
  • Votre indicatif : Indicatif radioamateur valide
  • Nom de domaine : Optionnel mais recommandé pour HTTPS

🚀 Installation Étape par Étape

1. Préparation du Serveur

Connectez-vous en SSH à votre VPS Infomaniak :

ssh utilisateur@votre-ip-vps

Mettez à jour le système :

sudo apt update
sudo apt upgrade -y

Installez les outils de base :

sudo apt install -y git curl wget nano ufw

Créez le répertoire de travail :

cd ~
mkdir ysf-install
cd ysf-install

2. Installation de Python et Dépendances

Installez Python 3 :

sudo apt install -y python3 python3-pip python3-venv

Vérifiez l'installation :

python3 --version

💡 Version attendue : Python 3.9 ou supérieur (généralement 3.11 sur Debian 12 / Ubuntu 24.04)

Installation des Bibliothèques Python

⚠️ Problème courant : "externally-managed-environment"

Si vous obtenez cette erreur avec pip, utilisez l'une des 3 méthodes ci-dessous.

Méthode 1 : Via les paquets système (RECOMMANDÉE)

sudo apt install -y python3-aprslib python3-tinydb

Pour la bibliothèque "threaded" qui n'est pas dans les dépôts :

sudo pip3 install threaded --break-system-packages

🚨 ATTENTION CRITIQUE : Les tirets

Utilisez bien DEUX TIRETS -- (tirets courts) et NON un tiret long . Si vous copiez-collez depuis un document PDF ou Word, vérifiez ce point ! Un tiret long fera échouer la commande.

Méthode 2 : Installation complète avec pip

Si python3-tinydb n'est pas disponible :

sudo pip3 install aprslib --break-system-packages
sudo pip3 install tinydb --break-system-packages
sudo pip3 install threaded --break-system-packages

Méthode 3 : Configuration permanente de pip

sudo mkdir -p /root/.config/pip
sudo nano /root/.config/pip/pip.conf

Ajoutez ces lignes dans le fichier :

[global]
break-system-packages = true

Sauvegardez avec Ctrl+O, Entrée, puis quittez avec Ctrl+X.

Maintenant vous pouvez installer sans le flag :

sudo pip3 install aprslib tinydb threaded

Vérifiez que les bibliothèques sont installées :

pip3 list | grep -E "aprslib|tinydb|threaded"

3. Installation de pYSFReflector

Téléchargez pYSFReflector depuis GitHub :

cd ~/ysf-install
git clone https://github.com/iu5jae/pYSFReflector.git

Créez les répertoires nécessaires :

sudo mkdir -p /opt/ysfreflector
sudo mkdir -p /var/log/ysfreflector
sudo mkdir -p /usr/local/etc

Copiez les fichiers :

cd pYSFReflector
sudo cp YSFReflector /opt/ysfreflector/
sudo cp YSFReflector.ini /opt/ysfreflector/
sudo chmod +x /opt/ysfreflector/YSFReflector

Créez le fichier deny.db :

sudo touch /usr/local/etc/deny.db
sudo chmod 644 /usr/local/etc/deny.db

⚠️ Fichier critique : Sans ce fichier deny.db, pYSFReflector génère une erreur au démarrage. Ce fichier contient la liste des utilisateurs bloqués (vide au départ).

Définissez les permissions des logs :

sudo chown -R $USER:$USER /var/log/ysfreflector

4. Configuration de YSFReflector

Éditez le fichier de configuration principal :

sudo nano /opt/ysfreflector/YSFReflector.ini

💡 Raccourcis nano :

  • Ctrl+O puis Entrée : Sauvegarder
  • Ctrl+X : Quitter
  • Ctrl+W : Rechercher

Modifiez la section [General] :

[General]
Id=00000
Name=HB9 SUISSE
Description=Reflecteur CH

💡 Explications :

  • Id=00000 : Laissez à zéro pour l'instant. Vous le changerez après l'enregistrement sur DVRef
  • Name : Maximum 16 caractères (espaces compris)
  • Description : Maximum 14 caractères

Vérifiez la section [Network] :

[Network]
Port=42000

⚠️ Port standard YSF : Le port 42000/UDP est le port standard pour YSF. Ne le changez pas sauf nécessité absolue, car cela pourrait causer des problèmes de compatibilité.

Vérifiez la section [Log] :

[Log]
FilePath=/var/log/ysfreflector
FileRoot=YSFReflector
FileLevel=1
DisplayLevel=1
FileRotate=1

Sauvegardez le fichier : Ctrl+O, Entrée, Ctrl+X

5. Installation du Dashboard Web

Pour Ubuntu 24.04 / Debian 12 :

sudo apt install -y apache2 php libapache2-mod-php php-mbstring php-xml php-curl

Pour Ubuntu 22.04 / Debian 11 :

sudo apt install -y apache2 php libapache2-mod-php php8.1-mbstring php8.1-xml php8.1-curl

Activez et démarrez Apache :

sudo systemctl enable apache2
sudo systemctl start apache2

Téléchargez le Dashboard :

cd ~/ysf-install
git clone https://github.com/dg9vh/YSFReflector-Dashboard.git

Installez le Dashboard :

sudo rm -rf /var/www/html/*
sudo cp -R YSFReflector-Dashboard/* /var/www/html/
sudo rm -f /var/www/html/index.html

Créez le fichier de configuration :

sudo mkdir -p /var/www/html/config
sudo nano /var/www/html/config/config.php

Copiez ce contenu (adaptez l'URL à votre situation) :

<?php
// Chemins (SANS slash final)
define("LOGPATH", "/var/log/ysfreflector");
define("LOGPREFIX", "YSFReflector");
define("INIPATH", "/opt/ysfreflector");
define("INIFILENAME", "YSFReflector.ini");
define("REFL_PATH", "/opt/ysfreflector");

// Compatibilité anciennes versions
define("YSFREFLECTORLOGPATH", "/var/log/ysfreflector");
define("YSFREFLECTORLOGPREFIX", "YSFReflector");
define("YSFREFLECTORINIPATH", "/opt/ysfreflector");
define("YSFREFLECTORINIFILENAME", "YSFReflector.ini");
define("YSFREFLECTORPATH", "/opt/ysfreflector");

// Paramètres d'affichage
define("REFRESHAFTER", "10");
define("LOGO", "");
define("URL", "http://votre-domaine.com");
define("LOCALE", "fr_CH.utf8");
define("TIMEZONE", "Europe/Zurich");

// Fonctionnalités
define("SHOWSYSINFO", "1");
define("SHOWNETINFO", "1");
define("ENABLEXTDLOOKUP", "1");
define("QRZAPIKEY", "");
define("SHOWLH", "1");
define("LHLINES", "20");
define("DMRIDDATPATH", ".");
define("ENABLEYSFGATEWAY", "0");
?>

Sauvegardez et définissez les permissions :

sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 755 /var/www/html/
sudo chmod 644 /var/www/html/config/config.php
sudo systemctl restart apache2

6. Configuration du Pare-feu (CRITIQUE)

🚨 CRUCIAL : DEUX pare-feu à configurer

Il y a DEUX pare-feu à configurer obligatoirement :

  1. Pare-feu UFW : Sur votre serveur Linux
  2. Pare-feu Infomaniak : Dans le panneau de contrôle web

Si vous n'en configurez qu'un seul, le dashboard ne sera PAS accessible depuis Internet !

Partie 1 : Pare-feu UFW (sur le serveur)

🚨 ATTENTION : Autorisez SSH EN PREMIER !

Autorisez SSH AVANT d'activer UFW, sinon vous serez bloqué et ne pourrez plus accéder à votre serveur !

sudo ufw allow 22/tcp
sudo ufw allow 42000/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

💡 Ports expliqués :

  • 22/tcp : SSH - Accès distant au serveur (CRITIQUE)
  • 42000/udp : YSFReflector - Trafic radio System Fusion
  • 80/tcp : HTTP - Dashboard web
  • 443/tcp : HTTPS - Dashboard sécurisé

Partie 2 : Pare-feu Infomaniak (panneau web)

  1. Connectez-vous à manager.infomaniak.com
  2. Allez dans Cloud & ServeursPublic Cloud
  3. Sélectionnez votre VPS
  4. Cliquez sur Pare-feu dans le menu latéral
  5. Ajoutez ces 4 règles :
    • Port 22/TCP - Protocole TCP - Source: Partout - Action: Autoriser
    • Port 42000/UDP - Protocole UDP - Source: Partout - Action: Autoriser
    • Port 80/TCP - Protocole TCP - Source: Partout - Action: Autoriser
    • Port 443/TCP - Protocole TCP - Source: Partout - Action: Autoriser
  6. Sauvegardez les modifications

7. Configuration du Service Systemd

Créez le fichier service :

sudo nano /etc/systemd/system/ysfreflector.service

Copiez ce contenu :

[Unit]
Description=YSFReflector Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/ysfreflector
ExecStart=/usr/bin/python3 /opt/ysfreflector/YSFReflector /opt/ysfreflector/YSFReflector.ini
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Sauvegardez, puis activez et démarrez le service :

sudo systemctl daemon-reload
sudo systemctl enable ysfreflector.service
sudo systemctl start ysfreflector.service
sudo systemctl status ysfreflector.service

✅ Service actif : Vous devez voir active (running) en vert. Si c'est le cas, votre réflecteur fonctionne !

Commandes Utiles

  • sudo systemctl status ysfreflector.service : Voir le statut
  • sudo systemctl restart ysfreflector.service : Redémarrer
  • sudo journalctl -u ysfreflector.service -f : Logs en temps réel

Test du Dashboard

Ouvrez votre navigateur et allez sur : http://votre-ip-vps/

Vous devriez voir le dashboard avec les informations de votre réflecteur !

📝 Enregistrement sur DVRef

⚠️ Important : L'enregistrement se fait maintenant UNIQUEMENT sur DVRef.com. L'ancien registre YSFReflector.de n'est plus maintenu depuis juin 2024.

Procédure d'Enregistrement

  1. Allez sur https://dvref.com/ysf/new
  2. Remplissez le formulaire :
    • Name : Nom de votre réflecteur (ex: "HB9 SUISSE")
    • Description : Description courte
    • Country : Code pays (CH, FR, BE, etc.)
    • FQDN/IP : Votre IP ou nom de domaine
    • Port : 42000
    • Email : Votre adresse email
    • Callsign : Votre indicatif radioamateur
  3. Validez le formulaire
  4. Vous recevrez un email de confirmation
  5. Cliquez sur le lien dans l'email pour activer
  6. Notez votre ID à 5 chiffres (ex: 12345)

Mise à Jour de la Configuration

Éditez le fichier de configuration :

sudo nano /opt/ysfreflector/YSFReflector.ini

Modifiez la ligne Id :

[General]
Id=12345
Name=HB9 SUISSE
Description=Reflecteur CH

Remplacez 12345 par votre ID réel. Sauvegardez et redémarrez :

sudo systemctl restart ysfreflector.service

⏱️ Délai de propagation : Votre réflecteur apparaîtra dans les listes Pi-Star et WPSD sous 24 à 48 heures. C'est normal, la propagation DNS prend du temps.

🔒 Configuration HTTPS avec Let's Encrypt

⚠️ Nom de domaine requis : Pour HTTPS, vous devez avoir un nom de domaine pointant vers votre VPS. Une simple adresse IP ne suffit pas.

Installation de Certbot

sudo apt update
sudo apt install -y certbot python3-certbot-apache

Obtention du Certificat SSL

sudo certbot --apache -d ysf.votredomaine.com

Remplacez ysf.votredomaine.com par votre vrai nom de domaine. Répondez aux questions :

  1. Email : Entrez votre email
  2. Terms of Service : Tapez Y
  3. Share email : Y ou N (optionnel)
  4. Redirect HTTP to HTTPS : Choisissez 2 pour rediriger automatiquement

Vérification

sudo certbot certificates

Mise à Jour du Dashboard

sudo nano /var/www/html/config/config.php

Modifiez la ligne URL :

define("URL", "https://ysf.votredomaine.com");

Sauvegardez et redémarrez Apache :

sudo systemctl restart apache2

Testez : https://ysf.votredomaine.com - Vous devriez voir un cadenas vert dans la barre d'adresse !

🔒 HTTPS activé : Votre dashboard est maintenant sécurisé. Le certificat se renouvellera automatiquement tous les 60 jours via un cron job automatique de Certbot.

🎨 Personnalisation du Dashboard

Ajouter un Logo

Uploadez votre logo (PNG, 200x200px recommandé) :

scp logo.png utilisateur@votre-ip:/home/utilisateur/
ssh utilisateur@votre-ip
sudo mv ~/logo.png /var/www/html/logo.png
sudo chown www-data:www-data /var/www/html/logo.png

Activez-le dans la configuration :

sudo nano /var/www/html/config/config.php
define("LOGO", "logo.png");

Modifier le Nom et la Description

sudo nano /opt/ysfreflector/YSFReflector.ini
[General]
Id=12345
Name=MON REFLECTEUR YSF
Description=Ma description

Redémarrez le réflecteur :

sudo systemctl restart ysfreflector.service

🔧 Maintenance

Maintenance Mensuelle Recommandée

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

Vérifier l'Espace Disque

df -h

Nettoyer les Anciens Logs

sudo find /var/log/ysfreflector/ -name "*.log" -mtime +30 -delete

Sauvegarde de la Configuration

mkdir -p ~/backups
sudo cp /opt/ysfreflector/YSFReflector.ini ~/backups/YSFReflector.ini.$(date +%Y%m%d)
sudo cp /var/www/html/config/config.php ~/backups/config.php.$(date +%Y%m%d)

🔧 Dépannage

Problème 1 : Dashboard Page Blanche

sudo tail -50 /var/log/apache2/error.log
sudo systemctl status ysfreflector.service
ls -la /var/log/ysfreflector/

Problème 2 : Service Ne Démarre Pas

sudo journalctl -u ysfreflector.service -n 100

Si erreur "deny.db not found" :

sudo touch /usr/local/etc/deny.db
sudo chmod 644 /usr/local/etc/deny.db
sudo systemctl restart ysfreflector.service

Problème 3 : Dashboard Inaccessible

Vérifiez les deux pare-feu :

sudo ufw status | grep 80
sudo systemctl status apache2

Vérifiez aussi dans le panneau Infomaniak que les ports 80 et 443 sont ouverts.

Problème 4 : Pas Visible dans Pi-Star

Checklist :

  • ✓ Enregistré sur DVRef.com ?
  • ✓ Email de confirmation activé ?
  • ✓ ID mis à jour dans YSFReflector.ini ?
  • ✓ Port 42000/UDP ouvert (UFW + Infomaniak) ?
  • ✓ Service ysfreflector running ?
  • ✓ Attendu au moins 24-48h ?

🎯 Conclusion

🎉 Félicitations !

Votre réflecteur YSF est maintenant opérationnel sur votre VPS Infomaniak. Vous disposez d'un serveur professionnel avec dashboard web, HTTPS sécurisé, et enregistrement officiel sur DVRef.

✅ Réflecteur YSF

pYSFReflector installé et configuré

✅ Dashboard Web

Interface accessible 24/7

✅ Sécurité

HTTPS et pare-feu double couche

✅ Enregistré

Visible dans Pi-Star/WPSD

Ressources Utiles