Skip to main content

Synology Docker self-hosting setup

Dedicated setup path for running the app on a Synology NAS via Container Manager – a step-by-step guide plus the fixes it needs (arm64 images for entry-level models, DSM's built-in reverse proxy, and volume paths that work with Hyper Backup)

Today it's doable but fiddly: the docs assume a Linux VPS with SSH, so Synology users have to figure out the NAS-specific parts themselves

Also worth including these recommendations

https://www.reddit.com/r/YNABAlternatives/comments/1tt5zxv/comment/oymcaye into the scope

3 comments

Log in to comment and vote

Comments3

  • Daniel

    •

    Sep 11

    I’m running MoneyMatter on my Synology NAS. I was already able to get it running by mapping the nginx template folder as a volume and putting a custom nginx.conf.template file with port 8080 as listener port. I would love to see the listener port configurable, though.

  • pxzjnm

    •

    Aug 2

    Here is a note for the hurdles I got through when setting it up with Synology NAS Docker solution.

    https://www.reddit.com/r/YNABAlternatives/comments/1tt5zxv/comment/ospwry6/?context=3

    Below are the major hurdles I overcame, for everybody's reference. My user case is rather simple - I would only use this in my local LAN network, so I am using a fixed internal IP. I would imagine making it work for remote access would be way more complicated.

    Also as a side note, my network environment is built on Unifi. My thinking is that, if all work well in the local network, I can use Teleport to get back to it if I need access remotely. I may also test if Tailscale works in the future. I understand in the roadmap there is a plan to develop the native iOS app for it - so it will be another challenge for me to work out a solution for local hosting in my user case.

    1. Need to re-write the yaml file for installation. Synology Container Manager uses the Project->Container concept for the build. So, I need to write a yaml file for the build, rather than using BASH scripts.

    2. The first build causes lots of errors - most related to outdated components (npm etc). I need to include "pull_policy: always" under both frontend and backend in the yaml build file to get it work.

    3. After the first successful build, the frontend container keeps showing error of "nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)". It seems that the frontend container is starting Nginx as a non-root user, but Nginx is trying to listen on internal port 80, which Synology is blocking for that user. I need to update the nginx.conf to let it listen to "8080"; the dockerfile to expose "8080"; and the yaml build file for the frontend ports to "8080:8080" to get rid of this issue.

    4. After the above fixes, I could get to the website. After creating a user, when logging it showed error of "UNAUTHENTICATED] Unauthorized @ http://[LAN IP]:8081/api/v1/user". It may be caused by caused by Secure cookies on local HTTP. Need to change the auth.ts file "useSecureCookies: false," to make it work.

    5. After all these, clean the Synology Project and do a fresh rebuild - then it works.

    • dmytro_sv

      Team•

      Aug 2

      Thanks for the details! Will take a look at it out of order – in case it’s simple/fast to fix I'll simply reprioritize it higher.

      Regarding the iOS app – honestly, my idea as a workaround here was to allow connecting to a custom backend. After all it's just an endpoint to call, so if auth problem can be solved (and I believe it can), then the way will be clean and smooth. Will see 😅