📜 ⬆️ ⬇️

Personal cloud


Cloud storage allows you not only to store data, but also to provide collaboration with them in the NAS .


Possible solutions


There are several cloud service options: NextCloud, Seafile, Pydio, etc ...
Below is a part of them.


Implementing cloud services.

Owncloud



Implemented in PHP / Javascript.


Opportunities:


  • It is possible to expand the functionality by installing applications from the cloud repository.
  • There is integration with the office of Collabora and OnlyOffice.
  • It is possible to use existing storages such as FTP, Swift, S3, Dropbox, etc.,
    distributing data between them and the local cloud.
  • Encryption on the client.
  • The ability to provide files to external users by e-mail.
  • There is an automation of file operations (for example, automatic tagging).
  • LDAP.
  • There is an audio player, music collection, gallery PDF reader plugin.
  • Integration with Zimbra.
  • There are calendars, task lists, text editors, etc.
  • Antivirus and protection against ransomware.
  • Two-factor authentication.
  • The possibility of impersonation for another user (for debugging purposes).

Nextcloud



Fork owncloud. Implemented in PHP / Javascript.


Opportunities:


  • File storage using conventional directory structures, or using WebDAV.
  • There is NextCloud Talk, through which it is possible to make video calls and video conferencing.
  • Synchronization between clients running Windows (Windows XP, Vista, 7 and 8), Mac OS X (10.6 and later) or Linux.
  • Synchronization with mobile devices.
  • Calendar (also like CalDAV).
  • Task Manager.
  • Address Book (also like CardDAV).
  • Streaming media (used by Ampache).
  • It supports different authorization providers: LDAP, OpenID, Shibboleth.
  • Two-factor authentication.
  • Sharing content between groups or using public URLs. Tweaking rules.
  • Online text editor with syntax highlighting and folding. Announced support for online versions of LibreOffice editors.
  • Bookmarks.
  • URL shortening mechanism.
  • Photo Gallery.
  • PDF viewer (PDF.js is used)
  • Integration with Collabora and OnlyOffice.
  • Logging module
  • Ability to create your own Web sites (on PicoCMS).
  • Integration with Outlook and Thunderbird.
  • Client integration in Gnome.
  • Ability to use external storage.
  • Full text search.
  • Integration with antivirus.

Sparkleshare


Implemented in C #.


Opportunities:


  • Versioning.
  • Encryption on the client.
  • Transparent synchronization between multiple users: remote changes will appear in the local directory dedicated to SparkleShare.

Features:


  • Uses git as a backend.

Seafile



Implemented in C / Javascript.


Opportunities:


  • Files can be organized into libraries that can be synchronized between devices.
  • There is a client that allows you to create a local "disk" displayed on the cloud.
  • Built-in encryption. All files are encrypted by the client and stored in the cloud encrypted.
  • Mobile support.
  • HTTS / TLS encryption.
  • There is an LDAP.
  • Tweaking rights.
  • Versioning files.
  • The ability to create a snapshot of the directory, which is then possible to return.
  • Deduplication
  • Support file lock.
  • Co-editing files online.
  • Antivirus.
  • Tweaking rights.
  • Periodic backup via rsync.
  • WebDAV.
  • REST API.
  • The ability to integrate with Collabora.

Features:


  • Fast and undemanding to resources.
  • It is considered reliable.
  • Setting rights to subdirectories is supported only in the paid Pro version.
  • Integration with antivirus - only in the Pro version.
  • Audit - only in Pro version.
  • Full-text search - only in the Pro version.
  • Integration with S3 and Ceph - only in the Pro version.
  • Online viewing of Doc / PPT / Excel - only in Pro version.

Pydio



Implemented in PHP / Javascript.


Opportunities:


  • File sharing is not only between users, but also between multiple Pydio instances.
  • SSL / TLS encryption.
  • WebDAV.
  • Ability to create multiple workspaces.
  • File exchange with external users, with fine-tuning of the exchange (for example, direct links, password, etc.).
  • Built-in Collabora office.
  • Preview and edit images.
  • There is a built-in audio and video player.

ProjectSend



Implemented in PHP / Javascript.


Opportunities:


  • It is possible to share files, both between specific users and between groups.
  • Full report on file operations.
  • The ability for external users to upload files (for the purpose of sharing, for example, attach bug reports).

SpiderOak



Opportunities:


  • Save storage space and time to upload files due to deduplication and making changes to existing files (instead of overwriting the entire file).
  • Customizable multiplatform sync.
    DropBox for synchronization creates a special folder in which to place all synchronized files. SpiderOak can work with any directory.
  • Saving all historical versions of files and deleted files
  • Sharing folders using the so-called ShareRooms, to which the password is set.
    Files updated on the local computer are automatically updated in the repository. Users are notified of changes by RSS.
  • Receive files from any device connected to the Internet.
  • Full data encryption on the principle of "zero knowledge".
  • Support unlimited number of devices.
  • Data encryption on the client side.
  • Two-factor authentication.

Features:


Closed proprietary system.


Given that this software is paid and partially closed, its use is excluded.


Install NextCloud


Initially, there was a desire to use Seafile: the server part is implemented in C, it is effective and stable. But it turned out that there is far from everything in the free version.


Therefore, I tried Nextcloud and was pleased. It provides more features and is completely free.


You can see how it works in demo mode here .


Here are the common interface points between the cloud storage and the system:



Since NextCloud configuration is quite voluminous and consists of several files; I will not list them here.


You will find everything you need in the repository on Github .


There is also a configuration available for SeaFile .


First install and run NextCloud.


To do this, copy the configuration to the /tank0/docker/services/nextcloud and run:


 # docker-compose up -d 

A new image will be assembled based on Nextcloud 13.0.7. If you want to change the version of the base image, do it in the app/Dockerfile . I use version 15, but it is worth noting that many plugins do not work in it, such as the ocDownloader loader and notes, and also I have not restored the OnlyOffice functionality.


I did not notice any fundamental differences or strong performance improvements.


Below I believe that you are using version 13+.


Next, go to NextCloud and select "Applications" in the menu on the right above, install the necessary plugins.


Applications


Required:



Desired Applications:



Container Features:



I note that if you install version 13+, but then decide to upgrade to version 15, you can do this and much more using the occ utility.


Ldap


Configuring LDAP is not trivial, so I’ll tell you more.


Go to "Settings-> LDAP / AD Integration".
Add the server 172.21.0.1 with port 389.
Login: cn=admin,dc=nas,dc=nas .
NextCloud can manage users in the LDAP database and for this it will need an administrator.



Click the "Check DN configuration" button and, if the check indicator is green, click the "Next" button.


Each user has an inetOrgPerson attribute and is in the users_cloud group.


The filter will look like this:


 (&(|(objectclass=inetOrgPerson))(|(memberof=cn=users_cloud,ou=groups,dc=nas,dc=nas))) 

Click "Check settings database and recalculate users", and if everything is correct, the number of users should be displayed. Click Next.


On the next page, the user filter will be configured, by which NextCloud will search for them.


Filter:


 (&(objectclass=inetOrgPerson)(uid=%uid)) 

On this page, you must enter the login of a user and click "Check Settings".
Last "Next".


Here click "Advanced" and check that the field "Base tree of groups" is equal to the field "Base tree of users" and has the value dc=nas,dc=nas .


Return to the groups and check the box "Only these classes of objects" checkbox opposite groupOfUniqueNames .


The final filter here is:


 (&(|(objectclass=groupOfUniqueNames))) 

The field "Only from these groups" I did not set, because I want to see all users in the NextCloud interface, and those who are not in the users_cloud group are users_cloud out in the previous step.


OnlyOffice



OnlyOffice is an excellent cross-platform office suite that supports work with MS Office documents. It is free and open, as well as LibreOffice and is also able to work as a server.


But at the same time, the support for the original format has been implemented much better, almost like in the original MS office, it is more stable, has a more thoughtful interface.


It also integrates out of the box with NextCloud .


By the way, there is also the Desktop version of OnlyOffice, including under Linux. In general, having suffered from a heavy and unstable Collabora (this is LibreOffice), I chose OnlyOffice and so far I am quite satisfied.


OnlyOffice configuration is available on Github and below, under the spoiler.


On Github, there is a configuration for Collabora .


/tank0/docker/services/office/onlyoffice/docker-compose.yml
 version: '2' # https://helpcenter.onlyoffice.com/ru/server/docker/document/docker-installation.aspx networks: onlyoffice: driver: 'bridge' docker0: external: name: docker0 services: onlyoffice-redis: container_name: onlyoffice-redis image: redis restart: always networks: - onlyoffice expose: - '6379' onlyoffice-rabbitmq: container_name: onlyoffice-rabbitmq image: rabbitmq restart: always networks: - onlyoffice expose: - '5672' onlyoffice-postgresql: container_name: onlyoffice-postgresql image: postgres environment: - POSTGRES_DB=onlyoffice - POSTGRES_USER=onlyoffice networks: - onlyoffice restart: always expose: - '5432' volumes: - /tank0/apps/onlyoffice/postgresql_data:/var/lib/postgresql onlyoffice-documentserver-data: container_name: onlyoffice-documentserver-data image: onlyoffice/documentserver:latest environment: - ONLYOFFICE_DATA_CONTAINER=true - POSTGRESQL_SERVER_HOST=onlyoffice-postgresql - POSTGRESQL_SERVER_PORT=5432 - POSTGRESQL_SERVER_DB_NAME=onlyoffice - POSTGRESQL_SERVER_USER=onlyoffice - RABBITMQ_SERVER_URL=amqp://guest:guest@onlyoffice-rabbitmq - REDIS_SERVER_HOST=onlyoffice-redis - REDIS_SERVER_PORT=6379 stdin_open: true restart: always networks: - onlyoffice volumes: - /tank0/apps/onlyoffice/document-server-data/data:/var/www/onlyoffice/Data - /tank0/apps/onlyoffice/document-server-data/logs:/var/log/onlyoffice - /tank0/apps/onlyoffice/document-server-data/cache:/var/lib/onlyoffice/documentserver/App_Data/cache/files - /tank0/apps/onlyoffice/document-server-data/files:/var/www/onlyoffice/documentserver-example/public/files - /usr/share/fonts onlyoffice-documentserver: image: onlyoffice/documentserver:latest depends_on: - onlyoffice-postgresql - onlyoffice-redis - onlyoffice-rabbitmq - onlyoffice-documentserver-data environment: - ONLYOFFICE_DATA_CONTAINER_HOST=onlyoffice-documentserver-data - BALANCE=uri depth 3 - EXCLUDE_PORTS=443 - HTTP_CHECK=GET /healthcheck - EXTRA_SETTINGS=http-check expect string true - JWT_ENABLED=true - JWT_SECRET=<JWT_SECRET_TOKEN> # Uncomment the string below to redirect HTTP request to HTTPS request. #- FORCE_SSL=true - VIRTUAL_HOST=office.* - VIRTUAL_PORT=80 - VIRTUAL_PROTO=http - CERT_NAME=NAS.cloudns.cc stdin_open: true restart: always networks: - onlyoffice - docker0 expose: - '80' volumes: - /tank0/apps/onlyoffice/document-server/logs:/var/log/onlyoffice - /tank0/apps/onlyoffice/document-server/data:/var/www/onlyoffice/Data - /tank0/apps/onlyoffice/document-server/lib:/var/lib/onlyoffice - /tank0/apps/onlyoffice/document-server/db:/var/lib/postgresql volumes_from: - onlyoffice-documentserver-data 

Let me explain some points:



Now we need to raise the office:


 docker-compose up -d 

And, if everything works, the following page will be available at office.NAS.cloudns.cc:


OnlyOffice server screen


Then, in the NextCloud settings, you need to select the "Administration-> ONLYOFFICE" item and enter the address of the document server in the first two fields: https://office.NAS.cloudns.cc/ and your JWT token.


In the third field, you must register the address of the cloud.


JWT token can be generated, for example here .


If the server is configured correctly, additional items for office documents will appear in the cloud creation menu, and .docx files will be opened in the office.


findings


Cloud storage is central to user interaction between themselves and other services.


In this role, NextCloud is very convenient and has broad functionality.


He has his own in the process of updating between versions, but in general, it is possible to recommend this repository.


')

Source: https://habr.com/ru/post/430970/


All Articles