Öncelikle Raspberry Pi için uygun Alpine Linux imajını indiriyoruz (aarch64 mimarisi, Raspberry Pi için özel imaj) . Alpine’nin resmi sitesindeki Downloads bölümünden “Raspberry Pi” için olan .IMG uzantılı dosyayı alın. (Güncel sürüm ve RPi3 uyumlu olmasına dikkat edin.)
İmaj dosyasını bir microSD karta yazmamız gerekiyor. Bunun için Linux kullanıyorsanız dd komutunu, Windows’ta balenaEtcher gibi araçları kullanabilirsiniz. Örneğin Linux’ta şöyle yapabiliriz:
sudo dd if=alpine-rpi-XYZ.img of=/dev/sdX bs=4M status=progress && syncSD kartı Raspberry Pi 3’e takıp cihazı açın. Mümkünse Pi’yi Ethernet kablosuyla ev yönlendiricinize bağlayın (daha sonra kablosuz değil, kablolu kullanacağız). Raspberry Pi’ye bir monitör ve klavye bağlayarak veya UART konsol üzerinden erişerek ilk kurulumu yapacağız
setup-alpineBu komut, klavye dili, hostname, ağ ayarları, saat dilimi, root parolası gibi temel ayarları sırayla soracaktır.
| Adım | Ekranda Ne Soruyor? | Ne Seçeyim / Ne Gireyim? (Basit) |
|---|---|---|
| 0 | Başlat | setup-alpine |
| 1 | Keymap / Keyboard | Türkçe Q: tr + trq (emin değilsen us) |
| 2 | Hostname | Örn: rpismb |
| 3 | Network interface | Ethernet: eth0 (Wi-Fi varsa wlan0) |
| 4 | IP yöntemi | Önerilen: dhcp (sonradan statik yapılabilir) |
| 5 | Timezone | Europe/Istanbul |
| 6 | Proxy | Yoksa boş bırak (Enter) |
| 7 | APK mirror / repository | Varsayılanı seç (veya “fastest” varsa onu) |
| 8 | Root password | Güçlü şifre belirle |
| 9 | (Opsiyonel) User | Örn kullanıcı: admin (sorarsa oluştur) |
| 10 | SSH server | openssh (uzaktan erişim istiyorsan) |
| 11 | Root SSH login? | Güvenli: no (kolay kurulum için yes) |
| 12 | NTP client | chrony veya openntpd (istemiyorsan none) |
| 13 | Disk seçimi | SD kart genelde mmcblk0 / USB genelde sda (doğru diski seç) |
| 14 | Install mode | sys (kalıcı kurulum) |
| 15 | Format / Install onay | y (doğru diski seçtiğinden eminsen) |
| 16 | Bitti | reboot |
| 18 | Açılınca güncelle | apk update && apk upgrade |
Not:
sysmodu kalıcı kurulumdur (Samba/log vb. için uygun). Diskless mod RAM’den çalışır, kalıcılık için ekstra ayar ister.
Alpine paket yöneticisi ve depolar: Alpine’da paket yönetimi için apk komutu kullanılır. Varsayılan olarak main deposu etkindir, ancak bazı ek paketler için community deposunu da açmak gerekebilir. /etc/apk/repositories dosyasını bir metin editörüyle açıp (örn. vi veya nano kurup) community satırının başındaki # işaretini kaldırın. Sonra paket listesini güncelleyin:
apk update
apk upgradeapk add samba
Bu komut gerekli Samba bileşenlerini yükleyecektir.
Kurulum sonrası, Alpine’de Samba servisi için bir init script de gelmiş olacak. Bu script sayesinde Samba’yı başlatıp/durdurabiliriz. Alpine openRC kullandığı için komutlar farklıdır:
- Servisi hemen başlatmak için:
rc-service samba start - Sistemde her açılışta başlamasını sağlamak için:
rc-update add samba default
İpucu: Eğer Debian/Ubuntu üzerinde kurulacak olsaydı sudo apt install samba yeterliydi. Arch Linux için sudo pacman -S samba komutu kullanılabilirdi. Bu sistemlerde hizmeti başlatmak systemctl start smb nmb (ve enable ile kalıcı yapmak) şeklinde olurdu. Bizim Alpine konfigürasyonumuzda Samba tek bir script ile hem SMB (smbd) hem isim yayını (nmbd) süreçlerini yönetiyor.
Samba Yapılandırma Dosyası ( /etc/samba/smb.conf)
Samba kurulunca varsayılan ayar dosyası gelmiş olabilir. Alpine’de dikkat: Samba paketi belki boş bir config bırakabilir.
ls /etc/samba/
Kodunu girdiğinizde klasör şayet boş ise config dosyası oluşmamış demektir. Dosyayı oluşturmak için:
touch /etc/samba/smb.conf
Eğer dosya yoksa nano veya vi ile oluşturun. Temel bir örnek yapı verelim. Aşağıdaki smb.conf içeriğini açıklayarak koyacağız:
[global]
workgroup = WORKGROUP
server role = standalone server
log file = /var/log/samba/%m.log
log level = 1
socket options = TCP_NODELAY
deadtime = 0
keepalive = 300
# Guest'i tamamen kapatmak daha temiz
map to guest = Never
# SMB1 kapalı + modern
server min protocol = SMB2
client min protocol = SMB2
[pc_yedek]
path = /mnt/backup/pc_yedek
read only = no
browseable = yes
valid users = pc_user
force user = pc_user
force group = pc_user
create mask = 0660
directory mask = 0770
[tel_yedek]
path = /mnt/backup/tel_yedek
read only = no
browseable = yes
valid users = tel_user
force user = tel_user
force group = tel_user
create mask = 0660
directory mask = 0770
Ayarları kaydedip çıkın. Sonra mutlaka
testparm -s komutunu çalıştırın.
Samba’da iki katmanlı bir güvenlik var: Unix (Linux) kullanıcı izinleri ve Samba’nın kendi kullanıcı veritabanı. Dosya sisteminde bir dosyaya kimin erişebileceği Linux’un normal izinleriyle belirlenir.
1. Linux kullanıcı ve grup oluşturma.
adduser pc_user # Sisteme kullanıcı ekle
smbpasswd -a pc_user # Samba parolası ekleAynı işlemi telefon yedeği için tel_user ile tekrarlayın.
adduser tel_user
smbpasswd -a tel_user2. Samba Servisini Başlatma Ayarlardan sonra Samba hizmetini önyüklemede etkinleştirin ve şimdi başlatın:
rc-update add samba default
rc-service samba startRaspberry Pi’nin SD kartı sınırlı kapasitede ve güvenilirlik açısından sürekli yazma için uygun değil. Bu yüzden yedeklenecek dosyaları tutmak için harici bir HDD veya SSD kullanacağız.
Dosya sistemi seçimi: Harici diski önceden nasıl formatlamalı? En iyi seçim ext4 gibi Linux yerel dosya sistemi. Neden ext4? Çünkü Raspberry Pi üzerinde ext4 doğrudan çekirdek desteğiyle hızlı çalışır.
Diskin tanınması:
mkfs.ext4 /dev/sda1 # /dev/sda1 yerine uygun cihaz, EXT4 ile biçimlendir
mkdir -p /mnt/backup
mount /dev/sda1 /mnt/backupDiskin otomatik bağlanması için /etc/fstab dosyasına bir satır ekleyin:
/dev/sda1 /mnt/backup ext4 defaults,nofail,noatime 0 2
Klasör Hiyerarşisi: Tüm yedekleri tek bir ana dizinde toplayıp alt dizinlerle ayrıştıracağız. Örneğin, harici diski /mnt/backup dizinine mount ederek çalışalım. Bu dizin altında pc_yedek , tel_yedek gibi alt klasörler oluştururuz:
mkdir -p /mnt/backup/pc_yedek
mkdir -p /mnt/backup/tel_yedek
chmod 0770 /mnt/backup/pc_yedek
chmod 0770 /mnt/backup/tel_yedek
chown -R pc_user:pc_user /mnt/backup/pc_yedek
chown -R tel_user:tel_user /mnt/backup/tel_yedekArtık /mnt/backup üzerinde dosya sistemi görülecektir. Bu dizin içinde PC ve telefon yedekleri için ayrı klasörler oluşturduk ( pc_yedek , tel_yedek ). Klasör hiyerarşisi şöyle olabilir:
|/mnt/backup/
├── pc_yedek/ # Windows/Linux bilgisayarlar için yedek dizini
└── tel_yedek/ # Android telefonlar için yedek dizini
Otomatik yedekleme mekanizmaları şu şekilde işleyebilir:
-
Windows (Dosya Geçmişi): Windows 10/11’de “Dosya Geçmişi” özelliği kullanılarak, bilgisayarın Belgeler, Masaüstü vb. klasörleri otomatik yedeklenir. Ayarlar -> Güncelleştirme ve Güvenlik -> Yedekleme kısmından “Ağ konumuna yedekleme” seçilir. Burada Samba paylaşımlarımız (
\\rpismb\pc_yedek) eklenir. Microsoft’a göre File History ağdaki bir konuma bile yedek alabilir . Böylece Windows kendi belirlediği aralıklarla verileri kopyalar. (Bu özellik Windows’un yerleşik kuralıdır; komut satırı veya ek yazılım gerekmez.) -
Linux (rsync + cron): Linux istemciler için pratik yöntem: Raspberry Pi’deki Samba paylaşımını (
pc_yedek) Linux PC’ye CIFS ile bağlayıp, ardındanrsync+cronile her gece senkronize etmektir.
Linux PC’de aşağıdaki dosyayı oluşturun ve izinlerini kısıtlayın:
mkdir -p ~/.smb
nano ~/.smb/rpismb.creds
chmod 600 ~/.smb/rpismb.credsDosya içeriği (Pi tarafında oluşturduğunuz Samba kullanıcısıyla aynı olmalı; örn. pc_user):
username=pc_user
password=BURAYA_SAMBA_PAROLASI
domain=WORKGROUPsudo mkdir -p /mnt/rpismbÖnce cifs desteği yüklü olmalı. Debian/Ubuntu’da
sudo apt install cifs-utilsArch’ta
sudo pacman -S smbclient vs. gerekebilir. Birçok distroda kernel modülü zaten var.
Örneğin /etc/fstab dosyasına şu satırı ekleyin.
//192.168.1.150/pc_yedek /mnt/rpismb cifs credentials=/home/kullanici_adi/.smb/rpismb.creds,uid=1000,gid=1000,iocharset=utf8,vers=3.0,nofail 0 0
İpucu: İsterseniz IP yerine hostname de kullanabilirsiniz:
//rpismb/pc_yedek
Mount’u test edin:
sudo mount -a
df -h | grep rpismbsudo crontab -eAşağıdaki cron satırı, her gece saat 02:00’de /home/kullanici/ dizinini Samba paylaşımına kopyalar:
0 2 * * * rsync -av --delete /home/kullanici/ /mnt/rpismb/ >> /var/log/rsync-rpismb.log 2>&1Not:
--deleteparametresi kaynakta silinen dosyaları hedefte de siler. İstemiyorsanız kaldırın.
Bu sistem “sadece LAN” çalışsın istiyoruz. En basit garanti yöntem: Raspberry Pi’de default route (varsayılan ağ geçidi) olmasın.
Default route yoksa Pi internete giden yolu bilmez, ama LAN içindeki cihazlarla (ör. 192.168.1.x) haberleşmeye devam eder.
Güncelleme (apk/apt) gibi ihtiyaçlarda ise default route’u geçici olarak geri ekleyip, iş bitince tekrar kaldırabiliriz.
Aşağıdaki script’ler tek amaçlıdır:
internet-ac→ default route ekler (internet açılır)internet-kapat→ default route siler (internet kapanır)
Öncelikle tee komutumuzun çalışabilmesi için sbin yolunu oluşturuyoruz.
mkdir -p /usr/local/sbin
tee /usr/local/sbin/internet-kapat >/dev/null <<'EOF'
#!/bin/sh
# Pi'nin internete cikisini kapatir: default route'u siler.
# LAN (192.168.x.x gibi) calismaya devam eder.
ip route del default 2>/dev/null || true
ip -6 route del default 2>/dev/null || true
echo "OK: Default route(lar) silindi. Internet kapali."
EOF
chmod +x /usr/local/sbin/internet-kapat- Script 1.2 Boot’ta otomatik çalıştır
mkdir -p /etc/local.dtee /etc/local.d/internet-kapat.start >/dev/null <<'EOF'
#!/bin/sh
/usr/local/sbin/internet-kapat
EOFchmod +x /etc/local.d/internet-kapat.start rc-update add local default
NOT:
GWdegerini router IP'nizle eslestirin (cogunlukla 192.168.1.1).DEVgenelde Ethernet icineth0'dir.
tee /usr/local/sbin/internet-ac >/dev/null <<'EOF'
#!/bin/sh
# Pi'nin internete cikisini acar: default route ekler.
# Is bitince tekrar kapatmak icin: internet-kapat
GW="192.168.1.1"
DEV="eth0"
ip route add default via "$GW" dev "$DEV" 2>/dev/null || true
echo "OK: Default route(lar) eklendi. Internet acik -> GW=$GW DEV=$DEV"
EOF
chmod +x /usr/local/sbin/internet-ac