Seafile Server Community and Professional Edition are now available in version 9.0. Improvements in file sharing and document server integration make file collaboration more comfortable and scalable. The new custom sharing permissions give unprecedented control and flexibility in managing users’ access rights. Share links are also more flexible thanks to several new features and feature improvements. Additionally, a completely new file server accelerates library access, especially for large libraries. An upgrade of Seafile’s PDF rendering engine allows the preview of password-protected PDFs right in the browser.
We are pleased to present the highlights of Seafile Server 9.0 in these release notes. A complete list of changes for Seafile Server is available in the Seafile Manual. The Seafile Server Professional Edition (Seafile PE) can be downloaded from the Seafile Customer Center. The Community Edition (Seafile CE), whose source code is available on GitHub, can be downloaded directly from the Seafile website.
Custom Sharing Permissions (only for Seafile PE)
Seafile Server 8.0 knew five sharing permissions: read-only, read-write, online read-only, online read-write, and admin. In Seafile 9.0, library owners and department admins can define sharing permissions of their own on top of the five preset permissions. The uncountable number of sharing permissions that can be created by picking and choosing individual permissions gives virtually limitless control over how library owners can share their data with other users.
A custom sharing permission is composed of any combination of the following seven permissions:
- Upload (upload files and folders into the library and sub-folders)
- Download (download files and folders)
- Modify (create/rename/move files and folders as well as modify files)
- Copy (copy files and folders to other libraries – copying within the library requires the modify permission)
- Delete (delete files and folders)
- Preview online (preview files in Seahub; image file preview (e.g., PNG, JPEG) does not require this permission)
- Generate share link (create share links for files and folders)
Being a precondition for all other permissions, the View permission – see and browse a library’s folder structure (including metadata such as file size and last update) – is inherent to all custom sharing permissions.
Every custom sharing permission is identified by its name. A description provides extra space for more information on the sharing permission’s purpose and specifications (see below).
Custom sharing permissions are defined on the library level. This has three consequences: Firstly, a custom permission created for one library is not automatically available for other libraries. Secondly, when a library with a custom permission is shared to another user using the admin sharing permissions, this other user can also use and edit the custom sharing permission. Thirdly, department admins can use the custom sharing permissions defined for the department’s libraries.
Finally, a nice little new feature complements the new custom sharing permissions: When deleting a library, a warning appears if the library is shared with other users.
Improved Sharing Links
Seafile Server 9.0 offers new options to work with existing sharing links and adds collaborative features to share links for folders and office documents.
You do not recall the share link’s password that you created the other day? No worries! Seafile 9.0 can display the password of a password-protected share link after the link’s creation. Similarly, Seafile 9.0 now supports the modification of an existing link’s expiration time. The expiration of an expired link can be reset too. In previous Seafile Server versions, a link’s password could not be recreated when forgotten and expired links could not be resuscitated. In both cases, it was necessary to delete the existing link and create a new one.
New collaborative features also make share links more powerful for teamwork. A download link’s page in Seafile 9.0 now displays the file tags defined in the folder. The tags can be used to carry additional metainformation (i.e., for status information) and the new feature makes it possible to share them with external partners. To further strengthen Seafile’s file tag feature, the file tagging UI was improved for greater ease of use.
In previous versions, users accessing an office document via a share link with edit permission did so as “anonymous” users. The consequence was that whenever two or more people accessed an office document via such a link, there was confusion about who is who. This confusion ends in Seafile 9.0. Anonymous users can identify themselves by setting their name. The entered name is used in the document when editing the file as well as in the document’s chat.
New File Server
The biggest, but probably least visible new feature in Seafile 9.0 is the new file server. The new file server represents a major improvement compared to its predecessor:
- Support for larger libraries
- ZIP-streaming
- Rate limits for up- and download
The file server is Seafile’s workhorse. As a component of the seaf-server process, it handles file uploads, downloads, and file syncing. The new file server is written in Go (https://en.wikipedia.org/wiki/Go_(programming_language) ). Compared to C, which was the language of the old file server, Go offers much better performance in high concurrency situations thanks to the language’s native support for concurrent programming.
The new file server is an answer to the ever-growing number of files saved in Seafile libraries. Due to Seafile’s idiosyncratic data model, the retrieval of a file list for large libraries is inherently slow. When Seafile processes multiple file list requests at the same time, worker threads can get exhausted causing high latency and, in turn, user frustration. Seafile 8.0 introduced a (configurable) file number limit. With such a limit, very large libraries would not be synced “clogging up” the system. But obviously, this treatment of symptoms was only a temporary solution. The new file server now addresses root causes.
But, as the list above attests, the advantages of the new file server go beyond a mere performance boost. It also improves Seafile’s usability and increases its scalability. In Seafile 8.0, when downloading a folder, the folder needed to be zipped and saved in its entirety before it could be downloaded. With larger folders, this could take a long time. The temporarily created ZIP-file also consumed a lot of hard disk space. The new file server’s support for ZIP-streaming, the simultaneous zipping and downloading, addresses both issues: No more wait and no more dead weight on the hard drive. Last but not least, the new file server also allows the active management of the available bandwidth. The old file server did not offer such options.
Seafile 9.0 continues to use the old file server as the default file server for stability reasons. The parameter use_go_fileserver = True in Seafile’s configuration file seafile.conf enables the new file server. In the future, as the new file server matures, it will become Seafile’s default and fully replace its forerunner.
Component Update
In addition to the totally new file server, Seafile Server 9.0 also updates three of its components. The indexing server ElasticSearch is upgraded from version 5.6 to 7.x. PDFjs version 2.1 is now working under the hood of Seafile CE and Seafile PE. The Python framework Django is updated to version 3.2.
The update of ElasticSearch entails important consequences for its deployment. Elasticsearch introduced new license conditions in version 6.2. The new conditions put a stop to the bundling of ElasticSearch with other commercial software packages. Consequently, ElasticSeach is no longer a part of Seafile PE 9.0’s install package. The installation instructions have been updated accordingly. When upgrading from Seafile PE 8.0 to Seafile PE 9.0, pay attention to the special upgrade notes. The separation of ElasticSeach out of Seafile implies some extra effort. On the other hand, it facilitates the configuration of ElasticSearch in the future (i.e., when using an external ElasticSearch server).
A frequently expressed request in the Seafile community was support for password-protected PDFs. Thanks to the upgrade of PDFjs, the PDF rendering engine used by Seafile, this wish has now come true. When opening a protected PDF document in the web interface, a password prompt opens up in a new tab. Entering the password will make the PDF appear in the browser tab.