Nextcloud Truenas
Installation et configuration de Nextcloud sur un Truenas Scale.
Nextcloud est un cloud personnel qui peut s’autoherberger, il est possible de l’utiliser pour synchroniser des fichiers avec un client Mac, Windows, Androïd ou iOS comme peut le faire Google Drive ou OneDrive. Il à également un magasin d’applications qui permet de lui ajouter des fonctionnalités comme un calendrier, de la prise de note ou même certaines extensions Google Drive pour créer et modifier des fichiers directement depuis son interface.
Il est également adapté à l’entreprise et au travail collaboratif grâce à ses modules de personnalisation et de confidentialité.
I. Préparation du stockage
1. Aller dans l’onglet Dataset de TrueNAS pour créer un nouveau Dataset pour l’application Nextcloud
2. Cliquer sur le bouton Ajouter un Dataset
3. Nommer et créer le Dataset
II. Installation de Nextcloud
1. Aller dans l’onglet Applications puis sur Applications disponibles
2. Chercher Plex et cliquer sur Installer
3. Dans la configuration de l’application, il faut absolument effectuer ces modifications :
- Créer le nouvel utilisateur par défaut avec son mot de passe
- Modifier la taille maximale d’upload de fichier
- Passer la limite de mémoire de PHP entre 1024 et 2048Mb
- Sous Stockage, activer le Host Path et cibler le Dataset précédemment créé
4. Lancer la création de l’application
III. Configuration de Nextcloud
L’application est pré-paramétrée, il suffit d’attendre la fin de son déploiement et de se rendre sur http://localhost:9001
Lorsque vous êtes connecté à l’interface, il faut lui faire sa configuration de base. Le prochain chapitre concernera l’accès à distance à l’application via un tunnel Cloudflare mais il est possible d’utiliser un reverse proxy.
IV. Tunnel Cloudlflare et accès à distance
1. Créer son tunnel normalement depuis ZeroTrust dans la console d’administration de Cloudflare.
(I) Information
Il semblerait que Cloudflare n'aime pas trop que l'on utilise nexctloud en tant que sous domaine, il vaut mieux utiliser cloud.domaine.xyz
La deuxième étape concerne la modification du fichier de configuration de Nextcloud afin d’autoriser son accès depuis votre domaine et donc de votre nouvelle URL.
2. Editer le fichier de confiuration situé à /mnt/Truenas/NEXTCLOUD/config/config.php
nano /mnt/Truenas/NEXTCLOUD/config/config.php
3. Ajouter son domaine dans ‘trusted domains’
et dans ‘overwrite.cli.url’
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'xxx.xxx.xxx.xxx',
2 => 'cloud.domain.xyz',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'pgsql',
'version' => '27.1.2.1',
'overwrite.cli.url' => 'https://cloud.domain.xyz/',
4. Modifier le ‘overwriteprotocol’ en https
'overwriteprotocol' => 'https',
5. On peut également configurer son serveur SMTP en fournissant les informations de connexion au fichier
'mail_from_address' => 'fromnextcloud',
'mail_smtpmode' => 'smtp',
'mail_sendmailmode' => 'smtp',
'mail_domain' => 'domain.xyz',
'mail_smtphost' => 'smtpdomain',
'mail_smtpport' => '465',
'mail_smtpauth' => 1,
'mail_smtpname' => 'smtphostname',
'mail_smtppassword' => 'password',
'maintenance' => false,
'loglevel' => 2,
);
V. Configurer un agenda Google
Si vous utilisez un agenda Google, il est possible de l’ajouter afin de pouvoir le consulter depuis notre instance Nextcloud. En revanche, il ne sera accèssible qu’en lecture seule donc on ne pourra pas lui ajouter directement des événements.
1. Pour s’abonner à un agenda Google dans Nextcloud, aller dans l’onglet Calendrier en haut, puis cliquer sur Nouvel Agenda et choisir Nouvel abonnement par lien
2. Sur Google, aller dans votre agenda puis cliquer sur les 3 petits points à côté de l’agenda que vous voulez ajouter et choisir Paramètres et partage
3. Descendre dans la page jusqu’à Adresse secrète au format iCal, cliquer sur l’œil et copier l’adresse
4. Coller cette URL dans Nextcloud pour ajouter le calendrier
VI. Modification de la fréquence de rafraichissement CRON
Par défault la fréquence de rafraichissement de la tâche CRON ne se fait que toutes les semaines, il est possible de la modifier mais il faut modifier la fréquence de mise à jour du calendrier sur le conteneur Nextcloud et ajouter une tache dans le CRON du serveur TrueNAS.
1. Se connecter au terminal du conteneur de Nextcloud par la console du serveur :
docker ps
root@truenas[~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46a89d21af11 e4c2ec545336 "/entrypoint.sh apac…" 3 days ago Up 3 days k8s_nextcloud_nextcloud-f49fd9976-ppvqs_
2. Copier l’identifiant du conteneur k8s_nextcloud_nextcloud et lancer cette commande pour vous connecter avec l’identifiant 33 :
docker exec -ti -u33 46a89d21af11 bash
3. La modification de la fréquence ne se fait que par une seule commande, si elle est bien prise en compte le serveur nous répondra que la mise à jour s’est correctement passée.
php occ config:app:set dav calendarSubscriptionRefreshRate --value "P1D"
Config value calendarSubscriptionRefreshRate for app dav set to P1D
Ici, la valeur à été modifié à tout les jours, il faut savoir que la valeur P1D correspond à un jour. Ce sont des valeurs PHP ce qui veut dire que les intervalles sont en format PHP.
Par exemple si vous souhaitez qu’il se mette à jour tout les 5 minutes il faudra plutôt utiliser PT5M
php occ config:app:set dav calendarSubscriptionRefreshRate --value "PT5M"
Config value calendarSubscriptionRefreshRate for app dav set to PT5M
4. Revenir dans l’interface de TrueNAS dans l’onglet Paramètres système et dans Avancé
5. Aller dans Cron Jobs et cliquer sur le bouton Ajouter
6. Donner un nom à la tâche et dans la commande entrer la suivante :
docker exec --user www-data `docker ps | grep "k8s_nextcloud_nextcloud" | awk '{ print $1; }'` php /var/www/html/cron.php
7. L’utilisateur qui doit exécuter la commoande est ROOT
Pour que la tâche s’exécute toutes les 5 minutes, dans la planification il faut mettre */ 5 * * * *
Vous pouvez vous aider de https://crontab.guru/ pour choisir une intervalle qui vous convient mieux.
8. Dernière étape, il faut aller dans l’interface de Nextcloud pour lui dire que vous voulez utiliser le CRON, car par défaut il utilise AJAX et charge la configuration à chaque chargement de la page (et ça ralentis vachement le chargement de la page).
Il faut donc cliquer sur votre nom en haut à droite, aller dans Paramètres d’administration puis sur Paramètres de base.