Ayakaleaf Pro có đáng tin cậy và an toàn không?
Ayakaleaf Pro là một bản nâng cấp Overleaf Pro tự triển khai, và mã nguồn của chúng tôi có tại ayaka-notes/ayakaleaf-pro. Hệ thống triển khai của bạn quyết định nơi các dịch vụ chạy và nơi dữ liệu được lưu trữ. Bảo mật phụ thuộc vào cấu hình và cách vận hành của bạn. Hãy bảo vệ quyền truy cập quản trị, bật HTTPS và duy trì các bản sao lưu. Cảm ơn OpenAI vì sự hỗ trợ của họ. Chúng tôi sẽ thường xuyên sử dụng Codex Security để quét kho mã của mình nhằm tìm các vấn đề bảo mật và công khai kết quả khắc phục lỗ hổng.Dữ liệu của tôi đi đâu?
Theo mặc định, dữ liệu ứng dụng nằm trong hệ thống triển khai của bạn:- MongoDB lưu dữ liệu người dùng và dự án.
- Redis lưu dữ liệu bộ nhớ đệm và dữ liệu cộng tác thời gian thực.
- Volume cục bộ hoặc bộ lưu trữ tương thích S3 chứa các tệp dự án.
Dữ liệu của tôi có bị gửi đến hoặc lấy từ bên thứ ba nào không?
Không có gì rời khỏi hệ thống triển khai của bạn trừ khi bạn bật một tính năng yêu cầu điều đó. Ayakaleaf Pro không gửi telemetry, không gửi phân tích sử dụng và không gửi báo cáo sự cố. Báo cáo lỗi và phân tích đều bị tắt trong cấu hình mặc định. Một số tính năng hoàn toàn không bao giờ gửi yêu cầu ra bên ngoài. Các mẫu được lưu trữ và phục vụ từ chính hệ thống triển khai của bạn. Python script runner thực thi trong trình duyệt của người dùng thông qua WebAssembly, và runtime của nó được phục vụ từ chính dịch vụ web của bạn thay vì từ CDN công cộng, vì vậy mã script và đầu ra không bao giờ ra mạng. Git Bridge chỉ có thể truy cập trong mạng Docker nội bộ. Tìm kiếm toàn dự án, bảng ký hiệu, theo dõi thay đổi, lịch sử dự án và bảng quản trị đều hoàn toàn cục bộ. Các container biên dịch sandbox được tạo với mạng bị vô hiệu hóa. Các tính năng còn lại gửi yêu cầu đến những đích sau. Mỗi yêu cầu đều xuất phát từ dịch vụ web:Trợ lý AI và tìm kiếm
Trợ lý AI và tìm kiếm
Các tính năng AI bị tắt theo mặc định. Khi được bật, tính năng trò chuyện và gợi ý sửa lỗi LaTeX sẽ gửi prompt cùng ngữ cảnh dự án liên quan đến endpoint mô hình được cấu hình bằng
AI_BASE_URL. Tính năng tìm kiếm web tùy chọn gửi truy vấn đến dịch vụ tương thích Tavily đã cấu hình, và tìm kiếm tài liệu gửi truy vấn đến DOCS_MCP_URL (mặc định: https://docs.overleaf.com/~gitbook/mcp). Kết quả tìm kiếm có thể được đưa vào các yêu cầu gửi đến nhà cung cấp mô hình. Xem Tích hợp AI để biết về cấu hình và các tùy chọn kiểm soát cho người dùng.Tích hợp GitHub
Tích hợp GitHub
Tích hợp GitHub kết nối đến
github.com và api.github.com. Tính năng này được bật cho từng người dùng bằng cách liên kết tài khoản GitHub, và việc ủy quyền yêu cầu các scope read:org, repo và workflow. Thao tác push tải lên toàn bộ nội dung tệp dự án dưới dạng Git blob, sau đó được ghép thành tree và commit. Nó cũng thực hiện các thao tác về nhánh, tham chiếu, so sánh và hợp nhất, đồng thời đọc hồ sơ, tư cách thành viên tổ chức và danh sách kho mã của tài khoản được liên kết. Nội dung dự án rời khỏi hệ thống triển khai của bạn theo cả hai chiều — hãy coi một tài khoản GitHub được liên kết là một đường xuất dữ liệu cho mọi dự án gắn với nó.Tích hợp Zotero
Tích hợp Zotero
Tích hợp Zotero kết nối đến
www.zotero.org để ủy quyền và api.zotero.org để lấy dữ liệu thư viện. Tính năng này được bật cho từng người dùng bằng cách liên kết tài khoản Zotero. Quá trình bắt tay OAuth và API key của người dùng sẽ được gửi đi. Việc đọc chỉ diễn ra một chiều: các thư viện tài liệu tham khảo được kéo về dưới dạng BibTeX, và không có nội dung dự án nào được tải lên.Tích hợp Mendeley
Tích hợp Mendeley
Tích hợp Mendeley kết nối đến
api.mendeley.com cho cả việc ủy quyền lẫn dữ liệu thư viện. Tính năng này được bật cho từng người dùng bằng cách liên kết tài khoản Mendeley. Quá trình bắt tay OAuth yêu cầu scope all của Mendeley — scope duy nhất mà API của họ cung cấp — nhưng Ayakaleaf chỉ thực hiện thao tác đọc: các thư viện tài liệu tham khảo và thư viện nhóm được kéo về dưới dạng BibTeX, và không có nội dung dự án nào được tải lên. Access token được làm mới tự động; khi Mendeley thu hồi quyền, thông tin xác thực đã lưu sẽ bị loại bỏ và người dùng được yêu cầu liên kết lại tài khoản.Các trang tài liệu
Các trang tài liệu
Các trang tài liệu được lấy từ
https://learnwiki.overleaf.com, có thể cấu hình bằng WIKI_URL. Các yêu cầu được thực hiện bởi dịch vụ web chứ không phải trình duyệt của người dùng, vì vậy wiki upstream chỉ thấy máy chủ của bạn và không bao giờ thấy địa chỉ của người dùng. Chỉ có tiêu đề trang được yêu cầu được gửi đi, và các phản hồi được lưu đệm trên đĩa. Hãy trỏ WIKI_URL đến mirror của riêng bạn, hoặc chặn đích này, nếu lưu lượng tài liệu ra bên ngoài là không chấp nhận được.Gửi email
Gửi email
Gửi email kết nối đến bất kỳ máy chủ SMTP hoặc API email nào mà bạn cấu hình; không có giá trị mặc định. Địa chỉ người nhận và nội dung thư sẽ rời khỏi hệ thống triển khai của bạn, bao gồm cả liên kết đặt lại mật khẩu và liên kết mời.
Hai kiểm tra tùy chọn (PWD/reCAPTCHA)
Hai kiểm tra tùy chọn (PWD/reCAPTCHA)
Hai kiểm tra tùy chọn bị tắt theo mặc định. Kiểm tra mật khẩu bị lộ không hoạt động trừ khi
HAVE_I_BEEN_PWNED_ENABLED được đặt; khi được bật, nó gửi các ký tự đầu tiên của mã băm SHA-1 của mật khẩu đến api.pwnedpasswords.com, không bao giờ gửi chính mật khẩu. Xác minh CAPTCHA không hoạt động trừ khi một reCAPTCHA site key được cấu hình, và sẽ kết nối đến www.google.com khi hoạt động.Đăng nhập một lần (OAuth/LDAP/SAML)
Đăng nhập một lần (OAuth/LDAP/SAML)
Đăng nhập một lần chỉ kết nối đến nhà cung cấp danh tính mà bạn chỉ định, và dữ liệu được truyền đi phụ thuộc vào giao thức. Với LDAP, dịch vụ web kết nối trực tiếp đến thư mục của bạn: nó bind bằng tài khoản dịch vụ mà bạn cấu hình, tìm kiếm theo base, filter và danh sách thuộc tính mà bạn định nghĩa, và xác minh mật khẩu nhập trên biểu mẫu đăng nhập với thư mục của bạn, do đó tên người dùng và mật khẩu sẽ đến máy chủ thư mục. Việc bật danh bạ dựa trên thư mục sẽ tạo thêm một lần tìm kiếm để điền danh sách liên hệ. Với OIDC, dịch vụ web trao đổi authorization code tại token endpoint của bạn rồi gọi user-info endpoint, mặc định yêu cầu các scope
openid profile email; có thể cấu hình bằng OVERLEAF_OIDC_SCOPE. Với SAML, yêu cầu xác thực đi qua trình duyệt của người dùng đến nhà cung cấp danh tính thay vì qua kết nối trực tiếp giữa các máy chủ. Trong cả ba trường hợp, tên và địa chỉ email của người dùng được nhận từ nhà cung cấp chứ không phải gửi đến nhà cung cấp, sau đó được lưu trong bản ghi người dùng cục bộ.Thông tin xác thực bên thứ ba
Thông tin xác thực bên thứ ba
Thông tin xác thực bên thứ ba — OAuth token và API key — được lưu trong MongoDB trên bản ghi người dùng, được mã hóa bằng AES-256-CTR với salt và vector khởi tạo riêng cho từng bản ghi. Chúng không bao giờ được lưu dưới dạng văn bản thuần và không bao giờ được ghi vào log. Khóa mã hóa lấy từ
${PROVIDER}_CIPHER_PASSWORD nếu được đặt (như Zotero và Mendeley); nếu không, một khóa sẽ được tạo ở lần sử dụng đầu tiên và được lưu bền trong data volume của bạn với quyền chỉ dành cho chủ sở hữu. Hãy sao lưu khóa đó cùng với data volume: nếu bị mất, các thông tin xác thực đã lưu sẽ không thể giải mã và mọi người dùng phải liên kết lại tài khoản của họ.Tệp được liên kết từ URL
Tệp được liên kết từ URL
Tệp được liên kết từ URL được hệ thống triển khai của bạn tải về thay mặt người dùng, vì vậy đích đến là bất kỳ địa chỉ nào người dùng cung cấp. Tệp liên kết URL bị tắt trừ khi bạn thêm
url vào ENABLED_LINKED_FILE_TYPES, và cấu hình mặc định không bao gồm giá trị này. Việc nhập ZIP và TeX từ bên ngoài thông qua Open in Overleaf API cũng sử dụng cùng thành phần linked-url-proxy. Các yêu cầu trực tiếp sẽ phân giải tên máy chủ đích và từ chối các dải mạng bị hạn chế, tùy theo các ngoại lệ tài nguyên được phép đã cấu hình. Khi OVERLEAF_LINKED_URL_OUTBOUND_PROXY được cấu hình, outbound proxy sẽ phân giải tên máy chủ, vì vậy nó phải tự thực thi các hạn chế về mạng nội bộ; các kiểm tra mạng của ứng dụng chỉ áp dụng cho các URL chứa địa chỉ IP. Xem External URL — Outbound Proxy để biết chi tiết. Các yêu cầu này tải về URL được cung cấp chứ không tải lên tệp dự án.github.com và api.github.com cho GitHub, www.zotero.org và api.zotero.org cho Zotero, api.mendeley.com cho Mendeley, learnwiki.overleaf.com hoặc WIKI_URL của riêng bạn cho tài liệu, api.pwnedpasswords.com cho kiểm tra mật khẩu, www.google.com cho CAPTCHA, cùng với máy chủ email và nhà cung cấp danh tính của riêng bạn. Nếu các tính năng AI hoặc tìm kiếm được bật, hãy cho phép thêm các endpoint mô hình, tìm kiếm web và MCP tài liệu đã cấu hình. Từ chối các đích không cần thiết cho những tính năng bạn đã bật. Khi lưu lượng ra ngoài cần được kiểm tra hoặc ghi log tập trung, các tích hợp GitHub, Zotero và Mendeley đều có thể được định tuyến qua HTTP proxy bằng cách đặt GITHUB_SYNC_PROXY_URL, MENDELEY_PROXY_URL và ZOTERO_PROXY_URL. Việc tải tệp liên kết URL và nhập từ xa có thể sử dụng OVERLEAF_LINKED_URL_OUTBOUND_PROXY. Tệp được liên kết từ URL không thể bị giới hạn trong một danh sách máy chủ, vì đích đến do người dùng chọn tại thời điểm gửi yêu cầu; hãy hạn chế tính năng đó thông qua thiết lập tài nguyên được phép của chính thành phần proxy, hoặc để nó ở trạng thái tắt.
Quá trình biên dịch dự án có được cô lập không?
Ayakaleaf Pro hỗ trợ biên dịch trong sandbox. Mỗi lần biên dịch chạy trong một container riêng biệt. Theo mặc định, các container sandbox không có quyền truy cập mạng. Điều này giảm mức độ tiếp xúc với các tài nguyên mạng nội bộ. Biên dịch trong sandbox yêu cầu quyền truy cập vào Docker socket của máy chủ. Hãy giới hạn quyền quản trị máy chủ cho những người vận hành đáng tin cậy.Tôi có thể tin tưởng các bản build CI và container image không?
GitHub Actions build và phát hành các container image của Ayakaleaf Pro. Các image có sẵn trên GitHub Container Registry công khai. Các image hỗ trợamd64 và arm64. Docker sẽ chọn kiến trúc phù hợp khi pull image.
Không sử dụng tag latest trong môi trường production. Hãy cố định một phiên bản cụ thể, tốt nhất là một image digest.
Kiểm thử mọi lần nâng cấp trong môi trường không phải production. Xác minh image, cấu hình và các tích hợp trước khi triển khai.
Mã nguồn có mở không?
Ayakaleaf Pro và các kho mã tính năng liên quan đều được công khai. Điều này cho phép người dùng xem xét các thay đổi và truy vết nguồn upstream. Mã nguồn công khai hỗ trợ việc đánh giá độc lập. Tuy nhiên, bản thân nó không đảm bảo các bản phát hành có thể build tái lập. Trước khi nâng cấp, hãy xem xét:- Tag hoặc commit của bản phát hành.
- Phiên bản hoặc digest của image.
- Các phụ thuộc bên thứ ba và yêu cầu về giấy phép.

