DS Server

Installing Using Docker (Classic on Windows)

Topic

The Classic build of DS Server runs on Windows only, so its container image is a Windows container: a Windows Server Core base image, the runtimes that Classic needs and the classic folder of the DS Server archive. Choose it over the Linux image when you need what the Core build doesn't offer on Linux, such as the document formats DOC and RTF or bitmap page images. Core and Classic lists the differences.

The image below starts DS Server with dotnet and Kestrel. It doesn't install IIS: since version 3.0, DS Server runs without IIS, as a .NET application or a Windows service.

Prerequisites

  • Docker with Windows containers: Docker Desktop on Windows switched to Windows containers, or Docker on Windows Server.
  • The DS Server archive DS Server 5.0.2.zip, from your Text Control account or, for an evaluation, from the DS Server download page.
  • A serial number to register the server after it starts. See Licensing Overview.

Prepare the Folder

  1. Create a folder named DSServerDocker.

  2. Extract the archive and copy its classic folder into DSServerDocker.

  3. Open classic/hostsettings.json and remove the HTTPS address, so that the file contains:

    {
      "urls": "http://*:5000"
    }
    

    Without a certificate, DS Server can't start on the default HTTPS address. HTTPS shows how to configure one.

  4. Create a file named Dockerfile, without an extension, in DSServerDocker:

    DSServerDocker\
        Dockerfile
        classic\
            TXTextControl.DocumentServices.dll
            TXTextControl.DocumentServices.exe
            hostsettings.json
            ...
    

Write the Dockerfile

Paste the following content into the Dockerfile:

FROM mcr.microsoft.com/windows/servercore:ltsc2022

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

# Visual C++ Redistributable (x64)
RUN Invoke-WebRequest -OutFile vc_redist.x64.exe https://aka.ms/vs/17/release/vc_redist.x64.exe; \
    Start-Process vc_redist.x64.exe -ArgumentList '/passive' -Wait; \
    Remove-Item -Force vc_redist.x64.exe

# .NET 10 Hosting Bundle: .NET Runtime and ASP.NET Core Runtime 10.0
RUN Invoke-WebRequest -OutFile dotnet-hosting-win.exe https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/10.0.12/dotnet-hosting-10.0.12-win.exe; \
    Start-Process dotnet-hosting-win.exe -ArgumentList '/passive' -Wait; \
    Remove-Item -Force dotnet-hosting-win.exe

# .NET Desktop Runtime 10.0 for the DocumentProcessing worker process
RUN Invoke-WebRequest -OutFile windowsdesktop-runtime-10.exe https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/10.0.12/windowsdesktop-runtime-10.0.12-win-x64.exe; \
    Start-Process windowsdesktop-runtime-10.exe -ArgumentList '/passive' -Wait; \
    Remove-Item -Force windowsdesktop-runtime-10.exe

# .NET Desktop Runtime 8.0 for the Document Editor worker process
RUN Invoke-WebRequest -OutFile windowsdesktop-runtime-8.exe https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/8.0.31/windowsdesktop-runtime-8.0.31-win-x64.exe; \
    Start-Process windowsdesktop-runtime-8.exe -ArgumentList '/passive' -Wait; \
    Remove-Item -Force windowsdesktop-runtime-8.exe

# The Classic build of DS Server
COPY classic/ C:/DocumentServices/
WORKDIR C:/DocumentServices

EXPOSE 5000

ENTRYPOINT ["dotnet", "TXTextControl.DocumentServices.dll"]

The Dockerfile works as follows:

  • FROM mcr.microsoft.com/windows/servercore:ltsc2022 starts from Windows Server Core 2022. Microsoft also publishes ltsc2025 for Windows Server 2025. Pick the tag that your container host can run; Microsoft's Windows container base images overview describes the images.
  • SHELL runs the following RUN instructions in PowerShell and stops the build at the first error.
  • The four RUN instructions download and install the runtimes that Requirements lists for Classic: the Visual C++ Redistributable, the .NET 10 Hosting Bundle and the .NET Desktop Runtimes 10.0 and 8.0. The Document Editor worker process of Classic is built for .NET 8.0 and the Windows Desktop runtime, and doesn't start without the 8.0 Desktop Runtime. The urls download the versions current in September 2026, 10.0.12 and 8.0.31; newer patch versions are listed on Microsoft's .NET 10.0 and .NET 8.0 download pages.
  • COPY classic/ C:/DocumentServices/ copies the Classic build into the image, and WORKDIR makes it the working directory, where DS Server writes Admin.db and its logs.
  • ENTRYPOINT starts DS Server with dotnet and Kestrel. The classic folder also contains TXTextControl.DocumentServices.exe, which starts the same application.

The Classic build has no Fonts folder and uses the fonts installed in Windows. Check that the fonts your documents use are available in the image.

Build and Run the Image

  1. Open PowerShell in the DSServerDocker folder and build the image:

    docker build -t dsserver-classic .
    
  2. Start a container and map port 5000:

    docker run -d -p 5000:5000 --name mydsserver dsserver-classic
    
  3. Open http://localhost:5000 in a browser and sign in with the default credentials, user name admin and password admin.

Change the admin password, register your serial number and create a security profile, as described in Installing with Official Image from Docker Hub. The admin database C:\DocumentServices\Admin.db is lost when the container is removed; to keep it on a volume, set LiteDbOptions__DatabaseFileName as shown in Configuration.

Next Steps