Migrer un cluster postgresql

Sur le nouveau serveur, installer postgresql en téléchargeant la clé du serveur ad hoc dans /etc/apt/keyrings:

# wget https://www.postgresql.org/media/keys/ACCC4CF8.asc

On ajoute ensuite un fichier pdpg.list dans /etc/apt/sources.list.d avec ceci:

deb [signed-by=/etc/apt/keyrings/AC-------.asc] https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main

On installe ensuite la version postgresql de l'ancien serveur :

# apt update # apt install postgresql-15

On change le fichier /etc/postgresql/15/main/postgresql.conf:

listen_addresses = '*'

Et le fichier /etc/postgresql/15/main/pg_hba.conf en ajoutant:

host all all 127.0.0.1 md5 host all all 192.168.0.1/25 md5

On redémarre le service:

# systemctl restart postgresql

On se connecte avec le compte postgres:

# su postgres

On télécharge le dump fait au préalable avec pg_dumpall > fichier.dmp et on rétablit la base:

$ psql < fichier.dmp $ exit

On installe ensuite le nouveau cluster :

# apt install postgresql-16

Pour lister les cluster :

# pg_lsclusters

On supprime la nouvelle version du cluster:

# pg_dropcluster 16 main --stop

On upgrade la version précédente:

# pg_upgradecluster 15 main

Le nouveau cluster est en vert, on peut supprimer l'ancien:

# pg_dropcluster 15 main

Et on désintalle l'ancienne version :

# apt purge postgresql-15 postgresql-client-15

Migrer un cluster postgresql

Virer les locales inutiles

Voici la liste des locales à virer lors d'une installation toute neuve :

libreoffice-help-ca libreoffice-help-cs libreoffice-help-da libreoffice-help-de libreoffice-help-dz libreoffice-help-el libreoffice-help-en-gb libreoffice-help-en-us libreoffice-help-es libreoffice-help-et libreoffice-help-eu libreoffice-help-fi libreoffice-help-gl libreoffice-help-hi libreoffice-help-hu libreoffice-help-it libreoffice-help-ja libreoffice-help-km libreoffice-help-ko libreoffice-help-nl libreoffice-help-pl libreoffice-help-pt libreoffice-help-ru libreoffice-help-sk libreoffice-help-sl libreoffice-help-sv libreoffice-help-zh-cn libreoffice-help-zh-tw libreoffice-l10n-ar libreoffice-l10n-ast libreoffice-l10n-be libreoffice-l10n-bg libreoffice-l10n-bn libreoffice-l10n-bs libreoffice-l10n-ca libreoffice-l10n-cs libreoffice-l10n-cy libreoffice-l10n-da libreoffice-l10n-de libreoffice-l10n-dz libreoffice-l10n-el libreoffice-l10n-en-gb libreoffice-l10n-en-za libreoffice-l10n-eo libreoffice-l10n-es libreoffice-l10n-et libreoffice-l10n-eu libreoffice-l10n-fa libreoffice-l10n-fi libreoffice-l10n-ga libreoffice-l10n-gl libreoffice-l10n-gu libreoffice-l10n-he libreoffice-l10n-hi libreoffice-l10n-hr libreoffice-l10n-hu libreoffice-l10n-id libreoffice-l10n-is libreoffice-l10n-it libreoffice-l10n-ja libreoffice-l10n-ka libreoffice-l10n-km libreoffice-l10n-ko libreoffice-l10n-lt libreoffice-l10n-lv libreoffice-l10n-mk libreoffice-l10n-ml libreoffice-l10n-mr libreoffice-l10n-nb libreoffice-l10n-ne libreoffice-l10n-nl libreoffice-l10n-nn libreoffice-l10n-pa-in libreoffice-l10n-pl libreoffice-l10n-pt libreoffice-l10n-pt-br libreoffice-l10n-ro libreoffice-l10n-ru libreoffice-l10n-si libreoffice-l10n-sk libreoffice-l10n-sl libreoffice-l10n-sr libreoffice-l10n-sv libreoffice-l10n-ta libreoffice-l10n-te libreoffice-l10n-th libreoffice-l10n-tr libreoffice-l10n-ug libreoffice-l10n-uk libreoffice-l10n-vi libreoffice-l10n-xh libreoffice-l10n-zh-cn libreoffice-l10n-zh-tw firefox-esr-l10n-ar firefox-esr-l10n-ast firefox-esr-l10n-be firefox-esr-l10n-bg firefox-esr-l10n-bn firefox-esr-l10n-bs firefox-esr-l10n-ca firefox-esr-l10n-cs firefox-esr-l10n-cy firefox-esr-l10n-da firefox-esr-l10n-de firefox-esr-l10n-el firefox-esr-l10n-en-gb firefox-esr-l10n-eo firefox-esr-l10n-es-ar firefox-esr-l10n-es-cl firefox-esr-l10n-es-es firefox-esr-l10n-es-mx firefox-esr-l10n-et firefox-esr-l10n-eu firefox-esr-l10n-fa firefox-esr-l10n-fi firefox-esr-l10n-ga-ie firefox-esr-l10n-gl firefox-esr-l10n-gu-in firefox-esr-l10n-he firefox-esr-l10n-hi-in firefox-esr-l10n-hr firefox-esr-l10n-hu firefox-esr-l10n-id firefox-esr-l10n-is firefox-esr-l10n-it firefox-esr-l10n-ja firefox-esr-l10n-kk firefox-esr-l10n-km firefox-esr-l10n-kn firefox-esr-l10n-ko firefox-esr-l10n-lt firefox-esr-l10n-lv firefox-esr-l10n-mk firefox-esr-l10n-mr firefox-esr-l10n-nb-no firefox-esr-l10n-ne-np firefox-esr-l10n-nl firefox-esr-l10n-nn-no firefox-esr-l10n-pa-in firefox-esr-l10n-pl firefox-esr-l10n-pt-br firefox-esr-l10n-pt-pt firefox-esr-l10n-ro firefox-esr-l10n-ru firefox-esr-l10n-si firefox-esr-l10n-sk firefox-esr-l10n-sl firefox-esr-l10n-sq firefox-esr-l10n-sr firefox-esr-l10n-sv-se firefox-esr-l10n-ta firefox-esr-l10n-te firefox-esr-l10n-th firefox-esr-l10n-tr firefox-esr-l10n-uk firefox-esr-l10n-vi firefox-esr-l10n-zh-cn firefox-esr-l10n-zh-tw

188 paquets dégageront. Ensuite un

# apt autoremove

supprimera 43 autres paquets. Pas rien.

Virer les locales inutiles

Script de décalage des sous-titres dans un fichier srt

#! /bin/bash

IFS=$'\n'
option_F_found=0
option_T_found=0

usage()
{
echo "usage: ./subtitles.sh -f [srt file] -t '[+/- time]'"
echo "ex : ./subtitles.sh -f /home/std/lecuisinierlevoleursafemmeetsonamant.srt -t '- 18.100'"
echo "ex : ./subtitles.sh -f /home/std/lecuisinierlevoleursafemmeetsonamant.srt -t '+ 18.100'"
echo ""
exit 3
}

while getopts f:t: OPTNAME; do
case "$OPTNAME" in
f)
FILE="$OPTARG"
option_F_found=1
;;

t)
TIME="$OPTARG"
option_T_found=1
;;

*)
usage
;;
esac
done

if [ "$option_F_found" -eq "0" ] || [ "$option_T_found" -eq "0" ]; then
usage
fi

FunctionDuration()
{
duration_temp=$(date -d "1983-12-12 $1" "+%s.%3N")
duration_diff=$(echo "scale=3; $duration_temp $TIME" | bc -l)
duration_dest=$(date -d"@$duration_diff" "+%H:%M:%S,%3N")
echo "$duration_dest"
}

for i in $(grep -E "[0-9]{2}:[0-9]{2}\,[0-9]{3}" "$FILE");
do
A=$(echo "$i" | sed 's/\([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\,[0-9]\{3\}\) --> \([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\,[0-9]\{3\}\)/\1/')
B=$(echo "$i" | sed 's/\([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\,[0-9]\{3\}\) --> \([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\,[0-9]\{3\}\)/\2/')
VAL1=$(FunctionDuration "$A")
VAL2=$(FunctionDuration "$B")
echo "working on $A --> $B"
sed -i "s/$i/$VAL1 --> $VAL2/" "$FILE"
done

Script de décalage des sous-titres dans un fichier srt

Ripper un DVD

Le seul préalable :

# apt install ffmpeg

Tout d'abord, on concatène les fichiers VOB qui nous intéresse après avoir monter le DVD :

# mount /dev/sr0 /mnt

$ cat /mnt/VIDEO_TS/VTS_01_1.VOB /mnt/VIDEO_TS/VTS_01_2.VOB /mnt/VIDEO_TS/VTS_01_3.VOB /mnt/VIDEO_TS/VTS_01_4.VOB > /home/user/Vidéos/monfilm.VOB

On repère les flux vidéos (généralement le 1), audios et sous-titres :

$ ffmpeg -i monfilm.VOB

Le flux vidéo est généralement le premier, on repère ensuite les flux audio et le flux de sous-titre si besoin. Ici, on suppose que l flux video est 0:1, les flux audios 0:10 (cantonnais) et 0:11 (français). Le flux sous-titre est le 0:3.

On encode ainsi :

$ ffmpeg -i monfilm.VOB -map 0:1 -map 0:10 -map 0:11 -map 0:3 -c:v libx264 -preset slow -crf 16 -c:a copy -c:s copy -metadata:s:a:0 language=yue -metadata:s:a:1 language=fra -metadata:s:s:0 language=fra mon_film.mp4

-map 0:1 donne l'ordre des flux de la future vidéo. Le premier flux sera la vidéo (flux 0:1 du DVD), le deuxième sera l'audio en cantonnais (flux 0:10) puis l'audio en français (0:11) et enfin les sous-titres (0:3).

-c:v libx264 : le codec vidéo sera h264

-c:a copy : on copie le flux audio

-c:s copy : on copie le flux de sous-titres

-preset veryslow : vitesse d'encodage, inversement proportionnelle à la qualité de l'image. Les options sont : ultrafast, superfast, fast, medium, slow, slower, veryslow. Medium est le réglage par défaut.

-crf : définit le niveau de qualité (q). L'échelle va de 0 à 51 (petit nombre = + de temps de calcul)

-metadata:s:a:0 : définit la metadata du flux audio 0 (a:0) avec language =yue (cantonnais), même chose pour le a:1 en français

-metadata:s:s:0 définit la langue des sous-titres (français)

Puis, en dernier, le nom du fichier en sortie.

Une alternative pour encoder en bitrate variable et en deux passes :

ffmpeg -i input.VOB -c:v libx264 -b:v 2000k -pass 1 -an -f null /dev/null && ffmpeg -i input.VOB -c:v libx264 -b:v 2000k -pass 2 -c:a aac-b:a 128k c:s copy output.mp4

En cas d'erreur, remplacer -na par -vsync cfr

La doc complète : https://ffmpeg.org/documentation.html dont le wiki : https://trac.ffmpeg.org/

Une autre doc : https://forum.hardware.fr/hfr/VideoSon/Traitement-Video/encodage-ffmpeg-dummies-sujet_154546_1.htm

Ripper un DVD

Encodage de sous-titres (Handbrake défaillant)

Sur ubuntu :

apt install ffmpeg ogmrip tesseract-ocr tesseract-ocr-fra subtitleeditor

Disposer des infos avec ffmpeg :

ffmpeg -i VTS_01_1.VOB

Récupérer les .idx et .sub pour le titre 1:

mencoder dvd://1 -nosound -ovc frameno -o /dev/null -vobsuboutindex 0 -sid 0 -vobsubout nom_du_fichier

Le sid est la piste à lire, elle sera passée en sid 0 par l'instruction vobsuboutindex.
Script d'ocr (Tesseract.sh) à placer dans le dossier (le paquet tesseract-ocr-fra est nécessaire):

#!/bin/bash

NPROC=$(nproc --all| awk '{ print $1 - 1 }') # Set number of processor
for fichier in *.tif
do
(
echo "$fichier"
tesseract "$fichier" "$fichier" -l fra --psm 6 &>/dev/null
) &
if [[ $(jobs -r -p | wc -l) -gt $NPROC ]]; then
wait -n
fi
done
wait

Création des fichiers tiff et du xml indexé :

subp2tiff --sid=0 -n nom_du_fichier

On lance le script qui va océriser les fichiers:

./Tesseract.sh

C'est long.

On assemble les fichiers txt et l'index xml :

subptools -s -w -t srt -i nom_du_fichier.xml -o nom_du_fichier.srt

Normalement, le tour est joué.

Encodage de sous-titres (Handbrake défaillant)

EFI sur HP 650 G1

Une galère ! Il a fallu en venir aux mains.

Après une installation et un boot via le fichier EFI via le menu de démarrage, faire ceci :

# cd /boot/efi/EFI

# mv BOOT BOOT_bak

# cp -R debian BOOT

# cd BOOT

# mv shimx64.efi bootx64.efi

HP KO technique

EFI sur HP 650 G1

Transmission qui se ferme tout seul

C'est un bug de la version française.

Une solution : changer la langue dans le lanceur.

Pour cela, il faut éditer le fichier /usr/share/applications/transmission-gtk.desktop en changeant cette ligne :

Exec=transmission-gtk %U

en

Exec=sh -c 'LANG=C transmission-gtk %U'

J'ai ensuite copié ce fichier à côté en le nommant transmission-gtk.desktop.debug pour qu'il soit prêt à l'emploi à la prochaine mise à jour.

Transmission qui se ferme tout seul

Ajouter un lanceur dans le menu XFCE

Comme on l'a vu, les lanceurs du menu se trouvent dans /usr/share/applications.

Pour ajouter un lanceur dans ce menu, on crée un lanceur à partir d'un clic droit sur le bureau. On le configure à volonté puis on fait un clic droit sur ce lanceur, on l'ouvre avec Mousepad et on ajoute une ligne Categories=

et au choix, par exemple :

  • Utility; (pour les accessoires)
  • Office; (pour bureautique)
  • Education; (pour education)
  • Graphics; (pour graphisme)
  • Network; (pour internet)
  • Game; (pour jeux)
  • Video; (pour multimedia)
  • System; (pour système)

Puis on le déplace dans /usr/share/applications.

Ajouter un lanceur dans le menu XFCE

Chroot

Pour mémoire :

# mount /dev/sdc3 /mnt
# mount /dev/sdc4 /mnt/var
# mount /dev/sda1 /mnt/home
# mount --bind /dev /mnt/dev
# mount -t proc /proc /mnt/proc
# mount -t sysfs /sys /mnt/sys
# chroot /mnt /bin/bash

Et une fois terminé :

# exit
# umount /mnt/sys
# umount /mnt/proc
# umount /mnt/dev
# umount /mnt/home
# umount /mnt/var
# umount /mnt

Chroot

Créer un certificat Let's Encrypt (sur ubuntu)

Sur le serveur qui accueille le nom de domaine (pas forcément le site) :

# apt install snapd

ou pour vérifier que snapd està jour :

# snap install core; snap refresh core

Pour enlever l'ancien certbot :

# snap remove certbot

Pour installer certbot :

# snap install --classic certbot

Préparation de la commande :

# ln -s /snp/bin/certbot /usr/bin/certbot

Choisir comment utiliser certbot :
cette première option modifie directement la config apache pour utiliser le https (déconseillé pour un multisite)

# certbot --apache

la seconde option pour n'obtenir que le certificat :

# certbot certonly --apache -d nomdedomaine

Renouvellement du certificat après avoir stopper apache :

# certbot renew

Pour intégrer le certificat au VirtualHost :

SSLEngine on
SSLCertificateFile /etc/ssl/tartux.net/fullchain.pem
SSLCertificateKeyFile /etc/ssl/tartux.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

Créer un certificat Let's Encrypt (sur ubuntu)

Routage avec une debian

Je veux me créer un petit réseau pour faire mes geekeries. Je choisis 192.168.10.0/26. 62 adresses, ça devrait suffire.

Je créé ma passerelle debian avec ses deux cartes réseau :

IP1: 192.168.1.180 côté box orange (192.168.1.1/24) -> eth0

IP2: 192.168.10.193 côté mon nouveau réseau. -> eth1

D'abord, je configure le transit des flux dans /etc/sysctl.conf :

net.ipv4.ip_forward=1

Avec iptables, on ajoute du nat pour protéger mon nouveau réseau, ainsi tous les paquets sembleront venir de la passerelle.

# iptables -t nat -A POSTROUTING eth0 -j MASQUERADE

Puis on ajoute la communication dans les deux sens :

# iptables -A FORWARD -i eth1 -o eth0 -m state RELATED, ESTABLISHED -j ACCEPT

# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

On sauvegarde les règles :

# iptables-save > /etc/iptables_rules.save

Enfin, pour appliquer les règles au démarrage, dans /etc/network/interfaces, on ajoute :

post-up iptables-restore < /etc/iptables_rules.save

Au cas où, pour lire la règle nat : iptables -L -t nat

Pour accéder au nouveau réseau depuis une machine du réseau box, il faut lui ajouter une route statique :

# route add -net 192.168.10.192 netmask 255.255.255.192 gw 192.168.1.180

Magique.

Routage avec une debian

Installer phppgadmin

# apt install phppgadmin

Il faut changer la conf, dans /etc/apache2/conf-available, il faut retirer Require local et remplacer par :

Allow from all

Ensuite on relance apache

# systemctl restart apache2

Dans le fichier /etc/phppgadmin/config.inc.php, changer les lignes :

$conf['servers'][0]['host'] = '127.0.0.1';


$conf['extra_login_security'] = false;

Dans le fichier /etc/postgresql/12/main/pg_hba.conf, ajouter une ligne :

host all all 192.168.1.0/24 md5

Bien respecter les tabulations.


Changer le mot de passe de la base postgres :

# su postgres

$ psql

=# \password postgres

On relance ensuite les services

# systemctl restart postgresql

# systemctl restart apache2

Et voilà, on peut se connecter en postgres sur phppgadmin.

Installer phppgadmin

Scanner son réseau

Un simple paquet à installer : nmap puis

# nmap 172.26.0.1/24

Et la réponse :

Nmap scan report for desktop-kfn0up5.home (172.26.0.2)
Host is up (0.00063s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
2968/tcp open enpp
5357/tcp open wsdapi
MAC Address: 70:85:C2:4F:76:CB (ASRock Incorporation)

Nmap scan report for pc-167.home (172.26.0.3)
Host is up (0.013s latency).
All 1000 scanned ports on pc-167.home (172.26.0.3) are filtered
MAC Address: 60:6B:FF:28:28:78 (Nintendo)

Nmap scan report for pcmltvwhd94.home (172.26.0.9)
Host is up (0.00036s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
8080/tcp open http-proxy
8443/tcp open https-alt
9080/tcp closed glrpc
MAC Address: F0:81:75:56:99:0C (Sagemcom Broadband SAS)

Nmap done: 256 IP addresses (3 hosts up) scanned in 13.91 seconds

C'est beau.

Scanner son réseau

Begin: Running /scripts/local-block ... done

Et cette ligne se répète en boucle jusqu'à ce qu'on en ait marre de la voir.
Il faut tout d'abord récupérer l'UUID du swap

# blkid
...
/dev/sdc5: UUID="2d04d22f-0c7c-4dcd-a47c-8aab486354a6" TYPE="swap" PARTUUID="4be8ee61-05"
...

Dans le fichier /etc/initramfs-tools/conf.d/resume, écrire le bon UUID :

RESUME=UUID=2d04d22f-0c7c-4dcd-a47c-8aab486354a6

enfin faire la commande :

update-initramfs -u

et rebooter.

Begin: Running /scripts/local-block ... done

Installer une clé ssh pour lancer rsync sans mot de passe

Il faut d'abord savoir quelle machine va lancer la sauvegarde. Pour s'affranchir du problème des droits, c'est la machine qui sera sauvegardée qui lancera le backup. Elle sera appelé serveur par la suite et la machine recevant le backup sera appelé client.

Il faut donc installer le paquet openssh-server sur le serveur.

apt-get update
apt-get install openssh-server

On génère une paire de clé sur cette machine (celle qui va se connecter en ssh) avec l'utilsateur qui lancera la sauvegarde (dans mon cas, ce sera l'utilisateur root qui la lancera par une tâche cron) :

ssh-keygen -t ed25519

Un petit temps s'écoule.

On répond (par défaut ou pas) à la question sur le nom du fichier.

On a ensuite la question de la passphrase. Comme on veut se connecter sans mot de passe, on ne répond rien (on tape sur Entrée). On confirme. Et voilà, la clé ED25519 est créée.

Où ça ? C'est écrit :

Your identification has been saved in id_ed25519.
Your public key has been saved in /home/papadakis/.ssh/id_ed25519.

Là où vous l'avez mis, puisque vous n'avez pas mis de chemin lors de la question du fichier !

On copie la clé publique sur l'hôte client :

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 1234 login@client.net

Il suffit de suivre les conseils pour vérifier que tout s'est bien déroulé :

Now try logging into the machine, with "ssh -p '1234' 'login@serveur.net'", and check to make sure that only the key(s) you wanted were added.

On peut maintenant configurer une tâche cron qui ne réclamera pas de mot de passe.

Installer une clé ssh pour lancer rsync sans mot de passe

Upgrader le cluster postgresql

D'abord, installer les nouvelles versions :

# apt install postgresl-9.5 postgresql-client-9.5

Cette installation crée un cluster 9.5 qu'il faut supprimer :

# pg_dropcluster --stop 9.5 main

Ensuite, upgrader le cluster

#pg_upgradecluster 9.4 main

Et voilà. L'ancien cluster est encore là, une fois le cluster vérifié, on peut l'effacer :

# pg_dropcluster --stop 9.4 main

Terminé !

Upgrader le cluster postgresql

Flashplugin non-free ne fonctionne pas

Flashplugin-nonfree est installé mais flash ne fonctionne pas dans iceweasel.

La commande :

update-flashplugin-nonfree --status

renvoie

Flash Player version installed on this system :
Flash Player version available on upstream site:
ERROR: failed to get upstream version More information might be available at:
http://wiki.debian.org/FlashPlayer
update-alternatives: error: no alternatives for flash-mozilla.s

Il faut reconfigurer l'alternative avec :

update-flashplugin-nonfree --install --verbose

Et voilà !

Flashplugin non-free ne fonctionne pas

Reset du mot de passe debian-sys-maint

Dans le cas où on rencontre l'erreur :

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

Il faut remettre à jour le mot de passe de l'utilisateur MySQL "debian-sys-maint" avec la procédure suivante :

grep password /etc/mysql/debian.cnf

service mysql stop
nohup mysqld_safe --skip-grant-tables &

Entrer dans la console mysql et connecter la base "mysql" :

mysql -u root -p mysql

Dans la console MySQL :

UPDATE user SET Password=PASSWORD('MOT_DE_PASSE_RECUPERE_AVEC_GREP') WHERE User='debian-sys-maint';
FLUSH PRIVILEGES;

Remplacer "MOT_DE_PASSE_RECUPERE_AVEC_GREP" par celui affiché par la commande 'grep' tapée au début. Penser à laisser les simples quotes ' .

Control+d pour quitter mysql

killall mysqld
service mysql start

Reset du mot de passe debian-sys-maint

Groupes et utilisateurs

Modification du groupe primaire d'un utilisateur :

Pour que le groupe primaire de papadakis soit admin :

# usermod -g admin papadakis

Ajout d'un groupe à un utilisateur existant

# usermod -a -G ftpusers papadakis

Ajout d'un nouvel utilisateur à un groupe primaire

# useradd -g admin valere

Ajout d'un nouvel utilisateur à un groupe secondaire

# useradd -G ftpusers valere

plusieurs groupes sont possibles :

# useradd -G sshusers,ftpusers valere

La commande groups récapitule tous les groupes

# groups papadakis
papadakis : papadakis admin sshusers ftpusers

Groupes et utilisateurs

exim4

Etant chez orange, la configuration d'un serveur mel n'est pas à l'ordre du jour (port 25 bloqué). Pour l'instant, j'utilise, pour administrer mes machines, exim4.

Je m'en sers via orange pour l'instant, donc voici la config que j'utilise (/etc/exim4/update-exim4.conf.conf) :

dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost='mondomaine.net'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.orange.fr'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

Ne pas oublier le mot de passe du compte orange dans le /etc/exim4/passwd.client :

smtp.orange.fr:monadresse@orange.fr:monmotdepasse

dpkg-reconfigure

 

Pour envoyer tous les mels bloqués une fois que la config fonctionne :

exim -qff

 

exim4

Virtual Richard M. Stallman

Le paquet vrms permet de lister les paquets propriétaires.

Bilan pour ma machine : 27 paquets, principalement du nvidia, du flash, virtualbox et ... unrar que j'ai dû utiliser une fois ou deux pour un fichier.

Sur mon pi, il y a 8 paquets proprio (natifs de raspbian).

Par contre, sur mon serveur web et sur mon serveur samba-bdd, c'est une victoire !

No non-free or contrib packages installed on tartux! rms would be proud.

En passant

awk

awk permet d'extraire des motifs qui sont ordonnés sous forme de champs.

awk '{print $NF}' expression

renvoie le dernier champ de l'expression

awk '{print $1,$5} fichier

renvoie le premier et le cinquième champ des lignes d'un fichier de log (par exemple)

awk 'lenght($0)>75 {print}' fichier

renvoie les lignes de plus de 75 caractères.

En passant

Changer son navigateur par défaut en ligne de commande

Je me suis posé cette question suite à un bug de chromium que j'ai reporté.

Tout d'abord, pour savoir quel est le navigateur par défaut et les navigateurs installés :

 #update-alternatives --config x-www-browser

La réponse chez moi est :

Il existe 3 choix pour l'alternative x-www-browser (qui fournit /usr/bin/x-www-browser).

Sélection Chemin Priorité État
------------------------------------------------------------
* 0 /usr/bin/iceweasel 70 mode automatique
1 /usr/bin/chromium 40 mode manuel
2 /usr/bin/dwb 50 mode manuel
3 /usr/bin/iceweasel 70 mode manuel

J'ai ensuite une question :

Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :

Je laisse l'entrée telle qu'elle est mais je vais changer la priorité de dwb et la passer à 90 :

#update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/dwb 90

Et voilà !

Changer son navigateur par défaut en ligne de commande

Rendre le tableau de bord XFCE transparent

Il faut d'abord activer le compositeur du peaufinage des fenêtres

Applications -> Paramètres -> Peaufinage des fenêtres -> Onglet compositeur

On peut en profiter pour régler les options de transparence des fenêtres.

Puis Clic droit sur le tableau de bord :

Tableau de bord -> Préférences du tableau de bord -> Onglet apparence

On règle l'opacité à 0 et le tour est joué !

Rendre le tableau de bord XFCE transparent

Installer un miroir local

Autant commencer par le serveur apache vu que c'est lui qui, au final, travaillera le plus.

Donc un serveur apache fonctionnel, je reviendrai sur la configuration du VirtualHost.

J'essaye avec mon user mais pour bien faire, il faudrait un utilisateur sans pouvoir et sans home:

#adduser --home=/pub/mirror --no-create-home --disabled-password mirror

On installe git si ça n'est pas fait :

#apt install git

puis :

git clone https://salsa.debian.org/mirror-team/archvsync.git /home/mirror

On change les droits de /home/mirror :

#chown -R user:user /home/mirror

On va dans /home/mirror/etc et on copie l'exemple de config de ftpsync :

cp ftpsync.conf.sample ftpsync-main.conf

puis on edite et/ou décommente les lignes suivantes de cette façon :

MIRRORNAME="mirror.tartux.net"
TO="/home/mirror/debian/"
RSYNC_PATH="debian"
RSYNC_HOST="ftp.fr.debian.org"
MAILTO="user"
ERRORSONLY="true"
FULLLOGS="true"
EXCLUDE=""
ARCH_EXCLUDE="alpha arm arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc ppc64el s390 s390x sh sparc"
LOGROTATE=14
LOCK="${TO}/Archive-Update-in-Progress-debian-${MIRRORNAME}"
RSYNC_OPTIONS1="--exclude=Packages* --exclude=Sources* --exclude=Release* --exclude=InRelease --exclude=i18n/* --exclude=ls-lR*"
#RSYNC_OPTIONS2="--max-delete=40000 --delay-updates --delete --delete-after --delete-excluded"

La ligne RSYNC_OPTIONS2 est à décommenter à la seconde passe, de même, j'ai commenté la ligne  RSYNC_OPTIONS1 avant cette passe.

On lance ensuite la commande

/home/mirror/bin/ftpsync sync:archive:main

Je n'ai pas réussi à scinder squeeze, wheezy et jessie (oldstable, stable et testing). Les dépôts Sid et experimental sont là également. Il faut compter une quarantaine d'heure (avec 1 Go de RAM) de téléchargement et environ 310 Go pour les dépôts principaux debian, debian-update, debian-proposed-updates et debian-backports.

Pour security.debian.org, une vingtaine de Go et 2h30 de téléchargement, le module est debian-security (RSYNC_PATH).

Pour deb-multimedia.org, le module s'appelle deb, le dépôt fait 5 Go soit 40 minutes de téléchargement.

 Serveur apache :

la configuration apache que j'ai mise est celle-ci:

<VirtualHost *:80>
ServeurName mirror.tartux.net
DocumentRoot /home/mirror
<Directory /home/mirror>
Options +Indexes +SymlinksIfOwnerMatch
IndexOptions NameWidth=* +SuppressDescription
#?AllowOverride none
Require all granted
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Un redémarrage apache et le miroir est fonctionnel.

Reste le sources.list à configurer :

deb http://mirror.tartux.net jessie main contrib non-free
deb-src http://mirror.tartux.net jessie main contrib non-free

Et le cron à écrire, les dépôts sont mis à jour toutes les 6 heures chez Debian, je décale le tout d'une heure :

30 4/6 * * * /home/user/Git/bin/ftpsync sync:archive:security
0 4/6 * * * /home/user/Git/bin/ftpsync sync:archive:debian

Je ne vois rien à ajouter mais on ne sait jamais !

Installer un miroir local

déplacer son /home

Opération dangereuse mais pas insurmontable.

D'abord monté la partition du futur home. Généralement, on connait la taille de ses disques et la façon dont on a partitionné tout cela (ext4, fat, ... ntfs). On lance donc un

#fdisk -l

qui nous donne (par exemple) :

Disque /dev/sda : 30 GiB, 32212254720 octets, 62914560 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x1fdc3df3

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 63 26764289 26764227 12,8G 83 Linux
/dev/sda2 60264446 62912511 2648066 1,3G 5 Extended
/dev/sda3 26765312 60262399 33497088 16G 83 Linux
/dev/sda5 60264448 62912511 2648064 1,3G 82 Linux swap / Solaris
Les entrées de la table de partitions ne sont pas dans l'ordre du disque.

Disque /dev/sdb : 30 GiB, 32212254720 octets, 62914560 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x65fa85d7

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 62914559 62912512 30G 83 Linux

J'ai donc deux partitions sur sda et une sur sdb.
Mon système entier se trouve sur sda1.

Je voudrais transféré mon home sur sda3.

Je monte ma partition sda3 sur un emplacement voué à disparaître, par exemple sur /mnt/FuturHome

#mkdir /mnt/FuturHome
#mount /dev/sda3 /mnt/FuturHome

Je copie ensuite le contenu de mon home sur FuturHome :

#cp -Rd /home/* /mnt/FuturHome

Le R majuscule est important car c'est grâce à lui que les fichiers spéciaux sont copiés.
Le d copie les liens symboliques, pas les cibles.

On redonne les droits propriétaires à chaque utilisateur (un seul pour moi) :

#chown -R login:login /mnt/FuturHome/login

Une fois ceci fait, on va démonter le disque sda3.

#umount /dev/sda3

On va rechercher l'uuid du disque sur lequel on a copié le home.

#blkid

répond :

/dev/sda1: UUID="9ee57f33-ba76-4c1a-a604-25502bb249a8" TYPE="ext4" PARTUUID="1fdc3df3-01"
/dev/sda3: UUID="33c348c8-3c8e-4849-b18b-0d474aa749e2" TYPE="ext4" PARTUUID="1fdc3df3-03"
/dev/sda5: UUID="86f7966b-2b32-4c40-a358-b99d3470d915" TYPE="swap" PARTUUID="1fdc3df3-05"
/dev/sdb1: UUID="f9686e1a-227a-40da-a02e-6089bebb8093" TYPE="ext4" PARTUUID="65fa85d7-01"

On va maintenant écrire dans le /etc/fstab de charger le /dev/sda3 comme point de montage /home au démarrage :

#nano /etc/fstab

On ajoute :

UUID=33c348c8-3c8e-4849-b18b-0d474aa749e2  /home        ext4         defaults        0         2

L'opération devenant délicate, on s'assure de pouvoir lancer une session en root, donc on désactive l'autologin si on en a un (dans /etc/slim.conf pour moi).

On se place à la racine et on renomme le /home et le :

#cd /
#mv /home /hum

enfin, le tant attendu

#reboot

reste à supprimer le /hum.

 

déplacer son /home

Commencer à vivre avec OpenBox

Sur une install fraîche de Debian, sans environnement de bureau bien sûr, on commence par installer le serveur X :

#apt-get install xorg

(utilité de mesa-utils à préciser)

openbox et menu :

#apt-get install openbox menu

On installe ensuite un gestionnaire de session

#apt-get install slim

Un reboot ou un startx et tout va bien.

Pour avoir un fond d'écran

#apt-get install feh

Et pour avoir un fond d'écran aléatoire à chaque démarrage, on ajoute un fichier autostart dans ~/.config/openbox avec cette ligne :

feh --bg-scale -z -r ~/repertoire-image/ &

ou tout le temps la même image :

feh --bg-scale ~/repertoire-image/image &

Pour configurer le terminal, créer un fichier ~/.Xresources avec, par exemple :

UXTerm*background:          black
UXTerm*foreground:          white
UXTerm*cursorColor:         grey
UXTerm*faceName:            Deja Vu Sans Book
UXTerm*faceSize:            10
UXTerm*VT100*geometry:      75x20

 

Commencer à vivre avec OpenBox

Installer un serveur apache rapidement

Il est pratique de tester/créer un site internet en local, pour cela, un serveur apache est nécessaire. Voici l'install à minima qui permettra de créer son site avec la plupart des CMS.

(Tout cela se fait en root bien sûr)

Il suffit d'installer les paquets :

#apt-get install apache2 apache2-utils php5 mysql-server php5-mysql

Ici, si on teste dans un navigateur l'adresse http://localhost ou http://127.0.0.1, on arrive à la page par défaut d'apache.

On peut y ajouter :

#apt-get install phpmyadmin

On va ensuite copier le fichier /etc/apache2/sites-avalaible/000-default.conf dans un fichier du nom de son choix au même endroit pour le modifier:

#cd /etc/apache2/sites-available
#cp 000-default.conf monsite.conf
#nano monsite.conf

On le modifie ainsi :

<VirtualHost *:80>
ServerName monsite.home
DocumentRoot /var/www/html/monsite     #  L'emplacement du futur site
ErrorLog /var/log/apache2/monsite-error.log     # Emplacement des logs erreurs
TransferLog /var/log/apache2/monsite-access.log     # Emplacement des logs d'accès
</VirtualHost>

On oublie pas de créer le répertoire que l'on vient d'appeler dans la config et de lui donner un propriétaire apache :

#mkdir /var/www/html/monsite
#chown www-data:www-data /var/www/html/monsite

On enclenche le site et on redémarre le service :

#a2ensite monsite

On édite le fichier /etc/hosts

#nano /etc/hosts

et on y ajoute cette ligne :

127.0.1.1       monsite.home       monsite

on relit les conf de network et apache

#service networking reload
#service apache2 reload

On lance http://monsite.home et on arrive sur une page index of / puisque le site est vide.

Le tour est joué !

Installer un serveur apache rapidement

Origine des paquets

Un petit script chopé sur Debian facile pour lister l'origine de tous les paquets installés.

#!/bin/bash
 
deblist="/var/cache/deblist"
temp_file="/tmp/policy"
 
update() {
if [ `id -u` -ne 0 ]; then echo "Vous devez être ROOT"; exit 1; fi
rm -f "$deblist" > /dev/null;
for i in `dpkg -l | grep ^ii | awk '{print $2}'` ; do
apt-cache policy $i > "$temp_file"
let j=`cat -n $temp_file | grep 100\ \/var\/lib\/dpkg\/status | awk '{print $1}$
echo "$i: `cat -n $temp_file | sed -n "$j"p | awk '{print $3" "$4" "$5" "$6}'`"$
done
rm -f "$temp_file" > /dev/null;
}
 
if [ ! -f $deblist ] && [ "$1" != "-u" ]; then
echo "Veuillez faire '`basename $0` -u' SVP";
exit 1;
fi
 
case $1 in
-h)
echo "Usage: `basename $0` -u : met à jour la base de donnée (root)"
echo " `basename $0` : affiche la base de donnée"
exit 0;
;;
-u)
update
exit 0
;;
*)
cat "$deblist"
;;
esac

Cela m'a permis de m'apercevoir que les backports étaient inutiles pour ma config (pensant bêtement avoir installé des trucs exotiques).

Il faut le lancer en root puis aller le voir dans /var/cache/deblist

Origine des paquets

touch

Pour tester un script, j'ai eu besoin de changer la date d'un fichier, j'ai utilisé la commande touch.

Avec ses options :

-a pour donner au dernier accès l'heure actuelle

touch -a fichier

-m pour changer la date de modification à maintenant

touch -m fichier

-t utilise la date donnée en argument (au format ci dessous)

touch -t AAMMJJhhmm

-c ne crée pas de fichier si celui-ci n'existe pas (sinon c'est l'inverse)

touch -c fichier

-r utilise l'horodatage d'un autre fichier

touch -r modèle fichier

Je ne sais pas si je m'enresservirai un jour mais c'est noté.

touch

Désinstaller postgresql (méthode à revoir)

Je pique honteusement sur le web cette manip pour avoir une désinstall propre de postgresql :

sudo aptitude purge postgresql postgresql-common
sudo dpkg -P postgresql-9.4
 
sudo find / -name postgresql -exec rm -Rf {} \;
sudo find / -name pgsql -exec rm -Rf {} \;
sudo find / -name psql -exec rm -Rf {} \;
 
sudo userdel postgres

De là, à savoir ce qui tournait sous postgre avant de désintaller, faut pas exagérer !

Edit :

à l'usage, cela n'est pas si propre que cela, logwatch continue à chercher le service et il reste des paquets postgresql.

En passant

Ma conf (pas à jour)

Tout d'abord, mon fichier sources.list :

/etc/apt/sources.list
/etc/apt/sources.list

Pour ajouter le clé GPG de deb-multimedia :

#apt-get install deb-multimedia-keyring
#apt-get update

Et les paquets (liste exhaustive) que j'ai ensuite installé sur ma Debian 8 :

Bureau

  • xfce4
  • xfce4-goodies
  • xfce4-nots-plugin
  • slim

Administration - codage

  • synaptic
  • keepassx
  • ntpdate
  • openssh-server
  • clamav
  • clamav-daemon
  • geany
  • python3
  • python3-tk
  • apache2
  • php5
  • libapache2-mod-php5
  • mysql-server
  • php5-mysql
  • phpmyadmin
  • rsync
  • gparted
  • baobab
  • samba
  • reportbug
  • python-vte
  • python-gtkspell
  • python-glade2
  • unrar
  • unetbootin (permet de créer une clé USB bootable)
  • apt-show-versions (gestion des paquets)
  • gawk (ligne de commande GNU)

Internet

  • chromium
  • chromium-l10n
  • icedove
  • icedove-l10n-fr
  • filezilla
  • weechat
  • dwb

Bureautique

  • libreoffice
  • libreoffice-l10n-fr
  • mythes-fr
  • grisbi
  • gcalctool
  • evince

Images

  • gimp

Video

  • vlc
  • pepperflashplugin-nonfree
  • libdvdcss2
  • handbrake-gtk
  • avidemux

Son

  • alsa-base
  • alsa-tools
  • alsa-utils
  • audacity
  • clementine
  • easytag
  •  xfca
  • cdparanoia
  • cd-discid (encodage audio)
  • aacplusenc (encodage audio)
  • monkeys-audio (codec audio)
  • faac (codec audio)
  • shorten (encodage audio)
  • mp3check (codec audio)
  • liba52-0-7.4-dev
  • aacgain (encodage audio)

J'essaierai de mettre à jour au fur et à mesure des besoins.

Ajouts pour besoin :

  • python-dbus (pour script avec conky)
  • alsa-oss (pour enregistrer avec audacity)
  • pavucontrol (pour enregistrer avec audacity)
  • flashplugin-nonfree (pour dwb)
  • gstreamer1.0-plugins-{good,bad} (pour dwb)
  • gstreamer1.0-libav (pour dwb)
  • lshw (parce que)
  • nvidia-detect (carte graphique)
  • nvidia-driver (carte graphique)
  • ccze (coloration syntaxique des logs)
  • libnss-myhostname (suite à une erreur dans syslog)
  • gphoto2 (pour l'APN)
  • gtkam (interface graphique pour l'APN)
  • numlockx
État

Redémarrer ou éteindre avec XFCE4

Peut-être est-ce dû au fait que j'ai installé xfce à la mano en ligne de commande, il se trouve que lorsque je veux éteindre mon ordinateur, je clique sur cette magnifique porte :

exit

Et voilà ce que j'obtiens, impossible de quitter ou de redémarrer :

No choice

La réponse est simple et un peu déconcertante, on clique droit sur les boutons, puis propriétés :

menu

Nous arrivons sur un menu avec un choix cornélien :

Déconnexion ...

Voilà, c'est bien l'option déconnexion avec les ... qui font la différence qu'il faut sélectionner. (on en profite pour retirer l'autre bouton).

Ce coup ci :

Bouton éteindre

On peut redémarrer comme dans Windows !

Image

Grub rescue

Comme une poule devant un mégot face à cet invite plus qu'étrange, il m'aura tout de même fallu quelques années pour arriver à percer ce profond mystère qui se cache derrière une install ratée ou une installation de grub peu aboutie (la dernière en date pour moi, et sur une Debian neuve, qui plus est).

Voilà donc enfin l'article qui va vous sauver.

Tout commence par essayer de savoir ce que votre machine préférée a en tête. Pour cela, une seule commande :

>set

Ici, vous devriez avoir l'idée du disque sur lequel le boot essaye de se faire ainsi que le répertoire du grub introuvable. Voici le résultat chez moi :

cmdpath=(hd0)
prefix=(hd0)/boot/grub
root=(hd0)

Le hd0 correspond au disque /dev/sda renvoyé par un fdisk -l. hd1 correspond à /dev/sdb et ainsi de suite.

De toute évidence le boot ne se fait pas ici, il faut donc trouver où il se cache.

Pour visiter vos disques, une seule commande :

>ls

Ici, vous verrez non seulement les disques mais aussi les partitions.

Voici la réponse chez moi :

(hd0)   (hd0,msdos1)   (hd1)   (hd1,msdos1)   (hd2)   (hd2,msdos5)   (hd2,msdos6)   (hd2,msdos3)   (hd2,msdos2)   (hd2,msdos1)   (hd3)   (hd3,msdos1)

Je sais que c'est très parlant pour le novice donc j'explique :

Mes disques hd0, hd1 et hd3 contiennent une seule partition : msdos1, alors que mon disque hd2 contient 5 partitions msdos1,2,3,5 et 6. Pour mon cas il est facile de reconnaître le disque qui doit booter, c'est le 2. C'est celui que j'avais choisi pour installer mon système, je l'avais partitionné avant. Etant le seul à contenir plusieurs partitions, on le reconnait assez vite. Le problème se complique si on a plusieurs combinaisons avec des disques ayant le même nombre de partitions et même peut-être plusieurs systèmes linux. Dans ce cas, une solution s'impose, lancer un Live CD ou USB puis récupérer l'ordre de ses disques avec la commande fdisk -l.

Revenons au cas concret que j'expose. Etant conscient de ce que j'ai partitionné (c'est à dire, d'abord un swap puis ma partition racine), il est évident que ma partition de boot est la seconde du disque 2. Pour vérifier, on tape :

>ls (hd2,msdos2)/

Ah oui, j'oubliais, le clavier est en qwerty. Ça fait bizarre hein ! Alors rien que pour vous :

  • shift + 9 -> (
  • shift + 0 -> )
  • , -> m
  • ; -> ,

Quand on sait ça, c'est déjà plus rapide.

Par contre, pour faire le /, j'ai branché un clavier avec pavé numérique.

Voici la réponse du prompt :

home/  usr/  media/  opt/  srv/  bin/  lib/  vmliuz  boot/  mnt/  proc/  sys/  dev/  var/  run/  etc/  tmp/  initrd.img

Le répertoire boot est bien là, c'est la bonne nouvelle.

Petite parenthèse, lorsque je tape help, je devrais avoir la liste des commande. Pour une raison que je ne connais pas, voici ce que j'ai :

>help
unknown command 'help'

Etant donné que je suis sur le bon disque, je passe la commande suivante :

>set root=hd2,msdos2

>set prefix=(hd2,msdos2)/boot/grub

Le prompte me rend la main, je continue ma visite de la partition :

>ls (hd2,msdos2)/boot
vmlinuz-3.16.0-4-amd64  config-3.16.1-4-amd64  grub/  system.map-3.16.0-4-amd64  initrd.img-3.16.0-4-amd64

Le noyau compressé (vmlinuz) et le module de boot (initrd) sont bien là et je récupère leur nom exact.

Je vérifie la présence de fichiers dans grub :

>ls (hd2,msdos2)/boot/grub
unicode.pf2  i386-pc/  locale/  fonts/  grub.cfg  grubenv

On charge le module linux pour pouvoir lire le noyau :

>insmod linux

Si le insmod ne fonctionne pas, il suffit de lire le répertoire i386-pc :

>ls (hd2,msdos2)/boot/grub/i386-pc

Enfin les commandes finales (le sdc2 correspond au dh2,msdos2 comme vu plus haut) :

>linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/sdc2
>initrd /boot/initrd.img-3.16.0-4-amd64
>boot

Joie.

Grub rescue