Wielu z nas korzysta z rozwiązań popularnych dostawców takich jak Dropbox czy Google Drive. Ale czy nie warto byłoby mieć własnej chmury na swoim serwerze?

Dostęp do plików możliwy jest poprzez aplikację mobilną, protokół WebDAV, aplikacje na komputer czy przeglądarkę internetową. Rozwiązanie openCloud pozwala nam na zaawansowane ustawienia udostępniania dla użytkowników, grup, poprzez link czy łącząc się z innymi instancjami. Jeśli zależy nam na prywatności naszych danych możemy pliki zaszyfrować na serwerze. Więcej informacji o projekcie znajdziesz tutaj.

Mając gotowe środowisko LEMP zainstalujemy i skonfigurujemy ownCloud, a dodatkowo zabezpieczymy ją certyfikatem SSL. W moim przypadku dostęp do chmury będzie możliwy przez subdomenę. Dla przykładu stworzyłem chmura.shinsec.pl i wygenerowałem dla niej certyfikat SSL.

 PHP

Doinstaluj moduły, jeśli ich nie posiadasz

apt-get install php5-gd php5-json php5-mysqlnd php5-curl php5-intl php5-mcrypt php5-imagick

MySQL

Logujemy się.

mysql -u root -p

Tworzymy bazę danych

CREATE DATABASE chmura;

Teraz stwórzmy oddzielne konto użytkownika i nadajmy mu odpowiednie uprawnienia:

GRANT ALL ON chmura.* TO 'chmurauser'@'localhost' IDENTIFIED BY 'sUp#rs1ln#h@sL0';

Ostatnie polecenie

FLUSH PRIVILEGES;

Wychodzimy

exit;

ownCloud

Stwórz foldery

cd /var/www
mkdir chmura
cd chmura
mkdir logs public data

Pobierz pliki instalacyjne z oficjalnej strony

wget https://download.owncloud.org/community/owncloud-9.1.1.zip

Wypakuj

unzip owncloud-9.1.1.zip

Przenieś pliki instalacyjne do folderu public

cp -R owncloud/* /var/www/chmura/public/

Zmień właściciela

chown -R www-data:www-data /var/www/chmura

nginx

Wejdź do folderu sites-enabled

cd /etc/nginx/sites-enabled/

Stwórz nowy server block

nano chmura

I wklej do niego konfigurację zalecaną przez ownCloud odpowiednio zmieniając wartości na swoje

server {
 listen 80;
 server_name chmura.shinsec.pl www.chmura.shinsec.pl;
 return 301 https://chmura.shinsec.pl$request_uri;
}

server {
 listen 443 ssl;
 server_name chmura.shinsec.pl;

 root /var/www/chmura/public;

 access_log /var/www/chmura/logs/access.log;
 error_log /var/www/chmura/logs/error.log;

 ssl on;
 ssl_certificate /etc/letsencrypt/live/chmura.shinsec.pl/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/chmura.shinsec.pl/privkey.pem;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
 ssl_prefer_server_ciphers on;
 ssl_session_cache shared:SSL:10m;
 
 ssl_trusted_certificate /etc/letsencrypt/live/chmura.shinsec.pl/chain.pem;
 ssl_stapling on;
 ssl_stapling_verify on;

 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 add_header X-Download-Options noopen;
 add_header X-Permitted-Cross-Domain-Policies none;
 
 location = /robots.txt {
 allow all;
 log_not_found off;
 access_log off;
 }

 location = /.well-known/carddav {
 return 301 $scheme://$host/remote.php/dav;
 }
 location = /.well-known/caldav {
 return 301 $scheme://$host/remote.php/dav;
 }

 location /.well-known/acme-challenge { }

 client_max_body_size 512M;
 fastcgi_buffers 64 4K;

 gzip off;

 error_page 403 /core/templates/403.php;
 error_page 404 /core/templates/404.php;

 location / {
 rewrite ^ /index.php$uri;
 }

 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
 return 404;
 }
 location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
 return 404;
 }

 location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
 fastcgi_split_path_info ^(.+\.php)(/.*)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param HTTPS on;
 fastcgi_param modHeadersAvailable true;
 fastcgi_param front_controller_active true;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_intercept_errors on;
 }

 location ~ ^/(?:updater|ocs-provider)(?:$|/) {
 try_files $uri $uri/ =404;
 index index.php;
 }

 location ~* \.(?:css|js)$ {
 try_files $uri /index.php$uri$is_args$args;
 add_header Cache-Control "public, max-age=7200";
 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 add_header X-Download-Options noopen;
 add_header X-Permitted-Cross-Domain-Policies none;
 # Optional: Don't log access to assets
 access_log off;
 }

 location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
 try_files $uri /index.php$uri$is_args$args;
 access_log off;
 }
}

Wchodzimy na adres naszej strony i dokańczamy konfigurację wpisując dane bazy danych, konfigurując konto administratora i katalog, gdzie znajdywać się będą pliki.

cloud

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here