Synology DSM 7.0 support
January 12, 2021 in bliss by Dan Gravell
bliss is running in DSM 7.0!
Synology are currently in the midst of a beta programme for the new version of their NAS operating system: DiskStation Manager 7.0.
DSM is the operating system that powers Synology NASes. It provides all the NAS services that are essential for adminstering a NAS, plus a platform that allows developers to create packages to further extend the functionality of the device.
Aside from the benefits to the users of Synology NASes that this version brings, there are a number of changes to how Synology packages work in this version of DSM.
So, bliss is working. Technically. What I mean by that is:
- I can create a new
.SPKfile for DSM 7.0.
- Given a few pre-requisites (see below) bliss installs and runs as before.
There are changes in DSM 7.0 which means a little more work from the installer.
.SPK is the file that encompasses a Synology package. You can install
.SPKs in two ways: by downloading them and manually installing them, or via a Package source (some call it a repository).
It’s a new requirement that the metadata embedded in an
.SPK file has to be different between the pre-DSM 7.0 and DSM 7.0 versions. This means there will now be two versions of the
This is a bit of a pain, so I’d like to introduce a Package source soon, or be featured on the official Synology Package Center. Either approach would avoid having to choose a version. Discussions are ongoing about that.
Perhaps the biggest change in DSM 7.0 for package developers are new constraints on permissions. Before, packages often ran as
root which is a superuser capable of doing anything on the NAS. Now, the package gets its own user. In our case,
What this means is that, by default, bliss doesn’t have read or write access to the
Music share. This must be added via Control Panel > Shared Folder > music. Click Edit > Permissions and then change the Local users dropdown to System internal user. Find bliss and check Read/Write.
I’m hoping Synology provide a one-click “do you give permission for this app to change your music files”-style challenge…
At this time, there’s no official Java package in the DSM 7.0 Package Center.
During my testing I used rednoah’s excellent
java-installer to select the correct JVM. If Synology don’t provide an official package, we’ll have to do something similar.
Currently, licence information is stored in a space of storage for the user. As the user is changing from
bliss this means licence information will be lost.
Unfortunately this means existing licences will have to be re-installed.
I’ve left this to last because fewer people will be interested in this. But just in case this does help other package developers, here’s a list of the stuff I had to change…
The first thing is that unless you have a Synology device capable of running Virtual Machine Manager you’re going to have to get a new device or stop supporting DSM 6.x, because you can’t downgrade from DSM 7.0 back to DSM 6.x again.
This is a requirement for DSM 7.0:
Check your temporary directories
Before, I was using the system wide temporary folder for storing some temporary files:
volume1 changes to whatever the volume is called, which might be different on multiple drive machines).
Now, temporary folders are assigned to packages in the following manner:
/volume1/@apptemp/bliss. Usefully there’s a symbolic link from the package folder to this temporary folder, so now this can be accessed in install/run scripts as:
Don’t assume root!
It’s bad, I know, but I’d assumed
/root was where I could store some user-specific files. I’ve changed that to
New permissions model means unreadable/unwriteable folders
Before, I assumed I could just read/write the
music share. Instead, the user must now grant permissions manually.
Something that might come in handy - you can edit these permissions on the command line with the
synoshare --setuser music RW + bliss
That gives bliss RW (read/write) permissions on the
music folder. This can’t be run in an install script, it appears to just be ignored.
Hope that helps!