Onmiddellijke Herstel voor v120/v126 Updateprobleem
Als je onlangs bent geüpdatet naar cPanel v120 of v126 en geen toegang hebt tot Roundcube vanwege een verouderd SQLite-schema, voer dan de volgende auto-reparatie-opdracht uit als root om onmiddellijk de fout te herstellen (in plaats van te wachten op de cron-taak):
/usr/local/cpanel/scripts/autorepair recoverymgmt
Stap 1. Identificeer de Roundcube-database voor één mailbox
Stap 1.1 – Vind het pad van de mailboxdatabase
Roundcube maakt een per-gebruiker SQLite-bestand aan in de homedirectory van de cPanel-gebruiker. Voor elke mailbox heet dat bestand
$EMAIL_USER.rcube.db
en bevindt zich hier:
/home/$CPANELUSER/etc/$DOMAIN/$EMAIL_USER.rcube.db
$CPANELUSER = cPanel-accountgebruikersnaam (bijv. johndoe)
$DOMAIN = het domein voor die mailbox (bijv. example.com)
$EMAIL_USER = het lokale deel van de mailbox (bijv. info voor info@example.com)
Stap 1.2 – Vind het pad van de systeemaccountdatabase
Roundcube houdt ook een database bij voor de cPanel-systeemlogin (zonder domein). Dat bestand heet
$CPANELUSER.rcube.db
en bevindt zich hier:
/home/$CPANELUSER/etc/$CPANELUSER.rcube.db
Vervang $CPANELUSER door de werkelijke cPanel-gebruikersnaam.
Stap 1.3 – Toon huidige en back-upbestanden
Om zowel de actieve databases als eventuele automatisch aangemaakte back-ups voor een mailbox en de systeemaccount te controleren, voer je uit:
ls -l /home/$CPANELUSER/etc/"$DOMAIN"/"$EMAIL_USER".rcube.db* /home/$CPANELUSER/etc/"$CPANELUSER".rcube.db*
Voorbeelduitvoer:
-rw------- 1 johndoe johndoe 512000 Jan 21 19:52 info.rcube.db
-rw------- 1 johndoe johndoe 466944 Jul 31 2024 info.rcube.db.1722461863
-rw------- 1 johndoe johndoe 491520 Oct 31 2024 info.rcube.db.1730428585
-rw------- 1 johndoe johndoe 505856 Jan 10 2025 info.rcube.db.1731234567
-rw------- 1 johndoe johndoe 490000 Feb 15 2025 johndoe.rcube.db
-rw------- 1 johndoe johndoe 480000 Dec 10 2024 johndoe.rcube.db.1734200000
Bestanden eindigend op *.rcube.db (zonder tijdstempel) zijn actieve databases.
Bestanden eindigend op *.rcube.db.TIMESTAMP zijn automatische back-ups (met Unix-epoch-suffixen).
Stap 2. Back-up/Hernoem de huidige (mogelijk corrupte) database
Waarschuwing: Maak altijd een back-up (hernoemen) van het “huidige” databasebestand voordat je het overschrijft of verwijdert.
Stap 2.1 – SSH naar de server als root
ssh root@jouw-cpanel-server
Stap 2.2 – Navigeer naar de Roundcube-directory van de mailbox
cd /home/"$CPANELUSER"/etc/"$DOMAIN"/
Stap 2.3 – Toon bestaande Roundcube-databasebestanden voor die mailbox
ls -l "$EMAIL_USER".rcube.db*
Voorbeelduitvoer:
-rw------- 1 johndoe johndoe 512000 Jan 21 19:52 info.rcube.db
-rw------- 1 johndoe johndoe 466944 Jul 31 2024 info.rcube.db.1722461863
-rw------- 1 johndoe johndoe 491520 Oct 31 2024 info.rcube.db.1730428585
-rw------- 1 johndoe johndoe 505856 Jan 10 2025 info.rcube.db.1731234567
Stap 2.4 – Hernoem (verplaats) de huidige database naar een bestand met datum
Voeg vandaag’s datum toe (in YYYYMMDD-formaat) om het als back-up te bewaren:
mv "$EMAIL_USER.rcube.db" "$EMAIL_USER.rcube.db.$(date +%Y%m%d)" -v
Verwachte uitvoer (verbose):
'info.rcube.db' -> 'info.rcube.db.20250531'
Na deze hernoeming blijven alleen de bestanden met de suffix .rcube.db.TIMESTAMP in die directory staan.
Stap 2.5 – Herhaal voor de systeemaccountdatabase
Ga naar de map etc zonder domeinvermelding en hernoem het systeemaccountbestand:
cd /home/"$CPANELUSER"/etc/ mv "$CPANELUSER.rcube.db" "$CPANELUSER.rcube.db.$(date +%Y%m%d)" -v
Verwachte uitvoer:
'johndoe.rcube.db' -> 'johndoe.rcube.db.20250531'
Stap 3. Zoek & herstel een geldige back-up
Roundcube slaat automatisch oudere versies van elke SQLite-database op als *.rcube.db.TIMESTAMP. Volg de onderstaande substappen om er een te herstellen.
Stap 3.1 – Toon beschikbare back-ups voor de mailbox
ls -l /home/"$CPANELUSER"/etc/"$DOMAIN"/*".rcube.db."*
Voorbeelduitvoer:
-rw------- 1 johndoe johndoe 466944 Jul 31 2024 info.rcube.db.1722461863
-rw------- 1 johndoe johndoe 491520 Oct 31 2024 info.rcube.db.1730428585
-rw------- 1 johndoe johndoe 505856 Jan 10 2025 info.rcube.db.1731234567
-rw------- 1 johndoe johndoe 502784 May 1 2025 info.rcube.db.1735803200
Identificeer de back-up met de meest recente timestamp of het grootste bestandsgrootte—dit is waarschijnlijk de gezondste kopie.
Stap 3.2 – Kopieer de gekozen back-up naar de actieve bestandsnaam
Stel dat je de back-up van 1 mei 2025 kiest (suffix 1735803200):
cp -p "info.rcube.db.1735803200" "info.rcube.db"
Met cp -p behoud je eigenaar en tijdstempels.
Stap 3.3 – Herstel eigendom en bestandsrechten
chown "$CPANELUSER":"$CPANELUSER" "info.rcube.db" chmod 600 "info.rcube.db"
Controleer met:
ls -l "info.rcube.db"
Verwachte uitvoer:
-rw------- 1 johndoe johndoe 502784 May 1 12:00 info.rcube.db
Stap 3.4 – Herstel de systeemaccountdatabase (indien nodig)
Ga naar /home/$CPANELUSER/etc en kopieer de meest recente back-up:
cd /home/"$CPANELUSER"/etc/ cp -p "johndoe.rcube.db.1734200000" "johndoe.rcube.db" chown johndoe:johndoe "johndoe.rcube.db" chmod 600 "johndoe.rcube.db"
Stap 3.5 – Controleer of Roundcube werkt
Stap 3.5.1 – Mailboxlogin
Log in op Webmail en selecteer Roundcube voor de mailbox. De foutmelding “no such table: carddav_accounts” zou verdwenen moeten zijn.
Stap 3.5.2 – Systeemaccountlogin
Log in als het cPanel-systeemaccount (zonder domein). Roundcube zou moeten laden met de herstelde systeemaccountdatabase.
Stap 4. Terugvaloptie: Verwijder & laat Roundcube de database opnieuw aanmaken
Als er geen geldige back-up bestaat of het herstellen nog steeds mislukt, verwijder dan het bestaande SQLite-bestand zodat Roundcube bij de volgende login een nieuwe kan aanmaken.
Stap 4.1 – Verwijder het corrupte mailboxdatabasebestand
rm /home/"$CPANELUSER"/etc/"$DOMAIN"/"$EMAIL_USER".rcube.db
Stap 4.2 – Verwijder het corrupte systeemaccountdatabasebestand (indien aanwezig)
rm /home/"$CPANELUSER"/etc/"$CPANELUSER".rcube.db
Stap 4.3 – Zorg voor juist eigendom van de bovenliggende mappen
chown -R "$CPANELUSER":"$CPANELUSER" /home/"$CPANELUSER"/etc/"$DOMAIN"/ chmod 700 /home/"$CPANELUSER"/etc/"$DOMAIN"/
chown -R "$CPANELUSER":"$CPANELUSER" /home/"$CPANELUSER"/etc/ chmod 700 /home/"$CPANELUSER"/etc/
Stap 4.4 – Laat de gebruiker inloggen op Roundcube
Stap 4.4.1 – Mailboxlogin
Wanneer de mailboxgebruiker inlogt via Webmail, zal Roundcube automatisch een nieuwe info.rcube.db aanmaken.
Stap 4.4.2 – Systeemaccountlogin
Wanneer het systeemaccount inlogt (zonder domein), zal Roundcube automatisch een nieuwe johndoe.rcube.db aanmaken.
Daarna moeten gebruikers eventuele aangepaste mappen, adresboeken en voorkeuren opnieuw instellen.
Stap 5. Lijst elk aangetast cPanel-gebruikersnaam precies één keer
Om alle cPanel-gebruikers te vinden waarvan de Roundcube-log het bericht “no such table: carddav_accounts” bevat, voer je uit:
grep -l "no such table: carddav_accounts" /home/*/logs/roundcube/errors.log \ | sed -E 's#^/home/([^/]+)/logs/roundcube/errors.log$#\1#'
Dit geeft elke overeenkomende bestandsnaam één keer weer (-l laat grep alleen bestandsnamen tonen).
Vervolgens gebruikt sed een reguliere expressie om alleen de gebruikersnaam uit elk pad te halen en weer te geven.
Als je de volledige overeenkomende regels (gedetailleerd) voor een specifieke gebruiker nodig hebt, laat je de vlag -l weg:
grep "no such table: carddav_accounts" /home/elzisnl/logs/roundcube/errors.log
Gerelateerde Bronnen
How-To Restore a RoundCube SQLite Database backup
https://support.cpanel.net/hc/en-us/articles/360051956994-How-To-Restore-a-RoundCube-SQLite-Database-backup
v120/v126: Unable to access Roundcube after updates
https://support.cpanel.net/hc/en-us/articles/25294429672599-v120-v126-Unable-to-access-Roundcube-after-updates