Ubuntu 22.04 Üzerine NextCloud Kurulumu
Translate This Page:
Next Cloud Nedir ?
Nextcloud, herhangi bir server üzerinde dosya barındırma/depolama servisi oluşturma imkanı yaratan client-server yazılımıdır.
Fonksiyon özellikleri açısından Dropbox,Sharepoint,we-transfer e benzeyen Nextcloud ücretsiz ve açık kaynak kodlu bir yazılımdır.
Açık kaynak olması sebebiyle İsteyen tüm kullanıcılar Nextcloud’u kendi sunucularına kurarak mobil ve PC platformlarından yönetip senkronlayabilecekleri, kullanıma hazır bir bulut depolama alanına sahip olabilirler.
Nextcloud ;
- mobil, web ve masaüstünde kolay bir kullanıcı arayüzü ve güçlü entegre belge işbirliği ve iletişim yetenekleriyle mobil durumdaykende dosyalarınıza ulaşarak ekip verimliliğini arttırabilr.
- Mobil cihazlardan gerçek zamanlı paylaşım veya yorum bildirimleri,
- Microsoft Office uyumlu dosyaların düzenlemesi,
- Bir Whatsapp yada muadili uygulamalarda olduğu gibi sohbet ve sesli / görüntülü aramalar yapabilme
- Outlook ile entere olarak posta, randevular, görevler ve daha fazlası için çok çeşitli üretkenlik araçlarını barındırmaktadır.
Next Cloud kullanıcı dostu arayüzü ile hem son kullanıcnın hemde sistem yöneticilerinin işlerini büyük oranda kolaylaştırıyor diyebiliriz.
Kendi deneyimimden biraz bahsetmek istersem kurumunuzda we-transfer,Google drive gibi public storege alanlar Bilgi güvenliği politikalaırnız sebebiyle kullanılamıyor yada uygun görülmüyor olabilir bu noktada kurumsal bir veriin kurum dışında çıkabilmesi için kendi kontrolünüzde olan güvenli dosya paylaşım platformlarına ihtiyacınız var burada “Fileorbis” gibi ücretli birkaç alternatif bulunuyor fakat bu ihtiyacı tam olarak bu araçlara denk olmasada “Next Cloud” ile sağlayabilirsiniz.
Bu kadar ön bilgiden sonra artık kuruluma geçebilriz.
Linux Makine Ön Yapılandırma
Kurulum sırasında ubuntu versiyonundan dolayı hata almamak için aşağıdaki komutla ubuntu veriyonumuzu kontrol ediyoruz.
lsb_release -a
Bu kılavuzdaki anlatım ubuntu 22.04 versiyonuna göre yapılmıştır Ubuntu 20.04 versiyonunda da kullanabilirsiniz fakat php kurulum kısımlarında bazı pathler farklılık göstermektedir.
Versiyondan emin olduğumuza göre devam edebiliriz.
Aşağıdaki komutla Ubuntu sunucumuzun güncellemelerini yapıyoruz.
sudo apt-get update ; apt-get upgrade -y
Güncelleme sonrası makinemize bir computer Name veriyoruz. Ben “next01” adını verdim.
Hostnamectl set-hostname next01
Kurulum sırasında Sunucu için İstanbulu seçmiştim ama her ihtimale karşı tekrar sunucu region tanımını giriyorum.
timedatectl set-timezone Europe/Istanbul
Aşağıdaki komutla sunucumun ip bilgilerini kontrol ediyorum eğer bir hata varsa yada değiştirmek isterseniz GUI üzerinden kolayca bu işlemi yapabilirsiniz.
ifconfig
Host dosyası düzenleme
Aşağıdaki komutla host dosyamı açıp public FQDN numaramı girerek makinemin local ip adresini yazıyorum.
nano /etc/hosts
Name serverımı girmek için aşağıdaki komutla “resolv.conf” dosyamı düzenliyorum buraya DNS serverımın adresini giriyorum bu adres local yapınızda Active directory olabilir yada public DNS kullanıyorsanız bunu da girebilirsiniz.
nano /etc/resolv.conf
DNS Yapılandırma
Local DNS Tanımı
Local DNS üzerinde A kaydını aşağıdaki şekilde oluşturuyorum. Ben Localimde Active directory üzerindeki dns i kullanıyorum tanımı aşağıdaki gibi yapılmalı.
Dns kaydımın ubuntu serverımı çözdüğünden emin oluyorum.
Public DNS Tanımı
Public DNS eğer siz bu işlemi kendi localinizdeki serverlarda yapmıyorsanız ya Hosting firmanızda yada servis sağlayıcınızdan alıyorsunuzdur bu hizmeti.
Public DNS üzeirnde tanımlarınızı yaptıktan sonra https://mxtoolbox.com/ adresi üzerinden kontrol ediyoruz.
Tüm ön hazırlıklarımızı tamamladık eğer buraya kadar bir sorun yada aksilik yoksa kurulumumuza sağlıklı bir şekilde başlayabiliriz.
Next Cloud Kurulumu
MariaDB Kurulumu
İlk olarak NextCloud için kullanacağımız Maria DB kurulumunu yapacağız aşağıdaki komutu çalıştırarak Maria DB kurulumunu başlatıyoruz.
apt install mariadb-server
Aşağıdaki komut ile mariadb de parola belirleme, anonim kullanıcıları kaldırma, uzaktan root ile bağlanamama gibi güvenlik adımlarını yapılandırıyorum.
mysql_secure_installation
Burası oldukça dikkat edilmesi gereken bir nokta bura vereceğiniz parola Mysql DB e bağlanırken kullanacağımız root paroladır.
Mevcut root parolam olmadığı için enter ile geçtim ve yeni parola içi Y ile parola belirledim.
Diğer Adımlara “Y” diyerek devam ediyoruz.
NextCloud DB İşlemleri
NextCloud için veritabanı ve kullanıcı hesabı oluşturmam gerekiyor bunun için MariaDb console bağlanıyorum.
sudo mariadb
DB yapılandırma için aşağıdaki komutları sırasıyla çalıştırıyoruz.
#”nextcloud” adında yeni bir DB oluşturuyorum. CREATE DATABASE nextcloud; #”nextcloud” adında bir local db hesabı ve parolası oluşturuyorum. GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'Next123'; #oluşturduğum hesaba bu DB için tüm yetkileri tanımlıyorum. FLUSH PRIVILEGES; QUIT;
DB yapılandırma işlemlerimiz bu kadar
Php Kurulumu
Php Kurulumu için aşağıdaki komut setini çalıştırark gerekli tüm php paketlerinin kurulumunu yapıyorum.
apt install php php-apcu php-bcmath php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-mysql php-zip php-xml
Kurulum sonrası apache servisinin durumunu aşağıdaki komutla kontrol ediyorum.
sudo systemctl status apache2
Servisim Enable ve çalışır durumda görünüyor aşağıdaki komutla yüklediğim modülleri aktif ediyorum.
phpenmod bcmath gmp imagick intl
NextCloud Web Paket Kurulumu
Aşağıdaki komutla nextcloud güncel dosyamızı indiriyoruz.
wget https://download.nextcloud.com/server/releases/nextcloud-25.0.0.zip
Dosyayı indirdiğim dizinde unzip dosyaadi.zip komutu ile dosyayı açıyorum. (Unzip kurulu değilse apt install unzip ile kurulabilir.)
unzip nextcloud-24.0.4.zip
komutumuzu çalıştırdıktan sonra sıkıştırılmış olan “nextcloud-24.0.4.zip” dosyamız “nextcloud” adında bir foldera çıkarıldı.
Bu folderın dosya okuma ve yazma izinlerini aşağıdaki komutlarla düzenliyoruz.
sudo chown -R www-data:www-data nextcloud/
Dosya yetkilendirmesini yaptıktan sonra Apache web serverımızın site dosyalarını okuduğu /var/www dizini çeirsine “nextcloud” klasörümü aşağıdaki komutla taşıyorum.
sudo chown -R www-data:www-data nextcloud/ mv nextcloud /var/www/
Apache Vritual Host Yapılandırılması
Aşağıdaki komutla varsayılan apache sitesini kapatıyorum.
a2dissite 000-default.conf
/var/www içine taşıdığım “nextcloud”dizinimi varsayılan site olarak atayacağım bunun için conf dosyası oluşturuyorum.
nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80> DocumentRoot /var/www/nextcloud ServerName nextcloud.sistemcheck.com <Directory /var/www/nextcloud/> Require all granted Options MultiViews FollowSymlinks AllowOverride All </Directory> </VirtualHost>
Aşağıdaki komutla yeni eklediğim sitemi aktif ediyorum.
a2ensite nextcloud.conf
Apache üzerinde site ve virtual host tanımları bu kadar.
Apache Performance Config yapılandırması
Ubuntu 20.04 için ;
nano /etc/php/7.4/apache2/php.ini dosyasını açıyorum. Ctrl+w ile memory_limit arıyorum ve değeri 128M den 512M olarak değiştiriyorum.
Ubuntu 22.04 için ;
(nano /etc/php/8.1/apache2/php.ini ) dosyasını açıyorum. Ctrl+w ile memory_limit arıyorum ve değeri 128M den 512M olarak değiştiriyorum.
Her iki php versiyonu için de aşağıdaki config geçerli sadece yukarıda belirttiğim dosya yolları versiyona göre değişiyor.
Arama yapıyorum ve upload_max satırını arıyorum. 2M olan değeri 200M olarak değiştiriyorum. (Farklı olabilir.) Tekrar arama yapıyorum ve max_execution_time satırını arıyorum. 30 olan değeri 360 olarak değiştiriyorum. Tekrar arama yapıyorum ve post_max_size satırını arıyorum. 8M olan değeri 200M olarak değiştiriyorum. Tekrar arama yapıyorum date.timezone satırını arıyorum. Baştaki ; kaldırıp değer olarak Europe/Istanbul giriyorum. Tekrar arama yapıyorum opcache.enable satırının başındaki ; kaldırıyorum. Tekrar arama yapıyorum opcache.interned_strings_buffer satırının başındaki ; kaldırıyorum. Tekrar arama yapıyorum opcache.max_accelerated_files satırının başındaki ; kaldırıyorum. Tekrar arama yapıyorum opcache.memory_consumption satırının başındaki ; kaldırıyorum. Tekrar arama yapıyorum opcache.save_comments satırının başındaki ; kaldırıyorum. Tekrar arama yapıyorum opcache.revalidate_freq satırının başındaki ; kaldırıyorum. Değeri 1 olarak değiştiriyorum.
Dosyayı “ctrl+o” diyerek kaydedip çıkıyorum.
Alternatif olarak komutla yapmak için aşağıdaki komut setini uygulayabilirsiniz.
sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 200M/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/post_max_size = .*/post_max_size = 200M/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/session.gc_maxlifetime = .*/session.gc_maxlifetime = 7200/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/max_execution_time = .*/max_execution_time = 360/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/;date.timezone.*/date.timezone = Europe/Istanbul/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/;opcache.enable.*/opcache.enable = 1/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/; opcache.interned_strings_buffer.*/ opcache.interned_strings_buffer = 8/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/; opcache.max_accelerated_files.*/ opcache.max_accelerated_files = 10000/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/; opcache.memory_consumption.*/ opcache.memory_consumption = 128/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/; opcache.save_comments.*/ opcache.save_comments = 1/" /etc/php/8.1/apache2/php.ini sudo sed -i "s/; opcache.revalidate_freq.*/ opcache.revalidate_freq = 1/" /etc/php/8.1/apache2/php.ini
Yaptığım değişiklerin uygulanması için apache servisimi aşağıdaki komutla restart ve durumunu kontrol ediyorum.
Systemctl restart apache2 Systemctl status apache2
Ubuntu22 de aşağıdaki şekilde
service apache2 restart service apache2 status
Apache üzerinde yapacağımız düzenlemeler bu kadar.
Apache2 versyionu upgrade (opsiyonel)
şu anki apache versiyonu default olarak zafiyet barındıran verisyonla geliyor aşağıdaki işlemle apache versiyonun güncelleyebilirsiniz.
Add Repostory
sudo add-apt-repository ppa:ondrej/apache2 sudo apt-get update
Check Apache Version Number
sudo apache2 –v
NextCloud Web Panel ve Yapılandırması
Site üzerinde gerekli yapılandırmayı yapmak için tanımlarda verdiğimiz http://nextcloud.sistemcheck.com/ adresini tarayıcımıza yazıyoruz.
Karşımıza gelen sayfada Admin için bir parola belirliyorum “veri klasörü” alanını olduğu gibi bırakıyorum.
Maria DB üzerinde oluşturduğumuz DB ve hesap bilgilerini aşağıdaki alan giriyoruz.
Kur diyerek işlemin tamamlanmasını bekliyoruz.
Sonraki adımda “Önerilen uygulamaları kur” direk devam ediyoruz.
Bu adımdan sonra
http://nextcloud.sistemcheck.com adresine internetten yada farklı bir adresten giriş yapmak isterseniz aşağıdaki hata ile karşılaşabilirsiniz.
Bu hatanın sebebi Apache config dosyasında ilgili alan adını ve public ip adresinizi White liste almanız gerekmesinden kaynaklanmaktadır.
Bu sorunu gidermek için aşağıdaki komut ile config dosyamızı açıyoruz ve public FQDN,public ip , local ip adreslerimizi burada trusted domain altına tanımlıyoruz.
nano /var/www/nextcloud/config/config.php
Değişikliğin devreye girmesi için apache servisimizi restart ediyoruz.
systemctl restart apache2
Administration -> overview menüsündeki php-imagick modülü uyarısını gidermek için.
Aşağıdaki komutla gerekli paket kurulumunu yapıyoruz.
apt intall install libmagickcore-6.q16-6-extra
bu komuttan sonra uyarının kaybolduğunu görebilirsiniz.
Nextcloud Let’s Encrytp Cerbot seritifika yapılandırması
Güvenli iletişim için Nextcloud etki alanında SSL’nin etkinleştirilmesi de önerilir. İlk olarak, aşağıdaki komutla Certbot paketini kuruyoruz:
apt-get install python3-certbot-apache -y
Paket kurulduktan sonra, web sitenizi Let’s Encrypt SSL ile güvenceye almak için aşağıdaki komutu çalıştırın:
certbot –apache -d nextcloud.sistemcheck.com
root@hovmradrv01:/home/adrive# certbot --apache -d nextcloud.sistemcheck.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): serdar.bayram@xxxxx.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for nextcloud.sistemcheck.com Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/nextcloud-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/nextcloud-le-ssl.conf Enabling available site: /etc/apache2/sites-available/nextcloud-le-ssl.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/nextcloud.conf to ssl vhost in /etc/apache2/sites-available/nextcloud-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://nextcloud.sistemcheck.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=nextcloud.sistemcheck.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/nextcloud.sistemcheck.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/nextcloud.sistemcheck.com/privkey.pem Your cert will expire on 2022-11-13. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le root@hovmradrv01:/home/adrive#
Nextcloud Active Directory Entegrasyonu
NextCloud AD entegrasyonu için Profil simgesine tıklayıp Apps a geldiğimizde LDAP user and group backend pasif görünüyor.
Kurulumu yapabilmemiz için aşağıdaki komutla php için ldap eklentisini yüklüyoruz.
apt install php-ldap systemctl restart apache2
Tekrar kontrol ettiğimde aktif hale geldiğini görüyorum.
Profil simgesine tıklayıp settings e geliyorum ardından LDAP/AD integration a tıklıyorum. Aşağıdaki gibi doldurup Test Base DN tıklıyorum ve Configuraion Ok bildirimi geliyor.
Ben ldaps kullanmadığım için “ldap://” olarak girdim DC bilgilerimi.
Burada AD üzerinde oluşturduğum “Ho-NextCloud” isimli grubun seçeceğim böylelikle bu gruba dahil olmayanlar sisteme login olamayacaklar bir nevi kontrollü yetkilendirme yapmış olacağım.
Grupta 2 kullanıcım bulunuyor.
Kullanıcıların sisteme hem mail adresleri hemde AD hesap bilgileriyle girebilmeleri için aşağıdaki kutucukları seçiyorum.
Nextcloud kurulumumuz tamamlandı artık localden,internet üzerinden yada mobil cihazımızda kuracağımız nextcloud app üzerinden dosya paylaşım platformumuza erişim sağlayabiliriz.
bı klavuzdaki anlatım diye başlayan satırda ubuntu 20.04 gördüm. sanırım yazım hatası
Dikkatiniz için teşekkürler Ahmet Bey,
Hocam Selamlar;
Güzel anlatımınız için teşekkür ederiz. Test ortamımda erkan.local şeklinde domainim var ama public tarafta erkan.com. Public DNS sunucum hosting firmasında barınıyor ve local de sadece Active Directory DNS hizmeti çalışıyor. Let’s Encrypt SSL oluşturma konusunda hata alıyorum. erkan.com olarak ta denesem erkan.com olarak denesemde sonuç değişmiyor. Firewall üzerinden 80 ve 443 portunu yönlendirdim ancak ne yazık ki başarılı olamadım. Siz böyle bir hata ile karşılaştınız mı?
Merhaba ,
Let’s Encrypt için public DNS tarafında (muhtemelen hosting hizmetinizde cPanel türü bir platform mevcuttur) erkan.com alan adınız için Modeminizin public ip adresine yönlenecek şekilde A kaydı girmeniz gerekiyor. Bu işlemden sonra Let’s A kaydı üzerinden doğrulama yapıp size sertifikayı oluşturacaktır.