====== ownCloud ====== [[https://doc.owncloud.org/server/10.0/admin_manual/installation/|ownCloud]] to aplikacja podobna do Dropbox i Yandex Disk z dodatkową możliwością własnoręcznego hostowania przechowywanych plików. ===== Instalacja ===== Wykonujemy standardową instalację serwera [[LAMP]], a następnie dodatkowo poniższe kroki. Pliki aplikacji pobieramy ze strony https://owncloud.org/download/ Instalujemy dodatkowe pakiety: apt-get install php-imagick php-common php-curl php-gd php-imap php-intl php-json php-ldap php-mbstring php-smbclient php-ssh2 php-xml php-zip Tworzymy katalog na dane na jakimś ogromniastym dysku. Zakładamy, że jest to osobna partycja zamontowana jako ''/data'': cd /data/ mkdir owncloud-data chown -R www-data:www-data owncloud-data Wpisujemy do [[Crontab|Crontaba]] użytkownika ''www-data'' (dla [[Centos]] użytkownikiem będzie [[Apache]]): # owncloud */10 * * * * /usr/bin/php /home/owncloud/httpdocs/cron.php |& tee -a /home/owncloud/logs/crontab.log Dodatkowe aplikacje (rozszerzające funkcjonalności owncloud) można pobrać ze strony: [[https://marketplace.owncloud.com/]]. ===== Optymalizacja ===== Serwer cache. # Debian: apt-get install php-apcu php-redis redis-server Do ''config.php'' dopisujemy: 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'localhost', 'port' => 6379, ], Restartujemy apache. ===== Konfiguracja ===== Konfiguracja aplikacji znajduje się w ''/home/owncloud/httpdocs/config/config.php''. W tym pliku podajemy parametry połączenia z bazą danych i lokalizację danych użytkowników na dysku serwera. Poniżej do pobrania przykładowa konfiguracja Apache. DocumentRoot /home/owncloud/httpdocs ServerName owncloud.yourdomain.pl ServerAdmin youremail@gmail.com Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;" SSLEngine On SSLCertificateFile /etc/apache2/ssl/certs/server.crt SSLCertificateKeyFile /etc/apache2/ssl/private/server.key SSLCertificateChainFile /etc/apache2/ssl/certs/chain.crt ErrorLog /home/owncloud/logs/ssl_error.log CustomLog /home/owncloud/logs/ssl_access.log combined Alias /owncloud "/home/owncloud/httpdocs/" AddType application/x-httpd-php .php .php3 .php4 .inc DirectoryIndex index.php index.php3 index.html Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted #Require all denied #Require ip 10.9.5 Dav off SetEnv HOME /home/owncloud/httpdocs SetEnv HTTP_HOME /home/owncloud/httpdocs DocumentRoot /home/owncloud/httpdocs ServerName owncloud.yourdomain.pl ServerAdmin youremail@gmail.com Redirect permanent / https://owncloud.uwb.edu.pl ErrorLog /home/owncloud/logs/error.log CustomLog /home/owncloud/logs/access.log combined AddType application/x-httpd-php .php .php3 .php4 .inc DirectoryIndex index.php index.php3 index.html Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted #Require all granted #Require not ip 212 #Require all denied #Require ip 10.9.5 ===== Backup ===== Backupujemy katalog z plikami użytkowników, bazę danych i plik ''config.php''. Jeżeli po odtworzeniu aplikacji zmienił się katalog z plikami, dodatkowo w MySQL musimy poprawić wpisy w bazie danych. Załóżmy, że stary katalog to ''/db/owncloud-data'', a nowy ''/home/owncloud/owncloud-data'': update oc_accounts set home = CONCAT('/home/owncloud/owncloud-data//', user_id) where home like '/db/owncloud-data%'; Ścieżki w bazie danych popraw jeszcze przed przekopiowaniem plików do nowej lokalizacji, a odnowienie indeksów wykonaj na sam koniec. Jeżeli przeskanujesz pliki bez poprawnych wpisów w bazie, pliki zostaną uszkodzone! Wówczas trzeba poprawić wpisy w bazie i skopiować pliki jeszcze raz, po czym powtórzyć wszystkie czynności. Przywrócenie z backupu wymaga odnowienia indeksów. Po przywróceniu bazy danych i plików w odpowiednie miejsca (zgodnie z konfiguracją) wykonujemy: apt-get install php-process # yum install php-process cd /home/owncloud/httpdocs sudo -u www-data ./occ files:scan --all # sudo -u apache ./occ files:scan --all ===== Aktualizacja ===== Aktualizację wykonujemy jako użytkownik ''www-data'' (?!). Dlatego na czas aktualizacji, umożliwiamy logowanie jako ten użytkownik. Dodatkowo wyłączamy zainstalowane aplikacje. cd /home/owncloud/httpdocs chsh -s /bin/bash www-data su www-data -c 'php occ app:disable user_cas' su www-data -c 'php occ app:disable files_videoplayer' su www-data -c 'php occ upgrade -v' chsh -s /usr/sbin/nologin www-data ===== Znane problemy ===== === Uwierzytelnianie === W wersji Owncloud 10.3 i MySQL 8.0 wystąpił problem uwierzytelniania aplikacji do bazy danych ''SQLSTATE[HY000][2054] The server requested authentication method unkown to the client''. Rozwiązaniem jest następujące zapytanie do bazy: mysql> alter user 'owncloud'@'localhost' identified with mysql_native_password by 'xxx'; === Uprawnienia === Błąd ''ERROR 1419 (HY000): You do not have the SUPER Privilege and Binary Logging is Enabled'' rozwiązuje dodanie uprawnień do tworzenia triggerów dla użytkowników z uprawnieniami CREATE przez ustawienie odpowiedniej zmiennej: mysql> SET GLOBAL log_bin_trust_function_creators = 1; === Backend === W skutek jakiegoś błędu czasami trzeba wyłapać i poprawić konta utworzone tylko przez [[CAS]]. Najczęściej mają one ''uid'' złożony z samych cyfr. SELECT user_id, display_name, backend FROM oc_accounts WHERE user_id REGEXP '^[0-9]+$' AND backend = 'OC\\User\\Database';