QNAP install video using Docker?

What a legend you are, thanks for taking the time out of your day to do that, most appreciated! I’ll get on with that later today :slight_smile:

1 Like

@Nighthawk thanks for taking the time to record that!

I suspect you may get (much!) better performance by using Docker instead of “Virtualization Station”.

After installing Container Station (which should get docker installed for you), and setting up ssh access to your NAS, you should be able to ssh into your NAS and follow the Portainer CE installation instructions.

After that, use the docker-compose instructions: PhotoStructure | PhotoStructure for Docker Compose

Using docker-compose you also can set up PhotoStructure to restart automatically on QNAP reboot, so it’s a bit more “set and forget”, and upgrades (thanks to lighthouse) can be made automatic.

When using Virtualization Station, your NAS is having to run a whole Linux MATE distribution (which is >10GB, I believe). The PhotoStructure for Docker image runs on Alpine, which weighs in at only .35 GB (which includes the PhotoStructure binaries, third-party tooling, and the OS!).

This can be done by Virtualization Station as well.

Very true. For me personally the advantage is I do have a proper system where I can log into and check visually what’s going on without the need to using the console (I am a nerd, but not hardcore resp. just super lazy). For that I am happy to sacrifice some space (cost me nothing nowadays) and a few CPU percentage (it ain’t that much relative to the overall system. Compared directly with docker you would get insane relative % gains with docker, but is it really noticeable to a user? I highly doubt it). Plus, I have the Virtualization Station running anyways, so having Container Station running, too would waste probably the gains again (it’s not even installed on my QNAP at the moment). I guess it all depends on individual use cases resp. situations and preferences.

I had a bit mixed results with the Container Station on QNAP, it’s a bit buggy if you ask me, that said, I will give it another chance in the coming days. :slight_smile:

(and just to cover my behind: I would never ever accept wasting CPU/storage resources in a professional environment where scalability and cost matters way more than on my private over dimensioned QNAP)

Same. Good news is that you dont have to use it - you just need to install it so that docker is installed. If docker compose too nerdy, then portainer is a good option. It’s still nerdy, but without the command prompt :slight_smile:

Right… I tried the VM route first, and thank you for that. I did come across an issue whereby the VM failed to boot with a load of errors, that I can’t think what they said at this time, but thats when I saw the advice about doing in using Portainer…

So, I tried that too!

Got much further than I thought I would, however have just come up against an obstacle … I did muddle my way through till this point with the script provided, but hope at the least I can see something working even if the directories aren’t exactly what I want.

I deployed the stack from the custom templates of Portainer (took me a long time to realise this is where I needed to put the script!).

Then going back to the instructions I was kinda left in the lurch I think. So I went and started the only thing I could see in Portainer, and that was the watchtower… but thats not brought up photostructure using the port 1787, sooo, bit stuck?

:slight_smile:

If the PhotoStructure container isn’t running, check the docker logs–there should have been a last-gasp error message that it emitted before it croaked.

(When I’m testing I find the most often cause for the container to not spin up is from me not getting the bind mounts quite right, which is why I spent the time to add “easy mode”)

hmm, the way you worded that, I’m expecting to see a container called photostructure… and im not seeing an obvious docker logs section on here?


Yeah, there should be a container called “photostructure”. There isn’t, so it probably failed to spin up.

(I’d try image: photostructure/server:alpha, too)

1 Like

Got it. Right. I went to redeploy the stack and realised I missed the error. I’ve gone very wrong with the bits I need to change.

Screenshot 2022-07-13 at 17.52.13

Where the script states to CHANGE THIS, I did, but I’m getting it wrong, I’m just not used to the format of file paths, and how it knows where even the file path is. Do I need to create the folders in advance on the NAS or does the script create them?

In simple terms, I just want (for now at least!) to have 1 folder in my ‘Public’ share (was auto created) to be ‘Photos’. this is where I want all of the Photostructure stuff, inc a fresh, deduced COPY of the photos and videos I want. I have a store of the photos and videos in the same Public share, under a temp folder atm.

I’m just not sure how to get it to know the locations are in the public share on the NAS, and to get everything needed in that folder above?

Docker’s bind mounts can be a bit tricky.

Remember that the “source” directory is the full path on your QNAP.

If you search for “bind mount” you may find other explanations that are more helpful.

Thought I had it, but no? these directories should be, right, no?


paths are case-sensitive on QNAP (being a linux based system). If you know how to shell/ssh into your NAS, it’s probably the best way to validate paths. Meanwhile, try /DataVol1/Public/Photos see if it makes it all better.

1 Like

Sorted that now it looks like that you, would never have found out the proper name!

Now trying to figure out why it can’t find the path for ${HOME} in the script, I can’t see any where on there where ${HOME} is matched upto anything which feels odd, but again I’m not well versed on it.

If you’re using :alpha, use “easy mode” which lets you delete the /ps/tmp, /ps/config, and /ps/logs bind mounts.

Those ${HOME}/... paths were just defaults, BTW.

Oh right, I didn’t even notice the ${HOME} binds you had… I can’t imagine those would work in qnap / portainer

Christ I hate myself for asking so many questions, but im really just creating a template with the below!? from your easy mode post.

…I can already see myself dragging my arse back to Apple Photos or something else awful lol

Ah… think I’ve managed to fudge it… lets see! got rid of the $home bit and just put in the direct paths…

Head in hands.

Screenshot 2022-07-13 at 21.27.12

Maybe this really is just something for non Joe Public :frowning:

I think those instructions might be a bit incomplete. A docker container can’t see anything outside of its sandbox unless you map it, so you need to bind mount TWO folders at a minimum.

  • #1 for the Photostructure library - that’s where PS will store its data. So /ps/library should be mapped to somewhere that is exclusively for photostructure to work in. For example, /DataVol1/Public/Photostructure.
  • #2 where your photos you want PS to scan. A container can’t see anything outside of its sandbox, you have to explicitely mount it. So you may mount /DataVol1/Public/Photos to /media inside the container.

Might look something like this:

docker run \
--stop-timeout 120 \
-v /DataVol1/Public/Photos:/media \
-v /DataVol1/Public/Photostructure:/ps/library \
photostructure/server:alpha

If you could cut and paste what you did specifically, I am sure we can help.

1 Like

Here, I screen recorded (and narrated) how to install photostructure on docker using portainer. I hope it helps.

3 Likes