Old PC NAS
samba • lan • dav

Biến PC cũ thành NAS với Ubuntu, Samba và WebDAV

Cách tận dụng PC cũ làm NAS lưu trữ với Ubuntu, chia sẻ file trong mạng nội bộ bằng Samba và truy cập hoặc chia sẻ file qua Internet bằng WebDAV trên HTTPS.

11 phút đọc16/06/2026

Nếu bạn đang có một PC cũ, mini PC hoặc laptop dư không dùng tới, cách tận dụng thực tế nhất thường không phải cài thêm app linh tinh mà là biến nó thành một NAS lưu trữ. Với Ubuntu, bạn có thể chia bài toán này thành 2 lớp rất rõ:

  • Samba để dùng như ổ mạng trong cùng LAN
  • WebDAV để truy cập hoặc chia sẻ file từ ngoài Internet

Cách chia này hợp lý hơn việc cố public SMB/Samba ra ngoài, vì Samba rất tiện trong mạng nội bộ nhưng không phải giao thức nên mở thẳng ra Internet.

Khi nào cách này đáng dùng?

Mô hình này hợp nếu bạn cần:

  • một chỗ gom file chung cho máy bàn, laptop và điện thoại
  • thư mục media hoặc backup trong nhà
  • chỗ để ISO, project archive, dữ liệu camera hoặc ảnh
  • một điểm chia sẻ file ra ngoài mà không cần gửi file thủ công

Nó đặc biệt hợp với:

  • PC cũ còn ổn nhưng không đủ mạnh để chạy nhiều VM nặng
  • máy có vài ổ HDD cũ muốn tận dụng lại
  • homelab gia đình cần một file server đơn giản

Kết luận nhanh trước khi bắt đầu

Nếu chỉ cần nhớ flow ngắn:

  1. cài Ubuntu Server
  2. gắn ổ đĩa và mount cố định
  3. bật Samba cho LAN
  4. không public Samba ra Internet
  5. dùng WebDAV qua HTTPS để truy cập từ ngoài
  6. tách riêng thư mục nội bộ và thư mục public

Nếu làm theo hướng này, bạn sẽ dễ quản lý quyền hơn và ít tự tạo lỗ hổng hơn.

Kiến trúc nên dùng

Thay vì dùng một giao thức cho mọi thứ, nên tách:

  • Samba/SMB: cho máy trong mạng nội bộ
  • WebDAV: cho nhu cầu truy cập từ ngoài hoặc chia sẻ có kiểm soát

Ví dụ một layout dễ sống lâu:

  • /srv/storage/family-share -> share qua Samba trong LAN
  • /srv/storage/media -> share qua Samba cho TV, máy bàn, laptop
  • /srv/storage/public-dav -> mount WebDAV từ bên ngoài

Điểm quan trọng là:

  • không public port SMB 445
  • chỉ public WebDAV qua HTTPS

Bước 1: Cài Ubuntu và chuẩn bị ổ đĩa

Nếu đây là NAS tự dựng, Ubuntu Server thường hợp hơn Ubuntu Desktop vì nhẹ hơn và ít thành phần dư.

Sau khi cài xong, kiểm tra ổ đĩa:

lsblk

Giả sử ổ dữ liệu là /dev/sdb.

Tạo partition và format:

sudo parted /dev/sdb --script mklabel gpt
sudo parted /dev/sdb --script mkpart primary ext4 0% 100%
sudo mkfs.ext4 /dev/sdb1

Tạo thư mục mount:

sudo mkdir -p /srv/storage

Lấy UUID:

sudo blkid /dev/sdb1

Ví dụ output:

/dev/sdb1: UUID="xxxx-xxxx" TYPE="ext4"

Thêm vào /etc/fstab:

UUID=xxxx-xxxx /srv/storage ext4 defaults,nofail 0 2

Mount lại:

sudo mount -a
df -h

Bước 2: Tạo cấu trúc thư mục và quyền cơ bản

Tạo thư mục:

sudo mkdir -p /srv/storage/family-share
sudo mkdir -p /srv/storage/media
sudo mkdir -p /srv/storage/public-dav

Tạo group dùng chung:

sudo groupadd nas-share
sudo usermod -aG nas-share $USER

Gán quyền:

sudo chown -R root:nas-share /srv/storage/family-share /srv/storage/media
sudo chmod -R 2775 /srv/storage/family-share /srv/storage/media

sudo chown -R www-data:www-data /srv/storage/public-dav
sudo chmod -R 755 /srv/storage/public-dav

Ở đây mình tách luôn:

  • thư mục Samba thuộc group nội bộ
  • thư mục WebDAV thuộc web server

Như vậy sau này bạn không bị lẫn data nội bộ với data public.

Bước 3: Cài Samba để dùng chung trong LAN

Cài Samba:

sudo apt update
sudo apt install samba -y

Backup config gốc:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Thêm vào cuối file /etc/samba/smb.conf:

[family-share]
   path = /srv/storage/family-share
   browseable = yes
   read only = no
   guest ok = no
   valid users = @nas-share
   force group = nas-share
   create mask = 0664
   directory mask = 2775

[media]
   path = /srv/storage/media
   browseable = yes
   read only = no
   guest ok = no
   valid users = @nas-share
   force group = nas-share
   create mask = 0664
   directory mask = 2775

Tạo user Samba:

sudo smbpasswd -a your-username

Kiểm tra config:

testparm

Restart Samba:

sudo systemctl restart smbd
sudo systemctl enable smbd

Bước 4: Truy cập Samba trong mạng nội bộ

Trên Windows

Mở Explorer:

\\IP_MAY_NAS\family-share

Ví dụ:

\\192.168.1.20\family-share

Trên Linux

sudo mount -t cifs //192.168.1.20/family-share /mnt/family-share \
  -o username=your-username,uid=1000,gid=1000

Trên macOS

Vào Finder -> Go -> Connect to Server:

smb://192.168.1.20/family-share

Bước 5: Chỉ mở Samba trong LAN, không public ra Internet

Đây là chỗ nhiều người cấu hình sai.

Samba chỉ nên mở trong mạng nội bộ. Nếu bạn dùng ufw, chỉ allow subnet LAN:

sudo ufw allow from 192.168.1.0/24 to any app Samba

Hoặc tối thiểu:

sudo ufw allow from 192.168.1.0/24 to any port 445 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 139 proto tcp

Không nên:

  • forward port 445 trên router
  • mở SMB ra public IP
  • dùng Samba như cách chia sẻ file từ ngoài Internet

Nếu bạn cần dùng từ xa, WebDAV hoặc VPN hợp lý hơn nhiều.

Bước 6: Cài WebDAV để truy cập từ ngoài

Một cách khá gọn trên Ubuntu là dùng Apache + WebDAV.

Cài gói:

sudo apt install apache2 apache2-utils -y

Bật module:

sudo a2enmod dav
sudo a2enmod dav_fs
sudo a2enmod auth_digest

Tạo file password:

sudo htdigest -c /etc/apache2/webdav.password "webdav" your-username

Tạo site config:

sudo nano /etc/apache2/sites-available/webdav.conf

Nội dung:

Alias /dav /srv/storage/public-dav

<Directory /srv/storage/public-dav>
    DAV On
    Options Indexes

    AuthType Digest
    AuthName "webdav"
    AuthUserFile /etc/apache2/webdav.password
    Require valid-user

    DirectoryIndex disabled
</Directory>

Enable site:

sudo a2ensite webdav.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

Lúc này trong LAN bạn có thể test:

curl -i http://YOUR_NAS_IP/dav

Bước 7: Public WebDAV qua HTTPS

Nếu bạn public WebDAV ra ngoài, nên đi qua HTTPS ngay từ đầu.

Có 2 hướng phổ biến:

  • public trực tiếp qua domain + reverse proxy + SSL
  • dùng Cloudflare Tunnel nếu không mở được port router

Trường hợp mở được port router

Forward:

  • 80
  • 443

DNS:

dav.example.com -> IP public nhà bạn

Tạo vhost Apache hoặc Nginx cho domain đó, rồi cấp SSL bằng Let's Encrypt.

Ví dụ với Certbot:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d dav.example.com

Sau đó URL dùng từ ngoài sẽ là:

https://dav.example.com/dav

Trường hợp không mở được port

Nếu bạn bị CGNAT hoặc router không cho port forwarding, dùng Cloudflare Tunnel sẽ hợp hơn. Khi đó:

  • Apache vẫn chạy local
  • Cloudflare Tunnel public http://localhost ra domain
  • người dùng ngoài truy cập qua HTTPS của Cloudflare

Bước 8: Kết nối WebDAV từ thiết bị khác

Trên Windows

Có thể map như network location hoặc dùng app hỗ trợ WebDAV tốt hơn.

URL:

https://dav.example.com/dav

Trên điện thoại

Dùng các app như:

  • FolderSync
  • Solid Explorer
  • FE File Explorer
  • Documents

Trên Linux

Bạn có thể mount bằng davfs2:

sudo apt install davfs2 -y
sudo mkdir -p /mnt/webdav
sudo mount -t davfs https://dav.example.com/dav /mnt/webdav

Những chỗ dễ sai nhất

1. Dùng chung một thư mục cho cả Samba lẫn public WebDAV

Làm vậy rất dễ loạn quyền. Tách riêng thư mục LAN và thư mục public gần như luôn là lựa chọn dễ quản lý hơn.

2. Public thẳng Samba

Đây là lỗi phổ biến và khá nguy hiểm. Nếu muốn truy cập file từ ngoài:

  • dùng WebDAV
  • hoặc VPN

đừng mở 445 ra Internet.

3. WebDAV chạy HTTP nhưng quên HTTPS

Nếu gửi credential qua HTTP thuần, bạn đang tự tạo rủi ro không cần thiết. Public WebDAV thì gần như luôn phải có HTTPS.

4. Chỉ mở router nhưng quên firewall local

Nhiều người mở port ngoài router rồi nhưng ufw hoặc Apache config vẫn chặn ở trong máy.

5. Ổ đĩa mount tay được nhưng reboot xong mất

Nếu không thêm fstab, máy restart là share biến mất hoặc mount path đổi.

Khi nào không nên dùng cách này?

Không nên chọn mô hình này nếu bạn cần:

  • RAID đẹp, snapshot và UI quản trị thân thiện như Synology
  • nhiều user non-tech tự dùng mà không muốn đụng terminal
  • đồng bộ ảnh, app mobile và permission layer hoàn chỉnh ngay từ đầu

Khi đó, Synology hoặc OpenMediaVault có thể đỡ tốn công hơn.

Kết luận

PC cũ hoàn toàn có thể biến thành NAS dùng ổn nếu bạn đi theo đúng 2 lớp:

  • Samba cho mạng nội bộ
  • WebDAV cho truy cập public

Điểm quan trọng không phải là cài được service, mà là chia đúng vai trò:

  • cái gì nội bộ thì để nội bộ
  • cái gì public thì đi qua HTTPS
  • không trộn thư mục public với thư mục LAN

Chỉ cần làm gọn như vậy, một chiếc PC cũ cũng đủ làm file server gia đình hoặc homelab rất ổn.