Hi, I got a small server as a for-fun-project and I really enjoy having it. With all the stuff going on in the world I would like to self host more things, but I’m pretty new to the scene. So far it’s just an old desktop with Ubuntu server os acting as media server. I would like to add some sort of lightweight and preferably open source file share akin to Google Drive with the ability to save/upload, view and edit files on the server from the outside internet. I’d also like a shared calendar that can also be accessed from the internet. Do you have any good recommendations this? Thanks
As others have said, Nextcloud for files/calendar and Tailscale for VPN is your answer.
Nextcloud can be installed in several ways, one of which is Docker Compose. Docker Compose is flexible but requires learning a bit, although you can use it for most self-hosted software.
accessed from the internet
Accessed only by you and close family/friends who you are also hosting services for?
Or accessed by anyone?“Accessed by anyone” carries more risk.
“Accessed by users you host for”, the risks can be eliminated (well, other than risks from those users) by using a VPN. As in, only the people authorised to be on the VPN can access the services.
Wireguard is the go-to these days.
Tailscale is much easier and free for 3 users and 100 nodes.If it absolutely has to be “accessed by anyone” I would look into a “reverse proxy over VPN/tunnel” or just straight tunnel style approach like chisel (or crowbar, or corkscrew), rathole, frp, or cloudflare tunnels.
Basically, don’t point a domain at your home public IP and don’t forward ports on your home router/firewall
Everyone has said Nextcloud, and I agree.
I will also add though that I keep Nextcloud on a VPS rather than hosting it at home. Easier for me in terms of backups and storage, plus I don’t have to worry about a kid or my wife unplugging the PC to charge a phone or something. 🙃
You can host remote files via SFTP + cloudflared (or another reverse tunnel provider) without opening any ports. Then you use a file manager to add a network share with your SFTP information.
For the calendar, WebDAV is probably your best bet, which also works with reverse tunneling. You can also use WebDAV in place of SFTP if you prefer to only have one (or two with a reverse tunnel) service configured. Nextcloud is a great option since it has WebDAV and file management built in.
I would use Docker to do it all, but there is a learning curve associated with setting all of this up in a secure way (which is what the reverse tunnel helps with).
Also, using a container adds severe overhead.
IMO, Unison is a pretty good software for this use case.
I suppose that it adds technical overhead, but in my opinion the benefit of docker is how easy it is to spin up a new service, and how easy it is to update and maintain the containers.