This article will show how to get Synology DSM working on Docker.
At the time of writing, it seems there is no issue so far with dsm "6.2.3-25426".
Requirements (at the time of the writing):
- Xpenology Jun's Loader 1.03b for ds3615xs (which can be found in this forum)
- DSM 6.2.3 (25426) file named "DSM_DS3615xs_25426.pat" (here)
Source: https://github.com/uxora-com/xpenology-docker
Warning
This system is for testing or educational purpose ONLY, and It is NOT recommended for use in production environment because it has no support and it has not been proven stable/reliable.
So if DATA LOSS happens by using this system, this is ONLY on your own responsibility.
If you are happy with the testing of this product, I would highly recommend you to go for an original Synology hardware especially for PRODUCTION environment where data is critical.
We recommend ...
... at least 512MB RAM
... at least 16GB of free disk space
Configure Lxc container [Proxmox user only]
This part is for users using proxmox or Lxc container, if this is not your case then skip this part and go to the next part.
Add overlay, aufs module and nested option
On proxmox host, execute as root (or with sudo):
Create lxc container
Create a new unpriviledge Lxc container :
- With the template "debian-10-standard_10.5-1_amd64.tar.gz" downloaded in proxmox ve
- Core 1, RAM 1GB, Swap 1GB, Root disk 32GB
Edit container conf file /etc/pve/lxc/111.conf
to look like the following:
Start the container with pct start 111
Then access to its console with pct enter 111
or lxc-attach --name 111
Then continue to the next part to configure this linux container.
Pre-requisite
Check virtual host capability
Your host need to have virtualization capability to get this docker working.
On host server, open a shell as root
, and execute the following command:
Troubleshooting:
- if /dev/kvm issue :
chmod o+rw /dev/kvm
- if fuse issue:
modprobe fuse
Install Docker
Bootloader in a web server
The bootloader "synoboot_103b_ds3615xs_virtio_9p.img", downloaded from this forum , need to be stored in a place where it can provide a URL to the file.
For example, you can :
- Store it in your own web server
- Upload it into gofile.io , a free file storage sharing, then use the "download" button link as url
The URL will be used as BOOTLOADER_URL parameter in Docker.
UPDATE:
If you do not want to use a webserver but a local folder (ie. /xpenodock/syst
) then
- Copy bootloader to
/xpenodock/syst/bootloader.img
- Then use the following parameter in docker run command line:
- -e DISK_PATH="/xpy_syst"
- -v /xpenodock/syst:/xpy_syst
Start Xpenology Docker
You can find all the documentation and instruction in https://github.com/uxora-com/xpenology-docker .
Simple run
More advanced run: my prefered configuration
In this configuration:
- Snapshot will be usable
- ie.
[root@host]$ docker exec -ti $( docker container ls -f 'ancestor=uxora/xpenology' -f "status=running" -q ) vm-snap-create
- ie.
/xpenodock/syst
- will contain bootloader and vm datafiles.
- if
bootloader.img
already exists in this folder, then it won't download it fromBOOTLOADER_URL
but use the existing one. - you will be able to quickly change bootloader by replacing those files
/xpenodock/data
- will be a sharefolder between host and DSM
- will be used as a 9p mount point in DSM as follow
- First from dsm gui, "Create New Shared Folder" in "File Station" named "9pDataShare"
- Then open a ssh connection to dsm, then create the mount point:
-
[xpenology]$ sudo mount -t 9p -o trans=virtio,version=9p2000.L,msize=262144 hostdata0 /volume1/9pDatashare
-
If you want to kinda "passtrough" a full disk, you can do it by:
- Creating a symbolic link on the device
- ie.
[root@host]$ ln -s /dev/disk/by-id/ata-SAMSUNG_XXX /xpenodock/lnk/sdz
- ie.
- Then add theses parameters to docker command line:
- --device=/xpenodock/lnk/sdz:/dev/sdz
- -e DISK_SIZE="8G /dev/sdz"
- But note that Snapshot won't work anymore by adding a raw disk
Install Xpenology dsm
Once, you've got your xpenology docker running, then follow this tutorial to install xpenology dsm by opening a web page on <HOST_IP>:5000
.
Note0: Do not forgot to change vid/pid (as explained in tutorial) to get minor update working
Note1: If you have some issue, please check troubleshooting part of github's README here: https://github.com/uxora-com/xpenology-docker
HTH,
Michel.
Reference
Forum Xpenology (xpenology.com)
Tutorial: DSM 6.x on Proxmox (Thread on xpenology.com)
Proxmox backup template (Thread on xpenology.com)
Xpenology running on docker (Thread on xpenology.com)
Tutorial to compile xpenology dsm driver (xpenology.club)
Install Xpenology DSM 6.1.x on Proxmox (uxora.com)
Install Xpenology DSM 6.2.x on Proxmox (uxora.com)
Enjoyed this article? Please like it or share it.
Comments
[censored]s://pastebin.com/JiCym3DB
NAT Network 20.20.20.21.
I keep getting this error when starting docker for xpenology, could you please help, much appreciated.
0K ........ ........ ........ ........ 64% 201M 0s
32768K ........ ........ .. 100% 249M=0.2s
INFO: Bootloader has been successfully downloaded from URL.
INFO: /image/bootloader.raw file size seems valid for synoboot.
INFO: Bootloader has been converted to qcow2
INFO: No Initial Disk found, creating disk /image/vm-disk-1.qcow2
INFO: KVM acceleration enabled
INFO: Configuring network ...
net.ipv4.ip_forward = 1
INFO: DHCP configured to serve IP 20.20.20.21/24 via dockerbridge
iptables: No chain/target/match by that name.
Well just tried on a new docker, and it still works for me.
It seems to failed on the following command:
# Hack for guest VMs complaining about "bad udp checksums in 5 packets"
$ iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill
Not sure why you got this error, but I read that some get this resolves just by restarting Docker:
$ systemctl restart docker
something went wrong detected errors on the hard drives (7,8) and the sata ports have also been disables. Please shut down your ds3615xs to replace or remove the hard drives and try again.
Can you help to solve this?
RSS feed for comments to this post