Jak włączyć szyfrowanie po stronie serwera w NextCloud bez zauważalnego spadku wydajności
Od października 2026 roku stabilna dokumentacja administratora NextCloud 35 wyjaśnia ważną kwestię wyraźniej niż wiele starszych samouczków: szyfrowanie po stronie serwera (SSE) ma na celu przede wszystkim ochronę plików przechowywanych na zewnętrznych, zewnętrznych nośnikach danych, a domyślny tryb klucza głównego zapewnia lepszą wydajność i szerszą kompatybilność uwierzytelniania niż klucze dla poszczególnych użytkowników. W tej samej dokumentacji zaznaczono również, że zaszyfrowane pliki generują obecnie jedynie około 1% obciążenia pamięci masowej, w porównaniu ze znacznie większym obciążeniem w wersjach wcześniejszych niż NextCloud 25.
Nie oznacza to jednak, że szyfrowanie jest dosłownie darmowe. Każdy zaszyfrowany odczyt i zapis wymaga pracy kryptograficznej, więc żaden rzetelny przewodnik nie może obiecać zerowego obciążenia procesora ani zerowego opóźnienia na każdym serwerze. Praktyczny cel jest inny: włączyć szyfrowanie w sposób, który unika zauważalnego spowolnienia dla użytkowników, utrzymuje kontrolę nad obciążeniem bazy danych i blokad oraz szyfruje tylko te zasoby pamięci masowej, które tego faktycznie potrzebują.
Przed wprowadzeniem jakichkolwiek zmian należy sprawdzić aktualny stan szyfrowania i zapisać dane bazowe dla danej instancji.
Co chroni szyfrowanie po stronie serwera Nextcloud
Usługa Nextcloud SSE szyfruje zawartość plików na serwerze przed ich zapisaniem. Gdy użytkownik pobiera lub otwiera plik za pośrednictwem Nextcloud, serwer odszyfrowuje go przed przekazaniem autoryzowanemu użytkownikowi. Klucze szyfrujące pozostają na serwerze Nextcloud, dlatego usługa SSE jest szczególnie przydatna, gdy dane pliku znajdują się u zewnętrznego dostawcy pamięci masowej, któremu nie do końca ufasz.
SSE nie ukrywa nazw plików ani struktury katalogów i nie chroni plików przed złośliwym działaniem administratora Nextcloud ani przed całkowicie skompromitowanym serwerem aplikacji. Jeśli wymagane jest, aby nawet administrator serwera nie mógł odczytać plików, odpowiednią warstwą bezpieczeństwa jest kompleksowy model szyfrowania Nextcloud. Oficjalne porównanie jest dostępne w dokumentacji szyfrowania po stronie serwera Nextcloud .
Wybierz konfigurację, która generuje najmniej niepotrzebnej pracy
Decyzja
Wybór o niższych kosztach ogólnych
Kiedy wybrać coś innego
Zarządzanie kluczami
Klucz główny, który jest obecnie domyślnym i zalecanym trybem dla większości wdrożeń
Kluczy dla poszczególnych użytkowników należy używać wyłącznie wtedy, gdy jest to konieczne, a ograniczenia uwierzytelniania/odzyskiwania są akceptowalne.
Zakres pamięci masowej
Szyfruj pamięć zewnętrzną, pozostawiając lokalną pamięć domową niezaszyfrowaną, gdy modelem zagrożenia jest dostawca zewnętrzny
Szyfruj również pamięć masową w domu, gdy wymagana jest ochrona danych w spoczynku na lokalnym nośniku danych Nextcloud
Blokada tylnego końca
Blokowanie plików transakcyjnych z obsługą Redis lub Valkey
Blokowanie bazy danych może być dopuszczalne w przypadku bardzo małych systemów, ale powoduje niepotrzebne obciążenie bazy danych przy większym ruchu
Krok 1: Utwórz kopię zapasową instancji i ustal linię bazową wydajności
Klucze szyfrujące i tajny klucz instancji są kluczowymi elementami odzyskiwania. Nextcloud wyraźnie zaleca utworzenie kopii zapasowej konfiguracji instancji i kluczy szyfrujących przed włączeniem SSE. Utrata wymaganych kluczy lub tajnego klucza instancji może uniemożliwić odzyskanie zaszyfrowanych danych.
Przed wprowadzeniem zmiany, ustal prosty punkt odniesienia, wykorzystując obciążenie, które ma znaczenie dla użytkowników. Zmierz kilka reprezentatywnych operacji przesyłania i pobierania, zanotuj wykorzystanie procesora PHP-FPM, obciążenie bazy danych, opóźnienie pamięci masowej i czas reakcji aplikacji Pliki. Nie potrzebujesz benchmarku laboratoryjnego. Potrzebujesz powtarzalnego testu przed i po, który pokaże Ci, czy wdrożenie zmieniło widoczne dla użytkowników zachowania.
Zastanów się również, czy faktycznie potrzebujesz szyfrować pamięć masową w domu. Jeśli Twoim celem jest ochrona S3, SMB, magazynu obiektów lub innego zewnętrznego zaplecza przed dostawcą pamięci masowej, przechowywanie lokalnej pamięci masowej poza SSE pozwala uniknąć wykonywania zadań kryptograficznych, które nie wnoszą dodatkowej wartości dla tego modelu zagrożeń.
Krok 2: Napraw buforowanie i blokowanie plików przed włączeniem szyfrowania
To najważniejsze przygotowanie pod kątem wydajności. Nextcloud zaleca buforowanie w pamięci dla optymalnej wydajności, a w szczególności APCu do buforowania lokalnego oraz Redis lub kompatybilne zaplecze do blokowania plików transakcyjnych. Blokowanie plików transakcyjnych jest szczególnie istotne w przypadku plików szyfrowanych, ponieważ Nextcloud musi bezpiecznie koordynować zmiany w plikach podczas operacji szyfrowania i przechowywania.
Przed dodaniem obciążenia szyfrowania skonfiguruj lokalne buforowanie pamięci i blokujący serwer back-end oparty na Redis lub Valkey.
Typowa konfiguracja pojedynczego serwera wykorzystuje APCu do lokalnej pamięci podręcznej i Redis do blokad:
Jeśli Redis działa na tym samym hoście, dokumentacja Nextcloud dotycząca blokowania plików zaleca używanie gniazda Unix, o ile jest to praktyczne. Nowsza dokumentacja Nextcloud 35 opisuje również dołączoną opcję KeyValueCache dla serwerów zgodnych z Redis lub Valkey, która może zapewnić blokowanie transakcji bez konieczności instalowania rozszerzenia PHP phpredis. Użyj konfiguracji dopasowanej do swojego wdrożenia, zamiast bezmyślnie kopiować przykład.
Funkcja PHP OPcache powinna być włączona i mieć odpowiednią wielkość, aby nie usuwała wielokrotnie skompilowanego kodu. Przewodnik Nextcloud dotyczący dostrajania serwerów informuje, że funkcja OPcache poprawia wydajność aplikacji PHP i ostrzega administratorów, gdy skonfigurowane limity przekraczają 90%. Przed wdrożeniem zapoznaj się z oficjalnym przewodnikiem dotyczącym buforowania pamięci , blokowania plików transakcyjnych oraz dostrajania serwera .
Krok 3: Włącz domyślny moduł szyfrujący i użyj trybu klucza głównego
W przypadku większości obecnych wdrożeń tryb klucza głównego jest najlepszym punktem wyjścia. NextCloud 35 dokumentuje go jako domyślny, zaleca dla większości wdrożeń i zauważa, że oferuje lepszą wydajność i kompatybilność z większą liczbą metod logowania. Kompromis jest oczywisty: administratorzy kontrolujący serwer mogą odszyfrowywać pliki użytkowników. Jeśli jest to nieakceptowalne, SSE z kluczem głównym nie jest odpowiednią granicą bezpieczeństwa.
Użyj domyślnego trybu klucza głównego, chyba że Twoje wymagania bezpieczeństwa wyraźnie uzasadniają używanie kluczy dla każdego użytkownika.
W interfejsie internetowym otwórz sekcję „Szyfrowanie po stronie serwera” w ustawieniach administratora, włącz szyfrowanie po stronie serwera, a następnie włącz domyślny moduł szyfrowania Nextcloud w aplikacjach, jeśli Nextcloud zgłosi, że żaden moduł szyfrowania nie jest załadowany. Wróć do ustawień szyfrowania i potwierdź wybór modułu. Wyloguj się i zaloguj ponownie, aby zainicjować klucze szyfrowania.
Szyfrowaniem można również zarządzać za pomocą occ. Aktualny opis poleceń opisuje następującą sekwencję:
Jeśli celem SSE jest wyłącznie przechowywanie danych na nośnikach zewnętrznych, należy odznaczyć opcję szyfrowania pamięci masowej w domu przed podjęciem decyzji o szerszym wdrożeniu. Taka decyzja może znacznie zmniejszyć ilość danych, które muszą przejść przez warstwę szyfrowania.
Krok 4: Zaszyfruj przeznaczone zewnętrzne punkty montowania i zweryfikuj je przy użyciu rzeczywistego ruchu
Szyfrowanie pamięci zewnętrznej jest konfigurowane dla każdego montowania. Włącz szyfrowanie tylko dla montowań, które tego wymagają, a następnie prześlij reprezentatywny plik przez NextCloud i pobierz go ponownie. Zweryfikuj dostęp za pośrednictwem tego samego przepływu pracy, z którego korzystają Twoi użytkownicy na komputerze stacjonarnym, urządzeniu mobilnym, WebDAV lub w przeglądarce.
Zamiast automatycznego szyfrowania wszystkiego, włącz szyfrowanie zewnętrznych stacji pamięci masowej znajdujących się w Twoim modelu zagrożeń.
Po teście funkcjonalnym powtórz pomiary bazowe z kroku 1. Porównaj czas wysyłania, czas pobierania, użycie procesora, aktywność bazy danych i opóźnienie pamięci masowej. Jeśli zmiana jest niewielka, a czas odpowiedzi widoczny dla użytkownika jest stabilny, serwer ma wystarczającą rezerwę mocy obliczeniowej. Jeśli wydajność gwałtownie spadnie, nie zakładaj, że samo szyfrowanie jest jedyną przyczyną. Najpierw sprawdź, czy nie występują blokady plików w bazie danych, przeciążone procesy PHP-FPM, wolna pamięć zewnętrzna, niewystarczająca pamięć podręczna OPcache lub problem z połączeniem Redis.
Jeśli potrzebujesz zaszyfrować pliki, które istniały już przed włączeniem SSE, Nextcloud oferuje encryption:encrypt-all. Potraktuj to jako obciążenie migracyjne, a nie zwykłe żądanie interaktywne. Może to dotyczyć dużej ilości danych, dlatego zaplanuj to w oknie konserwacji i upewnij się, że plan tworzenia kopii zapasowych i przywracania jest prawidłowy. Dostępne polecenia szyfrowania są udokumentowane w oficjalnym dokumencie referencyjnym occ encryption .
Jak stwierdzić, czy wdrożenie jest prawidłowe
Użytkownicy nie zauważają znaczącego wydłużenia czasu wysyłania i pobierania. Porównaj te same rozmiary plików i klientów przed i po zmianie.
Obciążenie bazy danych utrzymuje się na stabilnym poziomie. Znaczny wzrost aktywności w bazie danych może wskazywać, że blokowanie plików nadal korzysta z bazy danych, a nie z Redis lub Valkey.
Pracownicy PHP nie są obciążeni dużym obciążeniem procesora. Szyfrowanie zwiększa obciążenie procesora, więc instancje, które już pracowały na granicy swojej wydajności, potrzebują więcej przestrzeni.
Opóźnienia w pamięci masowej nadal stanowią dominujący czynnik, gdy jest to konieczne. Wolne S3, SMB lub zdalne przechowywanie obiektów może z łatwością przeważyć nad kosztami kryptograficznymi.
W przeglądzie administracyjnym ani w dziennikach nie pojawiają się żadne ostrzeżenia dotyczące szyfrowania ani klucza. Rozwiąż ostrzeżenia przed rozszerzeniem wdrożenia.
Typowe błędy powodujące możliwe do uniknięcia spowolnienia
Szyfrowanie lokalnej pamięci domowej, gdy ochrony wymaga jedynie pamięć zewnętrzna
Zwiększa to ilość zaszyfrowanych operacji wejścia/wyjścia, niekoniecznie rozwiązując rzeczywiste zagrożenie. Dostosuj zakres szyfrowania do powodu, dla którego włączasz SSE.
Pozostawienie blokad transakcyjnych w bazie danych
Dokumentacja Nextcloud podaje, że domyślne blokowanie bazy danych powoduje znaczne obciążenie bazy danych. Pamięć podręczna blokowania oparta na Redis lub Valkey to jeden z najprostszych sposobów na usunięcie tego wąskiego gardła.
Uruchamianie szyfrowania zbiorczego w godzinach szczytu
Ruch interaktywny i pełne szyfrowanie danych konkurują o zasoby procesora, wejścia/wyjścia, zasoby PHP i przepustowość pamięci masowej. Należy oddzielić migrację od normalnego ruchu produkcyjnego.
Traktowanie SSE jako zabezpieczenia przed naruszonym serwerem Nextcloud
Klucze SSE są dostępne dla serwera, więc złośliwy administrator lub całkowicie skompromitowany serwer pozostają w strefie zaufania. Użyj szyfrowania end-to-end, gdy jest to zagrożenie, któremu musisz stawić czoła.
Podsumowanie
Najbezpieczniejszym sposobem na włączenie szyfrowania po stronie serwera w NextCloud bez zauważalnego spadku wydajności jest zawężenie zakresu, użycie domyślnego klucza głównego, gdy pasuje do niego model zaufania, skonfigurowanie najpierw blokowania APCu i Redis lub Valkey oraz przeprowadzenie testów porównawczych rzeczywistego obciążenia przed i po zmianie. Aktualne wytyczne NextCloud 35 wspierają to podejście: tryb klucza głównego jest domyślnym trybem zapewniającym optymalną wydajność, pamięć zewnętrzna jest głównym zastosowaniem SSE, a narzut na rozmiar zaszyfrowanego pliku wynosi obecnie około 1%.