Chuyên mục
Linux Network

Thiết lập máy chủ Samba File Server trên Linux nhanh gọn bằng Docker

Trong bài viết Thiết lập kết nối đến máy chủ Samba trên Linux, mình đã hướng dẫn cách cài đặt SMB Client trên Linux để truy cập vào thư mục share trên Windows. Còn lần này mình sẽ thao tác ngược lại, thiết lập máy chủ chia sẻ file Sambe File Server trên Linux để có thể truy cập được từ Windows hoặc MacOS.

Máy chủ Samba là một máy chủ chia sẻ tập tin được dùng trong mạng nội bộ, dựa trên giao thức SMB (Server Message Block). Giao thức SMB còn được biết đến với cái tên CIFS (Common Internet File Sharing) khi được Microsoft thừa hưởng và tích hợp trên hệ điều hành Windows.

I. Thiết lập Samba File Server

Bạn có thể cài đặt Samba trực tiếp lên Linux bằng lệnh sudo apt install samba , theo hướng dẫn rất chi tiết của Digital Ocean: How To Set Up a Samba Share For A Small Organization on Ubuntu 16.04.

Tuy nhiên, mình không theo cách này mà sử dụng Docker Containe của dperson để thiết lập Samba File Server cho nhanh gọn lẹ. Đỡ phải cấu hình, chỉnh sửa đủ thứ thông số trong Linux.

Bạn cần phải cài đặt Docker và Docker-Compose trước khi tiếp tục với các thao tác bên dưới: Hướng dẫn cài đặt Docker, Docker Compose trên Ubuntu 20.04

Tạo thư mục mới với tên gọi samba và tạo file docker-compose.yml

mkdir ~/samba
cd ~/samba
nano docker-compose.yml

Nhập vào nội dung như sau và lưu lại

version: '3.4'

services:
  samba:
    image: dperson/samba
    environment:
      - TZ='Asia/Ho_Chi_Minh'
      - SHARE=Data;/mnt;yes;no;no;thuanbui;none;none;Data
      - WORKGROUP=workgroup
      - USER=thuanbui;depchaivodich
      - NMBD=True
    networks:
      - default
    ports:
      - "137:137/udp"
      - "138:138/udp"
      - "139:139/tcp"
      - "445:445/tcp"
    read_only: false
    tmpfs:
      - /tmp
    restart: unless-stopped
    stdin_open: true
    tty: true
    volumes:
      - /media/storage:/mnt:z
networks:
  default:

Có 3 thông số bạn cần phải thay đổi cho phù hợp:

  • - SHARE=Data;/mnt;yes;no;no;thuanbui;none;none;Data: Thay thế thuanbui bằng tên username bạn sẽ dùng để truy cập vào SMB Share
  • - USER=thuanbui;depchaivodich: Thay thế thuanbui bằng tên username đã chỉnh lại ở mục - SHARE ở trên và thay depchaivodich bằng mật khẩu đăng nhập.
  • - /media/storage:/mnt:z: Thay thế /media/storage bằng đường dẫn thư mục bạn muốn chia sẻ.

Kích hoạt Samba Server

docker-compose up -d

II. Cấu hình tường lửa

Nếu bạn đang dùng UFW làm tường lửa bảo mật cho Linux, cần thêm Rule để cho phép các cổng của Samba hoạt động.

sudo ufw allow 139
sudo ufw allow 445
sudo ufw allow 137
sudo ufw allow 138

Nếu bạn sử dụng VPS của Oracle Cloud, cần phải thiết lập thêm bước mở Port 137, 138, 139, 445 trong Security List. Xem hướng dẫn ở đây:

III. Truy cập vào Samba Server

1. Linux

Tham khảo lại bài viết này, mình đã có hướng dẫn cách kết nối vào SMB Share trên Linux

2. Windows 10

Mặc định, Windows đã có sẵn tính năng Samba Client, nên có thể thao tác được ngay mà không phải cài đặt thêm phần mềm.

Mở Explorer, right click vào This PC, chọn Add a network location

Bấm Next

Chọn mục Choose a custom network location và bấm Next

Nhập vào địa chỉ IP của Samba Server kèm theo tên của thư mục Share và bấm Next

Nhập tài khoản và mật khẩu bạn đã thiết lập trong file Docker-compose.yml trước đó. Chú ý phần tên tài khoản cần phải có dạng WORKGROUP\username. Bấm OK để xác nhận

Đặt tên cho ổ đĩa mạng và bấm Next

Bấm Finish để hoàn thành

Ổ đĩa mạng được chia sẻ từ Samba Server đã hiện ra trong Explorer của Windows 10.

3. MacOS

MacOS cũng tích hợp sẵn SMB Client như Windows, có thể kết nối được ngay từ Finder.

Mở Finder, sau đó di chuyển chuột lên Menu Bar, chọn Go –> Connect to Server

Nhập vào địa chỉ của Samba Server theo định dạng smb:\\<IP-Address>\<Share-Name> và bấm Connect để kết nối.

Chọn Registered User và nhập vào tên tài khoản / mật khẩu (thuanbui / depchaivodich). Với MacOS, bạn không cần gõ thêm WORKGROUP trong chỗ tên tài khoản, chỉ cần sử dụng đúng tên tài khoản thuanbui như đã thiết lập trong file docker-compose.yml là được.

Ổ đĩa mạng đã được kết nối thành công và hiện ra trong Finder của MacOS


Mình đã thử nghiệm các thiết lập trên đây để chia sẻ Block Volume của Oracle Cloud với các máy tính nội bộ trong nhà. Thấy hoạt động khá ổn!

Chúc bạn cài đặt thành công!

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

Trả lời