Raspberry Pi'yi güvenli dosya sunucusu yapmak

Imagem de capa

Merhabalar, bu yazıda Raspberry Pi ve harici USB diskinizi kullanarak güvenli nasıl dosya sunucusu yapılır öğreneceğiz.

Anlatımı Debian tabanlı Raspbian dağıtımı için yapacağım. Kullanacağımız yazılımın adı NextCloud. Ben RPi’ye eski laptop’tan kalan 500GB’lık hard diski USB adaptörü ile bağladım. Siz de boştaki hard diskinizi veya USB belleğinizi kullanabilirsiniz. Mevcut bir harici diskiniz yok ise kurulumu RPi’nin kendi belleği ile de yapabilirsiniz.

İlk olarak Raspberry Pi’mize SSH ile bağlanalım ve NextCloud’ı indirelim.

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

Normalde her zaman nginx kullanırım ancak, NextCloud’ı daha önce nginx ile kurup, bir sürü hatalar ile karşılaştığım için, resmi dökümanlarında da önerdikleri Apache2’yi kullanacağız.

sudo apt-get install apache2 mariadb-server libapache2-mod-php7.0
sudo apt-get install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring
sudo apt-get install php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip

Şimdi, harici diski RPi’ye bağladıktan sonra aşağıdaki komutla diskinizi kontrol edebilirsiniz. (Harici diskiniz yoksa diskle alakalı bölümleri atlayabilirsiniz)

sudo lsblk

Bir bölüntüye sahip değilseniz, sudo fdisk /dev/sda komutuyla yeni bir bölüntü oluşturunuz. Diskiniz ayrıca ext4 formatında olmalıdır. NTFS disklerle NextCloud’da bazı yetki problemleri ortaya çıkabilir. Bu yüzden kurulumun sorunsuz gerçekleşmesi için ext4 olarak formatlamanız gerekiyor.

Not: Bu işlem diskinizdeki tüm verileri silecektir. Sorumluluk size aittir.

sudo mkfs.ext4 -L data /dev/sda1

Bir sonraki ayar için, diskiminizin UUID’sini almamız gerekiyor. Bunun için bu komutu girip, diskimizin UUID’sini kopyalıyoruz:

sudo blkid -o full -s UUID 

Şimdi, diskinizin başlarken mount edilebilmesi için, /etc/systemd/system/media-data.mount dosyasına aşağıdaki systemd ayarlarını girelim. UUID-BURAYA yazan kısma kopyaladığınız UUID’yi yapıştırın ve dosyayı kaydedin.

[Unit]
Description=Mount unit for data

[Mount]
What=/dev/disk/by-uuid/UUID-BURAYA
Where=/media/data
Type=ext4

[Install]
WantedBy=multi-user.target

Daemon’ı oluşturup aktifleştirin.

sudo systemctl daemon-reload
sudo systemctl start media-data.mount
sudo systemctl enable media-data.mount

Buradan da çalıştığını onaylayın:

sudo systemctl status media-data.mount

Harici disk kurulumu bitti. Artık dosyaları yüklemek istediğiniz dizine kopyalayalım. Harici disk kurulumunu yaptıysanız /media/data, yapmadıysanız /var/www/ klasörüne kopyalayın.

tar -xjf nextcloud-14.0.4.tar.bz2
sudo cp -r nextcloud /media/data

Dosya sistemi izinlerini yapalım.

sudo adduser pi www-data
sudo chmod -R 777 /media/data/
sudo chown -R www-data:www-data /media/data/
sudo chgrp -R www-data /media/data/

MariaDB ayarlarına geçelim. sudo mysql yazıp direkt giriş yapabilirsiniz. Burada NextCloud için kullanıcı ve veritabanı oluşturuyoruz.

MariaDB> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
MariaDB> CREATE DATABASE nextcloud;
MariaDB> GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost';
MariaDB> FLUSH PRIVILEGES;

Veritabanından sonra Apache2 ayarlarına geçelim. /etc/apache2/sites-enabled/nextcloud.conf dosyasını açıp aşağıdaki config’leri ekleyelim.

Alias /nextcloud "/media/data/nextcloud/"

<Directory /media/data/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All
  Satisfy Any

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /media/data/nextcloud
 SetEnv HTTP_HOME /media/data/nextcloud

</Directory>

Son olarak sudo a2ensite nextcloud.conf ile config’i aktifleştirelim ve sudo service apache2 restart ile yeniden başlatalım.

Tarayıcımızdan http://IP-ADRESİ/nextcloud adresine girdiğimiz zaman bizi NextCloud yükleme sihirbazı karşılayacaktır. Buraya da admin ve veritabanı bilgilerini girip kurulumu tamamlayın.

P.S.: Ayrıca router’ınızdan bir port açarak, kurduğunuz bu sisteme dışarıdan da bağlantı kurabilirsiniz :) Bununla birlikte DuckDNS‘den alan adı açıp, Let’s Encrypt ile de bağlantıyı şifreleyebileceğinizi hatırlatmama gerek yoktur sanırım.