Towards the beginning of the year, I learned about a really fascinating open source project that’s come to find a special place in my heart: Nextcloud.
For the uninitiated Nextcloud is an open source self hosted alternative to Dropbox, Google Drive, and to an extent Office 365. As an open source enthusiast who hadn’t really self hosted anything before beyond the occasional Blender rendering node and doesn’t love most cloud based offerings: I was intrigued to say the least. Here’s my story of me setting out into the world of cloud storage hosting for my family spread across the country.
Part 1, the Installation.
So I set to work looking at a few installation options. I had an older desktop with four gigs of RAM, and a three terabyte hard drive. Looking at what I knew then, I opted to go with a Snap installation rather than do an individual component installation (Nextcloud is built primarily from Apache, Redis, MySQL, and PHP). Since then I’ve somewhat regretted my decision, mainly because of what I’ve become used to in editing config files in the command line.
I’m not sure where the friction in documentation comes in between the SNAP package and the more typical individual component installation. But figuring out where config files, individual commands, and other data is located proved difficult at the beginning. Personally on this front if I had to do it over again I would do a component installation, and hope that going forward there are more things you can do from the web interface. Occasionally I don’t have access to SSH, and I’m very grateful I don’t have to do user management from the command line.
Honestly the main difficulty in getting it online had to do with Trusted domains, and I think this was a Snap specific issue that has been fixed in recent months. But the issue was first of all, I didn’t understand specifically which domain Nextcloud considered it was being accessed by. When I figured out it was my home’s public IP address, things started to make sense but I still ran into problems. I successfully added that IP address and the server’s domain name to the trusted domains file, but still ran into problems accessing it from outside my local network. I tried restarting the Snap, Apache itself, reloading the config file all to no avail. Then I did as I had done many times before on this server and rebooted. After that, the trusted domains config file loaded correctly, my SSL/TLS certificate was working perfectly, and I was off to the races in having a safe place for my Family to store our shared documents and old home videos.
Part 2, Experiences
Installing Nextcloud was an experience that happened close to the time that I discovered social media was causing mental health issues, the same as it was for many of my peers. I’ve since basically sworn off all social media usage, with only the occasional dive onto Reddit for advice or to keep up with the Memes.
As such having a place where our Family can share things private to us and not accessible to the world has been good for the most part. Nextcloud has a really great built-in video player for streaming from the server, and we have a ton of digitized old home videos (I’m talking VHS back from the eighties) that now have a more permanent home, accessible anywhere on the internet. It’s been fun to go back and reminisce on all of our shared childhoods and early adult lives, securely and end-to-end encrypted.
I’m by far the number one user of the server, and I use it’s private storage mechanisms as a way to back up my important files (and it’s saved my but a few times as well). It’s been an absolute godsend for working between a laptop and desktop to have a solid sync client for each. I can also use whichever program I want to in editing my files (meaning on my lower powered laptop I can use Abiword and on my desktop use LibreOffice as an example). While I was at Linux fest Northwest in March, I could take my notes on my laptop there, and as I was saving the files were being synchronized automatically at home without needing tons of bandwidth (looking at you Google Drive).
I use gitlab for development on my public projects (like Rosebush, which you should totally check out), but keeping a git directory synced between multiple computers in real-time has it’s use as well.
The last component as far as UX is concerned is that I need to figure out a mail server situation for password resets, so instead of having my family call every time they need to reset their password: it can all be safely automated.
Part 3, Final Thoughts
Using Nextcloud and wanting to contribute to it is what has led me down starting to learn the very basics of PHP, Apache, Service hosting, Downtime mitigation, and introduced me to the wide world of database structuring and maintaining. For those things I’m grateful every day for the Nextcloud project and it’s maintainers for giving me such a great stepping stone into those worlds, and also for creating such a solid piece of open-source software.
I’m a huge proponent of it’s usage, and I’ll happily help with any who have questions.
I'm Brian Whetten, and I'm very interested in Animation and Visual Effects. This is my blog where I write about my current projects, current events, as well as the software and techniques I use.