Setting up my new Synology DS1520+

DS1520+, 5x4TB ST4000VN008 and 1TB SKC3000S1024G.
DS1520+, 5x4TB ST4000VN008 and 1TB SKC3000S1024G. (2022-12-26) (full size)

Some time ago I built a NAS for personal usage. It has been a blessing in my life as I’m not afraid of losing data or going out of storage anymore. However, due to some unfortunate events, I don’t have a place to run it other than my bedroom, but it is too noisy to keep it beside my bed.

I decided to migrate the server to a smaller form so that I could rest comfortable without a running computer on my ears. Interestingly, in Brazil we don’t have much options for small factor cases such as ITX. Considering that I wouldn’t be able to build it my own, I decided to go with a Synology DS1520+.


Now, I’m going to be honest here, the software is absolutely awesome. Personally, I don’t like to use closed-source software (and I’ll show you one of the reasons in a few moments), but the disk and backup management is way better than something I could come up with. I don’t know how long they will support my model and its software but for the time being I’m enjoying it.

Partitioning and formatting was always a struggle for me as I can’t decide for myself if I should go with Btrfs or ZFS; which RAID setup or how many datasets to create. This was all automatically handled for me.


This is the part that sucks the most about the device. I mean, the hardware is definitely reasonable for its original use case: file storage. It has a Celeron J4125 with 8GB DDR4 ECC RAM (up to 20GB). This is more than enough for my needs.

What about the noise? I can’t hear it at all! The only noise that it introduces to the room is actually from it hard-drives, but nothing loud enough to disrupt my sleep as it’s barely noticeable.

Something that I think I shouldn’t have bought is the NVMe drive for caching. I thought that by running a bunch of media software I’d get better performance caching reads on the SSD. Well, it turns out that I don’t actually have this much reads and I only hit a cache of 5GB on a daily-basis.

What about the containers?

Synology provides an official Docker application at its Package Center that you can just install and go crazy with it… or not. I might have done everything wrong and tried to circumvent the software in a way that is not recommended. However, every time I tried to run a container that exposes an HTTP server, I got redirected to the port 5000 by my device’s NGINX. I spent a ridiculous amount of time trying to change this behavior but I thought that it would be easier to setup this in a way that I’m used to.

Alpine Linux for the rescue

Feeling defeated by Synology’s software, I decided to try a different approach: a regular Linux distribution. As my hardware is really limited, I want to use as less resources as possible. For this reason I chose to go with Alpine Linux1 as the backbone of my virtual machine.

There’s nothing novel about running containers with Docker and docker-compose, so I’m not going to dig deeper on setting this up.

Using NFS as the storage

Docker has a poorly documented way of setting up an NFS share directly on the container and due to this I assume they don’t want you to use this feature 😜. Anyway, mounting an NFS share is much easier than going trial and error with docker volumes over NFS.

I created the NFS share on Synology’s dashboard and then on my alpine machine I ran:

mkdir -p /mnt/docker
mount -t nfs <ip>:/volume1/<share-dir> /mnt/docker

I also added this line on my /etc/fstab file to automatically mount the NFS volume after boot:

<ip>:/volume1/<share-dir> /mnt/docker nfs _netdev 0 0

This might not be obvious at this point, but doing things this way is awesome because I can just mount volumes pointing to /mnt/docker and backup them through Hyper Backup on Backblaze B2.

  image: caddy:2.6
  # ...
    - /mnt/docker/caddy/Caddyfile:/etc/caddy/Caddyfile
    # ...

This setup gives me the most out of everything I tried so far:

I configure my services through a regular Linux system with extensive documentation.
Hyper Backup assures me things are backed up correctly.
They are regular containers, I can easily migrate to another host


My current experience has been positive. Although, I’m still kind of skeptical about the longevity of the backup software. It is easy to use and makes incremental backups a breezy to setup, but I still want the freedom to restore on a Linux server without much trouble. Well, this is mostly a personal desire and I understand this device was not made for my use case! 😁

  1. They even provide an image made specifically for virtualization! 🎉 ↩︎

Links to this article

Articles from blogs I follow around the net

Variations of the Range kata

In the languages I usually employ. The Range kata is succinct, bordering on the spartan in both description and requirements. To be honest, it's hardly the most inspiring kata available, and yet it may help showcase a few in…

via ploeh blog January 1, 2024

Some notes on NixOS

Hello! Over the holidays I decided it might be fun to run NixOS on one of my servers, as part of my continuing experiments with Nix. My motivation for this was that previously I was using Ansible to provision the server, but then I’d ad hoc installed a bunch…

via Julia Evans January 1, 2024

I found some of my first code! Annotating and reflecting on robotics code from 2009.

In high school, one of my teachers shattered my plans for my life, in the most beautiful way. Most of my life, I'd intended to become a math professional of some sort: a math teacher, when that was all I saw math for; an actuary, when I started to lear…

via blog January 1, 2024

Generated by openring