Rationale
I need a central point of cloud storage like Google drive, iCloud, Onedrive (yuk). I use them all to some extent but none of them seem to fit all situations. If I do have suitable cloud storage I am likely to need more space than the commercial offerings allow for free, and I dont want to be tied to a monthly subscription.
OMV NAS provides a good solution but it isn't integrated into Windows, iOS, Android very well. It is certainly the right solution for media storage; music, pictures and video collections should remain there.
It doesn't seem appropriate for iOS and Android devices, where the underlying storage is hidden.
I would like to be able to choose whether my files are held on the cloud or synced to a local folder and I would like my solution to work outside the home, using SSL.
Consequently my objective is to have a home application, based on PI43/OMV/Docker which looks like iCloud or Googe-drive and allows me to have as much storage as I want.
Selection
There are a variety of Docker based container apps which could be used. I found it hard to get a feel for them by reading articles or documentation so I tried out a number of solutions. Docker is perfect for this as I can "spin up" a container and try out the app quickly. If I dont need to use it further I can remove the container and my system is unchanged, there is no leftover software to remove (or forget).
Before deciding on Owncloud I tried out the following apps.
Syncthing: You can run the app on different computers and it synchronises the chosen folders between them. I dont really want to have local copies of files on all sharing devices.
Quickshare: Provides you with a central storage file structure. You can drag and drop groups of files from/to Windows to/from Quickshare. I dont really want to be using drag&drop all the time.
Picoshare: A very simple app allowing you to drag and drop files to/from a shared folder. It doesn't have many features.
Chibisafe: The container has Caddy, a reverse proxy manager incorporated so the folders can potentially be used externally. There is a Chrome add on allowing you to save files directly from your browser. Copying files using the browser isn't very nice.
Nextcloud: This is a large commercial offering with a free option. I found it difficult to find appropriate instructions to make a working solution. The various versions and software used are confusing.
Owncloud: Has a straightforward installation which I can use for testing. Like iCloud and Gdrive you can manage folder/files in Windows file explorer or iOS files.
In summary, testing owncloud provided me with an excellent way of saving and managing files easily in a home cloud. Typically files are saved in the cloud rather than synchronised across devices. This fits my initial requirements well.
My testing using SSL / HTTPS didn't go well so I am not sure how useful it will be outside the home.
Installation
My first approach was to use a template provided by OMV. It is slightly more complicated than previous installs as it creates three containers for owncloud, mariadb and redis (a fast database cache). I wasn't able to connect to the server this way so I tried some tests using docker cli commands. After a while I found that I needed to set the "trusted domain" parameter to allow external collections. I then proceeded with an install following the official documentation.
The skeleton docker compose file has simple builds for three containers owncloud, mariadb and redis.
The default storage volume is on the server SD card, which needs changing to use the OMV hard drive.
In the ENV file I needed to add my server host name, PI43 and ip address.
Apart from passwords, there were no further changes I needed to make.
I told OMV to start up this environment and I now have three new containers for ownCloud, mariadb and redis.
I am able to add/change/delete folders and documents using the web client. But this isn't what I want.
I can install the ownCloud Windows client and connect to the owncloud server. Now if I look at Windows File Explorer I can see my owncloud files.
This is just what I want. The files are stored in the cloud but accessible locally just where I need them.
Configuration
Next I needed to setup users. I may open up my own cloud to others but I will be the first and only user initially.
So far we have used PI43 system SD storage for files which is a VERY bad idea as it would be childsplay to use all available space and kill the server. Docker compose has a single volume defined for the owncloud system and user data on the SD card with a mount point /mnt/data. When I tried to allocate this to a NAS shared folder, the system started up with an error.
The system starts as the web user "www-data" which doesn't have permissions to use the NAS.
After some failed workaround attempts I decided just put "admin" storage on the NAS and leave owncloud system files on the SD card. I found that admins directory structure containing "Documents" and "Photos" is located in .../own_files/_data/files/admin/files
So I added a volume which maps a NAS shared folder to .../own_files/_data/files/admin/files/MyFiles.
I also setup a user john whose files are located on the NAS shared folder.
Once this is complete I can configure user john in the owncloud windows client and I can see owncloud "MyFiles" for john in Windows File Explorer. This is perfect, it works just like Gdrive/iCloud
On the iPad I install the owncloud app and use it to configure the user john.
Now I can access MyFiles in the Files app.
For Android I manage files directly using the Android owncloud app.
HTTP vs HTTPS
So far I have accessed owncloud using HTTP. This works fine if I am using it at home but doesn't work outside my local network. In itself it is very useful as nearly all my work which requires storage is done at home.
Obviously cloud storage typically works across the internet and it not safe or sensible to use unencrypted HTTP access from outside the home.
I do have encrypted HTTPS access at home for my web-site but my experiments with setting up https within docker and owncloud have not yet been totally successful so I will leave those considerations for another time.
I am happy that I have something useful here; owncloud will be a great help in organising my storage across devices which is becoming lost and fragmented.