Różne notatki na różne tematy.
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini' restorecon -Rv '/var/www/nextcloud/' setsebool -P httpd_can_network_connect on
Bez tej ostatniej linijki Nextcloud działa, ale nie łączy się ze swoim appstore.
Nextcloud podczas aktualizacji zwraca czasem błąd podczas weryfikowania plików, ale nie pokazuje o jakie pliki chodzi. W logach pojawi się:
[Thu Dec 17 08:54:39.030667 2020] [access_compat:error] [pid 2539155:tid 2539155] [client ip.ip.ip.ip:58528] AH01797: client denied by server configuration: /var/www/nextcloud/data/.ocdata [Thu Dec 17 08:55:49.233080 2020] [proxy_fcgi:error] [pid 2551714:tid 2551714] [client ip.ip.ip.ip:58536] AH01071: Got error 'PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 142333816 bytes) in /var/www/nextcloud/updater/index.php on line 754'
Należy wówczas, na czas aktualizacji, zwiększyć pamięć dla PHP do 512 megabajtów:
; Maximum amount of memory a script may consume (128MB) memory_limit = 512M
Po aktualizacji można zmniejszyć limit z powrotem do 128. Nextcloud działa dobrze przy ograniczonej pamięci, nie działa jedynie aktualizator.
Inny problem z aktualizacją Nextclouda to tworzenie kopii zapasowej przez aktualizator. Jeżeli danych jest sporo, a serwer niezbyt szybki, Apache zwróci błąd 504. Dzieje się tak, ponieważ aktualizacja jest kontrolowana przez dedykowanego użytkownika i proces php-fpm, więc z punktu widzenia Apache następuje Gateway Timeout. Bez utworzenia kopii zapasowej aktualizacja Nextclouda się nie powiedzie. Wówczas należy:
Po zakończonej aktualizacji można dodać komentarz przed linijką ProxyTimeout, ponieważ podczas zwyczajnej pracy Nextcloud odpowiada znacznie szybciej.
Oficjalnie Nextcloud 23.x działa tylko do PHP 8.0, ale można go skłonić do pracy na 8.1. Należy poprawić zmienną (właście stałą) PHP_VERSION_ID w pliku lib/versioncheck.php
// Show warning if > PHP 8.0 is used as Nextcloud is not compatible with > PHP 8.0 for now if (PHP_VERSION_ID >= 90100) { http_response_code(500); echo 'This version of Nextcloud is not compatible with > PHP 8.0.<br/>'; echo 'You are currently running ' . PHP_VERSION . '.'; exit(1); }
Trzeba to poprawić przy każdej aktualizacji Nextclouda, ponieważ plik będzie nadpisywany.
Po zainstalowaniu rozszerzenia Brute-Force Protection nie ma jak zdjąć banów, ponieważ rozszerzenie nie posiada takiej funkcjonalności. Poniżej skrypt Basha, który usuwa bany zapytaniami do bazy. Należy w nim poprawić:
Żeby skrypt mógł działać na bazie danych, uruchamiający go użytkownik (na przykład root) powinien mieć plik .my.cnf pozwalający na logowanie się bez podawania hasła.
#!/usr/bin/bash # unban IP addresses from Owncloud application firewall if [ "$1" = "--ip" ] ; then # unban single IP address if [ -z $2 ] ; then echo "Add ip address, or use --help" else mysql -e "delete from owncloud.oc_bfp_failed_logins where ip = '${2}';" fi elif [ "$1" = "--vpn" ] ; then # unban all VPN users mysql -e "delete from owncloud.oc_bfp_failed_logins where ip like '172.30.50.%';" mysql -e "delete from owncloud.oc_bfp_failed_logins where ip like '172.30.51.%';" mysql -e "delete from owncloud.oc_bfp_failed_logins where ip = '192.168.60.254';" elif [ "$1" = "--all" ] ; then # unban all IP addresses mysql -e "delete from owncloud.oc_bfp_failed_logins;" elif [ "$1" = "--user" ] ; then # unban single user if [ -z $2 ] ; then echo "Add username, or use --help" else mysql -e "delete from owncloud.oc_bfp_failed_logins where uid = '${2}';" fi elif [ "$1" = "--list" ] ; then # list users and IP addresses mysql -e "select uid as user, \ ip as ip_address, \ FROM_UNIXTIME(attempted_at) as login_attempt \ from owncloud.oc_bfp_failed_logins \ order by 3;" # help elif [ "$1" = "--help" ] || [ -z $1 ] ; then # echo some instructions echo -e "Unban users from Owncloud login page.\r Please specify:\r owncloud_unban --list to view all banned IP's,\r owncloud_unban --all to unban all IP's,\r owncloud_unban --ip [ip.ip.ip.ip] to unban single IP address,\r owncloud_unban --vpn to unban all IP's from VPN and internal networks,\r owncloud_unban --user [username] to unban user." else echo "That did nothing. Try owncloud_unban --help" fi
Po migracji Nextclouda za proxy wszystko działa, ale niektóre klienty się gubią. Klient na Androida pokazuje status „serwer w trybie konserwacji”. Nie działa również funkcjonalność instant upload.
Pomaga wówczas dodanie nowej linijki do pliki config.php
'overwriteprotocol' => 'https',
źródło:
Nextcloud jest za http proxy, które podstawia certyfikat i blokuje wyjście aplikacji do internetu, na przykład e2guardian. Nextcloud nie ufa certyfikatom z pliku /etc/ssl/certs/ca-bundle.crt, więc trzeba dodać certyfikat e2guardiana do aplikacji Nextcloud:
sudo -u uzytkownikaplikacyjny /usr/bin/php /sciezka/do/pliku/public_html/occ security:certificates:import /tmp/e2.crt