Ubuntu 18.04 LEMP Stack üzerine Nextcloud Kurulum ve İnce Ayarları

Adım 1: Ubuntu 18.04’te NextCloud’u indirin

Ubuntu 18.04 sunucunuza giriş yapın. Ardından, NextCloud zip arşivini sunucunuza indirin. Bu yazının yazıldığı sırada en son kararlı sürüm 19.0 ‘dır. Sürüm numarasını değiştirmeniz gerekebilir. https://nextcloud.com/install adresine gidin ve en son sürümü görmek için indirme düğmesini tıklayın.

ubuntu 18.04 nextcloud

Sunucunuza indirmek için aşağıdaki komutu çalıştırabilirsiniz.

wget https://download.nextcloud.com/server/releases/nextcloud-19.0.1.zip
sudo apt install unzip
sudo unzip nextcloud-19.0.1.zip -d /usr/share/nginx/

-d seçeneği hedef dizini belirtir. NextCloud web dosyaları /usr/share/nginx/nextcloud/ dizinine çıkartılacaktır. Ardından, web sunucusunun (Nginx) bu dizine yazabilmesi için bu dizinin sahibini www-data olarak değiştirmeniz gerekir.

sudo chown www-data:www-data /usr/share/nginx/nextcloud/ -R

Adım 2: MariaDB’de Veritabanı ve Kullanıcı Oluşturma

sudo mysql -u root
create database nextcloud;
create user nextclouduser@localhost identified by 'your-password';
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password';
flush privileges;
exit;

Adım 3: Nextcloud için bir Nginx Yapılandırma Dosyası oluşturun

sudo vi /etc/nginx/conf.d/nextcloud.conf
server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.your-domain.com;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    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;
    add_header Referrer-Policy no-referrer;

    #I found this header is needed on Ubuntu, but not on Arch Linux. 
    add_header X-Frame-Options "SAMEORIGIN";

    # Path to the root of your installation
    root /usr/share/nginx/nextcloud/;

    access_log /var/log/nginx/nextcloud.access;
    error_log /var/log/nginx/nextcloud.error;

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

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # last;

    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 {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

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

    location / {
       rewrite ^ /index.php;
    }

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

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.2-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

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

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        add_header X-Content-Type-Options nosniff;
        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;
        add_header Referrer-Policy no-referrer;
        # 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;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Dosyayı kaydedip kapatın. Nginx yapılandırmasını test edin, ardından değişikliklerin etkili olması için Nginx’i yeniden yükleyin.

sudo nginx -t
sudo systemctl reload nginx

Adım 4: PHP Modüllerini Yükleme ve Etkinleştirme

sudo apt install php-imagick php7.2-common php7.2-mysql php7.2-fpm php7.2-gd php7.2-json php7.2-curl  php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl

Adım 5: HTTPS’yi etkinleştirin

nextcloud.your-domain.com
ubuntu 18.04 nextcloud nginx
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email your-email-address -d nextcloud.your-domain.com
ubuntu 18.04 nextcloud 13
sudo vi /etc/nginx/conf.d/nextcloud.conf
add_header Strict-Transport-Security "max-age=31536000" always;
listen 443 ssl http2; # managed by Certbot
nextcloud ubuntu 18.04 LEMP
sudo nginx -t
sudo systemctl reload nginx

Yukarıdaki yapılandırma, SSL testinde A+ puanı alacaktır.

install nextcloud 13 ubuntu 18.04

Web Tarayıcınız ile Kurulumu Tamamlayın

Data klasörunu değiştirmek isterseniz;
sudo mkdir /usr/share/nginx/nextcloud-data
sudo chown www-data:www-data /usr/share/nginx/nextcloud-data -R

Gerekli bilgileri yazıp kurulumu başlatınız.

nextcloud ubuntu 18.04 install guide

setup nextcloud ubuntu nginx

NextCloud E-posta Bildirimi Nasıl Kurulur

NextCloud örneğiniz birden fazla kişi tarafından kullanılacaksa, NextCloud sunucunuzun parola sıfırlama e-postası gibi işlem e-postaları gönderebilmesi önemlidir. İlk olarak, kendi hesabınız için bir e-posta adresi ayarlamanız gerekir. Ayarlar -> Kişisel Bilgiler’e gidin ve hesabınız için bir e-posta adresi ayarlayın.

nextcloud email address

Ardından Ayarlar -> Temel ayarlar’a gidin. E-posta sunucusu ayarlarını bulacaksınız. İki gönderme modu vardır: sendmail ve smtp. NextCloud ana bilgisayarınızda çalışan bir SMTP sunucusu varsa, sendmail modunu seçebilirsiniz.

nextcloud email server send mode sendmail

Başka bir ana bilgisayarda çalışan bir SMTP sunucusu kullanmak istiyorsanız, smtp modunu seçin ve SMTP sunucu adresini ve oturum açma kimlik bilgilerini aşağıdaki gibi girin. Şifreleme için STARTTLS’yi seçin.

nextcloud email server send mode smtp

Veri Dizini Nasıl Taşınır

NextCloud veri dizinini taşımanız gerekirse, bunu gerçekleştirmek için 4 adım vardır. İlk olarak, veri dizinini yeni dizine kopyalamak için cp komutunu kullanmanız gerekir. Örneğin, harici sabit diskimin montaj noktası / media / linuxbabe / b43e4eea-9796-4ac6-9c48-2bcaa46353731. Harici sabit diskte yeni veri dizinini oluşturuyorum.

sudo mkdir /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/

Sonra orijinal veri dizinini yeni veri dizinine kopyalarım. -R bayrağı, kopyalama işleminin yinelemeli olduğu anlamına gelir.

sudo cp /usr/share/nginx/nextcloud-data/* /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R

.ocdata dosyasını da kopyalamanız gerekir.

sudo cp /usr/share/nginx/nextcloud-data/.ocdata /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/
sudo chown www-data:www-data /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R
sudo vi /usr/share/nginx/nextcloud/config/config.php
'datadirectory' => '/usr/share/nginx/nextcloud-data',

Dosyayı kaydedip kapatın. NextCloud web sayfasını yeniden yükleyin ve bitirdiniz.

PHP Memory Limitleri

Varsayılan PHP bellek sınırı 128 MB’dir. NextCloud daha iyi performans için 512 MB önerir. PHP bellek sınırını değiştirmek için php.ini dosyasını düzenleyin.

sudo nano /etc/php/7.2/fpm/php.ini
memory_limit = 128M
memory_limit = 512M

Dosyayı kaydedip kapatın. Alternatif olarak, dosyayı açmadan değerleri değiştirmek için aşağıdaki komutu çalıştırabilirsiniz.

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.2/fpm/php.ini
sudo systemctl reload php7.2-fpm

Sistem Ortamı Değişkenlerini Düzgün Sorgulamak için PHP Ayarları

www.conf file editleyin

sudo nano /etc/php/7.2/fpm/pool.d/www.conf
;clear_env = no
clear_env = no
sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/7.2/fpm/pool.d/www.conf
sudo systemctl reload php7.2-fpm

Yükleme Dosya Boyutu Sınırlarını Artırın

sudo nano /etc/nginx/conf.d/nextcloud.conf
client_max_body_size 512M;
client_max_body_size 1024M;
sudo systemctl reload nginx
sudo nano /etc/php/7.2/fpm/php.ini
upload_max_filesize = 2M
upload_max_filesize = 1024M
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.2/fpm/php.ini
sudo systemctl restart php7.2-fpm

NextCloud için Redis Önbelleğini Yapılandırma

sudo apt install redis-server
redis-server -v
Redis server v=4.0.9 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=9435c3c2879311f3
systemctl status redis
nextcloud memory cache redis
sudo systemctl start redis-server

And if auto-start at boot time is not enabled, you can use the following command to enable it:

sudo systemctl enable redis-server
sudo apt install php-redis
php --ri redis
php redis module
sudo phpenmod redis
sudo vi /usr/share/nginx/nextcloud/config/config.php
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     ),
nextcloud memory cache redis local cache
sudo systemctl restart nginx php7.2-fpm

MariaDB’de 4 Baytlık Karakterleri Emojileri Göstermek İçin Etkinleştirme

NextCloud Ayarları -> Genel Bakış sayfasında aşağıdaki mesajı görürseniz, MariaDB’de 4 baytlık karakterleri etkinleştirmeniz gerekir.

MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL.
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu bionic main'
sudo apt update
sudo apt install mariadb-server
sudo mysql -u root

Nextcloud veritabanının karakter kümesini ve harmanlamasını değiştirin.

ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
exit;
cd /usr/share/nginx/nextcloud/
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
sudo -u www-data php occ maintenance:repair
sudo -u www-data php occ maintenance:mode --off

Ubuntu 18.04 Masaüstüne NextCloud İstemcisi Nasıl Yüklenir

sudo add-apt-repository ppa:nextcloud-devs/client
sudo apt install nextcloud-client
ubuntu 18.04 nextcloud ppa
ubuntu 18.04 nextcloud client

Sunucu adresinizi girerek kurulumu tamamlayınız.

Kolay Gelsin…

Yeteneklerini kullanarak başarılı olan insanlarla bir sorunum yok, sadece başarının en üst hedef olmadığını düşünüyorum. Özgürlük, bilginin paylaşılması - genişlemesi başarının, kişiselliğin ötesinde şeyler. Kişisel başarı yanlış değil ama etkisi sınırlanmış, eğer gerektiği kadarını elde ettiyseniz hala bunun için açlık duymak ayıp, tabii doğruluk, güzellik ve adalet için durum tam tersi. / Richard Stallman