Si vous ne l'avez pas déjà fait, suivez ce guide pour paramétrer votre box internet : Tutoriel : Configurer votre Box pour Rendre Nextcloud Accessible de l'Extérieur
Bienvenue dans ce tutoriel détaillé qui vous guidera pas à pas pour installer Nextcloud All-in-One (AIO) sur un serveur Ubuntu. Ce guide est conçu pour les débutants et couvre toutes les étapes nécessaires, y compris :
- La configuration du pare-feu UFW.
- L'activation des mises à jour de sécurité automatiques avec unattended-upgrades.
- L'utilisation de Ubuntu Pro Livepatch pour appliquer des correctifs de sécurité au noyau sans redémarrage.
- La modification du port SSH par défaut et la configuration de l'authentification par clé publique pour renforcer la sécurité.
- L'activation de diverses sécurités dans le conteneur Nextcloud AIO telles que le chiffrement ou l'authentification à deux facteurs (2FA).
- La configuration d'un second disque pour les sauvegardes avec BorgBackup.
- Une section dédiée à la maintenance du serveur.
- Comment effectuer une mise à niveau majeure de votre serveur Ubuntu.
Avant de plonger dans les détails techniques, il est important de comprendre les avantages d'installer votre propre serveur Nextcloud :
1. Vie Privée En hébergeant votre propre serveur, vous gardez le contrôle total sur vos données. Contrairement aux services proposés par les géants du web (Google, Apple, Facebook, Amazon, Microsoft), vos informations ne sont pas stockées sur des serveurs tiers. Cela protège votre vie privée en évitant le profilage, la publicité ciblée et l'utilisation commerciale de vos données personnelles sans votre consentement.
2. Sécurité Renforcée Ce tutoriel met l'accent sur la sécurité à chaque étape. En tant qu'utilisateur individuel, vous êtes moins susceptible d'être la cible d'attaques sophistiquées menées par des États ou des groupes de hackers professionnels. En contrôlant vous-même les mesures de sécurité (pare-feu, mises à jour automatiques, authentification sécurisée), vous pouvez adapter votre défense pour qu'elle soit supérieure aux menaces potentielles.
3. Personnalisation Nextcloud offre une flexibilité inégalée par rapport aux services comme Google Drive ou Office 365. Vous avez accès à une vaste gamme de modules et d'applications supplémentaires. Vous pouvez choisir d'activer ou non ces fonctionnalités pour simplifier votre interface selon vos besoins. De plus, vous contrôlez le nombre d'utilisateurs, les limites d'upload, et d'autres paramètres pour adapter le service exactement à vos exigences.
4. Coût Avantageux Gérer votre propre serveur est très rentable, surtout si vous avez des besoins importants en stockage cloud (2 To ou plus). Les coûts se limitent essentiellement à l'électricité et au nom de domaine. Parfois, vous n'avez même pas besoin de payer pour un nom de domaine si votre fournisseur d'accès internet en propose un gratuitement, comme c'est le cas avec Free.
5. Performance Optimale En hébergeant le serveur chez vous, vous bénéficiez de performances supérieures grâce à la proximité physique. Si vous utilisez un matériel performant comme un Intel NUC, vous surpasserez les performances des services en ligne qui utilisent souvent des ressources partagées et limitées (par exemple, deux cœurs d'un vieux processeur Xeon mutualisé entre plusieurs utilisateurs). Vous évitez ainsi les problèmes de latence et profitez d'une expérience utilisateur fluide et réactive.
- Prérequis
- Étape 1 : Installation d'Ubuntu Server
- Étape 2 : Mettre à jour le système
- Étape 3 : Configurer le pare-feu UFW
- Étape 4 : Sécuriser SSH
- Étape 5 : Configurer les mises à jour automatiques de sécurité
- Étape 6 : Activer Ubuntu Pro Livepatch
- Étape 7 : Installer Docker
- Étape 8 : Installer Nextcloud AIO
- Étape 9 : Configurer un Second Disque pour les Sauvegardes
- Étape 10 : Configuration finale de Nextcloud
- Étape 11 : Maintenance et mises à jour
- Conclusion
- Ressources supplémentaires
- Matériel : Un mini PC type Intel NUC ou équivalent avec au moins 4 Go de RAM et 50 Go d'espace disque.
- Connexion Internet : Stable et fiable.
- Nom de domaine : Pointant vers l'adresse IP publique de votre serveur (optionnel si vous comptez n'utiliser votre Nextcloud qu'en local).
- Client SSH : Installé sur votre ordinateur local.
- Second stockage : Pour les sauvegardes avec BorgBackup.
- Connaissances de base : En maintenance Debian/Ubuntu (mise à jour du système, gestion des fichiers système, etc.).
- Un nom de domaine : Pour accéder à votre instance Nextcloud via Internet, vous aurez besoin d'un nom de domaine.
Regardez ce tutoriel d'Adrien Linuxtricks !
Téléchargez la dernière version LTS (Long Term Support) d'Ubuntu Server depuis le site officiel :
Utilisez un outil comme Etcher ou Rufus pour créer une clé USB bootable avec l'image ISO d'Ubuntu Server.
-
Démarrage depuis la clé USB :
- Insérez la clé USB dans le NUC.
- Démarrez le NUC et accédez au BIOS pour sélectionner la clé USB comme périphérique de démarrage.
-
Installation d'Ubuntu Server :
- Sélectionnez la langue et le clavier.
- Configurez le réseau :
- Utilisez une adresse IP statique si possible pour faciliter l'accès futur.
- Créez un utilisateur administrateur avec un mot de passe sécurisé.
- Ne pas installer de services additionnels pour garder le système minimaliste.
Une fois l'installation terminée, il est important de mettre à jour le système pour s'assurer que vous disposez des derniers correctifs de sécurité.
Connectez-vous à votre serveur via SSH ou directement et exécutez :
sudo apt update && sudo apt upgrade -yEnsuite, redémarrez le serveur pour appliquer les mises à jour :
sudo rebootUn pare-feu protège votre serveur des accès non autorisés. UFW (Uncomplicated Firewall) est un outil simple pour gérer les règles du pare-feu.
UFW est généralement préinstallé sur Ubuntu Server. Sinon, installez-le avec :
sudo apt install ufwNous allons autoriser uniquement les ports nécessaires :
- SSH : Port 22 (que nous changerons plus tard).
- HTTP : Port 80 (pour Let's Encrypt pour le renouvellement du certificat ssl).
- HTTPS : Port 443 (pour Nextcloud).
- Interface AIO : Port 8443.
- Nextcloud Talk (serveur TURN) : Ports 3478 en TCP et UDP.
Exécutez les commandes suivantes :
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH (sera modifié ultérieurement)
sudo ufw allow 80/tcp # Let's Encrypt
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 8443/tcp # Interface AIO
sudo ufw allow 3478/tcp # Nextcloud Talk
sudo ufw allow 3478/udp # Nextcloud TalkActivez UFW avec :
sudo ufw enableVérifiez le statut du pare-feu :
sudo ufw status verboseChanger le port SSH par défaut et utiliser l'authentification par clé publique renforce considérablement la sécurité de votre serveur.
Sur votre ordinateur local (client), ouvrez un terminal et exécutez :
ssh-keygen -t rsa -b 4096 -C "[email protected]"-t rsa: Type de clé (RSA).-b 4096: Taille de la clé pour une meilleure sécurité.-C "[email protected]": Commentaire pour identifier la clé.
Appuyez sur Entrée pour accepter l'emplacement par défaut (~/.ssh/id_rsa). Vous pouvez définir une passphrase pour ajouter une couche de sécurité supplémentaire.
Utilisez ssh-copy-id pour copier votre clé publique sur le serveur :
ssh-copy-id -i ~/.ssh/id_rsa.pub votre_utilisateur@adresse_ip_du_serveurSi ssh-copy-id n'est pas disponible, copiez manuellement la clé publique :
-
Afficher le contenu de la clé publique :
cat ~/.ssh/id_rsa.pub -
Définissez les permissions appropriées :
chmod 600 ~/.ssh/id_rsa -
Connectez-vous au serveur :
ssh votre_utilisateur@adresse_ip_du_serveur
-
Sur le serveur, créez le répertoire
.ssh:mkdir -p ~/.ssh chmod 700 ~/.ssh
-
Éditez le fichier
authorized_keys:nano ~/.ssh/authorized_keysCollez le contenu de votre clé publique.
-
Définissez les permissions appropriées :
chmod 600 ~/.ssh/authorized_keys
Depuis votre ordinateur local, essayez de vous connecter :
ssh votre_utilisateur@adresse_ip_du_serveurVous devriez être connecté sans entrer le mot de passe du serveur.
Sélectionnez un numéro de port supérieur à 1024. Par exemple, le port 2222.
Éditez le fichier de configuration SSH :
systemctl edit ssh.socketAjoutez les lignes suivantes avant la ligne ### Edits below this comment will be discarded, sinon la moddification ne sera pas prise en compte :
[Socket]
ListenStream=2222
Port 2222: Définit le nouveau port SSH.
Important : Assurez-vous que l'authentification par clé fonctionne avant de désactiver le mot de passe.
Éditez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_configModifiez ou ajoutez la ligne suivante :
PasswordAuthentication no
Avant de redémarrer SSH, mettez à jour UFW :
sudo ufw allow 2222/tcp # Autoriser le nouveau port SSH
sudo ufw delete allow 22/tcp # Supprimer l'ancien port SSHsudo systemctl restart sshdDepuis votre ordinateur local, connectez-vous avec le nouveau port :
ssh votre_utilisateur@adresse_ip_du_serveur -p 2222Fail2ban est un outil de sécurité qui surveille les journaux et bloque les adresses IP après un nombre défini de tentatives échouées de connexion, ce qui est particulièrement utile pour prévenir les attaques par force brute.
Sur votre serveur, installez Fail2ban avec la commande suivante :
sudo apt install fail2banAprès l'installation, il est nécessaire de configurer Fail2ban pour protéger le service SSH.
-
Créer une copie du fichier de configuration par défaut (afin de préserver l'original) :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
-
Éditer le fichier
jail.localpour configurer les règles de sécurité SSH :sudo nano /etc/fail2ban/jail.local
Trouvez la section
[sshd]et assurez-vous qu'elle est activée et correctement configurée. Voici un exemple de configuration de base pour protéger SSH :[sshd] enabled = true port = 2222 # Assurez-vous que le port est le même que celui défini précédemment logpath = %(sshd_log)s maxretry = 3 bantime = 3600enabled = true: Active la surveillance pour SSH.port = 2222: Définit le port que Fail2ban doit surveiller (mettez ici votre nouveau port SSH).maxretry = 3: Nombre de tentatives de connexion échouées avant que Fail2ban ne bloque l'IP.bantime = 3600: Durée du bannissement en secondes (ici 1 heure).
-
Redémarrer Fail2ban pour appliquer les modifications :
sudo systemctl restart fail2ban
-
Vérifier que Fail2ban protège bien SSH :
Vous pouvez vérifier l'état des jails avec la commande suivante :
sudo fail2ban-client status
Pour vérifier spécifiquement la jail SSH :
sudo fail2ban-client status sshd
Vous pouvez personnaliser davantage les règles de bannissement en ajustant les paramètres findtime, bantime, et maxretry :
findtime: Durée pendant laquelle les tentatives échouées sont comptées (en secondes).bantime: Durée du bannissement (en secondes).maxretry: Nombre de tentatives échouées avant le bannissement.
Par exemple, pour un bannissement plus long après 5 tentatives échouées dans un délai de 10 minutes :
findtime = 600
bantime = 86400 # Bannissement pendant 24 heures
maxretry = 5
Cela renforce la sécurité en rendant les attaques par force brute plus difficiles à exécuter.
Les mises à jour automatiques assurent que votre système est toujours protégé contre les vulnérabilités connues.
sudo apt install unattended-upgradesÉditez le fichier :
sudo nano /etc/apt/apt.conf.d/50unattended-upgradesAssurez-vous que les mises à jour de sécurité sont activées.
Décommentez et modifiez :
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:30";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::SyslogEnable "true";
Créez ou éditez le fichier :
sudo nano /etc/apt/apt.conf.d/20auto-upgradesAjoutez :
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
sudo unattended-upgrades --dry-run --debugLes journaux se trouvent dans /var/log/unattended-upgrades/.
sudo systemctl edit apt-daily-upgrade.timerAjoutez :
[Timer]
OnCalendar=
OnCalendar=03:30
RandomizedDelaySec=0
Redémarrez le timer :
sudo systemctl restart apt-daily-upgrade.timerUbuntu Pro Livepatch applique des correctifs de sécurité au noyau sans nécessiter de redémarrage.
- Rendez-vous sur Ubuntu Pro et connectez-vous.
- Obtenez votre jeton.
sudo pro attach votre-jetonVérifiez le statut :
pro statusDocker est nécessaire pour exécuter Nextcloud AIO.
curl -fsSL https://get.docker.com | sudo shsudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest-
Accédez à l'interface AIO :
https://[ADRESSE_IP_DU_SERVEUR]:8080Note : Acceptez le certificat auto-signé.
-
Suivez les instructions :
- Entrez le nom de domaine.
- Créez un mot de passe administrateur pour Nextcloud.
-
Configuration automatique :
- Nextcloud AIO téléchargera et configurera les conteneurs nécessaires.
Utiliser un second disque dédié aux sauvegardes est essentiel pour garantir la sécurité de vos données. En cas de défaillance du disque principal, vos sauvegardes restent intactes sur le second disque, vous permettant de restaurer votre système ou vos fichiers critiques.
Avantages d'un second disque pour les sauvegardes :
- Isolation des données : Les sauvegardes sont stockées séparément du système principal.
- Protection contre les pannes matérielles : Si le disque principal tombe en panne, les données de sauvegarde ne sont pas affectées.
- Performance : Les opérations de sauvegarde n'affectent pas les performances du disque principal.
Avant d'utiliser le nouveau disque pour les sauvegardes, vous devez le formater avec le système de fichiers ext4.
-
Identifier le disque
Tout d'abord, identifiez le nom du périphérique du nouveau disque. Vous pouvez utiliser la commande
lsblkoufdisk -l:sudo lsblk
Cela affichera une liste des périphériques de stockage. Recherchez le disque qui correspond à la taille de votre nouveau disque. Par exemple, supposons qu'il soit identifié comme
/dev/sdb. -
Créer une partition (si nécessaire)
Si le disque n'a pas de partition, créez-en une à l'aide de
fdisk:sudo fdisk /dev/sdb
- Tapez
npour créer une nouvelle partition. - Acceptez les valeurs par défaut en appuyant sur Entrée.
- Tapez
wpour écrire les modifications.
- Tapez
-
Formater la partition en ext4
Formatez la partition (par exemple,
/dev/sdb1) en ext4 :sudo mkfs.ext4 /dev/sdb1
-
Vérifier l'UUID du disque
L'UUID (Universally Unique Identifier) du disque est utilisé pour le montage. Obtenez-le avec :
sudo blkid /dev/sdb1
Vous obtiendrez une sortie similaire à mais biensur avec un identifiant différent :
/dev/sdb1: UUID="354d2af0-504b-4d92-b40c-7107c4a43c4d" TYPE="ext4"Notez l'UUID, il sera utilisé dans le fichier
fstab.
Pour que le disque soit monté automatiquement au démarrage du système, vous devez ajouter une entrée dans le fichier fstab.
-
Créer le point de montage
Créez le répertoire où le disque sera monté :
sudo mkdir -p /mnt/backup/borg
-
Sauvegarder le fichier fstab actuel
Avant de modifier le fichier
fstab, il est prudent de le sauvegarder :sudo cp /etc/fstab /etc/fstab.backup
-
Éditer le fichier fstab
Ouvrez le fichier
fstabavec un éditeur de texte :sudo nano /etc/fstab
Ajoutez la ligne suivante à la fin du fichier (en remplaçant l'UUID par celui de votre disque) :
# Disque de sauvegarde BorgBackup UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/backup/borg ext4 defaults,nofail 0 0Explication des options :
UUID=...: Identifie le disque à monter./mnt/backup/borg: Point de montage.ext4: Type de système de fichiers.defaults: Options de montage par défaut.nofail: Empêche le système de ne pas démarrer si le disque n'est pas présent.0 0: Indique de ne pas faire de dump ni de vérification automatique avec fsck.
-
Tester le montage
Après avoir enregistré les modifications, testez le montage sans redémarrer :
sudo mount -a
Vérifiez que le disque est correctement monté :
df -h | grep /mnt/backup/borgVous devriez voir une ligne indiquant que le disque est monté sur
/mnt/backup/borg. -
Définir les permissions (optionnel)
Assurez-vous que l'utilisateur qui exécutera les sauvegardes a les permissions nécessaires sur le point de montage :
sudo chown -R votre_utilisateur:votre_utilisateur /mnt/backup/borg
Remplacez
votre_utilisateurpar le nom d'utilisateur approprié.
Pour s'assurer que tout fonctionne correctement, redémarrez le serveur :
sudo rebootAprès le redémarrage, vérifiez que le disque est monté :
df -h | grep /mnt/backup/borgMaintenant que le second disque est monté, vous pouvez configurer Nextcloud AIO pour utiliser ce répertoire pour les sauvegardes avec BorgBackup.
-
Accédez à l'interface AIO.
-
Allez dans la section Sauvegardes.
-
Indiquez le chemin du répertoire de sauvegarde :
/mnt/backup/borg -
Activez les sauvegardes automatiques.
Remarque : Assurez-vous que le conteneur Nextcloud AIO a les permissions nécessaires pour accéder au répertoire de sauvegarde.
Pour renforcer la sécurité :
-
Vérifiez que le module Brute-force settings est activé.
-
Activez l'antivirus intégré.
-
Activez l'authentification à deux facteurs (2FA) :
- Allez dans Paramètres > Sécurité.
- Configurez la 2FA avec une application d'authentification.
-
Chiffrez les données :
- Allez dans Paramètres > Sécurité.
- Activez le chiffrement côté serveur.
-
Utilisez des mots de passe sécurisés :
- Au moins 8 caractères, avec minuscules, majuscules, chiffres et caractères spéciaux.
sudo docker psVous devriez voir plusieurs conteneurs liés à Nextcloud en cours d'exécution.
Nextcloud AIO inclut une solution de sauvegarde avec BorgBackup.
-
Accédez à l'interface AIO.
-
Configurez le répertoire de sauvegarde :
- Utilisez le chemin configuré précédemment :
/mnt/backup/borg.
- Utilisez le chemin configuré précédemment :
-
Activez les sauvegardes automatiques.
La maintenance régulière assure le bon fonctionnement et la sécurité de votre serveur.
Maintenir votre système à jour est crucial pour garantir la sécurité, la stabilité et les performances optimales de votre serveur Ubuntu. Voici les étapes à suivre pour effectuer une mise à jour complète du système.
Exécutez régulièrement la commande suivante pour mettre à jour la liste des paquets et installer les mises à jour disponibles :
sudo apt update && sudo apt upgradesudo apt update: Met à jour la liste des paquets disponibles à partir des dépôts configurés.sudo apt upgrade: Installe les versions les plus récentes de tous les paquets actuellement installés.
Si vous utilisez des paquets installés via Snap, assurez-vous de les mettre à jour avec la commande suivante :
sudo snap refreshsudo snap refresh: Met à jour tous les paquets installés via Snap à leur dernière version disponible.
Après une mise à jour, il se peut que certains paquets ne soient plus nécessaires. Si apt vous le suggère, vous pouvez les supprimer pour libérer de l'espace disque et garder votre système propre :
sudo apt autoremovesudo apt autoremove: Supprime les paquets qui ne sont plus nécessaires.
Si vous rencontrez des erreurs lors de l'installation ou de la mise à jour des paquets, il peut être utile de reconfigurer les paquets mal configurés :
sudo dpkg --configure -asudo dpkg --configure -a: Configure tous les paquets qui ont été décompressés mais pas encore configurés.
En cas de dépendances cassées ou de paquets défectueux, utilisez la commande suivante pour tenter de résoudre les problèmes :
sudo apt --fix-broken installsudo apt --fix-broken install: Corrige les dépendances cassées en installant les paquets manquants.
- Vérifiez les messages du système : Après chaque commande, lisez attentivement les messages affichés.
- Redémarrage du système : Certaines mises à jour, notamment celles du noyau, peuvent nécessiter un redémarrage.
- Planifiez des mises à jour régulières : Il est recommandé de planifier des mises à jour régulières.
- Sauvegardes avant mise à jour : Avant d'effectuer des mises à jour majeures, assurez-vous que vos données critiques sont sauvegardées.
sudo apt update: Met à jour la liste des paquets disponibles.sudo apt upgrade: Installe les mises à jour disponibles.sudo apt autoremove: Supprime les paquets inutilisés.sudo dpkg --configure -a: Configure les paquets non configurés.sudo apt --fix-broken install: Répare les dépendances cassées.sudo snap refresh: Met à jour les paquets Snap.
Pour mettre à jour les conteneurs Nextcloud :
- Accédez à l'interface AIO.
- Cliquez sur "Stop containers" puis "Start and update containers".
Pour vérifier les logs du conteneur maître :
sudo docker logs nextcloud-aio-mastercontainerGrâce à unattended-upgrades et Ubuntu Pro Livepatch, les mises à jour de sécurité sont automatisées.
-
Sauvegardez toutes vos données importantes.
-
Mettez à jour le système actuel :
sudo apt update && sudo apt upgrade -y sudo apt dist-upgrade -y
sudo apt install update-manager-coreÉditez le fichier :
sudo nano /etc/update-manager/release-upgradesAssurez-vous que la ligne suivante est définie sur lts :
Prompt=lts
sudo do-release-upgrade- Suivez les instructions à l'écran.
- Le serveur redémarrera si nécessaire.
Note : Pendant la mise à niveau, les services peuvent être interrompus.
-
Vérifiez que tous les services fonctionnent correctement.
-
Mettez à jour les paquets restants :
sudo apt update && sudo apt upgrade -y
Félicitations ! Vous avez installé et configuré avec succès un serveur Nextcloud AIO sécurisé sur Ubuntu Server avec Docker. Vous disposez désormais d'une solution de cloud personnel robuste pour stocker, partager et synchroniser vos fichiers.
N'oubliez pas de :
- Surveiller régulièrement votre serveur.
- Effectuer des sauvegardes fréquentes.
- Tenir votre système à jour pour bénéficier des dernières fonctionnalités et correctifs de sécurité.
- Documentation officielle de Nextcloud AIO : GitHub Nextcloud AIO
- Guide de sécurité pour Nextcloud : Nextcloud Documentation
- Ubuntu Server Guide : Ubuntu Documentation
- Sécuriser SSH sur Ubuntu : Ubuntu Community Help Wiki
- Guide complet sur unattended-upgrades : Ubuntu Community Help Wiki
- Authentification SSH par clé publique : Ubuntu Community Help Wiki