Cách cài đặt và cấu hình Syncthing để đồng bộ hóa các thư mục trên Ubuntu 14.04
Có nhiều chương trình có khả năng giữ các file đồng bộ giữa các máy tính khác nhau. Syncthing là một lựa chọn mới hấp dẫn, đa nền tảng, hoàn toàn open-souce , rất linh hoạt và dễ sử dụng.Trong hướng dẫn này, ta sẽ chỉ cho bạn cách bắt đầu sử dụng Syncthing để đồng bộ hóa dữ liệu giữa hai version server Ubuntu 14.04. Điều này sẽ cho phép bạn đồng bộ hóa liền mạch các file giữa các server này dựa trên các folder "xem" đã được cấu hình .
Yêu cầu và Mục tiêu
Để hoàn thành hướng dẫn này, bạn cần quyền truy cập vào hai version server Ubuntu 14.04.
Theo mục đích của hướng dẫn này, ta sẽ gọi các server sau:
- người phục vụ
- servertwo
Đây sẽ là những đối tác bình đẳng, vì vậy không có mối quan hệ chính / phụ. Bạn phải có một account regular user được cấu hình trên mỗi account này (bạn có thể tìm hiểu cách thực hiện theo các bước 1-4 trong hướng dẫn cài đặt server ban đầu của ta cho Ubuntu 14.04 tại đây).
Tài khoản regular user trong hướng dẫn này sẽ được gọi là demouser
, nhưng bạn nên sử dụng bất kỳ tên user nào bạn muốn. Điều này không cần phải tách biệt với account không phải root thông thường của bạn.
Ta sẽ cài đặt và cấu hình Syncthing trên từng máy này để có thể chia sẻ file giữa chúng. Sau khi bạn đã hoàn thành các quy trình được nêu trong hướng dẫn này, bạn sẽ có hai server , mỗi máy có một folder sẽ phản chiếu các thay đổi sang máy tính khác.
Ta sẽ cài đặt Syncthing dưới dạng ứng dụng cấp hệ thống và tạo tập lệnh Upstart. Điều này sẽ cho phép các version Syncthing của ta bắt đầu khi server khởi động và khởi động lại một cách chính xác, thay vì tạo ra các version mới mỗi lần như mặc định.
Download và cài đặt ban đầu
Điều đầu tiên ta cần làm để bắt đầu là tải file binary Syncthing xuống mỗi server của ta .
Để tìm version đóng gói mới nhất, bạn có thể truy cập trang phát hành trên GitHub . Có các node cho từng loại hệ điều hành ở phía dưới.
Nếu hệ thống Linux của bạn là 32 bit, hãy chọn lựa chọn bắt đầu bằng “ syncthing-linux-386-...
”. Nếu server bạn đang sử dụng là 64-bit, hãy chọn server có nhãn “ syncthing-linux-amd64-...
”. Không tải file xuống máy tính local của bạn. Thay vào đó, hãy nhấp chuột phải vào file thích hợp và chọn “Sao chép địa chỉ liên kết” hoặc bất kỳ tùy chọn tương tự nào mà bạn có.
Ta sẽ download các file này bằng lệnh wget
trên mỗi server của ta . Trên server của bạn, nhập wget
theo sau là dấu cách, sau đó dán liên kết mà bạn đã sao chép. Phiên bản và kiến trúc hệ thống có thể khác nhau đối với bạn:
cd ~ wget https://github.com/calmh/syncthing/releases/download/v0.8.15/syncthing-linux-amd64-v0.8.15.tar.gz
Bây giờ, ta có thể extract tarball bằng lệnh :
tar xzvf syncthing*.tar.gz
Di chuyển vào folder mới tạo:
cd syncthing*
Ở đây, ta có một file thực thi được gọi là syncthing
mà ta có thể sử dụng để khởi động dịch vụ. Ta muốn sao chép nó vào một vị trí trong PATH
của ta để ta có thể gọi nó như một ứng dụng flask thường.
Thực hiện việc này với các quyền của sudo bằng lệnh :
sudo cp syncthing /usr/local/bin
Bây giờ, ta có thể quay lại folder chính của bạn và xóa tất cả các file và folder Syncthing còn sót lại một cách an toàn.
cd ~ rm -rf syncthing*
Hoàn thành tất cả các bước trên trên cả hai server của bạn.
Ứng dụng hiện đã được cài đặt, nhưng còn một số việc nữa ta cần làm trước khi nó sẵn sàng sử dụng.
Thay đổi các tùy chọn GUI để cho phép xem từ xa
Theo mặc định, giao diện web Syncthing chỉ có sẵn cho các kết nối từ cùng một máy tính. Điều này sẽ không hoạt động cho mục đích của ta vì ta đang làm việc với các server từ xa.
Để khắc phục điều này, ta cần chỉnh sửa một dòng trong file cấu hình Syncthing. Tuy nhiên, file cấu hình vẫn chưa được tạo.
Để tạo file tự động, ta có thể khởi động dịch vụ trong thời gian ngắn. syncthing
lệnh syncthing
để cài đặt và chạy:
syncthing
Quá trình syncthing
không phải là một daemon, nghĩa là nó chạy trong phiên shell hiện tại ( ta sẽ giải quyết vấn đề này bằng cách triển khai tập lệnh Upstart trong giây lát). Nó sẽ bắt đầu quá trình và tạo một số file cần thiết.
Sau một lúc, bạn sẽ thấy một thông báo cung cấp thông tin về ID Node của bạn trông giống như sau:
[2EQK3] 15:47:15 OK: Ready to synchronize default (read-write) [2EQK3] 15:47:15 INFO: Node 2EQK3ZR77PTBQGM44KE7VQIQG7ICXJDEOK34TO3SWOVMUL4QFBHA is "server1" at [dynamic]
Khi bạn nhìn thấy điều này, điều đó nghĩa là quá trình đã được khởi tạo chính xác. Bây giờ ta có thể dừng quá trình bằng lệnh :
CTRL-C
Điều này sẽ dừng quá trình và cung cấp cho ta quyền kiểm soát lại terminal .
Bây giờ ta có thể chỉnh sửa file cấu hình đã được tạo. Mở file trong editor của bạn:
nano ~/.config/syncthing/config.xml
Tìm phần liên quan đến GUI. Nó sẽ giống như thế này:
<gui enabled="true" tls="false"> <address>127.0.0.1:8080</address> </gui>
Thay đổi duy nhất mà ta cần thực hiện là thay thế địa chỉ localhost ( 127.0.0.1
) bằng 0.0.0.0
, đại diện cho tất cả các network interface . Phần này sẽ giống như thế này khi bạn hoàn thành:
<gui enabled="true" tls="false"> <address>0.0.0.0:8080</address> </gui>
Lưu file khi bạn hoàn tất. Ta sẽ thực hiện cấu hình mở rộng hơn sau này thông qua giao diện web.
, hãy hoàn thành các quy trình này trên cả hai server mà bạn đang cấu hình .
Tạo tập lệnh khởi động để xử lý các trạng thái dịch vụ
Tiếp theo, ta sẽ triển khai tập lệnh Upstart để quản lý quy trình của bạn . Điều này sẽ cho phép ta tự động bắt đầu quá trình Syncthing khi server khởi động. Nó cũng sẽ cho phép ta chạy nó như một dịch vụ, mà không kiểm soát phiên của ta .
Tập lệnh Khởi động mà ta sẽ sử dụng được lấy từ một bài đăng trên các diễn đàn thảo luận Syncthing . Tạo và mở file Upstart với quyền root trong editor bằng lệnh :
sudo nano /etc/init/syncthing.conf
Bên trong, ta sẽ sử dụng các dòng sau để kiểm soát quá trình Khởi động của ta :
description "Syncthing P2P sync service" start on (local-filesystems and net-device-up IFACE!=lo) stop on runlevel [!2345] env STNORESTART=yes env HOME=/home/demouser setuid "demouser" setgid "demouser" exec /usr/local/bin/syncthing respawn
Hãy xem điều này nghĩa là gì.
Ta bắt đầu với mô tả chung về dịch vụ. Tiếp theo, ta xác định thời điểm bắt đầu và dừng dịch vụ. Ở đây, ta đang nói với hệ thống rằng nó sẽ được khởi động sau khi hệ thống file và các network interface không local được khởi động. Nó sẽ bị dừng khi nào hệ thống rời khỏi một trong các cấp chạy bình thường.
Tiếp theo, ta sẽ cài đặt một biến môi trường yêu cầu Syncthing không khởi động lại bằng các cơ chế riêng của nó. Điều này là do nó tạo ra một quy trình mới mỗi lần mà không cần dọn dẹp quy trình cũ. Để tránh điều này, ta sẽ triển khai khả năng khởi động lại trong tập lệnh Upstart này sau này.
Biến môi trường tiếp theo cài đặt folder chính sẽ được Syncthing sử dụng. Điều này sẽ được sử dụng để tìm các file cấu hình chính xác và điền trước các trường trong GUI. Ta cũng sẽ chỉ định user và group bằng cách sử dụng các tham số setuid
và setgid
tương ứng. Sửa đổi cả ba giá trị này để trỏ đến thông tin user của bạn.
Tiếp theo, ta đặt đường dẫn đến lệnh thực mà ta sẽ thực thi. Cuối cùng, ta sử dụng respawn
để yêu cầu Upstart tự động khởi động lại quá trình nếu nó bị dừng sớm. Điều này được sử dụng để tự động khởi động lại quy trình (sạch sẽ) khi quy trình Syncthing cố gắng tự khởi động lại nội bộ.
Khi bạn hoàn tất, hãy lưu file .
Đến đây bạn có thể bắt đầu dịch vụ bằng lệnh :
sudo initctl start syncthing
Hoàn thành các bước trên trên cả hai server của bạn.
Cài đặt bảo mật trong giao diện user web
Cuối cùng, ta đã sẵn sàng để cấu hình các version của bạn thông qua giao diện user web.
Đăng nhập vào từng giao diện Syncthing trên server của bạn bằng cách truy cập địa chỉ IP công cộng và cổng 8080
:
http://server1_public_IP:8080 http://server2_public_IP:8080
Bạn sẽ thấy màn hình Syncthing chính:
Điều đầu tiên mà ta cần làm là thêm một số bảo mật vào giao diện của bạn . Chuyển đến menu “Chỉnh sửa” ở góc trên bên phải và nhấp vào lựa chọn “Cài đặt”:
Ở phía bên phải, ta cần cài đặt tên user và password cho giao diện web. Ta cũng muốn bật mã hóa TLS cho các phiên của bạn để không thể chặn lưu lượng truy cập của ta khi chuyển tiếp bằng cách chọn hộp “HTTPS”:
Khi bạn hoàn tất, hãy nhấp vào nút “Lưu” ở dưới cùng.
Bạn sẽ thấy một thông báo nhắc bạn khởi động lại dịch vụ để các thay đổi có hiệu lực:
Nhấp vào nút "Khởi động lại".
Bạn có thể cần phải làm mới trang để các thay đổi reload đúng cách. Khi làm như vậy, bạn rất có thể sẽ gặp phải cảnh báo SSL giống như sau:
Điều này chỉ cho bạn biết rằng pháp nhân đã ký certificate SSL không có trong danh sách tổ chức phát hành certificate tin cậy của trình duyệt của bạn. Điều này được mong đợi vì các certificate được tự ký. Có thể an toàn khi nhấp vào “Vẫn tiếp tục” để tiếp tục.
Sau đó, bạn sẽ nhận được dấu nhắc xác thực cho tên user và password mà bạn đã cấu hình :
Điền vào các giá trị thích hợp và đăng nhập. Giao diện của bạn giờ đây an toàn hơn trước lưu lượng truy cập bên ngoài.
Hoàn thành các bước này trên cả hai server .
Kết nối hai server và chia sẻ folder
Để chia sẻ nội dung, Syncthing yêu cầu cả hai đầu của kết nối phải thêm server khác vào danh sách các node của chúng. Sau đó, cả hai bên cũng phải thêm một kho (thư mục) để đồng bộ hóa.
Để thêm một nút, bạn cần ID của nút đồng hành. Bạn có thể lấy ID này bằng cách chuyển đến menu "Chỉnh sửa" ở góc trên bên phải và chọn tùy chọn "Hiển thị ID".
Thao tác này sẽ hiển thị một lớp phủ với một ID dài mà bạn có thể sao chép. Nó cũng sẽ cung cấp cho bạn mã QR trong trường hợp bạn đang cấu hình ứng dụng điện thoại thông minh. Sao chép ID của nút đầu tiên.
Trên server thứ hai, nhấp vào menu “Chỉnh sửa” và chọn “Thêm nút”.
Một lớp phủ sẽ xuất hiện với các trường mà bạn phải cấu hình để thêm server khác. Trong trường “ID nút”, hãy dán ID mà bạn đã sao chép từ server đầu tiên. Trong trường "Tên nút", hãy chọn bất kỳ tên mô tả nào mà bạn muốn sử dụng cho server khác của bạn . Để “Địa chỉ” là “động”:
Khi bạn hoàn tất, hãy nhấp vào “Lưu” để thêm nút mới.
Chạy qua cùng một quá trình này theo thứ tự ngược lại để cả hai server đều có server đối diện trong cấu hình của chúng. Hiện tại, hãy bỏ qua mọi yêu cầu khởi động lại dịch vụ, vì trước tiên ta sẽ thực hiện thêm một số thay đổi bổ sung.
Trong giao diện web, các node mà bạn kết nối được hiển thị ở phía bên phải.Kho lưu trữ bạn đang chia sẻ được liệt kê ở bên trái. Theo mặc định, một folder có tên Sync
sẽ được tạo trong folder chính của bạn để hoạt động như một repository mặc định . Nếu menu được nén, hãy nhấp vào tên để mở rộng danh sách:
Nhấp vào nút “Chỉnh sửa” để cấu hình repo. Về phía dưới cùng, bạn sẽ có tùy chọn chia sẻ repository này với bất kỳ nút nào mà bạn đã cấu hình . Chọn hộp được liên kết với nút đối diện và sau đó nhấp vào nút “Lưu”:
Bây giờ, bạn có thể nhấp vào nút “Khởi động lại” để áp dụng các thay đổi của bạn :
Bây giờ, mọi thay đổi được thực hiện trong folder ~/Sync
sẽ được sao chép sang server đối diện. Theo mặc định, điều này sẽ đồng bộ hóa sau mỗi 60 giây, nhưng điều này có thể được thay đổi trong menu "Cài đặt".
Bạn có thể thêm các folder bổ sung mà bạn muốn sao chép bằng cách chọn tùy chọn “Thêm repository ” từ menu “Chỉnh sửa”. “ID repository ” phải giống nhau trên mỗi server để các folder được liên kết.
Kết luận
Đến đây, bạn sẽ có hai server được kết nối và đồng bộ hóa nội dung của một folder . Bạn có thể dễ dàng mở rộng điều này bằng cách thêm các repository bổ sung (thư mục) hoặc bằng cách thêm các node bổ sung để đồng bộ hóa với.
Nếu bạn dự định đồng bộ hóa các file hệ thống với các folder mà user bình thường không có quyền ghi vào, bạn có thể cần sửa đổi file Upstart để sử dụng account root
hoặc bất kỳ account user nào khác cần thiết để thực hiện các hành động cần thiết.
Các tin liên quan
Cách sử dụng Icinga để giám sát server và dịch vụ của bạn trên Ubuntu 14.042014-06-13
Cách sử dụng Logstash và Kibana để tập trung log trên Ubuntu 14.04
2014-06-11
Cách cài đặt Graylog2 và tập trung log trên Ubuntu 14.04
2014-06-06
Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên server Ubuntu 14.04
2014-06-05
Cách cấu hình Collectd để thu thập số liệu hệ thống cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cấu hình StatsD để thu thập số liệu thống kê tùy ý cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cài đặt OctoberCMS trên VPS chạy Ubuntu 14.04
2014-05-28
Cách cài đặt và sử dụng Graphite trên server Ubuntu 14.04
2014-05-27
Cách cài đặt và sử dụng Ack, một sự thay thế Grep cho các nhà phát triển, trên Ubuntu 14.04
2014-05-27
Cách sử dụng BitTorrent Sync để đồng bộ hóa các thư mục trong Ubuntu 14.04
2014-05-19