Szukasz sposobu na backup swoich danych albo synchronizację między różnymi komputerami? Dropbox, wuala i box dają za mało miejsca? A jeśli oferują wystarczająco dużo przestrzeni dyskowej to może nie chcesz powierzać swoich danych obcej firmie? Jest rozwiązanie, które rozwiązuje te problemy i w dodatku jest zupełnie za darmo*.  

Tym rozwiązaniem jest owncloud – oprogramowanie, które pozwala samemu stworzyć „dysk w chmurze” i automatycznie synchronizować zawartość lokalnego katalogu (kilku katalogów również) pomiędzy komputerem (komputerami) a serwerem. Czyli dostajemy funkcjonalność zbliżoną do dropboksa, ale bez ograniczeń przestrzeni dyskowej (oprócz fizycznej pojemności nośnika) i za darmo. *Jedyne czego potrzebujemy to własny komputer dostępny w sieci – może być LAN lub internet. Ja skorzystałem z drugiej opcji i małego serwera VPS z 50GB przestrzeni dyskowej – w zupełności wystarcza jako kopia zapasowa zdjęć i wszystkich istotnych dokumentów.

Do budowy własnego „dysku w chmurze” używam wspomnianego ownclouda, nginx oraz php-fpm. Zaczynamy od pobrania ownclouda. Następnie musimy stworzyć katalog, w którym będziemy trzymali aplikację oraz dane. Ja użyłem /home/owncloud.mojadomena.pl/public jako DocumentRoot. Aby całość ładnie współpracowała z nginx-em przygotowujemy odpowiednio konfigurację dla wirtualnego hosta w pliku /etc/nginx/conf.d/owncloud.conf:

server {
  listen 80;
  server_name owncloud.mojadomena.pl;
root /home/owncloud.mojadomena.pl/public;
access_log /var/log/nginx/owncloud.mojadomena.pl-access.log main;
  error_log /var/log/nginx/owncloud.mojadomena.pl-error.log;
 error_page 403 $document_root/core/templates/403.php;
  error_page 404 $document_root/core/templates/404.php;
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
  deny all;
  }
client_max_body_size 512M;
 dav_methods PUT DELETE MKCOL COPY MOVE;
  create_full_put_path on;
  dav_access user:rw group:rw all:r;
location / {
  index index.php;
  try_files $uri $uri/ @webdav;
  }
 location ~ \.php$ {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
  }
 
  location @webdav {
  fastcgi_split_path_info ^(.+\.php)(/.*)$;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  #fastcgi_params HTTPS on;
  include fastcgi_params;
  }
}

 

Do obsługi php używam php-fpm – w najprostszej wersji wystarczy standardowy wpis w pliku /etc/php-fpm.d/owncloud.conf:

[owncloud]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = apache
group = apache
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 5000
php_admin_value[error_log] = /var/log/php-fpm/owncloud-error.log
php_admin_flag[log_errors] = on
php_admin_value[session.save_path] = /home/owncloud/session
php_admin_value[upload_max_filesize] = 512M
php_admin_value[post_max_size] = 512M
php_admin_value[memory_limit] = 512M

 

Ostatnie trzy linijki definiują maksymalną wielkość przesłanego pliku oraz limit używanej pamięci przez skrypty PHP – 512MB wystarcza do archiwizacji zdjęć :) Po dodaniu konfiguracji restartujemy usługi nginx i php-fpm. Teraz wystarczy otworzyć w przeglądarce adres pod którym ma być widoczna aplikacja, stworzyć administratora, wybrać bazę danych, w której będziemy przechowywali dane aplikacji (najłatwiej wykorzystać  bazę sqlite) oraz katalog do przetrzymywania synchronizowanych plików.

Teraz wystarczy zainstalować klienta do synchronizacji (obsługiwane są: Linux, Mac, Windows, Android oraz iOS) i możemy zacząć synchronizować swoje dane i spać spokojnie :)