Over the last few months I have been periodically testing cloud storage providers with paid and free tiers. While many of them offer free storage over 1GB, not many of them offer a robust CLI or API that could expand the usage of their storage systems. I was able to test remote storage with rclone, as it has an extensive list of supported providers. I did have to wait until the last month of the year for Alpine to update the rclone package to be able to test it with Proton Drive (it works).
The next best tool to have along side cloud storage is a private network, which can be used to share data more securely. Privatebin is a simple option for data sharing, but there are sizing and time limits. I decided to use my personal e-library setup as a testing application to see how I could more securely access my books.
I have previously setup Tailscale with one of my old project laptops and a PC I used to create a private network for an old mentee that I was working with. I did not yet have a domain purchased or the time to setup my own network of machines, but it worked for what I needed it for at the time.
Testing
My test setup was straightforward, and all pieces required minimal effort to connect.
My e-library’s backend is ever-changing but the ports used to access the web UI for each component was consistent enough. The ports are needed to configure the ACL in the Tailscale admin console. This was done to ensure that all traffic was routed to the e-library login page. I have tested this with Kavita and Ubooquity. Calibre-Web can also be used but it required more configuration than I was willing to do.
I went through the process of installing Tailscale on my laptop and phone so that I could fully test its functionality. This required installing the application on each device and connecting them to the ’network’. After my laptop was added, I went ahead and modified the ACL routing to ensure that all traffic was routed to my e-library’s web UI by default.
To test an application running on any machine, it is best to use another device/machine on the network. I used my phone for this part. Tailscale provides IPs and default domains for each machine that can be reached via SSH or in the browser. I added an A record to a domain I purchased so that I wouldn’t need to use an interestingly formatted domain name. This is an optional step, especially for non-production environments.
The DNS propagation took the longest time, most domain registrars will include many default DNS entries. To not break anything, I would recommend modifying the top level A record with @ listed. I deleted this entry since the domain I have is used for priavate, inaccessible deployments.
My setup was done using HTTP. Tailscale does generate HTTPS certificates that can be used to allow for secure connections to any machines added to a network.
I think that I will deploy my e-library on a remote server so that I do not need to constantlly run deployments from my computer, and that my access is not reliant on my laptop remainng on indefinitely.
Conclusions
Tailscale it a nice free cloud networking tool available to the public, and it has minimal setup unlike its self-hosted implementation Headscale.
Self-hosting applications locally is fun, but for consistent availability they should be deployed on remote servers. For affordable options consider Ionos or OVHCloud.
Extras
I created a fork of the Tiny File Manager project in GitHub that removes the hardcoded default admin and user logins, replacing them with a USERS environment variable that’s set at the container runtime. This is an alternative option for Kavita or Ubooquity that doesn’t require any terminal commands or more ‘backend’ work.
I modified an alpine based TTYD container image to include rclone, and am currently adding a non-root user reader which will be used to copy/sync files and other library content from a remote storage account. The root user can of course be used for local testing, but a more hardened container is best for production deployments.
I was going to purchase a new Kobo e-reader, but I’ve been convinced that the Pocketbook I have is the better option. Sideloading from Libby or using KOReader works best with Pocketbook, or so I’ve learned.