Options du serveur
Tout est facultatif ici, sauf l’envoi d’e-mails, encore nécessaire. Les commandes s’exécutent près de l’outil wuselwall. N’ajoutez que les services dont vous avez besoin.
E-mails
Le premier accès vérifie l’adresse par un code à six chiffres. Sans service SMTP, personne ne peut créer ou rejoindre la famille. Le mode sans e-mail est prévu, pas encore disponible.
L’installation choisit une langue unique pour tous les sujets et corps de messages : de, en, fr ou es, allemand par défaut. Elle ne dépend ni du destinataire ni de son appareil. Pour la changer : ./wuselwall language fr (Installation).
Choisissez un service d’e-mails transactionnels et configurez les enregistrements SPF, DKIM et DMARC demandés. Ce fournisseur reçoit les adresses et les codes. Vérifiez ses conditions et tarifs.
À la maison, indiquez SMTP_HOST, SMTP_PORT (habituellement 587), SMTP_USER, SMTP_PASS et SMTP_ADMIN_EMAIL dans stack/.env, entre apostrophes comme les autres valeurs. Un serveur avec messagerie utilise ENABLE_EMAIL_AUTOCONFIRM=false.
./wuselwall compose up -d authChez Supabase, renseignez les mêmes informations dans Authentication → Emails → SMTP Settings. La messagerie intégrée sert aux essais et reste limitée.
La version serveur et le workflow configurent le premier e-mail de confirmation et les suivants avec un code, sans hook Scaleway obligatoire. Si vous recevez seulement un lien, mettez le serveur à jour ou relancez le workflow mis à jour, puis demandez un nouveau code. Un ancien message ne change pas.
Anciennes connexions Apple et Google
Ces anciens comptes utilisent désormais le code envoyé à leur adresse e-mail, sans changer de famille ni de compte.
Vérifiez avant la mise à jour : avec « Masquer mon adresse e-mail » d’Apple, l’adresse se termine par privaterelay.appleid.com. L’expéditeur doit être enregistré pour le transfert Apple. Si le code n’arrive pas, différez la mise à jour pour éviter de bloquer la prochaine connexion.
À la maison, wuselwall update retire les anciennes valeurs Apple/Google, l’adresse de retour et la fonction apple-token, en affichant les noms seulement. Chez Supabase, le workflow désactive ces fournisseurs et la liaison de comptes, conserve les autres URL de retour, retire fonction et secrets APPLE_…, puis vérifie. Il s’arrête en cas d’échec.
Après la mise à jour, testez un ancien compte sur un second appareil, par code e-mail, sans déconnecter le premier. Ensuite seulement :
- retirez les clients OAuth Google utilisés uniquement pour WuselWall, jamais le projet Cloud, Play Console ou les ressources d’autres apps ;
- retirez les identifiants et clés de connexion Apple devenus inutiles, mais gardez les expéditeurs de transfert tant que des comptes utilisent l’adresse relais.
Jours fériés et vacances
Votre serveur consulte OpenHolidays chaque semaine pour les pays choisis. Il transmet les codes de pays, pas les membres ni les écoles ; l’app ne contacte pas ce service. Sans accès Internet du serveur, ces données peuvent manquer, mais les autres fonctions continuent.
Reconnaissance de texte pour les emplois du temps
Avec la reconnaissance de texte, l’app peut importer un emploi du temps photographié ou le PDF de l’école (Importer un emploi du temps) ; le texte d’un PDF est lu directement, un PDF scanné comme une photo. C’est un conteneur à part dans la pile, qui tourne uniquement sur le processeur de votre serveur : la photo va du téléphone à votre serveur, le conteneur lit le texte, et rien ne quitte la maison. Il n’a besoin ni d’internet ni de carte graphique, et d’environ 1 Go de mémoire ; sur un petit serveur domestique, une feuille prend quelques secondes.
Pour l’installer, dans le dossier de la pile :
- Ajouter la ligne
OCR_URL=http://ocr:9003/ocrau fichier.env. - Construire et démarrer le conteneur :
docker compose --profile ocr up -d --build. La première construction télécharge les modèles de reconnaissance (environ 20 Mo) ; ensuite il tourne sans internet. - Redémarrer les fonctions pour qu’elles connaissent l’adresse :
docker compose restart functions.
L’app propose alors Scanner une photo sous Importer…. Sans cette ligne, l’entrée reste, mais l’app indique que le serveur n’a pas de reconnaissance de texte. La reconnaissance utilise RapidOCR avec les modèles PP-OCR de PaddleOCR (tous deux Apache-2.0, la même base que le gestionnaire de photos Immich utilise pour sa reconnaissance de texte).
Avec l’image, l’app envoie sa langue ainsi que les noms et abréviations de vos matières. Ainsi le serveur lit vos mots comme vos matières. La fonction accepte des photos (JPEG, PNG, WebP, HEIC) et des PDF jusqu’à 6 Mo, ne garde rien et n’écrit aucune image dans le journal. Ce que le serveur lit sur une feuille, et ses limites, figure sous Importer un emploi du temps.
Sauvegarde hors site
Un autre disque local ne protège pas contre le vol ou l’incendie. L’outil peut envoyer les sauvegardes chiffrées avec restic vers Backblaze B2 ou un stockage S3. Le fournisseur ne voit que le contenu chiffré.
Créez backup.env près de l’outil, avec chmod 600 backup.env :
RESTIC_REPOSITORY=b2:<bucket>:wuselwall
RESTIC_PASSWORD=<mot de passe long à conserver aussi dans le gestionnaire>
B2_ACCOUNT_ID=<identifiant de clé>
B2_ACCOUNT_KEY=<clé d’application>Initialisez une fois :
docker run --rm --env-file backup.env restic/restic:0.18.0 initLes prochaines commandes wuselwall backup, y compris nocturnes, y enverront une copie. Gardez RESTIC_PASSWORD dans votre gestionnaire, avec stack/.env : sans lui, les sauvegardes sont inutilisables.
Surveillance
Une alerte évite de découvrir trop tard que les sauvegardes se sont arrêtées. Un contrôle healthchecks.io peut recevoir les confirmations réussies via HEALTHCHECK_URL=https://hc-ping.com/… dans backup.env et vous alerter en leur absence.
Un outil de surveillance indépendant peut consulter https://api.example.org/.well-known/wuselwall.json. Une réponse vérifie le fonctionnement de la passerelle, de la base et de l’authentification.