Nextcloud, herhangi bir bulut sunucu üzerinde dosya barındırma/depolama servisi oluşturma imkanı sunan client-server yazılımıdır. Fonksiyon özellikleri açısından Dropbox ve Google Drive’a benzeyen Nextcloud ücretsiz ve açık kaynak kodlu ücretsiz bir yazılımdır. İsteyen tüm kullanıcılar Nextcloud’u kendi sunucularına kurarak tüm çapraz platformlarından yönetip senkron edebilecekleri, kullanıma hazır bir bulut depolama alanına sahip olabilirler.
Gereksinimler:
- Temiz Debian 10 kurulu bir sunucu (DigitalOcean)
- SSH erişimi ve root ya da sudo yetkilerine sahip bir kullanıcı
- Doğru yapılandırılmış bir DNS A ve IPV6 var ise AAAA kaydı
Adım 1
İlk olarak postgreSQL’i yükleyin, postgreSQL’i veritabanı sunucusu olarak kuracağız:
apt install -y postgresql postgresql-contrib -y
Şimdi postgreSQL konsoluna şu komutla bağlanabilirsiniz:
sudo -u postgres psql
Çıktı şu şekilde görünmeli:
could not change directory to "/root": Permission denied
psql (11.7 (Debian 11.7-0+deb10u1))
Type "help" for help.
postgres=#
Sonrasında şu komut ile bağlantı hakkında bilgi alabilirsiniz:
\conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Şu komutla oturumu sonlandırın:
\q
Adım 2
Aşağıdaki komutla Apache web sunucusunu kuracağız:
apt install -y apache2 apache2-utils -y
Adım 3
Önerilen php7.4-fpm modüllerini ve PHP 7.4’ü yüklemeden önce Debian Buster’a aşağıdaki depoları eklemeliyiz:
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury_php.list
sudo apt update
Şimdi aşağıdaki komutlarla gerekli paketleri kurmaya başlayabiliriz:
apt install -y php7.4-cli php7.4-common php7.4-mbstring php7.4-gd php-imagick php7.4-intl php7.4-bz2 php7.4-xml php7.4-pgsql php7.4-zip php7.4-dev php7.4-curl php7.4-fpm php-dompdf redis-server php-redis php-smbclient php7.4-ldap
Adım 4
Apache2 ve php7.4-fpm’yi yapılandıralım. Şimdi Apache2’de gerekli olan modüllerimizi aşağıdaki komutla etkinleştirelim:
a2enmod proxy_fcgi setenvif mpm_event rewrite headers env dir mime ssl http2
Sonrasında php7.4-fpm’yi etkinleştirelim:
a2enconf php7.4-fpm
Şimdi ise apache2.conf
dosyasını .htaccess
dosyalarının kullanımına izin vermek için düzenlemeliyiz:
nano /etc/apache2/apache2.conf
Şu kısmı:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Şu şekilde düzenleyin:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Ayrıca HTTP/2’yi etkinleştirmek için bu satırı apache2.conf
dosyasının en üstüne eklememiz gerekir:
Protocols h2 h2c http/1.1
Şimdi php.ini
’yi nextcloud için hazırlamalıyız:
nano /etc/php/7.4/fpm/php.ini
Şu kodları en üste ekleyiniz:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Ve şu değerleri bulup düzenleyiniz:
max_execution_time = 300
max_input_time = 600
memory_limit = 512M
upload_max_filesize = 10240M
Daha sonra, web sunucusunu ve php7.4-fpm’yi yeniden başlatalım:
systemctl restart apache2 php7.4-fpm
Adım 5
SSL sertifikası kurulumu için Certbot’u ve diğer yardımcı araçlarını yükleyin. Let’s Encrypt’tan sertifika istemek için Certbot ve apache-plugin kullanacağız:
apt install python-certbot-apache certbot wget curl sudo unzip -y
Adım 6
Nextcloud’u kurabilmemiz için önce postgreSQL’de bir veritabanı oluşturmamız gerekiyor. Bunu yapmak için aşağıdaki komutları girmelisiniz:
İlgili alanları kendi değerlerinizle değiştirmeyi unutmayınız!
Konsola giriş yapın:
sudo -u postgres psql
Sonrasında sırasıyla;
CREATE USER nextcloud WITH PASSWORD 'ŞİFRENİZ';
CREATE DATABASE nextclouddb TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextclouddb OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextclouddb TO nextcloud;
\q
Adım 7
Nextcloud’un en güncel sürümünü resmi sitesinden indirin ve dosya sistemini oluşturun.
wget https://download.nextcloud.com/server/releases/latest-18.zip
İndirilen arşiv dosyasını dışarı çıkartın:
unzip latest-18.zip
Ardından klasörü doğru yere taşıyın ve yetkilerini tanımlayın. Tüm klasörü olduğu gibi /var/www/html/
yoluna taşıyacağız.
mv nextcloud /var/www/html/
chown -R www-data:www-data /var/www/html/nextcloud
İndirilen arşiv dosyasını şimdi silebilirsiniz:
sudo rm latest-18.zip
Nextcloud dosyalarımız için güvenlik nedeniyle /var/www/html/nextcloud
dışında bir dizin hazırlayın:
mkdir /nextcloud_verileri
Dizin sahibini www-data
olarak değiştirin:
chown -R www-data:www-data /nextcloud_verileri
Adım 8
Apache2 sanal ana bilgisayarını oluşturun ve SSL ile güvenli hale getirin. /etc/apache2/sites-available/
dizininde yeni bir .conf
dosyası oluşturacağız;
nano /etc/apache2/sites-available/001-nextcloud.conf
Dosya içeriğine şunları kendinize göre düzenleyip yapıştırın:
<VirtualHost *:80>
ServerName sizinalanadiniz.com
ServerAdmin webmaster@sizinalanadiniz.com
DocumentRoot /var/www/html/nextcloud
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Şimdi şu komutları girelim:
a2ensite 001-nextcloud.conf
a2dissite 000-default.conf
systemctl reload apache2
Siteye https:// ile güvenli bir şekilde ulaşmak istediğimiz için bir Let’s Encrypt sertifikası oluşturacağız. Bunu Certbot’la çok kolay bir şekilde yapacağız:
certbot --apache --rsa-key-size 4096
Komut ve kurulum sonrası şu dosyayı düzenleyiniz ve verdiğim kodları DocumentRoot
altına ekleyiniz:
nano /etc/apache2/sites-available/001-nextcloud-le-ssl.conf
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; preload"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Prevent MIME based attacks
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
</IfModule>
# SSL Configuration - uses strong cipher list - these might need to be downgraded if you need to support older browsers/devices
SSLEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
<Directory /var/www/html/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
Satisfy Any
</Directory>
Web arayüzünde kuruluma geçmeden önce web sunucusunu yeniden başlatalım:
systemctl reload apache2
Web arayüzünden oluşturduğumuz veritabanı bilgilerini girdikten bir yönetici hesabı oluşturduktan ve veri dizinini düzenledikten sonra:
Nextcloud önbelleğini yapılandırmak için Nextcloud’un config.php dosyasını düzenleyelim.
nano /var/www/html/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
Şöyle görünmelidir:
Temel ayarlarda, arka plan görevlerini Cron ile yapılacak şekilde yapılandırın:
Cron işini ise sunucumuzda www-data ile yapılandıralım:
sudo crontab -u www-data -e
Dosyanın en son satırına şunu ekleyin:
*/15 * * * * php7.4 -f /var/www/html/nextcloud/cron.php
Apache2 ve php-fpm’yi yeniden başlatın:
systemctl restart apache2 && sudo systemctl restart php7.4-fpm
Son olarak, alttaki verdiğim komutları girelim:
sudo -u www-data php7.4 /var/www/html/nextcloud/occ db:add-missing-indices
sudo -u www-data php7.4 /var/www/html/nextcloud/occ db:convert-filecache-bigint
Kurulum sonrası ekran görüntüleri:
Sonuç
Sıfırdan öncelikle PostgreSQL, PHP 7.4, Apache2 & HTTP/2 kurarak ve yapılandırarak Debian 10 işletim sisteminde Nextcloud 18 (NextcloudHub) kurdunuz.
Herhangi bir sorunla karşı karşıyaysanız, bu makaleyi yanıtlamaktan çekinmeyin