Home (Cloud) Server Pi5 Upgrade

2017'de Raspberry Pi 3 model B ve 2 TB'lık harici diski bir araya getirerek kurduğum ev sunucumun hem donanım hem yazılım olarak güncellenme zamanı gelmişti. Çünkü 1GB ram, USB 2.0 ve 100 Mbps ağ bağlantısı ihtiyaçlarımı karşılamaktan oldukça uzaklaşmıştı.

Donanım Alışverişi

Donanımları uzun bir araştırma ve eleme sonucu edindim. Bazı donanımları Türkiye'de yaşadığım için tedarik etmem mümkün olmadı. Adamlar direk Türkiye'ye satmıyoruz deyip sepeti falan boşaltıyorlar. :'( Türkiye de tedarik edebildiğim ürünler ile fiyat/performans dengesini gözeterek şöyle bir donanım listesi temin ettim.

Raspberry Pi 5 8Gb ve Adaptörü; 8Gb belleğin uzunca bir süre ihtiyaçlarımı karşılayabileceğini umuyorum. Enerji ile her hangi bir sorun yaşamamak adına resmi adaptörü tercih ettim.

Sandisk MicroSDXC UHS-1 A2 64GB; Uzunca bir süre NVME SSD bağlamayacağım. Doğal olarak yeterli hız ve depolama alanına sahip olduğumdan emin olmak istedim. 32GB A1 bir sd kartta bu iş için yeterli olabilir.

Argon One V3 Case; Aktif bir soğutma, şık alimünyum alaşımlı bir kasa. Bir kaç güzelliği daha var. :D

Archgon MH-3643-JSC; 4 diskli bir harici disk kutusu. Uygun fiyatlı bir ürün ve ilginç bir şekilde kaliteli duruyor.

Seagate Ironwolf Nas HDD 4TB; 7x24 çalışmak üzere tasarlanmış bir disk; Raid 10 kullandığımda yedekli şekilde 8TB bir depolama alanına sahip olacağım. SSD almaya niyetlendim ancak maliyet inanılmaz katlanıyordu.

Donanımları yaklaşık 1-2 saatlik bir okus-pokus ile birleştirdim. Şimdi en zevkli kısma geliyoruz. Yazılım. :)

Raspberry Pi OS Lite Kurulumu

Donanımları bir araya getirdikten sonra sıra geldi işletim sisteminin kurulmasına...

Öncelikle eskiye göre artık bir SD karta Raspberry Pi OS kurmak bir kaç tıklama ile mümkün, hatta nasıl yapıldığını anlatmak bile gereksiz.

Raspberry Pi Imager programını indir, kur. Cihazını seç, işletim sistemini seç, yüklenecek SD kartını seç ve devam et. Hepsi bu. :D

İşletim sistemi olarak ben hafif olduğundan dolayı Raspberry Pi OS 64bit Lite sürümünü tercih ettim. Bu arayüzü olmayan 400-500Mb'lık bir (Debian dağıtımı) işletim sistemidir ve gerçekten oldukça hafif ve esnektir.

Burada tek ve en önemli nokta; İşletim Sistemini özelleştirmek ister misiniz? sorusunda Edit Settings diyerek açılan pencereden Services sekmesinde "Enable SSH" seçeneğinin seçili olduğundan emin olun. Bu özellikle klavye/mouse/monitör bağlamadan ilk erişimi de SSH ile yapacaksanız önemli. Diğer ayarları da kendi arzunuza göre yapabilirsiniz.

SD kartı Raspberry Pi'ye takın. Ve gücü verin. İlk açılış 1-2 dk sürebilir. Router'ınızın arayüzünden Raspberry Pi'yın aldığı IP adresini öğrenebilirsiniz.

Terminali açın ve;

ssh [pi_username]@[pi_ip_address]

Eğer değiştirmeydiyseniz, varsayılan kullanıcı adı pi, şifre raspberry'dir. Hemen değiştirmek için aşağıdaki komutu kullanabilirsin;

passwd

Önce mevcut şifreni, sonra yeni şifreyi ve yine yeni şifreyi girmeni isteyecektir.

Statik IP

İlk iş olarak yerel ağımızda Raspberry Pi'a daha kolay ulaşmak için bir statik IP tanımlamamız iyi olacaktır. Ben Rasbian işletim sisteminin Lite sürümünde dhcpcd servisi bulunmuyor. O yüzden interfaces dosyasını düzenleyeceğim.

sudo nano /etc/network/interfaces

Bu dosyanın en altına Ethernet bağlantısı için şunu;

auto eth0
iface eth0 inet static
address 192.168.1.249
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4

Wi-Fi bağlantısına statik IP vermek için şunu;

auto wlan0
iface wlan0 inet static
address 192.168.1.249
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
wpa-ssid "WiFi_Ag_Adi"
wpa-psk "WiFi_Sifresi"

yazın. CTRL+O ile kaydedip, CTRL+X ile kapatın. Değişikliğin geçerli olması için networking servisini yeniden başlatın.

sudo systemctl restart networking

yada benim tercihim tüm sistemi yeniden başlatın.

sudo reboot now

Yaptığınız değişikliği kontrol etmek için;

ip a

komutunun çıktısını inceleyebilirsiniz.

DNS

Her ne kadar statik IP tanımlama sürecinde bir dns nameserver tanımlamış olsak da sunucu olarak kullanılacak cihazın güçlü ve güvenilir bir DNS kullandığından emin olmakta fayda var. DNS saldırıları en yaygın ve bilinen yerel ağ saldırılarındandır.

sudo nano /etc/resolv.conf

Dosya içeriğini aşağıdaki gibi düzenleyin;

nameserver 8.8.8.8
nameserver 8.8.4.4

Ben Google DNS kullanmayı tercih ettim. Size de güvenilir ve hızlı olmaları sebebiyle Google DNS ya da Cloudflare DNS kullanmanızı tavsiye ederim.

Her ne kadar resolv.conf dosyasını değiştirmiş olsanız da sistem yeniden başladığında bu dosyanın sistem tarafından değiştirilme ihtimali var. Bunun önüne geçmek için bu dosyayı aşağıdaki komut ile salt okunur hale getireceğiz.

sudo chattr +i /etc/resolv.conf

Şayet dosyayı düzenlemek ya da değiştirmek isterseniz;

sudo chattr -i /etc/resolv.conf

komutunu kullanarak salt okunur modundan çıkarabilirsiniz.

UFW (Uncomplicated Firewall) Kurulum ve Basit Ayarlamalar

Söz konusu olan bir sunucu ise basitte olsa güvenlik duvarı olmayan bir cihazı ağa dahil etmek düşünülemez. :D

sudo apt update
sudo apt install ufw

Bu aşamada eğer cihaza SSH ile bağlı iseniz; SSH bağlantısına izin verilip verilmeyeceğini soracaktır. "Y" ile izin verin.

İlk olarak sunucumuzdan tüm çıkışlara izin vermeliyiz, tüm girişler ise varsayılan olarak engellenmelidir.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Ardından SSH bağlantısına izin verelim;

sudo ufw allow ssh
sudo ufw allow 22

Bu sunucuda Web arayüzüne sahip uygulamalar çalıştıracaksak 80 ve 443 portlarına da izin vermemiz iyi olacaktır;

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Elbette Ufw'nin çalışabilmesi için aktif edilmesi gerekiyor.

sudo ufw enable

Kendi ihtiyaçlarınıza göre belli portları açabilir ya da belli kurallar tanımlayabilirsiniz.

Örneğin bir MySQL server kurdunuz ve buna (3306 portuna) sadece yerel ağınızdaki bir cihazın (192.168.1.100) erişebilmesini istiyorsunuz. Bu durumda aşağıdaki komutu yürütebilirsiniz;

sudo ufw allow from 192.168.1.100 to any port 3306

UFW durumunu kontrol etmek için aşağıdaki komutu kullanabilirsin;

sudo ufw status verbose

Bir kuralı kaldırmak istersen;

sudo ufw status numbered
sudo ufw delete <KuralNumarası>

Kendi ihtiyaçlarınıza göre güvenlik duvarınızı inşa edebilir ve basitçe yönetebilirsiniz.

Depolama Havuzunun Oluşturulması

Depolamayı dahil etmeden önce Linux için optimize edilmiş olan EXT4 ile formatlamak iyi bir fikir olabilir.

Aşağıdaki komut o anda cihazınızda takılı diskleri listeleyecektir.

lsblk

Burada disklerinizi /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd gibi isimlerle göreceksiniz.

Formatlayacağınız diskleri belirledikten sonra aşağıdaki örnek komutu diskleriniz için tek tek çalıştırın. Disk ismini/yolunu doğru yazdığınızdan emin olun.

sudo mksf.ext4 /dev/sda1

Disk adını değil formatlanacak bölüm adını yazdığıma dikkat edin.

Depolama havuzu için yazılımsal RAID 10 yapacağız. Bu düşük performanslı cihazlardaki en performanslı yedekli çözümdür. mdadm isimli yazılımı kurarak başlayalım.

sudo apt update
sudo apt install mdadm

Aşağıdaki komut /dev/md0 isminde 4 diski kullanan bir RAID 10 yapısı oluşturur. Disk isimlerinizi doğru verdiğinizden emin olun.

sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

RAID yapısının durumunu kontrol etmek için

cat /proc/mdstat

RAID 10'u EXT4 ile formatlamak için aşağıdaki komutu kullanın.

sudo mkfs.ext4 /dev/md0

Şimdi RAID 10 depolamasını bir yere bağlamamız gerekiyor.

sudo mkdir -p /mnt/raid10
sudo mount /dev/md0 /mnt/raid10

Sistem her yeniden başlatıldığında otomatik olarak mount işlemi yapılabilmesi için /etc/fstab dosyasına bir ekleme yapmamız gerekiyor.

Öncelikle RAID 10 yapısındaki depolamanın UUID'sini öğrenelim;

sudo blkid /dev/md0

Bu komutun çıktısını kopyalayın. Ve /etc/fstab dosyasını açın.

sudo nano /etc/fstab

Dosyaya aşağıdaki satırı ekleyin. <RAIDin UUIDsi> kısmına az önce kopyalayın dediğim UUID'yi yazın.

UUID=<RAIDin UUIDsi> /mnt/raid10 ext4 defaults 0 0

RAID durumunu izlemek için ara ara aşağıdaki komutu kullanın.

sudo mdadm --detail /dev/md0

RAID durumu ve disk sağlığını takip etmek oldukça önemlidir. Bu yüzden aşağıdaki komutla belli aralıklarla kontrol yapılıp sorun olduğunda da mail atması sağlanabilir.

sudo mdadm --monitor --scan --daemonise --mail=root@localhost --delay=300

Ancak ben sistemin, disklerin ve RAID yapısının sağlık durumunu kontrol eden bir Python betiği yazmayı tercih edeceğim. Bu betik her gece çalışacak SMART ve MDADM üzerinden bilgileri toplayarak analiz edecek ve raporlayacaktır. Ancak bu bir sonraki yazının konusu. :)

Felaket Disklerden Biri Bozuldu!

Olurda disklerinizden biri bozulursa ne olur? Korkmayın, RAID 10 bugünler için var. Verileriniz hala güvende ancak elinizi çabuk tutmanızda fayda var. Siz arızalı diski düzgün bir şekilde değiştiremeden bir başka disklerde bozulursa işte o zaman eyvah, eyvah!

Arızalı Diskin Tespiti ve Çıkarılması

İlk olarak RAID durumunu kontrol ederek işe başla.

sudo mdadm --detail /dev/md0

Çıktıda Failed Devices kısmında arızalı diski görebilirsiniz. Ayrıca State alanında degraded yazıyorsa RAID yapısı tam değil ve bir disk eksik çalışıyordur.

Arızalı diski tespit için aşağıdaki komutun çıktısını kullanabilirsin.

cat /proc/mdstat

Arızalı diski RAID'den çıkararak sistemi stabil hale getirebilirsin. Örneğin /dev/sdc diskinde arıza olduğunu varsayalım;

sudo mdadm /dev/md0 --fail /dev/sdc --remove /dev/sdc

Fiziksel Olarak Diski Çıkar - Yenisini Tak ve Hazırla

Şimdi fiziksel olarak diski yerinden çıkar ve yeni diski yerine tak.

Yeni diskinin adını görmek için

lsblk

Yeni diskinin adının /dev/sdc olduğunu varsayarak devam edelim. Öncelikle yeni diski temizlemen ve uygun hale getirmen gerekiyor. Bunun için şu komutu kullanabilirsin.

sudo wipefs -a /dev/sdc

Yeni Diski RAID YApısına Dahil ET

Yeni diski (yine adının /dev/sdc olduğunu varsayıyorum) RAID yapısına dahil etmek için;

sudo mdadm /dev/md0 --add /dev/sdc

Bu komut yeni diski RAID yapısına ekler ve RAID yapısı yeniden senkronize olmaya başlar. Bu işlem sırasında RAID veriyi yeni disk kopyalayarak tam bir yapı oluşturur. Bu süreç devam ederken süreci takip etmek için aşağıdaki komutu kullanabilirsin;

cat /proc/mdstat

Yeniden yapılandırma işi tamamlandıktan sonra RAID durumunu tekrar kontrol etmek için aşağıdaki komutu kullan.

sudo mdadm --detail /dev/md0

State alanında clean yazıyorsa, RAID 10 yapımız tam kapasiteyle çalışıyordur.

Son olarak mdadm yapılandırmasını da güncelleyerek bu badireyi atlata bilirsiniz.

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u

Not: Kritik verilerinizi saklamak için bir yerel depolama çözümlerinin her zaman yazılımsal, donanımsal ve doğal afet gibi riskler barındırdığını unutmayın.

CasaOS

İlk kez duyuyorsanız CasaOS; docker containerları üzerinde dilediğiniz uygulamaları sunucunuza dahil etmenizi ve yönetmenizi sağlayan güzel bir uygulamadır.

sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.casaos.io | sudo bash

Bu Docker ve Samba gibi çeşitli araçları ve kendi web arayüzünü kuracaktır. Kurulum tamamlandığında;

http://[your_server_ip_address]

İlk açılışta bir yönetici hesabı oluşturmanızı istiyor. Giriş yaptıktan sonra; tek tıkla kurabileceğiniz uygulamaları Apps bölümünden görebilirsiniz. Ancak buradaki uygulamalar ile kısıtlı olmadığınızı bilmelisiniz. "Apps" ekranının sağ üst kısmındaki "Özel Yükleme" butonu ile her hangi bir Docker uygulamasını kurabilirsiniz.

Database (MariaDB)

Yılların verdiği alışkanlık ve hakimiyet ben MySQL tercih ettim. Bu arada bir veritabanı servisi kurmak zorunda değilsiniz; hemen her uygulama kendi içinde bu işi çözüyor. Benim amacım olası bir sorunda kolları sıvayıp veritabanı içine rahatça dalabilmekti.

Her neyse CasaOS web arayüzü üzerinden Apps içinde MariaDB isimli uygulamayı arayıp "Kur" butonuna tıklarsanız, kurulum kısmını kendisi halledecektir. :D

Firewall (UFW) üzerinde MySQL için 3306 portuna izin verelim.

sudo ufw allow 3306/tcp

Varsayılan olarak MySQL "root" kullanıcısının şifresi "casaos"dir. Bunu değiştirmemiz gerekiyor.

sudo mysql -u root -p

MySQL terminaline hoş geldiniz. :) İlk önce root kullanıcısının şifresini değiştirelim.

ALTER USER 'root'@'localhost' IDENTIFIED BY '[rootP@s$WorD]';

[rootP@s$WorD] kısmını kendi root kullanıcı şifreniz ile değiştirin. Güçlü bir şifre belirleyin ve şifreyi güvenli bir yerde saklayın. Aynı şekilde "casaos" kullanıcısının da şifresini değiştirin.

CasaOS arayüzünden MariaDB uygulamasının sağ üst köşesindeki üç noktaya basın ve Ayarları açın.

Ortam değişkenleri kısmında belirlediğiniz şifreleri girin. Ayrıca veritabanına yazılan dataların kalıcı olması için "/var/lib/mysql" yolu için geçerli bir Volume tanımlamayı unutmayın. Kaydet dedikten sonra devam edebiliriz.

NextCloud

CasaOS üzerinde ikinci kuracağımız uygulama NextCloud. Apps bölümden NextCloud uygulamasını bulun ve "Kur" butonuna tıklayın.

Kurulum bitene kadar biz NextCloud için kullanılacak veritabanını hazırlayalım.

sudo mysql -u root -p

CREATE DATABASE nextcloud_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nextcloud_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'%';
FLUSH PRIVILEGES;
quit

Bu süreçte büyük olasılıkla NextCloud kurulumu çoktan bitmiştir. :D Uygulamalardan NextCloud'a tıklayın. Sayfa açılmıyorsa iyi haber firewall çalışıyor demektir. :D Adres satırında hangi portta erişmeye çalıştığınızı öğrenin ve firewalldan izin verin.

sudo ufw allow 10081/tcp

Devam etmeden önce Nextcloud dosya sistemine varsayılan olarak "www-data" kullanıcısı ile erişir. Bu önemsiz gibi görünen önemli bir bilgi. :D (İleride lazım olabilir)

sudo mkdir /mnt/raid10/Cloud
sudo chown www-data:www-data /mnt/raid10/Cloud
sudo chmod -R 755 /mnt/raid10/Cloud

NextCloud'un depolama için kullanacağı alanı oluşturduk. Şimdi CasaOS Apps ekranından NextCloud uygulamasının sağ üst köşesinden Ayarlar penceresini açıyoruz. Burada Hacimler kısmında Ekle butonuna basarak bir Volume tanımlamasına oluşturduğumuz dizini tanımlıyoruz. Ben "/media/Disk01" diye tanımlamayı tercih ettim. İleride daha fazla bağlayabilirim düşüncesiyle.

Kaydettikten sonra bir yeniden başlatılmasını bekleyin ve yeniden NextCloud Web UI'a erişmeyi deneyin. :D Kurulum ekranına ulaştığınıza göre şimdi ilk olarak kullanıcı adı ve şifre belirleyin. İnstall butonuna basmadan önce Storage & Database alanını açın. MySQL/MariaDB seçin. Açılan alanda oluşturduğunuz Veritabanı bilgilerini girin.

Kurulum adımlarını tamamlayın.

NextCloud ekranına giriş yaptıktan sonra sağ üstteki profil resminize tıklayın. Yönetim Ayarları'na gidin. Sol menüde Yönetim sekmesi altındaki Dış Depolama bağlantısına tıklayın.

Buradan Volume olarak containera bağladığınız RAID depolamanızı NextCloud'a bağlayabilirsiniz.

Artık hazırsınız. Yerel ağınızda bir bulutunuz var.

Cloudflare Tunnel

Yerel ağda çalışan kişisel bir sunucunuz var. Bu kadarı bile çok güzel ancak yerel ağınızdan uzaklaştığınızda sunucunuz ile tüm bağlantınız kayboluyor.

Yerel ağdaki bir cihaza internette erişmenin en geleneksel yöntemi modeminizden cihazınıza ilgili portu internete açmaktır. Statik IP ya da DDNS çözümü gerektirir. Kurulumu kalbur üstü network bilgisi, güvenliğini sağlamak ise ciddi bir bilgi ve mesai gerektirir. Her şeyi göze alsanız bile İnternet Servis Sağlayıcınız sizi CGNAT havuzuna dahil ederek bunu çoktan engellemiş olabilir.

Cloudflare Tunnel; en basit anlatım ile cihazınız ile Cloudflare sunucuları arasında bir tünel kuruyor. Dışarıdan girişi Cloudflare sunucularında olan bir tünele girerek yerel ağdaki cihazınıza erişiyorsunuz.

Başlamadan önce isim sunucuları Cloudflare'a yönlendirilmiş bir alan adınızın olması gerekir.

https://dash.cloudflare.com adresinde Cloudflare yönetim paneline girin. Sol taraftaki menüde "Zero Trust" bağlantısına tıklayın. (İlk kez bu servisi kullanacaksanız servise kayıt olmanızı isteyecek, kişisel kullanım için Free paket son derece yeterlidir.)

Networks bölümünden Tunnels'a tıklayın.
Create a Tunnel butonuna tıklayarak yeni tünelinizi oluşturun.
"Cloudflared" seçili olacak şekilde Next diyerek devam edin.
Tünelinize bir isim verin ve Save Tunnel butonuna tıklayın.
"Choose your environment" bölümünden Docker için kurulum yapacağımız için Docker'ı seçin.
"Install and run a connector" kısmında size vereceği komutu alın. Token bilgisini içerdiği için kimseyle paylaşmamanızı tavsiye ederim.

docker run -d --name cloudflare_tunnel --restart always cloudflare/cloudflared:latest tunnel run --token [TOKEN]

Kişisel tavsiyem size verdiği komutu yukarıdaki gibi değiştirin. Yani --no-autoupdate şeçeneğini kaldırın ve -d --name cloudflare_tunnel --restart always seçeneklerini ekleyin.

Container ayağa kalktığında Cloudflare ekranında "Connectors" alanında cihazınınız geldiğini göreceksiniz.

Sonraki adımda sizden bir subdomaini yerel bir IP ve Port ile bağlamanızı isteyecektir. Bu işlemi de yaptıktan sonra "Save Tunnel" butonuna basmanız yeterli olacaktır.

Birden fazla domaini tek tünel üzerinden geçirebilirsiniz. Bunun için CloudFlare > Zero Trust > Networks > Tunnels sayfasından tünelin sağındaki üç noktada Configure tıklayın. Açılan sayfada Public Hostname sekmesindeki Add a public hostname butonu ile farklı bir domaini farklı bir servis için tanımlayabilirsiniz.

NextCloud'u Dışarıya Açmak

Doğruyu söylemek gerekirse yereldeki bir cihazı internete açmak her ne kadar kolay olsa da barındırdığı riskler bakımından deli cesareti istiyor.

Her neyse nextcloud için CloudFlare tünelinde bir public hostname tanımladık ancak bu domaine erişmeye çalıştığınızda nextcloud güvenilmeyen domain hatası ile sizi karşılayacak. Bu sorunu atlatmak için NextCloud'un güvenilir domainlerine bu domaini tanımlamanız lazım.

sudo nano /DATA/AppData/nextcloud/var/www/html/config/config.php

Burada trusted_domains bulun ve domain adresinizi ekleyin. Örneğin;

'trusted_domains' => array(
0 => '192.168.1.249',
1 => 'nextcloud.muhammetsafak.com.tr'
),

CTRL+O ve CTRL+X ile dosyayı kaydedip kapatın. Ardından CasaOS > NextCloud yeniden başlatın.

Ve artık dışarıdaykende evdeki dosyalarınıza erişebileceksiniz.

Samba

CasaOS hali hazırda samba'yı kurmuş olacağı için ekstra kurmanıza gerek yoktur. CasaOS Web UI üzerinden Files penceresinden dosyaları ağınızda paylaşmanız da 1-2 tıklama kadar kolay, ancak şöyle bir problem var. CasaOS buradan paylaştığınız dosyaları tüm yerel ağınıza public olarak paylaşıyor. Bu yüzden Samba paylaşımlarını eski usul elle yapılandıracağım.

Öncelikle kendi yapılandırmamın CasaOS tarafından bozulmasını ya da değiştirilmesini ya da CasaOS yapılandırmasını bozmak istemiyorum. Bu yüzden kendi yapılandırma dosyamı ayrı tutacağım.

İlk olarak Samba kullanıcısı oluşturuyorum.

sudo smbpasswd -a [user_smb_username]

Ardından kendi Samba yapılandırmamı oluşturuyorum.

sudo nano /etc/samba/smb.home.conf

Ve içerisine paylaşımı tanımlıyorum.

[Cloud01]
comment = Home Cloud 01
path = /mnt/raid10/Cloud
browseable = Yes
read only = No
guest ok = No
public = No
valid users = [user_smb_username]
create mask = 0777
directory mask = 0777
force user = www-data

Yukarıdaki yapılandırmayı açıklamam gerekirse;
[Cloud01] : Paylaşım adı ve yolunu ifade eder. Bu paylaşım \\192.168.1.249\Cloud01 olarak erişilebilirdir.
comment : Paylaşım için bir açıklama eklemeyi sağlar.
path : Hangi dizinin paylaşılacağını tanımlar.
browseable : Paylaşımın ağ taramalarında bulunabilir olup olmadığını tanımlar.
read only : Paylaşıma yanlızca okuma izini mi verileceğini belirler. No, kullanıcılar dosya yazma ve silme işlemleri de yapabilir anlamına gelir.
guest ok : Misafir kullanıcıların paylaşıma şifre girmeden erişimini belirler.
public : Paylaşımın herkese açık olup olmadığını belirler.
valid users : Paylaşıma erişebilecek samba kullanıcılarını tanımlar.
create mask : Samba tarafından oluşturulan dosyaların varsayılan dosya izinlerini tanımlar.
directory mask : Samba tarafından oluşturulan dizinlerin varsayılan izinlerini tanımlar.
force user : Paylaşımda yapılan tüm işlemlerin belli bir kullanıcı adına yürütmeye zorlar. Bu tüm dosya ve dizinlerin belli bir kullanıcı mülkiyetinde olmasını sağlamak için kullanılır.

Sıra bu yapılandırmamızı ana samba yapılandırmasına dahil etmeye geldi.

sudo nano /etc/samba/smb.conf

Dosyanın en altına başında 1 TAB içeri girerek aşağıdaki satırı ekliyorum. 1 TAB içeri girme sebebim kendi özel yapılandırmamın da [global] yapılandırması altında tanımlanmasını istemem.

include=/etc/samba/smb.home.conf

Elbette yaptığımız değişikliğin geçerli olması için Samba sunucusunu yeniden başlatmamız gerekiyor.

sudo systemctl restart smbd

Hepsi bu kadar! CasaOS üzerindeki uygulamaları karıştırın. İhtiyacınız olan kullanışlı uygulamalar (Download Managerlar, Reklam Engelleyici DNS Serverlar, vb...) bulacağınızdan eminim. Kurmak 1,5 saatimi yazıya dökmek 2 günümü aldı. :D