====== 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';