A woman using a cell phone while sitting at a table with a cup of coffee and reading an eBook on her tablette.

ePub, comment lire un eBook (tablette et PC) ?

Découvrez la simplicité de la lecture numérique avec ePub

ePub est devenu le format de prédilection pour les adeptes du livre numérique, et pour cause : sa facilité d’utilisation est inégalée. Cet article vous guide à travers le processus en deux étapes faciles : télécharger un lecteur d’eBook et plonger dans votre lecture.

Qu’est-ce que le format ePub ?

ePub, l’acronyme de ‘electronic publication’, est largement reconnu comme le standard universel pour les livres numériques. Sa conception ouverte et adaptable garantit que le texte s’affiche parfaitement sur tous vos appareils, qu’il s’agisse d’ordinateurs, de tablettes ou de smartphones.

Vos premiers pas avec les lecteurs d’eBooks

La première étape consiste à choisir et installer un lecteur d’eBooks. Cette étape franchie, vous pourrez accéder à votre bibliothèque numérique à tout moment, sans aucune manipulation supplémentaire.

Comment lire un ePub sur Smartphone ou Tablette ?

Pour les utilisateurs d’iOS (iPad ou iPhone) :

Transférez vos fichiers ePub sur votre appareil via iTunes, et retrouvez-les facilement sur l’application iBooks, préinstallée et prête à l’emploi.

Pour les utilisateurs d’Android :

Aldiko est une excellente option, mais libre à vous d’explorer et de choisir l’application qui vous convient le mieux.

Lire un ePub sur un ordinateur

Sur Mac et Windows :

Adobe Digital Editions (ADE) est le choix privilégié pour les nouveaux venus dans le monde de la lecture numérique sur ordinateur. C’est une solution fiable qui promet une expérience de lecture fluide et intuitive. Voici comment démarrer avec ADE :

  1. Téléchargez et installez le logiciel sur votre ordinateur, qu’il soit sous Windows ou macOS.
  2. Une fois l’installation terminée, ouvrez ADE et ajoutez vos livres au format ePub à la bibliothèque.
  3. Double-cliquez sur un livre pour commencer à lire.

Sur Mac, Windows et Linux :

Calibre est bien plus qu’un simple lecteur d’eBooks : c’est une véritable bibliothèque numérique pour votre ordinateur, compatible avec Windows, macOS et Linux. C’est un outil complet qui permet non seulement de lire, mais aussi de gérer et d’organiser votre collection d’eBooks. Suivez ces instructions pour utiliser Calibre :

  1. Téléchargez et installez Calibre et lancez-le.
  2. Importez vos eBooks au format ePub dans Calibre en cliquant sur « Ajouter des livres ».
  3. Sélectionnez un livre et cliquez sur « Lire » pour ouvrir le livre et profiter de votre lecture.

Lire ePub, comment lire un eBook (tablette et PC) ?

An image of a computer screen with a green and purple background displaying the Message Of The Day (MOTD) on Ubuntu Server.

Changer le Message Of The Day (MOTD) sous Ubuntu Server

Le Message Of The Day (communément appelé MOTD) est un message d’accueil ou des notifications importantes que les administrateurs de serveurs peuvent configurer pour s’afficher lorsqu’un utilisateur se connecte au serveur via SSH.

Ce tutoriel vous montre comment mettre à jour et personnaliser le MOTD sur un serveur Ubuntu 22.04.

Prérequis

  • Serveur Ubuntu 22.04 avec accès root ou un utilisateur avec des privilèges sudo.
  • Accès SSH au serveur.

Étape 1 : connexion au Serveur

Connectez-vous à votre serveur Ubuntu via SSH:

ssh USER@SERVER_IP -pPORTLangage du code : CSS (css)

Étape 2 : vérifier le MOTD existant

Pour voir le MOTD actuel, utilisez la commande suivante :

cat /run/motd.dynamic

Étape 3 : modifier le MOTD dynamique

Ubuntu 22.04 utilise des scripts dans le répertoire /etc/update-motd.d/ pour générer une partie du MOTD dynamiquement. Vous pouvez ajouter, supprimer ou modifier les scripts dans ce répertoire pour personnaliser davantage le MOTD.

Entête MOTD

Nous allons créer un entête qui contient le nom de notre serveur en ASCII art, ce qui nous permettra de bien l’identifier lors de nos sessions SSH:

sudo nano /etc/update-motd.d/00-custom

Et on y ajoute notre script bash:

#!/bin/sh

# Reset
Color_Off='\033[0m'       # Text Reset

# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple / Magenta
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White

# Set the text color to green
printf "$BGreen"

# https://patorjk.com/software/taag/#p=display&f=Doom&t=APOLLO%20.%20SKYMINDS%20.%20NET
cat << "EOF"
  ___  ______ _____ _      _     _____       _____ _   ____   ____  ________ _   _______  _____       _   _  _____ _____
 / _ \ | ___ \  _  | |    | |   |  _  |     /  ___| | / /\ \ / /  \/  |_   _| \ | |  _  \/  ___|     | \ | ||  ___|_   _|
/ /_\ \| |_/ / | | | |    | |   | | | |     \ `--.| |/ /  \ V /| .  . | | | |  \| | | | |\ `--.      |  \| || |__   | |
|  _  ||  __/| | | | |    | |   | | | |      `--. \    \   \ / | |\/| | | | | . ` | | | | `--. \     | . ` ||  __|  | |
| | | || |   \ \_/ / |____| |___\ \_/ /  _  /\__/ / |\  \  | | | |  | |_| |_| |\  | |/ / /\__/ /  _  | |\  || |___  | |
\_| |_/\_|    \___/\_____/\_____/\___/  (_) \____/\_| \_/  \_/ \_|  |_/\___/\_| \_/___/  \____/  (_) \_| \_/\____/  \_/
EOF

# Set the text color to magenta
printf "$BPurple"

# Left image lines
left1="                                   88 88  "
left2="                                   88 88  "
left3="                                   88 88  "
left4=",adPPYYba, 8b,dPPYba,   ,adPPYba,  88 88  ,adPPYba,"
left5="\"\"     \`Y8 88P'    \"8a a8\"     \"8a 88 88 a8\"     \"8a"
left6=",adPPPPP88 88       d8 8b       d8 88 88 8b       d8"
left7="88,    ,88 88b,   ,a8\" \"8a,   ,a8\" 88 88 \"8a,   ,a8\""
left8="\"8bbdP\"Y8 88\`YbbdP\"'   \"\"YbbdP\"'  88 88  \"\"YbbdP\"'"
left9="           88                                          "
left10="           88                                         "

# Right image lines
right1=" .              +   .                .   . .     .  ."
right2="                   .                    .       .     *"
right3="  .       *                        . . . .  .   .  + ."
right4="            \"You Are Here\"            .   .  +  . . ."
right5=".                 |             .  .   .    .    . ."
right6="                  |           .     .     . +.    +  ."
right7="                 \\|/            .       .   . ."
right8="         . .        V          .    * . . .  .  +   ."
right9="               +      .           .   .      +"
right10="                               .       . +  .+. ."

# Combine and print
echo "$left1 $right1"
echo "$left2 $right2"
echo "$left3 $right3"
echo "$left4 $right4"
echo "$left5 $right5"
echo "$left6 $right6"
echo "$left7 $right7"
echo "$left8 $right8"
echo "$left9 $right9"
echo "$left10 $right10"

# STATS
upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
secs=$((${upSeconds}%60))
mins=$((${upSeconds}/60%60))
hours=$((${upSeconds}/3600%24))
days=$((${upSeconds}/86400))
UPTIME=$(printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" "$secs")

# get the load averages
read one five fifteen rest < /proc/loadavg

# text in yellow
printf "$BYellow"

echo "
   .~~.   .~~.    `date +"%A, %e %B %Y, %r"`
  '. \ ' ' / .'   `uname -srmo`
   .~ .~~~..~.
  : .~.'~'.~. :   Uptime.............: ${UPTIME}
 ~ (   ) (   ) ~  Memory.............: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)
( : '~'.~.'~' : ) Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
 ~ .~ (   ) ~. ~  Running Processes..: `ps ax | wc -l | tr -d " "`
  (  : '~' :  )   IP Addresses.......: `ip a | grep glo | awk '{print $2}' | head -1 | cut -f1 -d/` and `wget -q -O - https://icanhazip.com/ | tail`
   '~ .~~~. ~'    Weather............: `curl -s "https://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|FR|FR|NANTES|" | sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([CF]\).*/\2°\3, \1/p'`
       '~'
"

# text default colour
printf "$Color_Off"Langage du code : PHP (php)

Cela affiche le nom du serveur (apollo.skyminds.net) puis une petite frise, et enfin les statistiques ainsi que la météo pour Nantes. Vous pouvez modifier la ville dans l’avant-dernière ligne.

Notez que j’ai compilé deux images pour qu’elles s’affichent sur les mêmes lignes: le mot « apollo » en ASCII art et une version de l’univers avec le texte « You are here! ». Il faut jouer avec l’indentation mais au bout de quelques essais, cela rend plutôt pas mal je trouve.

Rendez le script exécutable :

sudo chmod +x  /etc/update-motd.d/00-custom

Lancez la compilation de tous les modules dynamiques pour obtenir le MOTD final qui sera affiché à chaque connexion SSH:

run-parts /etc/update-motd.d/ > /run/motd.dynamicLangage du code : JavaScript (javascript)

Lire Changer le Message Of The Day (MOTD) sous Ubuntu Server

A black and white photo of the statue of Apollo.

Nouveau serveur dédié OVH : Apollo

J’ai craqué pour un nouveau serveur chez OVH. C’est mon premier serveur OVH, si l’on considère que je n’ai jamais utilisé que des Kimsufi auparavant, depuis mars 2010.

Voyons voir ce qu’il a dans le ventre.

Processeur

On obtient les spécifications du processeur:

lscpu

Ce qui nous donne:

lscpu

Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  16
  On-line CPU(s) list:   0-15
Vendor ID:               GenuineIntel
  Model name:            Intel(R) Xeon(R) E-2288G CPU @ 3.70GHz
    CPU family:          6
    Model:               158
    Thread(s) per core:  2
    Core(s) per socket:  8
    Socket(s):           1
    Stepping:            13
    CPU max MHz:         5000.0000
    CPU min MHz:         800.0000
    BogoMIPS:            7399.70
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts a
                         cpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch
                         _perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq
                         dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_
                         2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowp
                         refetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow
                         vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpci
                         d mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida a
                         rat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilitie
                         s
Virtualization features:
  Virtualization:        VT-x
Caches (sum of all):
  L1d:                   256 KiB (8 instances)
  L1i:                   256 KiB (8 instances)
  L2:                    2 MiB (8 instances)
  L3:                    16 MiB (1 instance)
NUMA:
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-15
Vulnerabilities:
  Gather data sampling:  Mitigation; Microcode
  Itlb multihit:         KVM: Mitigation: VMX disabled
  L1tf:                  Not affected
  Mds:                   Not affected
  Meltdown:              Not affected
  Mmio stale data:       Mitigation; Clear CPU buffers; SMT vulnerable
  Retbleed:              Mitigation; Enhanced IBRS
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl and seccomp
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence
  Srbds:                 Mitigation; Microcode
  Tsx async abort:       Mitigation; TSX disabledLangage du code : JavaScript (javascript)

Nous avons donc un Intel(R) Xeon(R) E-2288G CPU @ 3.70GHz (8c/16t), avec toutes les corrections appliquées pour corriger les vulnérabilités.

C’est une belle mise à jour par rapport à l’ancien serveur, qui était un Intel(R) Xeon(R) CPU W3530 @ 2.80GHz (4c/8t), qui n’était pas aussi sécurisé.

Bande passante

On passe sur une bande passante à 500Mbit/s et non plus en 100Mbit/s, toujours en illimité (unmetered).

Mémoire et disques

On reste sur 32GB de RAM mais on double sa vitesse: on passe de la DDR3 @ 1333 MHz à de la DDR4 ECC @ 2666 MHz:

sudo dmidecode -t memory | grep -i speed

Résultat:

Speed: 2666 MT/s
Configured Memory Speed: 2666 MT/s

Au niveau des disques, changement également: nous avions 2 × 2TB Soft RAID avec des disques durs classiques et maintenant on passe sur 2 × 960GB SSD NVMe Soft RAID.

Système d’exploitation

On reste sous Ubuntu Server, qui est vraiment agréable à utiliser et configurer. J’ai été surpris de voir que lorsqu’on installe Ubuntu Server 22.04 de rien, il crée un utilisateur par défaut, qui n’est pas root. C’est plutôt bien, mais ce n’était pas le cas avec Ubuntu Server 18.04 (root était alors le seul utilisateur créé lors de l’installation).

C’est bien au quotidien, pour la migration, il a fallu pas mal changer les commandes rsync toutefois.

Migration d’Orion à Apollo

La migration s’est bien déroulée. D’ailleurs, si vous pouvez lire cet article, c’est que le site est bien servi par Apollo.

Outre les fichiers et les bases de données, c’est aussi tout le serveur email qui a été entièrement recréé.

La bonne nouvelle, c’est que c’est plus simple que ce j’avais fait la première fois avec Postfix et Courier. La moins bonne nouvelle, c’est que cela prend un temps fou parce qu’il y a environ une quinzaine de fichiers à éditer constamment pour que tout soit parfait.

Bonus du serveur email: il est mieux configuré que le précédent, avec une configuration plus simple mais mieux sécurisée, et toujours avec DNSSEC et DANE.

J’ai écrit pas mal de scripts bash pour automatiser certaines installations dans le cadre d’une future migration. On en reparle bientôt!