Narzędzia użytkownika

Narzędzia witryny


wiki:nextcloud

Nextcloud

Różne notatki na różne tematy.

SELinux dla Nextclouda w RHEL/Centos/Fedora

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 update verify failed

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.

504 podczas aktualizacji

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:

  • usunąć plik /var/www/[katalog_nextcloud]/data/updater-[tag]/.step
  • dodać do vhosta w sekcji <Virtualhost> linjkę ProxyTimeout 480
  • przeładować Apache
  • odświeżyć stronę aktualizatora i dokończyć aktualizację.

Po zakończonej aktualizacji można dodać komentarz przed linijką ProxyTimeout, ponieważ podczas zwyczajnej pracy Nextcloud odpowiada znacznie szybciej.

PHP 8.1 i wyższy

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.

Owncloud i Brute-Force Protection

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ć:

  • nazwę bazy ownclouda i przedrostek tabel,
  • podsieci VPN oraz lokalnej.

Ż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
wiki/nextcloud.txt · ostatnio zmienione: 2022/08/18 11:44 przez 127.0.0.1

Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki