Cần phải hiểu: người dùng ở đây có tới 2 nhóm, và không nhập nhèm với nhau được.
Nhóm 1: người dùng chính là cái ông/ nhóm quản trị server ấy, và ông/ nhóm ấy phải cài được cái phần cơ sở dữ liệu PosgreSQL, Python, Flask lên lên server hoặc cái gọi là requirements mà phần mềm bạn đòi hỏi phải đáp ứng (ví dụ như mail server, hệ thống xác thực LDAP hay gì đó nếu không dùng login bằng web thông thường, PostScript để in ấn,… blah blah )
Nhóm 2: người dùng cuối, tức mấy người làm nghiệp vụ chỉ xài giao diện web mà thôi. Họ đăng nhập vào và cứ thế làm việc, hoàn toàn là trang web, họ chẳng thèm quan tâm gì đến web bằng Python hay cái gì back-end cả, họ chỉ nhập liệu và thao tác trên giao diện web hoàn toàn, kể cả việc backup thì có khi là thấy xuất hiện và bảo chờ gì đó, rồi sau dó có 1 dòng chứa file có ngày tháng/ tên để phân biệt với file cũ. Rồi học click vào đó và tải về cất (theo như mấy ông quản trị hệ thống báo lại nếu mấy ông đó không chịu làm việc đó).
Rất may mắn khi Python không phải chỉ là ngôn ngữ lập trình web. Do đó, mấy cái việc chạy trên server nó mạnh mẽ hơn so với PHP nhiều. Việc Flask giao tiếp với code Python (compile sẵn luôn khi xài cho nhanh) làm mấy việc backup nào đó trên server là hoàn toàn thông suốt, không bị vướng mắc hoặc khó như PHP.
Vậy thì sao? Việc quan tâm chỉ còn là viết được mã Python làm được việc backup, thậm chí compile thành .exe nếu trên Windows server hoặc binary cho Linux. Rồi Flask sẽ gọi tới function đó để thực hiện việc backup, sau đó cái function đó trả về kết quả cho Flask để Flask hiện lên web cho người dùng tải về.
Việc cài đặt phần mềm thì quản trị hệ thống làm theo tài liệu của bạn hướng dẫn, buộc phải vậy mà thôi, bạn yêu cầu họ cài Docker thì họ cài Docker, PosgreSQL gì đó hoặc bất cứ cái gì để phần mềm có thể thì họ đều phải đáp ứng nếu muốn phần mềm chạy, và việc cài đó là chỉ làm một lần mà thôi, thì ta không phải lăn tăn làm gì họ không làm được nếu ta đã làm và viết lại các bước (làm cả video clip thao tác step by step có kèm thuyết minh bằng giọng nói) cho họ làm theo.
Nếu quá phức tạp thì buộc phải training cho họ hoặc ta phải thuê người có kỹ năng viết tốt để người khác hiểu nếu ta viết kém. Ngày trước mình triển khai thì mỗi ngày liên tục phải tập dượt cài đặt, chỉnh chọc với các bạn dev, trong team, rồi viết tài liệu, rà soát phiên bản để phổ biến đến khách hàng, cũng luôn chỉnh sửa để hoàn thiện, dễ hiểu. Lâu dần thì mình cũng biết viết code để làm những việc mà dev làm quá rối rắm hoặc họ làm mang tính chỉ cho server dev, không chạy ngay được trên môi trường triển khai thực tế để khi đi đến nơi triển khai, hỗ trợ khách hàng được nhanh hơn.
Còn nếu lo sợ khách hàng không làm được việc cài đặt lên server, thì cứ làm tất cả các bước đó rồi đóng gói trong một gói cài đặt viết bằng Python, người ta cứ gõ python setup.py rồi trả lời vài thứ nó cài tất cả, giống như cài các gói binary như Deb, RPM cho Linux vậy đó. Hay là bạn chưa tự tin viết Python để làm mấy việc không phải là lập trình web? (mà là Python nói chung).
Vấn đề lằng ngoằng cần giải quyết ở đây: viết phần mềm Python chạy được trên server có khả năng đóng gói tất cả lại thay vì để ngổn ngang rồi lo sợ thế nọ thế kia. Và Docker chính là đã rất tiện cho việc này rồi. Ta làm xong, cứ phát hành Docker, họ pull về và chạy nó thôi. Viết cho họ bài hướng dẫn như kiểu này là người ta (mấy ông quản trị server) làm được, mấy ông đó không làm được thì xem ra họ nên bỏ tiền ra để được hỗ trợ hoặc ta nên đi tìm khách hàng khác