Tutorial – Easy Run dotnetcore C# Console app on Synology NAS with Docker

You want to run a C# app on your NAS ? read this!

– A computer with Visual studio (2019 or later) installed,
– A synology NAS which can run docker  , and docker installed on it 🙂

Phase 1 : With Visual Studio, on your computer

First Create a new Console app dotnetcore project in Visual studio

Some sample code :

using System;

namespace HelloWorld2
    class Program
        static void Main(string[] args)
            Console.WriteLine("Hello World!");
            if (args.Length > 0)
                Console.WriteLine($" how are you {args[0]}?");

Go to project properties

and change dotnetcore version to dotnetcore 2.1 (this version only is available on synology nas at the time I write this post)

Phase 2 : On your Synology NAS

Start Docker

In docker registry, search for “dotnet” and download latest microsoft/dotnet version (if not already installed)


After Image is downloaded, Run it (button “Run”)


Go to Docker “Container “Tab and stop Microsoft-dotnet1 container if it’s already running

Now we will update the docker container , click on modify /update button

Give access to an external NAS folder from the docker container, for example  :

  • Create a folder named “dotnetcore” in your NAS directory “Documents”
  • Then Add this folder in docker container volume:
    • File / Folder : Documents/dotnetcore   –> access path: /dotnetcore

then click on “Apply” (blue button)

Phase 3: mix

Back on visual studio

Open the solution folder


copy .csproj file and Program.cs in computer clipboard (CTRL+C)


copy/paste these files onto your NAS folder : Documents/dotnetcore /HelloWorld2

(different methods are possible to copy files to your NAS, I won’t describe all of them here but it can be by FTP, SMB, SSH, SCP, via diskstation FileStation app on your browser directly ,etc…)

Here I use a network share


and I paste the 2 files here:


Back on the NAS:

Run microsoft-dotnet1 container

Click then on “Details” button

Click on “Terminal” Tab


A terminal appears, type dir if you want to list files, then cd dotnetcore/HelloWorld2

(dotnetcore is the name of the shared external folder described in Phase 2 and HelloWorld2 is the name of the folder cotaniner .csproj and Program.cs)

then type dotnet run YourName

where YourName is first argument of Main console

That’s it!

Tagged , , , , , , , , , , . Bookmark the permalink.

About Xavier

7 years+ .net consulting

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.