Nextcloud Kurulum Rehberi

Nextcloud nedir?

Nextcloud Image

Nextcloud, bulut depolama yazılımıdır. Tamamen özgür yazılım olmakla birlikte içerisindeki uygulamalarla günlük hayattaki her şeyinizi halletmenizi sağlar. Mail, notlar, takvim, şifre yöneticisi, fotoğraflar, müzik sunucusu ve aklınıza gelmeyecek bir çok şey, Nextcloud içerisinde veya eklenti olarak mevcuttur. Aynı zamanda bir dağıtık platform olmanıza olanak sağlar ve böylece diğer Nextcloud sunucularıyla dosya vs. paylaşabilirsiniz.

Nextcloud hakkında videom: https://youtu.be/RUDy83kTHkQ

Daha fazla bilgi için: https://nextcloud.com/

Kurulum

Gerekli Paketler

İlk olarak gerekli paketleri yüklemeliyiz. 

sudo apt install mariadb-server php-mysql php php-gd php-mbstring php-dom php-curl php-zip php-simplexml php-xml php-fpm certbot python-certbot-nginx -y

Daha sonrasında Nextcloud'da veri depolamak için SQL kurulumunu yapmamız gerekiyor.

MYSQL kurulumu

sudo mysql_secure_installation

Root şifresi isteyince daha önce koymadığımız için entera basacağız.

Sonrasında SQL veritabanı için root şifresi belirleyeceğiz. Evet yazın ve güçlü bir şifre oluşturun.

Diğer sorulara aşağıdaki gibi cevap verin:

Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

Daha sonrasında az önce koyduğumuz şifreyle SQL veritabanına giriş yapacağız. 

sudo mysql -u root -p

Nextcloud için veritabanı oluşturacağız. Aşağıdaki kodu takip ederek username ve password kısmını değiştirin.

CREATE DATABASE nextcloud;
GRANT ALL ON nextcloud.* TO 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

/etc/nginx/nginx.conf dosyasının 

user www-data;

bu şekilde başladığına emin olun.

www-data kullanıcısının var olup olmadığını id -u www-data yazarak kontrol edin. Bir numara vermiyosa kullanıcı yok demektir. Öyleyse sudo useradd www-data yazarak kullanıcıyı oluşturun.

NGINX Konfigürasyonu

Şimdi Nextcloud için nginx dosyası oluşturacağız.

/etc/nginx/sites-available/nextcloud dosyası içerisine:

upstream php-handler {
    server unix:/var/run/php/php7.3-fpm.sock;
    server 127.0.0.1:9000;
}

server {
    listen 80;
    listen [::]:80;
    server_name example.org;

    return 301 https://$server_name$request_uri;
}

server {
    listen 443      ssl http2;
    listen [::]:443 ssl http2;
    server_name example.org;

    root /var/www;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ^~ /.well-known {
        location = /.well-known/carddav { return 301 /nextcloud/remote.php/dav/; }
        location = /.well-known/caldav  { return 301 /nextcloud/remote.php/dav/; }

        location /.well-known/acme-challenge    { try_files $uri $uri/ =404; }
        location /.well-known/pki-validation    { try_files $uri $uri/ =404; }

        return 301 /nextcloud/index.php$request_uri;
    }

    location ^~ /nextcloud {
        client_max_body_size 512M;
        fastcgi_buffers 64 4K;

        gzip on;
        gzip_vary on;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

        add_header Referrer-Policy                      "no-referrer"   always;
        add_header X-Content-Type-Options               "nosniff"       always;
        add_header X-Download-Options                   "noopen"        always;
        add_header X-Frame-Options                      "SAMEORIGIN"    always;
        add_header X-Permitted-Cross-Domain-Policies    "none"          always;
        add_header X-Robots-Tag                         "none"          always;
        add_header X-XSS-Protection                     "1; mode=block" always;

        fastcgi_hide_header X-Powered-By;

        index index.php index.html /nextcloud/index.php$request_uri;

        location = /nextcloud {
            if ( $http_user_agent ~ ^DavClnt ) {
                return 302 /nextcloud/remote.php/webdav/$is_args$args;
            }
        }

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

        location ~ \.php(?:$|/) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            set $path_info $fastcgi_path_info;

            try_files $fastcgi_script_name =404;

            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $path_info;
            fastcgi_param HTTPS on;

            fastcgi_param modHeadersAvailable true;
            fastcgi_param front_controller_active true;
            fastcgi_pass php-handler;

            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location ~ \.(?:css|js|svg|gif)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            expires 6M;
            access_log off;
        }

        location ~ \.woff2?$ {
            try_files $uri /nextcloud/index.php$request_uri;
            expires 7d;
            access_log off;
        }

        location /nextcloud/remote {
            return 301 /nextcloud/remote.php$request_uri;
        }

        location /nextcloud {
            try_files $uri $uri/ /nextcloud/index.php$request_uri;
        }
    }
}

example.org kısımlarını kendi alan adınızla değiştirin. php7.3 kısmını php sürümünüze göre değiştirmeniz gerekebilir.

Daha sonrasında sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/ yazarak symlink oluşturun. Bu noktaya kadar nginx dosyasında hata olup olmadığını kontrol etmek için sudo nginx -t yazabilirsiniz.

SSL

Bağlantımızı şifrelemek için SSL sertifikası almamız gerekiyor. Şu anki haliyle kullanırsak internet servis sağlayıcınız veya ağı dinleyen herhangi birisi verilerinize erişebilir. Bu yüzden SSL kısmı çok önemli lütfen atlamayın!

Daha önceden certbot paketlerini indirmiştik. Şimdi yapmamız gereken sudo certbot yazmak.

Önünüze şöyle bir seçenek gelecek:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.org
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Biz biri seçip devam ediyoruz. Alan adı konfigürasyonunu doğru şekilde yaptığınız takdirde sertifikanızı başarıyla aldığınız mesajını göreceksiniz. Aynı zamanda nginx dosyanızda gerekli konfigürasyonları bu yazılım yapıyor.

Başarıyla aldıktan sonra redirect ve do not redirect seçeneklerini göreceksiniz. redirect seçeneğini seçmeniz çok önemli. Böylece alan adınınıza yapılan bütün isteklerin içeriği şifrelenmiş olacaktır.

Son olarak sudo systemctl restart nginx yazarak NGINX ayarlarımızı aktif hale getirebiliriz.

NOT: Sunucunuzda 443 portunun açık olmasına dikkat edin. Yoksa sunucuyla HTTPS bağlantısı kuramazsınız!

Nextcloud Dosyalarının Kurulumu

Şimdi Nextcloud dosyasını indirip gerekli klasörlere dosyaları yerleştirmemiz gerekecek.

wget https://download.nextcloud.com/server/releases/nextcloud-22.1.1.tar.bz2

En son sürümü https://download.nextcloud.com/server/releases/ adresinden kontrol etmekte fayda var.

 İndirdiğimiz sıkıştırılmış dosyayı açmamız gerekli.

sudo tar -xjf nextcloud-22.1.1.tar.bz2 -C /var/www/

Dosyaların saihpliğini ve izinlerini düzeltmemiz gerekli.

sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud

Servisleri başlatıyoruz. (PHP sürümünüz değişiklik gösterebilir!)

sudo systemctl enable --now php7.3-fpm
sudo systemctl enable --now mariadb

Web Üzerinden Kurulumu Tamamlama

Şimdi alan adımıza gidip https://example.org/nextcloud adresine giderek kurulumu tamamlayacağız.

  • Kullanıcı adı ve şifre seçin
  • Database kullanıcısı için Nextcloud veritabanını oluştururken seçtiğiniz kullanıcı adı ve şifreyi girin.
  • Database ismi için nextcloud yazın
  • localhost'u olduğu gibi bırakın
  • Bitir butonuna tıklayın

Bu kadar! Nextcloud sunucunuz hazır.

Kapanış

  • Ayarlar kısmına girip overview kısmından Nextcloud sunucunuz için ek uyarıları görebilirsiniz. Bu uyarıları gidermek Nextcloud uygulamanızı daha hızlı yapabilir.
  • Telefonunuza ve bilgisayarınıza Nextcloud uygulamalarını indirip dosyalarınızı senkronize etmeye başlayabilirsiniz.
  • Nextcloud uygulamalarına göz atmayı unutmayın. Bence çok şaşıracaksınız. :)

Özgür bulut uygulamanızın tadını çıkarın.

Yazar: Yusuf İpek | website