I recently found out about shiori. It’s absolutely great and does exactly what I need, exactly how I need it.
The only problem is, that it was conceived a single user CLI app it does not have any proper user separation and I kind of need it.
I wanted to create at least 3 archives: one for myself, one for my girlfriend and a public one to share with my students. I definitely don’t want these three mixing.
Does anyone have any experience hosting shiori for multiple users? Do you believe there is a way to do that on bare metal, without resorting to VMs or Docker?
https://github.com/go-shiori/shiori#documentation
I assume you’re running it as a web app, in which case the docs cover that. Just run multiple instances on different ports and with different storage.
Looks like they provide an official docker container, too, so running it in docker should be very easy.
Just with different environment variables?
The only one the docs mention is SHIORI_DIR, which defaults to ${XDG_DATA_HOME}/shiori, so if you’re running it under different users then it’s already going to be different.
Just gave it a try, and it seems to work just fine like that. Thank you.
I’ve never ran this program, but skimmed the documentation. You should be able to use the
SHIORI_DIR
(or a custom database table following those instructions) along with the-p
argument for launching the web interface. A simple bash script that should work:export SHIORI_DIR=/path/to/shiori-data-dir shiori serve -p 8081
To run multiple versions, I’d suggest setting up each instance as a service on your machine in case of reboots and/or crashes.
Now for serving them, you have two options. The first is just let the users connect to the port directly, but this is generally not done for outward facing services (not that you can’t). The second is to setup a reverse proxy and route the traffic through subdomains or subpaths. Nginx is my go-to solution for this. I’ve also heard good things about Caddy. You’ll most likely have to use subdomains for this, as lots of apps assume they are the root path without some tinkering.
Edit: Corrected incorrect cli arguments and a typo.
Is it ok to just run a few instances with just different port numbers and environment variables? Maybe I’m overthinking it, but I thought some isolation was needed, even planned on running the instances as different users. Also, thank you for the detailed explanation.