2 Fragen zur Nextcloud (UserzÀhlung im Systemmonitoring und Fair Use Policy)

Hallo,

ich habe 2 Fragen, die ich bisher leider noch nicht selbst beantworten konnte.

Frage 1:
Ich habe mehrere Clouds gesehen (Privat und im beruflichen Umfeld), die eine gewisse Anzahl an Usern im Tab “System” unter “Einstellungen” anzeigen, die aber nicht mit der tatsĂ€chlichen Menge an Usern in der DB ĂŒbereinstimmen.

Beispiel 1:
grafik

TatsĂ€chlich werden nur knapp 700 User (LDAP und Database inkl. Remnants) gezĂ€hlt. Habe diese Daten mehrfach geprĂŒft in der DB und auch mit Befehlen wie user:list und dann die Zeilen zĂ€hlen lassen. Aktuell sind wir am aufrĂ€umen und entfernen alte, nicht mehr genutzte Accounts.

Beispiel 2:
2022-12-21 11_08_39-System - Administrationseinstellungen - C-Lab Cloud – Mozilla Firefox

TatsÀchlich sind es nach dem Befehl user:list 74 User und dazu noch mal 30 LDAP User.

Wie kommen diese komischen Zahlen im Systemtab zustande?

Frage 2:
Da mir leider ĂŒber das Kontaktformular bei Nextcloud nicht konkret geantwortet wurde (3 Versuche) und ich mehrfach Nextcloud Partner als Reaktion mit Lizenzangeboten erhielt, frage ich nun hier.

Wir haben aktuell 1 System (siehe oben), welches nach ZĂ€hlung ĂŒber 700 User hat. Davon sind mehr als 200 inaktiv und werden aktuell entfernt. Dazu noch externe Accounts, die fĂŒr gewisse Prozesse und Projekte erstellt wurden. Daher landen wir unter 500 User, welche ja ab V25 die Grenze fĂŒr die neue Fair Use Policy sind.

Ich hatte ĂŒber den Nextcloud Kontakt gefragt, was technisch im Detail deaktiviert wird, da dies nicht wirklich konkret dort steht, da wir ĂŒberlegen schon zu aktualisieren. Da wir aber nicht wissen, ob die Cloud in dem Umfang noch funktioniert, in der sie genutzt wird, wollte ich da mehr wissen. Da wir sowieso dieses Jahr noch unter die 500 rutschen, da die Prozesse fĂŒr Usererstellung und Löschung angepasst wurden, erĂŒbrigt sich eine Lizenz, da die meisten User wie schon erwĂ€hnt alte nicht mehr genutzte Accountleichen sind. Kann mir das jemand im Detail beantworten?

  • App Store
  • Updates von installierten Apps aus dem Appstore
  • Benachrichtigungsservice (Push Benachrichtigungen mobil?)

Mehr konnte ich bisher nicht rauslesen.

Ehrlich gesagt verstehe ich die Benutzeranzeige auch nicht so ganz.
Meine NC sagt mir ich hĂ€tte 1395User (System → Grafik)
ZĂ€hle ich aber mit sudo -u www-data php occ user:list | wc -l die ausgegebenen Zeilen in der Shell komme ich auf 2065 User.
Wir haben 14 LDAP Verbindungen durch ganz Deutschland und unzÀhlige externe Accounts.

Vielleicht kann das ja jemand mal richtig aufdröseln? :thinking:

1 Like

Zum Hintergrund

Wenn ich es richtig sehe, findet die PrĂŒfung der Benutzeranzahl hier statt:

public function isFairUseOfFreePushService(): bool {
	$pushAllowed = $this->cache->get('push_fair_use');
	if ($pushAllowed === null) {
		/**
		 * We want to keep offering our push notification service for free, but large
		 * users overload our infrastructure. For this reason we have to rate-limit the
		 * use of push notifications. If you need this feature, consider using Nextcloud Enterprise.
		 */
		$isFairUse = $this->subscription->delegateHasValidSubscription() || $this->userManager->countSeenUsers() < 1000;
		$pushAllowed = $isFairUse ? 'yes' : 'no';
		$this->cache->set('push_fair_use', $pushAllowed, 3600);
	}
	return $pushAllowed === 'yes';
}

Außerdem wurde die Fair Use Benutzergrenze auf 1000 erhöht.

In der Funktion countSeenUsers() wird geprĂŒft, wie viele Benutzer sich mindestens ein mal angemeldet haben:

public function countSeenUsers() {
	$queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
	$queryBuilder->select($queryBuilder->func()->count('*'))
		->from('preferences')
		->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('login')))
		->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('lastLogin')));

	$query = $queryBuilder->execute();

	$result = (int)$query->fetchOne();
	$query->closeCursor();

	return $result;
}

Die SQL-Abfrage, die hier zusammengesetzt wird, lautet:

SELECT COUNT(*)
FROM oc_preferences
WHERE appid = 'login' AND configkey = 'lastLogin';

Zu Frage 1

Ich habe den Eindruck, dass bei der SQL-Abfrage oben auch bereits gelöschte Benutzer mitgezÀhlt werden. Das betrifft auch bei mir nur LDAP-Benutzer. Durch folgende SQL-Abfrage lÀsst sich das bestÀtigen:

SELECT userid, configvalue
FROM oc_preferences
WHERE userid IN
    (SELECT userid
     FROM oc_preferences
     WHERE appid = 'login' AND configkey = 'lastLogin')
AND configkey = 'email';

Bei mir werden hier einige LDAP-Testbenutzer angezeigt, die sich zum aktuellen Zeitpunkt nicht mehr in LDAP befinden. Hierbei handelt es sich offensichtlich um einen Fehler. Kann hier der #support aushelfen?

Zu Frage 2

Wenn man den Quellcode nach “fairuse” durchsucht, findet man nur Verweise auf die BeschrĂ€nkung der Push-Benachrichtigungen beim Überschreiten der Grenze von 1000 Benutzern. Inwieweit die anderen BeschrĂ€nkungen implementiert werden, lĂ€sst sich fĂŒr mich aus dem Quellcode nicht herauslesen.

1 Like

Ich habe hierzu auf GitHub einen Issue geöffnet.

1 Like

Was gibt php occ user:report bei euch zurĂŒck? Ich habe angeblich mehr active users als total users:

+------------------+----+
| User Report      |    |
+------------------+----+
| Database         | 1  |
| LDAP             | 7  |
|                  |    |
| total users      | 8  | <--- richtig
|                  |    |
| user directories | 2  |
| active users     | 13 | <--- falsch, darunter sind auch gelöschte LDAP-Benutzer
| disabled users   | 0  |
+------------------+----+
1 Like

Sind das vielleicht die remnants? Die kann man sich ja mit ldap:show-remnants anzeigen lassen und mit user:delete dann auch aus der datenbank löschen.

Die hatte ich bei mir schon gelöscht und in der DB war nirgendwo noch was zu finden an Usern.

Danke fĂŒr die Info, dass die Fair Use auf 1000 erhöht wurde. Das hatte ich nicht gesehen.

Ja, korrekt. Es hat sich herausgestellt, dass es sich bei der Differenz um die Remnants handelt. Ich verstehe allerdings nicht, warum diese im Bezug auf die Fair Use Policy auch als aktive Benutzer gezÀhlt werden.

Hinzu kommt, dass unsere Nextcloud Systeme keine Remnants mehr haben. Die habe ich alle entfernt. Die Differenz bleibt bestehen.

Habe die Vermutung, dass die möglichen LDAP User, die bei der AD Anbindung gezĂ€hlt werden, auch hinzugerechnet werden. Da komm ich dann nĂ€mlich recht nah ran. Habe leider derzeit wenig Zeit um mir ein Testsystem aufzubauen und das zu prĂŒfen.

Heißt, selbst “potenzielle” User, die nicht eingeloggt waren, daher keinen Account haben, aber die Möglichkeit hĂ€tten sich mit ihrem AD Account anzumelden, zĂ€hlen mit rein.

Bei mir werden die “verfĂŒgbaren”, aber noch nie eingeloggten Benutzer nicht mitgezĂ€hlt. total_users ist bei mir genau um die Anzahl an Benutzern grĂ¶ĂŸer als active_users, die sich noch nie eingeloggt haben.