Feuille de route d'installation de mon Serveur
Cette feuille de route (en cours d'écriture) a pour objectif l'installation d'un serveur avec le plus de fonctionnalités possibles, étape par étape.
![]() |
1. Pré-requis
Avoir un ordinateur qui fasse office de serveur (dans mon cas le nettop minix hd ici ).
Téléchargez ubuntu serveur ici (j'ai choisi la version 64 bit) et installez le (dans mon cas j'ai installé Lubuntu puis désactivé le lancement automatique de l'interface graphique cf Astuces). Si vous souhaitez accéder à votre serveur depuis un autre poste, lors de l'installation indiquez que vous souhaitez installer openssh.
Si vous êtes derrière un routeur, paramétrez le DHCP pour donner une adresse IP locale fixe à votre serveur en attribuant cette adresse IP à l'adresse MAC de votre serveur (de forme 00:00:00:00:00:00 que vous pouver connaitre en lançant la commande ifconfig).
Cela permet d'accèder à votre serveur en sachant son adresse IP locale et cela permettra les redirections de port plus tard.
Pour plus de sécurité placer votre serveur dans la DMZ (de cette manière s'il est compromis celà ne devrait pas mettre en danger le reste de votre réseau). Préparez l'accès depuis internet en créant un nom de domaine (gratuit sur venez.fr) : rediriger le nom de domaine vers votre adresse IP publique (elle doit être fixe comme c'est le cas chez free (il me semble qu'il y a des solutions si ce n'est pas le cas)).
Vous pouvez également Installez Fail2ban (pour empêcher les attanques "brute force") et phpmyadmin (pour accèder à la base de donnée mysql) avec la ligne de commande :
sudo apt-get install fail2ban phpmyadmin

sudo apt-get install cifs-utils
Ouvrir le fichier /etc/fstab pour y ajouter à la fin la ligne suivante :
//mafreebox.freebox.fr/Disque\040dur /media/freebox cifs nofail,x-systemd.automount,x-systemd.device-timeout=10,guest,username="",password="",cache=none,uid=1000,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=1.0 0 0 # ou //192.168.0.254/maxtor /media/maxtor cifs _netdev,rw,users,credentials=/home/[user]/.smbcredentials,iocharset=utf8,uid=1000,sec=ntlmv2,file_mode=0777,dir_mode=0777,vers=1.0 0 0 # ou en local UUID=xxxxxxxxx /media/maxtor ntfs-3g defaults 0 2
lsblk -f

sudo apt-get install avahi-daemon
sudo a2enmod ssl sudo systemctl reload apache2 sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf sudo /etc/init.d/apache2 restart

Pour accéder à une interface web d'administration du serveur, vous pouvez installer Webmin
Se rendre dans le répertoire de son choix
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh sudo sh setup-repos.sh sudo apt-get install webmin --install-recommends
Les identifiants mots de passe, sont ceux du système
2. Zentyal
2.1 Installation
Installez Zentyal avec au minimum les modules suivants : webserver network firewall backup Userandgroup (LDAP) + Usercorner monitor et certification autority
Lancez les commandes :
sudo add-apt-repository ppa:zentyal/3.0 sudo add-apt-repository "deb http://archive.zentyal.org/zentyal 3.0 main extra" sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 10E239FF sudo apt-get update sudo apt-get install zentyal language-pack-zentyal-fr
Puis avec votre navigateur web rendez-vous sur la page http://ip-de-votre-serveur et finissez l'installation en indiquant les modules cités précédemment.
2.1 Configuration de la sauvegarde
Vous pouvez dans Zentyal configurer votre sauvegarde Si vous souhaitez lancer une sauvegarde immédiatement vous pouvez le faire en lançant les commandes
sudo /usr/share/zentyal-ebackup/backup-tool --full ## sauvegarde compléte sudo /usr/share/zentyal-ebackup/backup-tool --incremental ## sauvegarde incrémentale
Il est également possible de lister les fichiers de la sauvegarde
sudo duplicity list-current-files [emplacement de la sauvegarde]
Il est également possible de lister les fichiers de la sauvegarde à un instant précis (ici il y a 20 jours)
sudo duplicity -t 20D list-current-files [emplacement de la sauvegarde]
Il est maintenant possible de restaurer le fichier désiré
sudo duplicity --file-to-restore folder1/folder1.1/file.txt [emplacement de la sauvegarde] /tmp/toRestore/file.txt
Pour une restauration compléte suite à un "désastre" je pense qu'il faut passer par un CD d'installation et faire la restauration soit via dejà dup soit en ligne de commande.
3. Hôte virtuel
Les hôtes virtuels servent à créer une adresse url pour votre site du type https://[virtual host].monsite.fr
Il peuvent être associé à la fonction reverse proxy qui permet d'associer cette adresse à un autre serveur (comme si vous faisiez apparaître le site d'un autre serveur sur ce serveur). Pour celà allez dans Zentyal à la rubrique webserver et créer l'hote virtuel
La première fois lancer
sudo a2enmod proxy sudo a2enmod proxy_http
ProxyRequests Off # si reverse proxy ProxyPreservehost on # si reverse proxy ServerName [virtual host].monsite.fr ServerAlias [virtual host].monsite.fr ProxyPass / http://serveur-vers-lequel-on-redirige.fr # si reverse proxy ProxyPassReverse / http://serveur-vers-lequel-on-redirige.fr # si reverse proxy
Source : http://blog.olivierdelort.net/?p=270
4. Cloud
Installez Owncloud (on préfèrera maintenant nextcould):
Commencez par créer un Virtual host sur votre serveur web en lui donnant le nom voulu
Déposer owncloud dans le dossier correspondant à votre hôte virtuel après l'avoir télécharger ici . Donner les droits :
sudo chown -R www-data:www-data /srv/www/[hôte virtuel]
Puis accédez à l'adresse du site
Lors de l'installation d'owncloud indiquer le dossier contenant les données du cloud de manière à ce que le dossier ne soit pas dans le dossier correspondant à votre hôte virtuel.
Par exemple si le dossier de l'hôte virtuel est /srv/www/[hôte virtuel] vous pouvez indiquer que le dossier contenant les données du cloud soit /srv/www/[données cloud] et non pas /srv/www/[hôte virtuel]/[données cloud].
Vous pouvez si vous le souhaitez insérer dans votre cloud un lien symbolique vers le disque de votre freebox.
Par défaut le serveur web vous empêche d'uploader des fichiers supérieur à 2 mo.
Vous pouvez agrandir le téléchargement maximum en modifiant le fichier /etc/php5/apache2/php.ini et changer les valeurs de ""upload_max_filesize"" et éventuellement ""post_max_size"" en remplaçant ""2M"" par la valeur de votre choix
Il est possible d'ajouter la visio-conférence en activant le l'app "Talk"
Il est possible d'ajouter l'édition collaborative des documents en installant collabora, en suivant la procédure ici
5. Serveur mail
Installez le serveur mail et outils collaboratif Zarafa
Il suffit pour celà d'installer les modules zentyal correspondant.
Il semble que pour limiter le spam les fournisseurs d'accès bloquent le port 25 (sauf pour leur propre serveur de manière à ce que vous puissiez envoyer des mails) Pour pouvoir envoyer des mails depuis son propre serveur (et éviter les erreurs réponse time out) il suffit donc d'ouvrir le port 25 autoriser en sorti (ce que free permet sur leur portail de gestion) ou (si votre fournisseur d'accès ne vous le permet pas vous pouvez utiliser un relayhost dans /etc/postfix/main.cf puis relancer postfix avec la commande /sbin/service postfix restart)
Pour recevoir les mails en provenances de l'extérieur vous devez rediriger le port 25 vers votre serveur et configurer le parefeu.
Vous pouvez vérifier si votre serveur smtp est blacklisté, ou s'il permet l'envoi de spam, ce forum propose des liens pour faire ces vérifications : http://forum.kimsufi.com/showthread.php?t=7186
Vous pouvez activer les modules Zentya relatifs au SPAM et à l'Antivirus (mais je n'ai pas encore réussi à les faire fonctionner, ils bloquent les mails entrant donc je les ai désactivé)
Zarafa propose par défaut deux interfaces web, vous pouvez, si vous le voulez les associer à des virtual host.
Ces deux interfaces se trouvent par défaut à http://ip_address/webaccess et http://ip_address/webapp
Afin d'éviter d'ouvrir les ports relatifs au pop et à l'imap cf davmail pour client mail ou groupdav
6. Réseau Social
Créez votre réseau social décentralisé Friendica
Grâce à Friendica vous pourrez garder de contrôle de vos données (c'est le coté décentralisé) tout en intégrant le réseau Friendica et diaspora. Mais vous pourrez centraliser vos autres réseaux sociaux (twitter, facebook et bientôt G+) à votre interface friendica.
Pour plus de détail je vous laisse découvrir mon article ici.
Lancez les commandes suivantes :
sudo apt-get install php5-curl sudo a2enmod rewrite
Copier Friendica (y compris les fichiers cachés) après l'avoir télécharger ici et lancer le dans le navigateur web.
Je n'ai pas installé Friendica dans un hôte virtuel de manière à pouvoir garder l'adresse friendica des utilisateurs de la forme utilisateur@monsite.fr.
7. Virtualisation d'un systéme : LXC
Afin de virtualiser des serveurs j'ai choisi Linux-Contener (LXC) qui est tout à la fois simple et efficace, puisque c'est le noyau du système qui sera utilisé ce qui évite de réduire les ressources (du coup on ne peut que virtualiser que des systèmes linux, donc ni Windows, ni Mac, ni UNIX). De ce fait je fais ma virtualisation en dehors de Zentyal qui semble intégrer d'autres solutions.
Lancez les commandes
sudo apt-get install lxc sudo lxc-create -t ubuntu -n [nom du contenaire] sudo lxc-start -n [nom du contenaire] -d
sudo lxc-console -n [nom du contenaire]
permet de prendre la main sur le contenaire (vous pouvez éteindre le contenaire depuis là comme n'importe quel serveur ou simplement fermer la console et le contenaire restera allumé)
sudo lxc-ls
permet de savoir quels sont les contenaires disponibles
sudo lxc-info -n [nom du contenaire]
permet de connaitre l'état du contenaire
Votre contenaire se trouve dans /var/lib/lxc/[nom du contenaire]
Vous pouvez facilement créer des contenaires avec des systémes différents du serveur qui les héberge grâce aux templates avec par exemple un contenaire sous ubuntu 10.04 (lucid)
sudo lxc-create -t ubuntu -n [nom du contenaire sous lucid] -- -r lucid
sudo lxc-create -t fedora -n [nom du contenaire sous fedora 12] -- -R 12
Attention cette méthode ne nécessite pas, et semble pas compatible avec la création du fichier /etc/default/lxc-net
Tout d'abord vérifier que le paquet bridge-utils est bien installé
Ensuite éditer le fichier /etc/network/interfaces et y mettre :
auto lxcbr0 iface lxcbr0 inet dhcp bridge_ports eth1 #le port pour lequel vous êtes connecté
lxc.network.flags = up lxc.network.link = lxcbr0 lxc.network.name = lxcnet0 lxc.network.hwaddr = 00:FF:AA:00:00:01 ## adresse mac du contenaire qui vous servira à lui attribuer une ip fixe
auto lxcnet0 iface lxcnet0 inet dhcp
Attention Zentyal va réécrire votre fichier /etc/network/interfaces
Pour éviter celà faites une copie du fichier internfaces et l'appeler interfaces.copy
Créez le fichier /etc/zentyal/hooks/network.postsetconf et le rendre exécutable et y mettre :
#!/bin/sh if grep "/sbin/ifenslave" /etc/network/interfaces >/dev/null; then exit 0 fi cp /etc/network/interfaces.copy /etc/network/interfaces exit 0
ln -s /var/lib/lxc/nom_du_conteneur/config /etc/lxc/auto/nom_du_conteneur
7.1 Virtualisation d'une application via Docker
Il est possible d'installer facilement une application via Docker
(après avoir ajouté les sources correspondantes)
sudo apt-get install docker.io
Il est ensuite possible de trouver les docker ici : https://hub.docker.com/search?image_filter=official&q=&type=image
Pour créer et lancer un conteneur, qui se redémarre automatiquement et dont le port 80 du contenaire est atteignable par le port 8080 de l''hôte :
sudo docker run -d --restart=always -p 8080:80 [docker Image]
Pour utiliser docker compose, se mettre dans le répertoire où se trouve le fichier docker-compose.yml
sudo
docker c
ompose up -d
Pour faire une mise à jour
sudo docker compose pull # mettre à jour
sudo docker compose up -d --remove-orphans # relancer
sudo docker image prune
# supprimer les images obsolètes
Exemple pour un serveur apache léger (docker)
sudo docker run -p 8082:80 --volume /home/[user]/apache:/usr/local/apache2/htdocs httpd:alpine
Si vous souhaitez sécuriser les échanges (https), et retrouver toutes vos applications sous un même nom de domaine (applications.mondomaine.fr), Nginx Proxy Manager.
(une alternative peut être swag et le docker-mods de linuxserver.io swag-dashboard)
sudo docker run -d \
-v data-nginx-proxy-manager:/data \
-v letsencrypt-nginx-proxy-manager:/etc/letsencrypt \
-p 80:80 \
-p 81:81 \
-p 443:443 \
--restart=always \
jc21/nginx-proxy-manager:latest
L'interface d'administration est derrière le port 81
Par défaut l'identifiant est admin@example.com, et le mot de passe : changeme
Il suffit d'aller dans host>proxy host, pour ajouter une url, et il est possible d'ajouter un certificat dans SSL.
Il faudra rediriger les ports 80 et 443 depuis l'extérieur vers le serveur
Si vous ne souhaitez pas ouvrir vos applications sur internet, mais que vous souhaitez y accéder à distance, et de manière sécurisée, et que votre opérateur ne vous fourni pas de VPN, vous pourrez installer WireGuard Easy qui vient avec une interface d'administration.
sudo docker run -d \
--name wireguard-easy \
-e WG_HOST=[IP publique du serveur ou domaine] \
-e PASSWORD=[*****] \
-e WG_ALLOWED_IPS=192.168.0.0/24 \ # mettre la structure du réseau local pour n'autoriser que le trafic avec le réseau local ou "0.0.0.0/0, ::/0" pour autoriser tout le trafic internet
-v wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart always \
weejewel/wg-easy
Pour de l'ipv6 remplacer : ?
- net.ipv6.conf.all.forwarding=1
- net.ipv6.conf.all.disable_ipv6=0
L'interface d'administration est derrière le port 51821
Il faudra rediriger le port 51820 depuis l'extérieur vers le serveur, en faisant attention à sélectionner le protocol udp
Pour pour paramétrer un client ubuntu
sudo apt-get install wireguard
Télécharger le fichier de configuration fourni par le serveur dans /etc/wireguard/[tunel].conf
Pour lancer le tunel :
sudo systemctl start wg-quick@[tunel]
(pour l'arrêter remplacer "start" par "stop")
Si après utilisation de la commande wg-quick up./[tunel].conf un message d'erreur apparait relatif resolvconf faire :
sudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf
"#voire même
sudo apt-get install resolvconf
Si dans les logs il est indiqué Failed to resolve interface "tun": No such device, il s'agira de commenter le DNS du fichier de conf
Pour le lancer au démarrage du serveur
sudo
systemctl enable wg-quick@[tunel]
(pour le désactiver remplacer "enable" par "disable")
Pour permettre à deux machines/serveurs, de se parler entre elles dans cette configuration il sur chaque serveurs mettre en place le VPN en croisé (chacun est à la fois clients et serveur), et configurer le AllowedIPs = 192.168.X.0/24 avec le réseau distant.
Pour faire en sorte que les instances docker démarrent après que la connextion distante soit opérante, faire tourner le script suivant dans le cron (@reboot), en adaptant l'ip local du serveur distant
#!/bin/bash # Attendre jusqu'à 300 secondes que la connexion réseau soit établie for i in {1..300}; do if ping -c1 [ip local serveur distant] &> /dev/null; then sudo mount -a sudo docker restart $(sudo docker inspect --format '{{.Id}}' $(sudo docker container ls -qa | xargs sudo docker inspect --format '{{ if eq .HostConfig.RestartPolicy.Name "alwa> sudo docker restart $(sudo docker inspect --format '{{.Id}}' $(sudo docker container ls -qa | xargs sudo docker inspect --format '{{ if eq .HostConfig.RestartPolicy.Name "unle> sudo docker restart $(sudo docker inspect --format '{{.Id}}' $(sudo docker container ls -qa | xargs sudo docker inspect --format '{{ if eq .HostConfig.RestartPolicy.Name "on-f> exit 0 fi sleep 1 done echo "Impossible de se connecter à la machine sur le VPN distant. Échec de l'exécution de la commande." exit 1
Pour vos applications, il sera souvent nécessaire de créer une base de donnée (mysql) :
sudo docker run -d \
--restart=always \
--name [nom contenaire] \
-p 3306:3306 \
-e "MYSQL_ROOT_PASSWORD=[******]" \
-e "MYSQL_DATABASE=[nom base de donnée]" \
-v [nom du volume]:/var/lib/mysql \
mysql

PHPMYADMIN :
sudo docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8083:80 phpmyadmin
Au moment de la connexion indiquer l'adresse ip privée du serveur
Nextcloud :
Pour créer son propre cloud
sudo docker run -d--restart=always
\
--name nextcloud-mysql
\
-p 3306:3306
\
-e "MYSQL_ROOT_PASSWORD=[******
\
-e "MYSQL_DATABASE=nextcloud"
]" \
-v nextcloud-mysql:/var/lib/mysql mysql
\
--transaction-isolation=READ-COMMITTED
\
--binlog-format=ROW mkdir /home/[user]/nextcloud
\
Ajouter le fichier
/home/[user]/nextcloud/php.ini
Avec le contenu :
upload_max_filesize=6G post_max_size=6G memory_limit=6G
sudo docker run -d \
-v /home/[user]/nextcloud:/var/www/html \
-v /home/[user]/nextcloud/php.ini:/usr/local/etc/php/conf.d/zzz-custom.ini \
-v /media/maxtor:/maxtor \
-p 8080:80 \
--label=com.centurylinklabs.watchtower.enable=false \
--restart=always \
nextcloud:latest
sudo adduser [user] www-data
sudo chown www-data:www-data /home/[user]/nextcloud/data/
sudo chmod -R 770 /home/[user]/nextcloud/data
sudo chmod -R g+s /home/[user]/nextcloud/data
S'il y a des modifications directement dans le répertoire il faudra forcer l'indexation :
sudo docker exec --user www-data [contenaire] php occ files:scan --all
De la même manière il peut être parfois nécessaire de lancer le scan des musiques, si vous avez activé l'app.
sudo docker exec --user www-data [contenaire] php occ music:scan --all
Pour profiter de la modification collaborative de document en ligne
sudo docker run -t -d -p 9980:9980 -e "extra_params=--o:ssl.enable=false" --restart always --add-host [url nextcloud]:[IP du docker nexcloud commençant dans mon cas par 172] collabora/code
Puis aller sur http://[url nextcloud]/index.php/settings/admin/richdocuments
Et renseigner le serveur http://[IP serveur]:9980
Il sera intéressant d'ajouter l'application music, qui permettra d'écouter la musique notamment sur son téléphone au travers de l'application subsonic
Il existe une application deck, pour gérer des projets en kaban, et task pour faire des listes
Il existe également une application qui permet de faire un tableau blanc et des shémas, il suffit d'activer l'app draw.io
Puis il est possible de faire des configurations : http://[ip-serveur]:8080/index.php/settings/admin/drawio
Il est possible de pointer vers son propre serveur draw.io, mais dans ce cas, la fonctionnalité de collaboration en temps réel ne sera pas supportée.
Il est possible d'ajouter le module "External sites" pour ajouter des liens externes dans le menus (avec habilitation par groupe)
Il est également possible d'installer phonetrack, pour suivre des localisations, en le couplant avec Owntrack sur le téléphone. Il est possible de paramétrer des notifications sur son (autre) téléphone, en cas de sorti/entrée d'une zone, en utilisant ntfy (que l'on peut héberger soi-même également); en indiquant dans la méthode POST, une url de la forme :
https://ntfy.sh/sujet_abonnement/publish?title=mettre+titre&message=mettre+message&priority=high&click=http://monsite.com
Pour faire une mise à jour, après avoir poussé l'image docker récente il faudra
sudo docker exec --user www-data [contenaire] php occ upgrade
Friendica :
Pour créer son propre réseau social
Créer un contenaire Mysql dédié
sudo docker run -d \
--name friendica-mysql \
-p 3306:3306 \
-e "MYSQL_ROOT_PASSWORD=[*******"] \
-e "MYSQL_DATABASE=friendica \
-v friendica-mysql:/var/lib/mysql \
mysql
ou créer une base de donnée dans un contenaire mysql existant
sudo docker run -d \
-p 8081:80 \
-v friendica-data:/var/www/html \
--restart=always \
friendica
(
puis action manuelle
ne tâche planifiée pour le 'worker'.Référez-vous au fichier "doc/INSTALL.md")
Il est possible de se rendre sur https://mon-nom-de-domaine-friendica/help
Jellyfin :
Pour créer son serveur multimédia (son netflix perso ^^)
--mount type=bind,source=/home/[user]/[user-distant]/,target=/media-vincent,readonly \
sudo docker run -d \ --name jellyfin \ --user 1000:1000 \ # pour trouver les bonnes références faire la commande : id -p 8096:8096 \ --volume /home/[user]/jellyfin/config:/config \ --volume /home/[user]/jellyfin/cache:/cache \ --mount type=bind,source=/home/[user]/jellyfin/media,target=/media1 \ --mount type=bind,source=/media/maxtor/,target=/media2,readonly \ # après avoir monté automatiquement le disque sur ce répertoire
# après avoir monté automatiquement le disque sur ce répertoire
--restart=always \ jellyfin/jellyfin
Il est possible de configurer la TV en direct en paramétrant des sources comme ici ou ici
Odoo :
Pour créer son progiciel d'entreprise
sudo docker run -d
-v odoo-db:/var/lib/postgresql/data
\
-e POSTGRES_USER=odoo
\
-e POSTGRES_PASSWORD=odoo
\
-e POSTGRES_DB=postgres
\
--name db
\
postgres:13 sudo docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo sudo docker stop odoo sudo docker start -a odoo
\
Adguardhome
Pour créer son bloquer de publicité, pour toute la maison, et faire du contrôle parentage dans le même temps
sudo docker run -d \
--name adguardhome \
--restart=always \
-v /home/[user]/adguardhome/work:/opt/adguardhome/work \
-v /home/[user]/adguardhome/conf:/opt/adguardhome/conf \
-p 53:53/tcp -p 53:53/udp \ # port DNS
# -p 67:67/udp -p 68:68/udp -p 68:68/tcp \ # port DHCP serveur BOOTP
-p 8085:80/tcp -p 444:443/tcp -p 444:443/udp \ # port HTTP&HTTPS
-p 3000:3000/tcp \ # port HTTP temporaire pour la première configuration d'AdGuard
# -p 853:853/tcp \ # port DNS over TLS
# -p 784:784/udp -p 853:853/udp -p 8853:8853/udp \ # DNS-over-QUIC server
# -p 5443:5443/tcp -p 5443:5443/udp \ #DNSCrypt server
adguard/adguardhome
Si vous rencontrez l'erreur "listen tcp4 0.0.0.0:53: bind: address already in use", il faudra faire :
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Il vous faudra vous rendre sur le port 3000 pour finaliser l'installation, puis sur le port, dans notre exemple 8085, pour administrer les régles.
Enfin il faudra remplacer les adresse IP DNS de la box de votre opérateur, par les adresses IP de votre serveur, sur les 2 premiers DNS, sinon des requêtes risquent d'échapper à Adguard. Ca a suffi pour marcher sur windows, mais sur Ubuntu et Android, il a aussi fallu faire la même chose sur les DNS IPV6 (là aussi sur les 2 premiers). Puis un rédémarage de la box (et éventuellement du reste), pour une prise en compte plus rapide
Il est possible d'ajouter des filtrages proposée par défaut
Par ailleurs voici quelques DNS proposés qu'il est possible de mettre dans les paramétres DNS
- Malware : https://security.cloudflare-dns.com/dns-query
- Contrôle parental : https://family.cloudflare-dns.com/dns-query
- https://dns.quad9.net/dns-query
Si c'est votre routeur (box) qui fait DHCP, et que vous souhaitez voir apparaitre toutes les requêtes de vos différents appareils (et que vos règles particulières s'appliquent bien) il faut ajouter dans Paramètre DNS > Serveurs DNS upstream
[/local/]192.168.0.254
[/0.168.192.in-addr.arpa/]192.168.0.254
(où 192.168.0.254 est l'adresse du routeur)
Pour vérifier la protection, vous pouvez tester : https://d3ward.github.io/toolz/adblock.html
Il est possible de créer des noms de domaines en local (ou pour qui s'adresse à ce DNS), en allant dans le menu filtre et réécritures DNS et en associant un nom de domaine à une adresse IP
Pour gérer une bibliothèque de livre
Calibre-web s'étant montré contraignant (utiliser un base de donnée calibre existante, donc installer calibre sur un poste, qui ne supporte pas les dossiers réseaux, et doit partir d'un dossier vide. De plus l'admin d'accède pas par défaut à la visionneuse, il faut lui donner accès)...
Kavita, n'a pas permis d'obtenir le résultat attendu non plus
... on préférera Komga
sudo docker run -d \
--name=komga \
--user 1000:1000 \
-p 8086:25600 \
-v /media/maxtor/Livres:/Livres \
-v /home/[user]/komga/config:/config \
--restart always \
-e TZ=Europe/Paris \
gotson/komga:latest
... ou directement Jellyfin
Si vous avez des livres au format image dans des dossiers, vous pouvez les convertir avec le script :
#!/bin/bash for dir in */; do folder_name="${dir%/}" cd "$folder_name" echo "$folder_name" zip -r -0 "$folder_name.cbz" * mv "$folder_name.cbz" ../"$folder_name.cbz" cd .. done
Pour créer des vignettes pour vos différents livres vous pouvez installer :
sudo apt-get install poppler-utils calibre imagemagick
et utiliser le script :
#!/bin/bash for file in *.cbz #boucle pour fichier CBZ do mkdir tmp # Extraire le fichier CBZ dans un sous-répertoire temporaire cp "$file" tmp cd tmp unzip "$file" first_image="$(ls *.jpg | head -n 1)" # Renommer le fichier image correspondant à la première page mv "$first_image" "$(basename "$file" .cbz).jpg" convert "$(basename "$file" .cbz).jpg" -resize 500x500 "$(basename "$file" .cbz).png" mv "$(basename "$file" .cbz).png" ../"$(basename "$file" .cbz).png" cd .. # Supprimer le sous-répertoire temporaire rm -r tmp done for file in *.epub #boucle pour fichier epub do echo "Extraction première page $file" ebook-convert "$file" "$(basename "$file" .epub).pdf" --output-profile tablet # Convertir le fichier ePub en PDF pdftoppm -png -f 1 -l 1 -scale-to 300 "$(basename "$file" .epub).pdf" "$(basename "$file" .epub)" # Convertir la première page du PDF en PNG mv "$(basename "$file" .epub)-01.png" "$(basename "$file" .epub).png" # renommer le fichier png mv "$(basename "$file" .epub)-001.png" "$(basename "$file" .epub).png" # renommer le fichier png rm "$(basename "$file" .epub).pdf" #supprimer le fichier pdf done for file in *.pdf #boucle pour fichier pdf do echo "Extraction première page $file" pdftoppm -png -f 1 -l 1 -scale-to 500 "$(basename "$file" .pdf).pdf" "$(basename "$file" .pdf)" # Convertir la première page du PDF en PNG mv "$(basename "$file" .pdf)-01.png" "$(basename "$file" .pdf).png" # renommer le fichier png mv "$(basename "$file" .pdf)-001.png" "$(basename "$file" .pdf).png" # renommer le fichier png done
Peertube :
Si vous souhaitez installer un équivalent de Youtube, il sera sans doute préférable d'utiliser docker compose.
Je vous renvoie vers le mode opératoire très bien fait ici : https://normandie-libre.fr/deployer-un-serveur-peertube-grace-a-docker/
Seul défaut, la commande que j'ai dû rentrer pour changer le mot de passe, à la fin était
sudo docker exec -it peertube_peertube_1 /bin/sh
npm run reset-password -- -u root
Pour la migration vers la V5 j'ai du suivre https://jadin.me/upgrading-peertube-to-v5/
Netdata pour avoir un état détaillé du serveur
sudo docker run -d --name=netdata \
-p 8087:19999 \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v netdatacache:/var/cache/netdata \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc/os-release:/host/etc/os-release:ro \
--restart always \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
Portainer-ce pour gérer les contenaires depuis une interface web
sudo docker run -d \
-p 8088:8000 \
-p 8089:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
Il semble qu'il ne supporte pas d'être accèdé par le port non chiffré, il faudra donc passé par le port chiffré, dans notre cas https://[serveur]:8089.
Flame pour faire une page d'acceuil du serveur regroupant tous les services.
sudo docker run -d \
--name flame \
--restart=always \
-p 8090:5005 \
-v flame_data:/app/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-e PASSWORD=[******] \
pawelmalak/flame
Il existe également Organizr, qui permet même d'ouvrir les services directement dans la page d'acceuil, et de gérer les accès à différents utilisateurs
Egalement le menu External sites de nextcloud.
Photoprism pour gérer vos photos.
Faute de n'avoir pas pu faire cohabiter mysql et mariadb sur des ports différents, j'ai fais un docker compose :
wget https://dl.photoprism.app/docker/docker-compose.yml
Puis
sudo
docker c
ompose up -d
N'a pas fonctionné :
sudo docker run -d \
--name mariadb-photoprim \
--restart=always \
--env MARIADB_USER=[user] \
--env MARIADB_PASSWORD=[*******"] \
--env MARIADB_ROOT_PASSWORD=[*******"] \
-v mariadb-photoprim:/var/lib/mysql \
mariadb:latest --port 3808
[après être entré dans le conteneur : CREATE DATABASE photoprism]
sudo docker run -d \
--name photoprism \
--restart=always \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-p 8091:2342 \ #et 8094
-e PHOTOPRISM_UPLOAD_NSFW="true" \
-e PHOTOPRISM_ADMIN_PASSWORD="[*****]" \
-e PHOTOPRISM_SITE_URL="[http://localhost:8091/]" \
-e PHOTOPRISM_ORIGINALS_LIMIT=5000 \
-e PHOTOPRISM_HTTP_COMPRESSION="gzip" \
-e PHOTOPRISM_JPEG_QUALITY=85 \
-e PHOTOPRISM_DATABASE_DRIVER="mysql" \
-e PHOTOPRISM_DATABASE_SERVER="[serveur]:3808" \
-e PHOTOPRISM_DATABASE_NAME="photoprism" \
-e PHOTOPRISM_DATABASE_USER="root" \
-e PHOTOPRISM_DATABASE_PASSWORD="[*****]" \
-e PHOTOPRISM_SITE_CAPTION="AI-Powered Photos App" \
# -v /home/[user]/photoprism:/photoprism/storage \
-v /media/freebox/photoprism:/photoprism/storage \
-v /media/maxtor/photo:/photoprism/originals \
photoprism/photoprism
Se connecter avec l'identifiant indiqué dans le fichier yml, puis lancer le scan des photos dans la librairie.
Pour faire plusieurs instances de Photoprism, ne pas les mettre son un dossier portant le même nom.
Piwigo pourrait être une alternative mais ne semble pas disposer de la même intelligence artificielle

Déterminer quel est l'identifiant de la ou des clés usb que vous utilisez pour connecter votre réseau domestique.
Brancher la clés puis :
sudo dmesg | tail
ou
ls -l /dev/serial/by-id/
Il s'agira de repérer l'identifiant de type ttyACM0"
Puis :
sudo docker run -d \
--device /dev/[ttyACM0]:/dev/[ttyACM0]
\
# pour ajouter le son
# --device=/dev/snd:/dev/snd
# ou
#
-e PULSE_SERVER=unix:/run/user/1000/pulse/native
--name domoticz \
--restart always \
-p 8092:8080 \
-v /home/[user]/domoticz/userdata:/opt/domoticz/userdata \
-v /home/[user]/domoticz/templates:/opt/domoticz/www/templates \
-e TZ=Europe/Paris \
domoticz/domoticz
Et mettre un fichier [fichier].html dans le dossier templates, pour ajouter une page personnalisée
Watchtower pour mettre à jour automatiquement les contenaires, dès qu'une mise à jour est publiée
0 0 4 1 * *"
sudo
docker run -d \ --name watchtower \
--cleanup \
--schedule "
-v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/timezone:/etc/timezone:ro \ containrrr/watchtower
\
PSITransfert pour envoyer de gros fichiers
sudo docker run -d \
--name psitransfer \
-p 8093:3000 \
-e PSITRANSFER_ADMIN_PASS=[*****] \
-e PSITRANSFER_UPLOAD_PASS=[*****] \
-v /home/[user]/psitransfer:/data \
psitrax/psitransfer:latest
Le chemin d'administration est simplement http://[serveur]/admin
Quelques applications de gestion de projet :
Taiga, ne possède pas de workflow des status, , il y a bien un tableau kanban, mais uniquement pour les US. Toutes les données n'apparaissent pas sur les tickets (ex sprint), et les champs personnalisé n'apparaissent pas dans la page d'administration du ticket. Il n'y a pas de lien entre les US et les bug, et il n'est pas très configurable.
Pour l'installer, aller dans votre dossier contenant les dossiers docker compose
git clone https://github.com/kaleidos-ventures/taiga-docker
cd taiga-docker/
git checkout stable
Compléter le fichier .env (en partant de l'exemple fourni)
POSTGRES_PASSWORD=[*******] TAIGA_DOMAIN=[Ip du serveur]:8100 SECRET_KEY="[*******]"
Compléter le fichier docker-compose.yml en changeant 9000 en 8100
sudo docker compose up -d
#Pour réer l'utilisateur admin
sudo docker compose -f docker-compose.yml -f docker-compose-inits.yml run --rm taiga-manage createsuperuser
(cette étape peu échouer, je suppose en cas de conflit avec d'autres contenaires)
https://[Ip du serveur]:8100/admin (Accessible uniquement en https ?)
Openproject a de nombreuses fonctionnalités malheureusement en version premium uniquement notamment tableau Kanban, mais il est possible d'utiliser le task board, et de changer le statut après avoir déplacer le ticket, mais il faut ajouter les tickets un à un (pas de filtre à ce niveau donc). Néanmoins il est également possible de le faire par des lots de travaux et grouper par status, le tableau kanban passe donc en ligne plutôt qu'en colonne, mais ça marche, et il est possible de mettre les tickets dans l'ordre de son choix. L'attribution de tickets aux sprints en glissé déposé est possible, dans le backlog. Il a une bonne gestion du workflow des status. C'est cette application qui a finalement retenu mon choix.
Pour l'installer, aller dans votre dossier contenant les dossiers docker compose
git clone https://github.com/opf/openproject-deploy --depth=1
cd openproject-deploy/compose
Compléter le fichier .env (en partant de l'exemple fourni)
PORT=8099 PGDATA="/home/[user]/openproject-deploy/compose/database" #volume base de donnée OPDATA="/home/[user]/openproject-deploy/compose/dataapp" #volume application OPENPROJECT_HOST__NAME=[Ip du serveur]:8099
sudo mkdir database
sudo mkdir dataapp
sudo docker compose up -d
Identifiant : admin, et mot de passe : admin
Il est possible de l'intégrer avec Nextcloud (expérimentation en cours, étapes à venir)
Redmine ne semble pas posséder de tableau de kanban, et l'interface est peu attirante, je n'ai donc pas beaucoup approfondi.
sudo docker run -d -p 8084:3000 -v /home/[user]/redmine/data:/usr/src/redmine/files --restart=unless-stopped redmine
Ensuite il est possible de se connecter avec l'identifiant/mot de passe : admin/admin
Focalboard est facile d'installation, rapide à mettre en oeuvre et sans administration (avantage et inconvénient). Du coup il est trop permissif, il n'y a pas de blocage pour les éditeurs qui peuvent ajouter des valeurs (par exemple de nouveaux type de tickets, de status...). Il n'y a pas de workflow, pas de liens entre les ticket et il n'est pas complétement traduit.
sudo docker run -d -p 8098:8000 -v /home/[user]/focalboard/data:/opt/focalboard/data mattermost/focalboard
Il existe également Deck pour nextcloud. Il s'agit d'une tableau kanban simplifié, mais il n'y a pas de changement de status en changeant de liste. Il est possible de "gérer" des status et des type de ticket avec des étiquettes. Il peut avoir l'intérêt d'avoir tout au même endroit (dans nextcloud), mais c'est très léger.
Il existe un module Project Management dans Odoo, qui semble très bien, mais l'utilisation d'un progiciel comme Odoo, pour faire uniquement de la gestion de projet n'est-elle pas un peu trop lourde ?
Enfin Tuleap est sans doute la meilleure option, mais je n'ai malheuresement pas été en mesure de l'installer.
(Sur le serveur "CPU does not support x86-64-v2", sur le PC, "Could not create a PDO connection")
Application de prise de note (collaborative) : Joplin
Se mettre dans le dossier où l'on stock les répertoire docker-compose
mkdir joplin
cd joplin
wget https://raw.githubusercontent.com/laurent22/joplin/dev/docker-compose.server.yml
wget https://raw.githubusercontent.com/laurent22/joplin/dev/.env-sample
mv .env-sample .env
mv docker-compose.server.yml docker-compose.yml
nano .env
retirer # et faire les modifications souhaitées
sudo docker compose up -d
L'identifiant est admin@localhost et le mot de passe : admin
Il est ensuite demandé de les changer, l-email de confirmation ne sera pas envoyé, avant de se déconnecter, aller dans le menu admin et e-mail, pour confirmer son adresse mail.
Vous aurez peut-être besoin d'avoir un robot qui verifie que vos services sont bien opérationnel, et prévenir si ce n'est pas le cas
sudo docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
(je ne l'ai pas encore fait)
Par ailleurs d'autres applications peuvent être intéressantes, mais pas encore essayées :
Meetjitsi pour les vidéos conférence
Duplicati pour les sauvegardes
Sonarr et Radarr, pour respectivement récupérer des séries et des films depuis les Newsgroups
Paperless-ngx pour gérer les documents. Nextcloud devrait pouvoir le faire également (à voir la différence), il s'agirait notamment d'ajouter de l'OCR (cf plugin existant)
Vaultwarden pour gérer les mots de passe, il semble que Keeweb soit une extention nextcloud qui le permette aussi
Pour lister le conteneurs installés
sudo docker container ps -a
Il est possible de changer la politique de redémarrage avec
sudo docker update --restart=[option] [nom du contenaire]
Les options sont no always on-failure unless-stopped
Pour ouvrir un terminal sur un contenaire :
s
udo docker exec -it [container] bash
ou
sudo docker exec -it [container] /bin/sh
Une fois dans le contenaire, pour exécuter mysql :
mysql --user=root --password=****
Pour avoir des informations et notamment retrouvé où sont stockés les répertoires dockers (ex : les volumes)
s
udo docker info
8. ERP
Installez OpenERP :
Créez un serveur virutalisé, et associé le à un hôte virtuel de votre serveur web
Téléchargez le all-in-one version debian/ubuntu (.deb) ici
Puis installez le en faisant la commande suivante :
sudo dpkg -i [paquet].deb sudo apt-get -f install
9. Astuces
Vous pouvez créer un utilisateur administrateur :
sudo adduser [identifiant] sudo adduser [identifiant] sudo
sudo passwd [identifiant]

- commentez la ligne GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”, en ajoutant # au début de la ligne, celà désactivra l'écran violet d'ubuntu au démarrage.
- changez GRUB_CMDLINE_LINUX=”" par GRUB_CMDLINE_LINUX=”text”, ce qui fera démarrer ubuntu en mode texte.
- décommenter la ligne #GRUB_TERMINAL=console, en retirant le # du début de la ligne, ce qui fera aller le menu Grub en mode texte noir et blanc.
Lancer la commande
sudo update-grub
Il n'y a plus qu'à redémarrer. Pour lancer l'interface graphique lancer la commande startx devrait fonctionner, ça n'a pas été le cas pour moi, mais sudo service lightdm start a bien marché

sudo apt-get install samba libpam-winbind
Dans le fichier /etc/samba/smb.conf, dans le paragraphe global (de l'ensemble global setting) mettre
security = user (sous workgroup par exemple)
Puis dans l'ensemble Share Definitions mettre
[Nom_du_dossier] path=/chemin/du/dossier/ browsable = yes guest ok = no writable = yes create mask = 0750 directory mask = 0750
(Au dessus de [printers] par exemple)
Pour un utilisateur du système, définir un mot de passe
sudo pdbedit -a [user]
puis relancer le service
sudo systemctl restart smbd.service nmbd.service
smbclient -U [User] //192.168.X.X/dossier

sudo apt-get --auto-remove --purge purge zentyal

Vous pouvez réduire le cache dans la RAM :
Créer un fichier PurgeRAM.sh et mettez y :
#!/bin/bash #!/bin/sh # La première ligne sert à spécifier quel shell tu veux excéuter. ici sh # Notice : pour executer un script il faut # 1) changer c'est droit pour devenir executable: chmod 777 NomDuScrip.sh # 2) puis l'executer : ./NomDuScrip.sh ################################################## ### Script de purge du cache de la mémoire RAM ### ################################################## echo "sync : Ecrit la cache disque en cours" sync echo "ok" echo "Vidage du cache de la memoire RAM niveau 3" echo "3" > /proc/sys/vm/drop_caches echo "Pause de 1 seconde" sleep 1 echo "sync : re-ecrit la cache disque en cours (+ par sécurité, pas indispensable)" sync echo "action cache remis par defaut" echo "0" > /proc/sys/vm/drop_caches echo "Vidage du cache terminée." echo "redemarre les services mysql pour recréer la cache c'est conseillé" service mysql restart echo "redemarre les services apache2 pour recréer la cache c'est conseillé" service apache2 --full-restart echo "******* Terminée ********"
Pour plus d'information ici
Vous pouvez lancer des tâches programmés http://doc.ubuntu-fr.org/cron (ne pas mettre de point devant le chemin)
Pour celà faite la commande :
sudo crontab -e
20 3 * * * ./chemin/Script.sh
Vous aurez sans doute remarquer que lorsque vous accéder à votre serveur en https, il vous demande une confirmation de sécurité. Pour éviter celà il faut un Certificat SSL reconnu, startSSL.com en propose gratuitement, mais il ne sont malheureusement pas compatible avec les noms de domaine fourni par venez.fr. Un solution peut être d'acheter un nom de domaine compatible ou éventuellement de chercher des noms de domaines founis avec certificats reconnu.
- 4298 lectures