Dokumen ini menjelaskan konfigurasi storage server yang telah digunakan pada Raspberry Pi. Server memakai HDD portabel 1 TB dengan sistem berkas ext4 dan membagikan folder penyimpanan melalui protokol SMB menggunakan Samba. Perangkat dapat mengakses storage melalui jaringan lokal maupun melalui jaringan privat Tailscale tanpa membuka port SMB ke internet publik.
Caution
Tahap pembuatan partisi dan format akan menghapus seluruh isi HDD. Pastikan target benar-benar /dev/sda. Jangan pernah menjalankan perintah format terhadap /dev/mmcblk0 karena perangkat tersebut merupakan kartu microSD sistem Raspberry Pi.
| Komponen | Nilai |
|---|---|
| Sistem | Raspberry Pi OS berbasis Debian |
| Pengguna Linux dan Samba | fajarb |
| HDD | Seagate One Touch 1 TB |
| Perangkat HDD | /dev/sda |
| Partisi data | /dev/sda1 |
| Sistem berkas | ext4 |
| Label | STORAGE |
| UUID | 752937b0-1a9c-449d-8a20-d7af28ae0a4c |
| Lokasi mount | /srv/storage |
| Folder yang dibagikan | /srv/storage/data |
| Nama share | Storage |
| IP LAN Raspberry Pi | 10.10.10.10 |
| Subnet LAN yang diizinkan | 10.10.10.0/24 |
| IP Tailscale Raspberry Pi | 100.68.196.86 |
| Nama perangkat Tailscale | raspberrypi |
| Rentang IPv4 Tailscale | 100.64.0.0/10 |
| Prefiks IPv6 Tailscale | fd7a:115c:a1e0::/48 |
| Port SMB | TCP 445 |
Struktur penyimpanan akhir:
/srv/storage/ root HDD
├── lost+found/ direktori sistem ext4
└── data/ folder yang dibagikan melalui Samba
Gunakan perangkat berikut:
- Raspberry Pi yang sudah dapat diakses melalui SSH.
- HDD portabel 1 TB.
- Kabel USB 3.0 yang baik.
- Powered USB hub jika daya dari port Raspberry Pi tidak stabil.
- Koneksi jaringan lokal melalui
eth0. - Tailscale pada Raspberry Pi dan perangkat klien jika storage perlu diakses dari luar jaringan lokal.
Hindari mencabut HDD saat sistem membaca atau menulis data. Tempatkan HDD pada dudukan yang kokoh, beri ruang sirkulasi udara, dan cegah kabel menarik konektor HDD. Jangan membuka atau meneruskan port TCP 445 pada router ke internet publik.
Hubungkan HDD, lalu tampilkan identitas semua perangkat penyimpanan:
lsblk -e 7 -o NAME,PATH,SIZE,MODEL,SERIAL,TRAN,FSTYPE,LABEL,UUID,MOUNTPOINTSPastikan sistem operasi berada pada kartu microSD:
findmnt /Pada konfigurasi ini, hasil identifikasi menunjukkan:
HDD eksternal : /dev/sda
Partisi HDD : /dev/sda1
Kartu sistem : /dev/mmcblk0
Root sistem : /dev/mmcblk0p2
Periksa juga stabilitas koneksi USB:
sudo dmesg --ctime | tail -n 50Jangan melanjutkan jika /dev/sda tidak menampilkan model dan kapasitas HDD yang benar.
sudo umount /dev/sda1 2>/dev/null || trueWarning
Perintah berikut menghapus struktur partisi dan sistem berkas lama pada HDD.
sudo wipefs --all /dev/sda1
sudo wipefs --all /dev/sdasudo parted -s -a optimal /dev/sda mklabel gpt
sudo parted -s -a optimal /dev/sda mkpart STORAGE ext4 1MiB 100%
sudo partprobe /dev/sda
sudo udevadm settlesudo mkfs.ext4 -L STORAGE -m 0 /dev/sda1Opsi -L STORAGE memberikan label pada partisi. Opsi -m 0 tidak mencadangkan ruang khusus untuk pengguna root karena HDD ini berfungsi sebagai media data, bukan partisi sistem.
lsblk -e 7 -o NAME,PATH,SIZE,MODEL,FSTYPE,LABEL,UUID,MOUNTPOINTSHasil yang benar harus memuat nilai berikut:
/dev/sda1 ext4 STORAGE 752937b0-1a9c-449d-8a20-d7af28ae0a4c
Jika Anda menggunakan HDD lain, salin UUID yang tampil pada perangkat tersebut. Jangan menyalin UUID dari tutorial ini ke HDD yang berbeda.
sudo mkdir -p /srv/storagesudo cp /etc/fstab /etc/fstab.backup-before-storageBuka konfigurasi:
sudo nano /etc/fstabTambahkan satu baris berikut pada bagian paling bawah:
UUID=752937b0-1a9c-449d-8a20-d7af28ae0a4c /srv/storage ext4 defaults,noatime,nofail,x-systemd.device-timeout=30s 0 2
Arti opsi utama:
| Opsi | Fungsi |
|---|---|
defaults |
Menggunakan opsi mount standar yang mendukung baca dan tulis |
noatime |
Mengurangi penulisan metadata waktu akses |
nofail |
Menjaga Raspberry Pi tetap dapat melakukan boot ketika HDD tidak tersedia |
x-systemd.device-timeout=30s |
Membatasi waktu tunggu perangkat menjadi 30 detik |
0 2 |
Menonaktifkan dump dan menempatkan pemeriksaan ext4 setelah partisi root |
Simpan melalui Ctrl+O, tekan Enter, lalu keluar melalui Ctrl+X.
sudo findmnt --verify --verboseHasil yang benar menampilkan:
0 parse errors, 0 errors
Jika systemd masih memakai konfigurasi lama, jalankan:
sudo systemctl daemon-reload
sudo mount -amount -a biasanya tidak menampilkan keluaran ketika proses berhasil.
findmnt /srv/storage
df -hT /srv/storageHasil konfigurasi ini:
TARGET SOURCE FSTYPE OPTIONS
/srv/storage /dev/sda1 ext4 rw,noatime
Bagikan folder data, bukan root HDD. Cara ini memisahkan data pengguna dari direktori sistem lost+found.
sudo mkdir -p /srv/storage/data
sudo chown fajarb:fajarb /srv/storage/data
sudo chmod 2770 /srv/storage/dataAngka awal 2 pada 2770 mengaktifkan bit setgid. Folder dan berkas baru akan mempertahankan grup fajarb.
Uji akses tulis:
sudo -u fajarb touch /srv/storage/data/.write-test
ls -la /srv/storage/data
sudo -u fajarb rm /srv/storage/data/.write-testPeriksa izin akhir:
ls -ld /srv/storage /srv/storage/dataHasil yang diharapkan untuk folder data:
drwxrws--- fajarb fajarb /srv/storage/data
sudo apt update
sudo apt install -y samba smbclient samba-vfs-modulesPaket samba-vfs-modules menyediakan modul fruit yang meningkatkan kompatibilitas akses dari macOS dan iPadOS.
sudo cp -a /etc/samba/smb.conf \
/etc/samba/smb.conf.backup-before-storagesudo smbpasswd -a fajarb
sudo smbpasswd -e fajarbMasukkan kata sandi khusus untuk akses storage. Kata sandi ini dapat berbeda dari kata sandi Linux atau SSH.
Buka berkas konfigurasi:
sudo nano /etc/samba/smb.confGanti seluruh isinya dengan konfigurasi berikut:
[global]
workgroup = WORKGROUP
server role = standalone server
security = user
server min protocol = SMB2_02
ntlm auth = ntlmv2-only
bind interfaces only = no
hosts allow = 127.0.0.1 ::1 10.10.10.0/24 100.64.0.0/10 fd7a:115c:a1e0::/48
hosts deny = ALL
log file = /var/log/samba/log.%m
logging = file
max log size = 1000
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
map to guest = Never
usershare allow guests = no
usershare max shares = 0
[Storage]
comment = Storage Server Raspberry Pi
path = /srv/storage/data
browseable = yes
read only = no
guest ok = no
valid users = fajarb
force group = fajarb
create mask = 0660
directory mask = 0770
vfs objects = catia fruit streams_xattr
fruit:resource = file
fruit:metadata = netatalk
fruit:encoding = nativeKonfigurasi ini menerapkan beberapa ketentuan:
- Server hanya menerima SMB2 atau versi yang lebih baru.
- Server hanya menerima autentikasi NTLMv2.
- Samba mendengarkan alamat jaringan yang tersedia agar port SMB dapat menerima koneksi dari antarmuka
tailscale0yang memakai alamat/32. hosts allowhanya mengizinkan akses dari Raspberry Pi sendiri, subnet LAN10.10.10.0/24, rentang IPv4 Tailscale100.64.0.0/10, dan prefiks IPv6 Tailscalefd7a:115c:a1e0::/48.hosts deny = ALLmenolak alamat sumber di luar daftar tersebut.- Server menolak akses tamu.
- Hanya pengguna
fajarbyang dapat membuka shareStorage. - Server tidak membagikan folder home atau printer.
- Seluruh share memakai modul Apple yang konsisten sehingga
testparmtidak menampilkan peringatan konfigurasi campuranvfs_fruit.
Konfigurasi sebelumnya memakai interfaces = lo eth0 dan bind interfaces only = yes. Konfigurasi tersebut bekerja pada LAN, tetapi menolak koneksi menuju IP Tailscale karena Samba tidak membuka port 445 pada tailscale0. Jangan gunakan kembali dua parameter lama tersebut jika server perlu menerima SMB melalui Tailscale.
Simpan melalui Ctrl+O, tekan Enter, lalu keluar melalui Ctrl+X.
Periksa sintaks sebelum memulai ulang layanan:
sudo testparm -sKonfigurasi valid menampilkan:
Loaded services file OK.
Server role: ROLE_STANDALONE
Hasil ringkas hanya boleh memuat bagian [global] dan [Storage]. Pastikan hasil tidak memuat ERROR, Unknown parameter, atau Failed to load services.
Pesan berikut bukan kesalahan sintaks:
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)
Konfigurasi tetap menolak SMB1 melalui server min protocol = SMB2_02 dan menolak NTLMv1 melalui ntlm auth = ntlmv2-only.
Tambahkan dependensi mount agar smbd tidak mulai sebelum /srv/storage tersedia:
sudo SYSTEMD_EDITOR=nano systemctl edit smbd.serviceEditor menampilkan area seperti berikut:
### Editing /etc/systemd/system/smbd.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Unit]
RequiresMountsFor=/srv/storage
### Lines below this comment will be discardedLetakkan dua baris konfigurasi tepat sebelum komentar ### Lines below this comment will be discarded. Systemd akan membuang teks yang Anda tulis di bawah komentar tersebut.
Simpan melalui Ctrl+O, tekan Enter, lalu keluar melalui Ctrl+X.
Muat ulang systemd dan jalankan layanan:
sudo systemctl daemon-reload
sudo systemctl enable smbd
sudo systemctl restart smbdPeriksa drop-in dan status layanan:
sudo systemctl cat smbd.service
systemctl is-active smbd
systemctl is-enabled smbdBagian akhir systemctl cat harus memuat:
# /etc/systemd/system/smbd.service.d/override.conf
[Unit]
RequiresMountsFor=/srv/storageStatus yang diharapkan:
active
enabled
Periksa port SMB:
sudo ss -lntp 'sport = :445'Karena bind interfaces only = no, hasil yang benar umumnya memuat socket wildcard berikut:
0.0.0.0:445
[::]:445
Socket wildcard berarti smbd dapat menerima koneksi pada alamat LAN dan Tailscale. Parameter hosts allow, autentikasi Samba, aturan firewall, dan kebijakan akses Tailscale tetap membatasi siapa yang dapat membuka share.
Tampilkan daftar share:
smbclient -L //127.0.0.1 -U fajarbMasukkan kata sandi Samba. Daftar share harus menampilkan Storage.
Uji pembuatan folder, pengunggahan berkas, pembacaan daftar, dan penghapusan:
smbclient //127.0.0.1/Storage -U fajarb \
-c 'mkdir UJI-SAMBA; put /etc/hostname UJI-SAMBA/hostname-test.txt; ls UJI-SAMBA; del UJI-SAMBA/hostname-test.txt; rmdir UJI-SAMBA'Pengujian berhasil jika Samba tidak menampilkan NT_STATUS_ACCESS_DENIED, NT_STATUS_LOGON_FAILURE, atau kesalahan I/O.
Pastikan layanan Tailscale aktif dan Raspberry Pi mempunyai alamat pada tailnet:
systemctl is-active tailscaled
tailscale status
tailscale ip -4
ip -brief address show tailscale0Hasil konfigurasi ini harus memuat:
100.68.196.86 raspberrypi
Status antarmuka harus memuat alamat berikut:
100.68.196.86/32
Jalankan pengujian langsung dari Raspberry Pi:
smbclient //100.68.196.86/Storage -U fajarb -c 'ls'Daftar isi share harus tampil tanpa pesan NT_STATUS_CONNECTION_REFUSED.
Jika koneksi ditolak, periksa kembali socket Samba:
sudo ss -lntp 'sport = :445'Pastikan hasil memuat 0.0.0.0:445 dan [::]:445, bukan hanya 127.0.0.1:445 dan 10.10.10.10:445.
Gunakan kredensial berikut pada semua perangkat:
Username: fajarb
Password: kata sandi Samba yang telah dibuat
Pilih alamat berdasarkan posisi perangkat:
| Jalur akses | Alamat server | Kondisi penggunaan |
|---|---|---|
| LAN | 10.10.10.10 |
Perangkat berada pada jaringan lokal 10.10.10.0/24 |
| Tailscale IP | 100.68.196.86 |
Tailscale aktif pada server dan klien |
| MagicDNS | raspberrypi |
MagicDNS aktif dan klien memakai DNS Tailscale |
Uji IP Tailscale terlebih dahulu. Gunakan MagicDNS setelah akses melalui 100.68.196.86 berhasil. Urutan ini memisahkan masalah koneksi SMB dari masalah resolusi nama.
-
Aktifkan Tailscale jika Mac berada di luar LAN.
-
Buka Finder.
-
Pilih Go > Connect to Server atau tekan
Command+K. -
Masukkan salah satu alamat berikut:
smb://10.10.10.10/Storage smb://100.68.196.86/Storage smb://raspberrypi/Storage -
Pilih Registered User.
-
Masukkan nama pengguna dan kata sandi Samba.
-
Simpan kata sandi hanya pada perangkat pribadi yang terlindungi.
Uji port dari Terminal macOS jika Finder gagal terhubung:
nc -vz 100.68.196.86 445Hasil yang diharapkan:
Connection to 100.68.196.86 port 445 succeeded
-
Aktifkan Tailscale jika perangkat berada di luar LAN.
-
Buka aplikasi Files.
-
Tekan menu tiga titik.
-
Pilih Connect to Server.
-
Masukkan salah satu alamat berikut:
smb://10.10.10.10 smb://100.68.196.86 smb://raspberrypi -
Pilih Registered User.
-
Masukkan kredensial Samba, lalu buka share
Storage.
Masukkan salah satu alamat berikut pada bilah alamat File Explorer:
\\10.10.10.10\Storage
\\100.68.196.86\Storage
\\raspberrypi\Storage
Aktifkan Tailscale sebelum memakai alamat IP Tailscale atau MagicDNS.
Gunakan aplikasi open source yang mendukung SMB2 atau SMB3. SambaLite cocok untuk koneksi Samba khusus, sedangkan Voyager cocok jika Anda memerlukan pengelola berkas yang lebih umum. Instal aplikasi melalui F-Droid atau repositori resmi proyek.
Contoh konfigurasi SambaLite:
Nama koneksi : Raspberry Pi Storage
Server/Host : 10.10.10.10
Port : 445
Share : Storage
Path : kosong
Username : fajarb
Password : kata sandi Samba
Domain : kosong
Untuk akses jarak jauh, aktifkan Tailscale pada Android dan ganti Server/Host menjadi:
100.68.196.86
Setelah MagicDNS berfungsi, Anda juga dapat menggunakan:
raspberrypi
Jangan menulis smb:// pada kolom host aplikasi yang menyediakan kolom Server/Host secara khusus. Gunakan VLC untuk memutar video jika file manager menyerahkan pemutaran kepada aplikasi eksternal.
Nama pendek berikut seharusnya mengarah ke 100.68.196.86:
raspberrypi
Pada macOS, periksa resolusi nama:
dscacheutil -q host -a name raspberrypi
nc -vz raspberrypi 445Jika IP Tailscale berhasil tetapi nama raspberrypi gagal, aktifkan MagicDNS pada pengaturan DNS tailnet dan pastikan perangkat klien menerima pengaturan DNS Tailscale. Anda juga dapat memakai nama lengkap raspberrypi.<nama-tailnet>.ts.net setelah mengetahui sufiks MagicDNS tailnet.
Jangan membuat port forwarding TCP 445 pada router. Tailscale membawa koneksi SMB melalui jaringan privatnya tanpa mengekspos layanan SMB ke internet publik.
Restart Raspberry Pi:
sudo rebootSetelah Raspberry Pi kembali aktif, periksa:
findmnt /srv/storage
df -hT /srv/storage
systemctl is-active smbd
systemctl is-enabled smbd
systemctl is-active tailscaled
tailscale ip -4
sudo ss -lntp 'sport = :445'Uji kembali share secara lokal:
smbclient -L //127.0.0.1 -U fajarb
smbclient //100.68.196.86/Storage -U fajarb -c 'ls'Konfigurasi selesai jika memenuhi seluruh kondisi berikut:
/srv/storagebersumber dari/dev/sda1.- Sistem berkas menunjukkan
ext4. - Layanan
smbdmenunjukkanactivedanenabled. - Layanan
tailscaledmenunjukkanactive. - Share
Storageterlihat melaluismbclient. - Socket Samba memuat
0.0.0.0:445dan[::]:445. - Perangkat klien dapat membuat, membaca, mengubah, dan menghapus berkas melalui LAN.
- Perangkat Tailscale dapat membuka share melalui
100.68.196.86.
df -hT /srv/storagesystemctl status smbd --no-pager
systemctl status tailscaled --no-pager
tailscale statusjournalctl -u smbd -b --no-pagersudo dmesg --ctime | grep -Ei 'usb|uas|sda|reset|disconnect|error' | tail -n 100Pesan berulang seperti USB disconnect, reset SuperSpeed USB device, kesalahan I/O, atau perangkat berubah menjadi kapasitas 0B biasanya mengarah pada masalah kabel, konektor, enclosure, atau suplai daya.
Instal alat SMART:
sudo apt install -y smartmontoolsCoba baca informasi HDD:
sudo smartctl -a /dev/sdaJika USB bridge membutuhkan mode SAT, gunakan:
sudo smartctl -d sat -a /dev/sdaTidak semua enclosure USB meneruskan data SMART. Kegagalan membaca SMART tidak selalu menunjukkan kerusakan HDD.
Instal fio:
sudo apt update
sudo apt install -y fioUji tulis berurutan dengan berkas sementara sebesar 2 GB:
fio --name=seq-write \
--filename=/srv/storage/data/.fio-speedtest \
--size=2G \
--rw=write \
--bs=1M \
--direct=1 \
--ioengine=libaio \
--iodepth=1 \
--numjobs=1 \
--end_fsync=1 \
--group_reportingPerhatikan nilai WRITE: bw=....
Uji baca berurutan terhadap berkas yang sama:
fio --name=seq-read \
--filename=/srv/storage/data/.fio-speedtest \
--size=2G \
--rw=read \
--bs=1M \
--direct=1 \
--ioengine=libaio \
--iodepth=1 \
--numjobs=1 \
--group_reportingPerhatikan nilai READ: bw=..., lalu hapus berkas uji:
rm /srv/storage/data/.fio-speedtestPastikan ruang kosong HDD melebihi 2 GB sebelum menjalankan pengujian. Jangan menghentikan daya ketika fio sedang menulis data.
lsusb -tInterpretasi utama:
| Hasil | Makna |
|---|---|
5000M atau lebih tinggi |
HDD terhubung melalui USB 3.x |
480M |
HDD terhubung melalui USB 2.0 |
Driver=uas |
Sistem memakai protokol UAS yang sesuai untuk storage USB modern |
Jika HDD hanya terhubung pada 480M, pindahkan kabel ke port USB 3.0 Raspberry Pi dan periksa kembali kabel atau enclosure.
sudo apt install -y ethtool
cat /sys/class/net/eth0/speed
sudo ethtool eth0Nilai 100 berarti link bekerja pada 100 Mbps. Nilai 1000 berarti link bekerja pada 1 Gbps.
Pada jaringan yang memakai RouterBOARD RB951Ui-2HnD, link Raspberry Pi akan berhenti pada 100 Mbps karena seluruh port Ethernet router tersebut bertipe 10/100 Mbps. Batas teoritisnya sebesar:
100 Mbps / 8 = 12,5 MB/s
Transfer Samba aktual biasanya berada di bawah batas teoritis. Router gigabit, access point 5 GHz, atau switch gigabit dapat meningkatkan kecepatan lokal. Jika Raspberry Pi dan komputer terhubung pada switch gigabit yang sama, trafik lokal keduanya tidak perlu melewati port 100 Mbps RouterBOARD.
Pasang iperf3 pada Raspberry Pi dan perangkat klien:
sudo apt install -y iperf3Jalankan server pengujian pada Raspberry Pi:
iperf3 -sDari klien LAN, jalankan:
iperf3 -c 10.10.10.10Dari klien Tailscale, jalankan:
iperf3 -c 100.68.196.86Tekan Ctrl+C pada Raspberry Pi setelah pengujian selesai. iperf3 mengukur jalur jaringan tanpa melibatkan HDD atau Samba.
| Hasil pengujian | Kesimpulan utama |
|---|---|
fio jauh di atas 12,5 MB/s, tetapi Ethernet menunjukkan 100 |
Jalur Ethernet 100 Mbps membatasi transfer |
lsusb -t menunjukkan 480M |
Koneksi HDD memakai USB 2.0 |
fio sangat rendah atau berubah tajam |
Periksa suplai daya, kabel, enclosure, dan kesehatan HDD |
iperf3 LAN rendah atau tidak stabil |
Periksa kabel, port, switch, atau Wi-Fi klien |
| LAN lancar, tetapi Tailscale lambat | Periksa kualitas internet, jalur langsung atau relay Tailscale, dan Wi-Fi klien |
| Berkas lancar setelah disalin ke perangkat | Hambatan berada pada jaringan atau SMB |
| Berkas tetap tersendat setelah disalin | Periksa codec, bitrate, pemutar, dan kemampuan dekode perangkat |
Koneksi 100 Mbps masih dapat memutar banyak video terkompresi. Video dapat tetap tersendat ketika Wi-Fi 2,4 GHz mengalami interferensi, throughput aktual turun, atau bitrate video meningkat sesaat.
Hentikan akses Samba sebelum melepas HDD:
sudo systemctl stop smbd
sudo sync
sudo umount /srv/storagePastikan HDD tidak lagi terpasang:
findmnt /srv/storageJika perintah tidak menghasilkan keluaran, Anda dapat melepas HDD. Saat memasang kembali HDD, jalankan:
sudo mount -a
sudo systemctl start smbdJika sistem menolak unmount karena perangkat sibuk, periksa proses yang masih mengakses HDD:
sudo fuser -vm /srv/storageTutup proses atau koneksi klien yang masih aktif, kemudian ulangi umount. Jangan mencabut paksa HDD yang masih terpasang.
- Jangan meneruskan port TCP
445dari router ke internet publik. - Gunakan Tailscale untuk akses dari luar jaringan lokal.
- Pertahankan
hosts allowagar Samba hanya menerima subnet LAN dan rentang alamat Tailscale. - Kelola kebijakan akses tailnet agar hanya perangkat atau pengguna yang berwenang dapat mencapai Raspberry Pi pada port
445. - Gunakan kata sandi Samba yang kuat dan berbeda dari kata sandi umum lainnya.
- Jangan aktifkan
guest ok = yesuntuk penyimpanan pribadi. - Simpan salinan data penting pada perangkat lain. Storage server tunggal tidak menggantikan sistem cadangan.
- Matikan Raspberry Pi secara normal sebelum memutus daya.
- Gunakan powered USB hub jika log kernel menunjukkan reset USB atau putus sambung berulang.
Periksa apakah UFW aktif:
sudo ufw status verboseJika statusnya active, izinkan SMB dari LAN dan antarmuka Tailscale:
sudo ufw allow in on eth0 from 10.10.10.0/24 to any port 445 proto tcp comment 'Samba LAN'
sudo ufw allow in on tailscale0 to any port 445 proto tcp comment 'Samba Tailscale'
sudo ufw status numberedJangan mengaktifkan UFW melalui SSH sebelum memastikan aturan SSH yang diperlukan sudah tersedia. Aturan firewall melengkapi autentikasi Samba dan kebijakan Tailscale, tetapi tidak menggantikannya.
Periksa UUID aktual:
sudo blkid /dev/sda1Bandingkan UUID tersebut dengan baris /etc/fstab:
grep -n '/srv/storage' /etc/fstab
sudo findmnt --verify --verbosePeriksa koneksi fisik dan log kernel:
lsblk -e 7 -o NAME,SIZE,MODEL,FSTYPE,LABEL,UUID,MOUNTPOINTS
sudo dmesg --ctime | tail -n 100sudo testparm -s
systemctl status smbd --no-pager
journalctl -u smbd -b --no-pagerPerbaiki kesalahan konfigurasi sebelum menjalankan:
sudo systemctl restart smbdPesan berikut berarti area konfigurasi yang valid masih kosong:
after editing, new contents are empty, not writing file
Jalankan kembali:
sudo SYSTEMD_EDITOR=nano systemctl edit smbd.serviceTuliskan [Unit] dan RequiresMountsFor=/srv/storage di atas komentar ### Lines below this comment will be discarded.
Peringatan berikut muncul ketika sebagian share memakai vfs_fruit, tetapi share lain tidak memakainya:
WARNING: some services use vfs_fruit, others don't
Gunakan konfigurasi minimal dalam tutorial ini. Pastikan testparm -s hanya menampilkan [global] dan [Storage].
Aktifkan kembali akun Samba dan buat kata sandi baru:
sudo smbpasswd -a fajarb
sudo smbpasswd -e fajarbUji kredensial dari Raspberry Pi:
smbclient -L //127.0.0.1 -U fajarbPeriksa mount dan izin folder:
findmnt /srv/storage
ls -ld /srv/storage/dataPulihkan kepemilikan dan izin:
sudo chown fajarb:fajarb /srv/storage/data
sudo chmod 2770 /srv/storage/data
sudo systemctl restart smbdPeriksa alamat IP LAN, IP Tailscale, dan port Samba:
ip -br address show eth0
tailscale ip -4
sudo ss -lntp 'sport = :445'Hasil ss seharusnya memuat:
0.0.0.0:445
[::]:445
Jika klien berada pada LAN, gunakan smb://10.10.10.10/Storage. Pastikan router atau switch mengizinkan lalu lintas antarklien dan perangkat tidak memakai jaringan tamu yang mengaktifkan client isolation.
Uji dari Raspberry Pi:
smbclient //100.68.196.86/Storage -U fajarb -c 'ls'Jika perintah menghasilkan NT_STATUS_CONNECTION_REFUSED, periksa /etc/samba/smb.conf. Pastikan konfigurasi tidak lagi memuat:
interfaces = lo eth0
bind interfaces only = yesGunakan konfigurasi final pada Bagian 7.4, lalu jalankan:
sudo testparm -s
sudo systemctl restart smbd
sudo ss -lntp 'sport = :445'Pastikan kedua perangkat berada pada tailnet yang sama:
tailscale status
tailscale ping 100.68.196.86Periksa pula kebijakan akses Tailscale dan firewall Raspberry Pi. Anda tidak perlu membuat port forwarding pada router.
Uji IP terlebih dahulu:
smb://100.68.196.86/Storage
Pada macOS, periksa nama perangkat:
dscacheutil -q host -a name raspberrypi
nc -vz raspberrypi 445Aktifkan MagicDNS pada pengaturan DNS tailnet dan pastikan aplikasi Tailscale pada klien memakai DNS Tailscale. Sambil memperbaiki resolusi nama, tetap gunakan IP 100.68.196.86.
Jika nc berhasil tetapi aplikasi tetap menolak login, jaringan sudah berfungsi. Uji akun Samba:
smbclient //127.0.0.1/Storage -U fajarb -c 'ls'
sudo pdbedit -L | grep '^fajarb:'Hapus kredensial Samba lama yang tersimpan pada klien, lalu masukkan kembali pengguna fajarb dan kata sandi Samba.
- HDD terdeteksi sebagai
/dev/sda. - Partisi
/dev/sda1memakai ext4 dan labelSTORAGE. - UUID pada
/etc/fstabsama dengan UUID HDD. - HDD terpasang pada
/srv/storagesetelah restart. - Folder
/srv/storage/datadimilikifajarb:fajarb. - Akun Samba
fajarbaktif. -
sudo testparm -stidak menampilkan kesalahan. -
smbdberstatusactivedanenabled. -
tailscaledberstatusactive. - Drop-in systemd memuat
RequiresMountsFor=/srv/storage. - Konfigurasi Samba mengizinkan
10.10.10.0/24,100.64.0.0/10, danfd7a:115c:a1e0::/48. - Port
445mendengarkan pada0.0.0.0dan[::]. - Share
Storagedapat membaca dan menulis data. - Share dapat diakses melalui
smb://10.10.10.10/Storage. - Share dapat diakses melalui
smb://100.68.196.86/Storageketika Tailscale aktif. - MagicDNS
smb://raspberrypi/Storagebekerja jika fitur tersebut diaktifkan. - Port SMB tidak dibuka ke internet publik.
- Data penting memiliki salinan cadangan pada media lain.
Gunakan rangkaian berikut untuk memeriksa keadaan server sewaktu-waktu:
lsblk -e 7 -o NAME,SIZE,MODEL,FSTYPE,LABEL,UUID,MOUNTPOINTS
findmnt /srv/storage
df -hT /srv/storage
systemctl is-active smbd
systemctl is-enabled smbd
systemctl is-active tailscaled
tailscale status
tailscale ip -4
sudo testparm -s
sudo ss -lntp 'sport = :445'Storage server siap digunakan ketika HDD terpasang pada /srv/storage, layanan smbd aktif, share dapat diakses melalui smb://10.10.10.10/Storage, dan perangkat Tailscale dapat membuka smb://100.68.196.86/Storage. MagicDNS menyediakan alamat smb://raspberrypi/Storage setelah klien menerima konfigurasi DNS Tailscale.