Configuration
DS Server reads its settings from a few files in its folder, hostsettings.json, appsettings.json and, in IIS, web.config, and it keeps its own state in the admin database Admin.db. Security profiles, OAuth and the license are managed in the admin portal instead; see Administration and Settings.
Administrators who install or automate DS Server find here which file holds which setting, how to change the ports and paths with environment variables or command-line arguments, where the logs and the admin database go, and what the other folders of the installation are for.
Files and Folders
Both builds, Core and Classic, have the same configuration files:
| File or folder | What it holds |
|---|---|
| hostsettings.json | The addresses and ports Kestrel listens on |
| appsettings.json | Logging, allowed hosts and the file name of the admin database |
| web.config | The settings for hosting in IIS |
| Admin.db | The admin database, created at the first start |
| logs/ | The log files, created at the first start |
| Plugins/ | One subfolder per plugin |
| Dictionaries/, HyphenationLists/, SynonymLists/ | The proofing files of the Document Editor |
| ResourceKit/ | The resource files for translating the texts of the Document Editor |
| Fonts/ | Core only: the fonts of the Core build |
Edit the files with any text editor and restart DS Server afterward: it reads them at startup.
Change the Ports
hostsettings.json sets the addresses Kestrel, the web server of ASP.NET Core, listens on. The default value serves HTTP on port 5000 and HTTPS on port 5001 on all network interfaces:
{
"urls": "http://*:5000;https://*:5001"
}
Separate several addresses with semicolons. An HTTPS address needs a certificate; see HTTPS. You can override the file in two ways:
- The
--urlscommand-line argument.dotnet TXTextControl.DocumentServices.dll --urls http://localhost:8080listens on the given address instead. - Kestrel endpoints in appsettings.json or as environment variables, such as
Kestrel__Endpoints__Http__Url=http://*:8080. When endpoints are defined, DS Server ignores the addresses of hostsettings.json and logs the warning "Overriding address(es) 'http://:5000, https://:5001'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead." HTTPS uses endpoints to configure a certificate.
The usual ASP.NET Core environment variables for addresses, ASPNETCORE_URLS, DOTNET_URLS, URLS and ASPNETCORE_HTTP_PORTS, have no effect: the addresses of hostsettings.json take precedence over them. This is why a container started from mcr.microsoft.com/dotnet/aspnet:10.0, whose images set ASPNETCORE_HTTP_PORTS=8080, still listens on port 5000.
In IIS, hostsettings.json is not used: the bindings of the IIS site set the ports.
Settings as Environment Variables
DS Server uses the configuration system of ASP.NET Core, so every setting of appsettings.json can be set as an environment variable. The name is the path of the setting, with a double underscore __ between the levels. An environment variable overrides the value in the file:
| Environment variable | Setting in appsettings.json |
|---|---|
LiteDbOptions__DatabaseFileName=/data/Admin.db | LiteDbOptions:DatabaseFileName |
Logging__DSServerFile__Options__FolderPath=/data/logs | Logging:DSServerFile:Options:FolderPath |
Logging__LogLevel__Default=Warning | Logging:LogLevel:Default |
Kestrel__Endpoints__Https__Certificate__Password=<password> | Kestrel:Endpoints:Https:Certificate:Password |
Environment variables are the usual way to configure containers: pass them with docker run -e or ENV in a Dockerfile, as Installing with Official Image from Docker Hub shows. They also keep secrets such as certificate passwords out of the files.
Logging
The default appsettings.json of DS Server 5.0.2:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"TXTextControl.DocumentServices": "Information"
},
"DSServerFile": {
"Options": {
"FolderPath": "./logs",
"FileName": "log_{dateTime}.log"
}
}
},
"AllowedHosts": "*",
"LiteDbOptions": {
"DatabaseFileName": "Admin.db"
}
}
Logging:LogLevelsets the minimum level of the messages per category:Defaultfor all others,Microsoftfor the Microsoft libraries, such as ASP.NET Core,Microsoft.Hosting.Lifetimefor the start and stop messages andTXTextControl.DocumentServicesfor DS Server itself.Logging:DSServerFile:Optionssets the log files.FolderPathis the folder,FileNamethe file name, in which{dateTime}becomes the date in the formyyyyMMdd. DS Server writes one file per day, such as logs/log_20260929.log.AllowedHostsis the list of host names ASP.NET Core accepts in requests.*accepts all.LiteDbOptions:DatabaseFileNameis the admin database, described below.
Each line of a log file starts with the time and the level:
[2026-09-29 07:39:56] [Information] Now listening on: http://[::]:5000
[2026-09-29 07:39:56] [Information] Application started. Press Ctrl+C to shut down.
The console of DS Server shows only the messages about plugins. The start messages, such as the addresses DS Server listens on, and all later messages go to the log file. Errors during startup are written to the console and the log file.
Admin Database
Admin.db is a LiteDB database. It stores the admin password, the security profiles, the OAuth setting and the access tokens DS Server has issued. While DS Server runs, its journal Admin-log.db is next to it.
- It is created at the first start. A new Admin.db has the default password
admin, no security profiles, and OAuth disabled. - Deleting it resets the server. If you delete or lose Admin.db, DS Server creates a new one at the next start: the admin password is
adminagain, the security profiles are gone and OAuth is disabled. Back up the file together with the installation, and restore it to restore the settings. - Its location is set by
LiteDbOptions:DatabaseFileName. Use an absolute path to keep the database outside the installation folder, for example on a Docker volume or in a data folder that an upgrade doesn't replace.
Paths and the Working Directory
DS Server resolves a relative Logging:DSServerFile:Options:FolderPath, such as the default ./logs, against the working directory of the process, not against the DS Server folder. Started in its folder with dotnet TXTextControl.DocumentServices.dll, the two are the same. They differ when DS Server is started from another folder, by a systemd unit without WorkingDirectory or as a Windows service, whose working directory is C:\Windows\System32: the logs folder is then created there. Set an absolute log folder for these cases, as Manual Installation shows. Admin.db with a relative LiteDbOptions:DatabaseFileName, appsettings.json, hostsettings.json, the Plugins folder and certificate files with relative paths are found in the DS Server folder in any case.
web.config for IIS
When IIS hosts DS Server, it reads web.config from the DS Server folder. The file of DS Server 5.0.2 contains:
| Setting | Value | Meaning |
|---|---|---|
aspNetCore hostingModel | InProcess | IIS runs DS Server in its worker process with the ASP.NET Core Module V2 (AspNetCoreModuleV2) |
aspNetCore processPath, arguments | dotnet, .\TXTextControl.DocumentServices.dll | The application IIS starts |
aspNetCore stdoutLogEnabled | false | No stdout log in .\logs\stdout |
aspNetCore environmentVariables | ASPNETCORE_HTTPS_PORT 44342, COMPLUS_ForceENC 1 | Environment variables IIS sets for the DS Server process |
requestLimits maxQueryString | 8192 | The maximum length of a query string, for the request filtering of IIS |
httpRuntime maxRequestLength | 500000000 | A setting of ASP.NET for .NET Framework in system.web, which ASP.NET Core doesn't read |
httpRuntime executionTimeout | 300 | A setting of ASP.NET for .NET Framework in system.web, which ASP.NET Core doesn't read |
The file doesn't set maxAllowedContentLength in requestLimits, so the request filtering of IIS keeps its default limit of 30,000,000 bytes (about 28.6 MB) for the body of a request. A higher maxAllowedContentLength raises this limit of IIS.
The ASP.NET Core Module is installed with the .NET Hosting Bundle; see Requirements. Microsoft's Host ASP.NET Core on Windows with IIS documents the settings of the aspNetCore element.
Plugins
A plugin is a .NET assembly that adds endpoints and services to DS Server. Each plugin goes into its own subfolder of Plugins, with at least one .dll that implements the IPlugin interface of TXTextControl.DocumentServices.Plugin.Abstractions and the assemblies it depends on:
Plugins/
MyFirstPlugin/
MyFirstPlugin.dll
InvoicePlugin/
InvoicePlugin.dll
README.md
DS Server loads the plugins at startup, so restart it after you add or update one. The console shows the plugins it loads, and the Plugins page of the admin portal lists them. See Plugins.
Proofing Files
The Document Editor checks spelling, hyphenates and suggests synonyms with the files of three folders, all for English (United States):
| Folder | Files |
|---|---|
| Dictionaries | en_US.aff and en_US.dic, a Hunspell dictionary derived from SCOWL, with its README_en_US.txt |
| HyphenationLists | hyph_en_US.dic |
| SynonymLists | th_en_US_v2.dat and th_en_US_v2.idx |
Resource Kit
The ResourceKit folder contains the texts of the Document Editor and the engine as .resx files, TextControl.resx, DocumentServer.resx, TXBarcode.resx, TXDrawing.resx, TXSpell.resx and TXTextControl.Web.Server.Process.resx, together with the batch file buildres.bat and the key file txtextcontrol.public.snk. After you translate the .resx files, buildres.bat builds satellite assemblies for the language tag you pass, for example buildres fr for French, from all of them except TXSpell.resx. It uses the tools resgen, al and sn. The German resources ship with DS Server in the de folder.
Fonts
The Core build contains a Fonts folder with 99 font files, among them Liberation Sans, Liberation Serif and Liberation Mono, Lato, Merriweather, Montserrat and Noto Sans with variants for Japanese, Korean, Simplified Chinese and Traditional Chinese. Fonts/licenses.txt states that they are licensed under the SIL Open Font License, Version 1.1. The Core build uses the Core engine of TX Text Control, which reads its fonts from this folder; Fonts in the TX Text Control .NET Server documentation describes how the engine finds fonts.
The Classic build has no Fonts folder. It uses the fonts installed in Windows.
Next Steps
- HTTPS: configure a certificate for Kestrel.
- Upgrading: keep the configuration and the admin database when you update.
- Plugins: extend DS Server with your own endpoints.
- Architecture: how the files relate to the server and its worker processes.