Nextcloud

nextcloud
Nextcloud is een open-source oplossing

Nextcloud is een suite van client-serversoftware voor het maken en gebruiken van bestandshostingservices. Het is geschikt voor gebruik door grote en kleine bedrijven en bevat uitgebreide ondersteuningsopties. Omdat het gratis en open source software is, kan en mag iedereen het op zijn eigen server installeren en gebruiken. In combinatie met kantoorsuites als Collabora Online of OnlyOffice is Nextcloud functioneel vergelijkbaar met Dropbox, Office 365 of Google Drive. Nextcloud hosting kan in de cloud of op eigen hardware. Het is schaalbaar van thuiskantooroplossing op basis van de goedkope Raspberry Pi tot volledige datacenteroplossingen die miljoenen gebruikers ondersteunen.

Agenda package van Synology werkt niet goed

In dit bericht ga ik nader in op het gebruik van Nextcloud voor agendabeheer. Met Nextcloud is het synchroniseren van je agenda met office (outlook) of de agenda op je mobiele telefoon (android of iphone) gemakkelijk in te stellen. Tevens kun je afspraken maken op je telefoon en mensen uitnodigen voor je afspraak. Nextcloud synchroniseert deze afspraken via de nextcloud app met de nextcloud server op de NAS. Het versturen van uitnodigingen via de telefoon is met de agenda package van Synology niet mogelijk. Synology onderkent dit probleem maar werkt niet aan een oplossing hiervoor. Na contact te hebben gezocht met Synology hierover krijg ik geen bevredigend antwoord. Tegenwoordig is het gebruik van een app via de mobiele telefoon een essentieel uitgangspunt. Dat moet goed geregeld zijn. Ik ben dus op zoek gegaan naar een andere oplossing. Die heb ik gevonden via Nextcloud.

Installeren van Nextcloud

Voor de beste tutorials raad ik je sowieso mariushosting aan. Mariushosting schrijft simpel en legt in kleine stapjes uit hoe de installatie moet worden uitgevoerd. Ik maak gebruik van de installatie instructie die Mariushosting geschreven heeft. De onderstaande installatie stappen werken op mijn NAS (DS923) maar dat betekent niet dat de installatie op elk ander Synology NAS apparaat goed werkt. Installeren doe je dus op eigen risico.

Volg stap 1 tot en met 12 via mariushosting

Zie deze link.

Stap 13: Maak in webstation een virtuele host aan voor nextcloud
Figuur 1 Maak een virtuele host aan
Figuur 1 Maak een virtuele host aan
Stel de virtuele host in

Na het aanklikken van de knop ‘Maken / Virtuele Host’, opent een window.

Vul de gegevens in zoals in figuur 2 is aangegeven met uitzondering van de hostnaam. Vul hier in: nextcloud.je-eigen-domeinnaam.nl (of voor *.nl de extensie die van toepassing is).

Figuur 2 virtuele host netwerk instellingen
Figuur 2 virtuele host netwerk instellingen
Stel de backend van de virtuele host in

Kies de map nextcloud die je onder de gedeelde map web hebt aangemaakt bij het onderwerp ‘Documenthoofdmap’.

Figuur 4 instellen van de backend van de virtuele host
Figuur 3 instellen van de backend van de virtuele host

Kies de laatste apache versie (2.4).

Ga vervolgens door met stap 14 uit de tutorial van marius voor het installeren van nextcloud op de NAS.
Stap 19 Open je browser en type in: nextcloud.je-eigen-domeinnaam.nl
Laatste stappen voor MS outlook
  • Deze stappen gelden alleen voor het hosten van je email via je eigen mailserver op de NAS (MailPlus Server package).
  • Je het CalDAV nodig om te synchroniseren. Installeer in outlook de plugin CalDav Synchroniser.
  • Na installatie van de plugin, maak een nieuw profiel aan.
  • Outlook folder: maak een nieuwe map aan in de mail directory van je mailserver. De nieuwe map moet het kenmerk hebben van agenda-items. Deze optie kun je kiezen via een dropdown menu.
  • Voer bij het veld ‘DAV URL’ in: https://nextcloud.je-eigen-domeinnaam.nl/remote.php/dav/calendars/gebruikersnaam-NAS/personal/
  • Voer in je gebruikersnaam, het wachtwoord en het email adres.
  • Zorg ervoor dat zowel TLS niveau 1.2 als 1.3 ingeschakeld is voor de mailserver. Kies hiervoor in het configuratiescherm voor de Services MailPlus-Server-Postfix en MailPlus-Server-Dovecot het niveau ‘Tussencompatibilteit’. Daarmee wordt zowel TLS niveau 1.2 en 1.3 aangeboden. Kennelijk heeft MS outlook TLS 1.2 nodig om de verbinding tot stand te brengen en kan MS Outlook nog niet uit de voeten met TLS 1.3. Zie ook de afbeeldingen hieronder.
schermafbeelding 2023 05 18 203852
Figuur 4 Instellen van TLS profielniveau
Figuur 5 Kiezen niveau Tussencompatibiliteit
Figuur 5 Kiezen niveau Tussencompatibiliteit
  • Test de verbinding
  • Indien succesvol, start met synchroniseren
Laatste stappen voor mail op de Android telefoon

Test het maken van een afspraak door een uitnodiging aan een bekend email adres te versturen.

Instellen cron service

Een systeem als Nextcloud vereist soms taken die op regelmatige basis moeten worden uitgevoerd zonder de noodzaak voor gebruikersinteractie of het belemmeren van de Nextcloud prestaties. Voor dat doel kun je achtergrondtaken definiëren (bijvoorbeeld database clean-ups) die uitgevoerd worden zonder enige behoefte aan gebruikersinteractie.

Deze banen worden meestal Cron taken genoemd. Cron-taken zijn commando’s of shell-gebaseerde scripts die periodiek op vaste tijden, data of intervallen worden uitgevoerd. De cron.php instructie is een Nextcloud intern proces dat dergelijke achtergrondtaken op aanvraag uitvoert.

Nextcloud apps registreren acties met cron.php automatisch om te zorgen voor typische huishoudelijke verrichtingen, zoals het verzamelen van verwijderingen van tijdelijke bestanden of het controleren van nieuw bijgewerkte bestanden met filescan() voor externe bestandssystemen.

In hetconfig/config.phpconfiguratiebestand geef je deze configuratie op. Sommige taken lopen maar één keer per dag. Wanneer een uur wordt gedefinieerd (tijdzone is UTC) voor deze configuratie, zullen de achtergrondtaken die zichzelf adverteren als niet tijdgevoelig, worden vertraagd tijdens de werkuren en worden uitgevoerd in de 4 uur na de gegeven tijd. Dit wordt bijvoorbeeld gebruikt voor het verlopen van activiteiten, verdachte inlogtraining en updatecontroles.

Een waarde van 1 bv. zal alleen deze achtergrondtaken uitvoeren tussen 01:00 UTC en 05:00 UTC:

'maintenance_window_start' => 1,

Het heeft de voorkeur om de cron.php functie aan te roepen door een geplande taak van het besturingssysteem. Deze methode maakt de uitvoering van geplande banen mogelijk zonder de inherente beperkingen die de alternatieve methoden (ajax en webserver) hebben.

Om een cron taak uit te voeren, wordt elke 5 minuten, onder de standaard webserver gebruiker (in het geval van de installatie van Nextcloud onder de map web met als gebruiker http), moet je de volgende cron taak instellen om het cron.php-script aan te roepen. Gebruik hiervoor Taakplanner uit het configuratiescherm. Zie de afbeeldingen hieronder.

Oplossen van foutmeldingen

Om Nextcloud werkend te krijgen, is een koud kunstje. Om het foutloos te laten draaien, is een tweede. Daarvoor heeft Nextcloud een pagina ingericht met Beveiligings- en instellingswaarschuwingen. Deze meldingen zijn te vinden op https://jouw.nextcloud.domein/index.php/settings/admin/overview.

Enkele veel voorkomende meldingen of waarschuwingen
Onderhoudsmodus wordt niet beëindigd na upgrade
  • Repareren met cPanel
  • Als je cPanel gebruikt om je Nextcloud-server te beheren, kun je de volgende stappen proberen om de onderhoudsmodus uit te schakelen en het probleem op te lossen:
  • Log in op je cPanel-account en ga naar de sectie Bestandsbeheer.
  • Ga naar de map Nextcloud en open de map Config. Als bijvoorbeeld de Nextcloud-map zich in /home/username/public_html/nextcloud bevindt, kun je het pad /home/username/public_html/nextcloud/config gebruiken.
  • Klik met de rechtermuisknop op het config.php bestand en selecteer Bewerken. U kunt een pop-up venster zien waarin u wordt gevraagd de codering te bevestigen. U kunt opnieuw op Bewerken klikken om verder te gaan.
  • Vind de regel die zegt ‘onderhoud’ => waar, en verander het in ‘onderhoud’ => fout. Sla het bestand op en sluit de editor.
  • Controleer of de webinterface normaal werkt. Zo niet, dan moet je mogelijk het updateproces hervatten of herstarten. Je kunt dit doen door de Terminal sectie in cPanel te gebruiken.
  • In de Terminal, navigeer naar de map Nextcloud en voer het commando php occ upgrade. Dit commando zal proberen om eventuele problemen op te lossen en de update te voltooien. Je kunt enkele berichten zien over de voortgang of de status van de update. Wacht tot het commando succesvol voltooid is.
  • Als het commando mislukt of een aantal fouten teruggeeft, moet je mogelijk handmatig enkele bestanden of mappen die het probleem veroorzaken vervangen of verwijderen. Bijvoorbeeld, als het foutbericht zegt dat de app updatenotificatie niet correct is vervangen, kun je proberen de map /home/username/public_html/nextcloud/apps/updatenotificatie te verwijderen en het upgradecommando opnieuw uitvoeren.
  • Nadat het upgrade commando succesvol is voltooid, kun je de webinterface opnieuw controleren. Het moet normaal werken en de nieuwste versie van Nextcloud tonen.
Foutmelding: indexen

Wanneer deze melding verschijnt:

De database mist een paar indexen. Omdat het toevoegen van indexen op grote tabellen veel tijd kan kosten, zijn ze niet automatisch gecreëerd. Door het ingeven van de opdracht “occ db:add-missing-indices” kunnen deze indexen handmatig worden toegevoegd terwijl de server blijft draaien. Als de indexen zijn toegevoegd, zullen opvragingen op die tabellen veel sneller plaatsvinden.

  • Installeer de occ web app (tik occweb in in het zoekveld van het menu van Nextcloud).
  • Open occ web waarna een shell opent.
  • Geef de opdracht: db:add-missing-indices
  • Als dan nog foutmeldingen in de console van occweb overblijven, dan is er een alternatief. Ga naar phpmyadmin en verwijder daar handmatig de dubbele bestanden (i.c. dubbele mails) verwijderen. De lijst van dubbele bestanden vind je in het log-bestand op de pagina met beveiligings- en meldingsinstellingen.
  • Als de occ web app niet kan worden geïnstalleerd, ga da in de console van de NAS naar de installatiemap van nextcloud: cd/ volume1/web/nextcloud:
      • su http --command occ db:add-missing-indices
      • su http --command occ db:add-missing-primary-keys
      • su http --command occ db:add-missing-columns

Het kan zijn dat de deze commando’s niet werken. omdat er geen output in de console verschijnt. Je kunt dan het beste in mariadb via phpmyadmin aanpassingen doen. Ga in phpmyadmin naar de database nextcloud. Volg de instructie hieronder (via ollama verkregen).

Steps to Fix:

  1. Check for the Column: You can check whether the fs_name_hash column exists in the oc_filecache table by running the following query:

SHOW COLUMNS FROM oc_filecache LIKE ‘fs_name_hash’;

  If this query returns no results, the column is indeed missing.

  1. Add the Missing Column: If the column is missing, you’ll need to add it to the table. Based on its name (fs_name_hash), it’s likely a hashed value (probably a string). You can create the column as a VARCHAR or CHAR field.

ALTER TABLE oc_filecache ADD COLUMN fs_name_hash VARCHAR(255);

  1. Create the Index: After adding the fs_name_hash column, you can create the missing index:

CREATE INDEX fs_name_hash ON oc_filecache (fs_name_hash);

  1. Run Nextcloud Maintenance: Once the index has been created, run the maintenance command to ensure everything is functioning correctly:

su http --command occ maintenance:repair of check via https://nextcloud.adagia.eu/index.php/settings/admin/overview)

Foutmelding: mimetype

Wanneer deze melding verschijnt:

One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair –include-expensive` to perform the migrations.

Installeer de occ web app of maak gebruik van de alternatieven zoals hiervoor aangegeven.

Geef de opdracht: occ maintenance:repair --include-expensive

Foutmelding: list of invalid files

Wanneer deze melding verschijnt:

Some files have not passed the integrity check. List of invalid files… Rescan… Voor meer informatie word je verwezen naar de documentatie.

Zoek op in de lijst van het logbestand waar de bestanden staan in de nextcloud submappen.

Verwijder in phpmyadmin de betreffende submappen. Scan daarna opnieuw.

Foutmelding: list of invalid files / hsts header ontbreekt

Wanneer de melding verschijnt:

The “Strict-Transport-Security” HTTP header is not set to at least “15552000” seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips 111.

Ga naar de terminal console van de NAS. Maak een hsts header aan onder usr/local/etc/nginx/sites-enabled. Zoek in de map naar de betreffende virtual host voor nextcloud. Dit is een naam met een numerieke code in de vorm van webservice_portal_123456789-xxxx-xxxx-xxxx-123456789. Open het bestand.

Voeg hieraan de regel toe:

add_header  Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”;

Herstart de Apache server in de Package Center (stop het pakket, klik daarna op uitvoeren). Scan in nextcloud opnieuw door de pagina met beveiligings- en meldingsinstellingen te bezoeken.

Foutmelding:

Wanneer de melding verschijnt:

The database is used for transactional file locking. To enhance performance, please configure memcache, if available. Voor meer informatie word je verwezen naar de documentatie↗.

In hetconfig/config.phpconfiguratiebestand kun je wijzigingen doen aan de configuratie. Dit bestand staat in de map web/nextcloud/config/config.php. Voeg hieraan de volgende installingen toe, daarmee verdween (bij mij) de foutmelding:

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Memcached',
'filelocking.enabled' => true,
'memcache.locking' => '\\OC\\Memcache\\Memcached',

Installeren van Redis voor Nextcloud wordt in de fora als oplossing voorgesteld. Na het instellen van een werkende Redis container die toegankelijk is onder poort 6379 lukte het niet om de Nextcloud met Redis te laten communiceren. Nextcloud ‘zag’ eenvoudigweg Redis niet. In plaats van Redis, heb ik Memcached als waarde opgegeven bij memcache.distributed en memcache.locking waarmee de foutmelding verdween.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *