# Installation

> Fix a DS Server that ends at startup with an HTTPS or port error, ignores ASPNETCORE_URLS, misses a runtime, isn't registered or rejects a serial number.

- **Product:** DS Server
- **Section:** Documentation
- **Kind:** Topic
- **Path:** DS Server > Troubleshooting > Installation
- **1925 words**
- **Web URL:** https://docs.textcontrol.com/ds-server/troubleshooting/installation/
- **LLMs URL:** https://docs.textcontrol.com/ds-server/troubleshooting/installation/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/ds-server/troubleshooting/installation/llms-full.txt

---

A new DS Server installation fails in a few typical ways: the process ends right after `dotnet TXTextControl.DocumentServices.dll`, it listens on another port than expected, or it runs but refuses every document. Each problem below starts from what you see on the console, in the log file or in a response, and ends with the change that fixes it. The messages were recorded with DS Server 5.0.2 (Core) started with `dotnet`.

### Find Out Whether the Server Runs

The console tells you little. DS Server writes only two lines to it at startup, both about plugins:

```text
Loading plugins from '/opt/dsserver/Plugins'...
No plugins found in the plugin directory. No plugins will be loaded.
```

Everything else, including the address it listens on, goes only to the log file. Unhandled errors at startup appear on the console and in the log file.

1. Open the folder *logs* and the file of the current day, named *log\_YYYYMMDD.log*, for example *log\_20260929.log*.
2. Look for the lines of a successful start:

    ```text
    [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.
    ```
3. If there is no *logs* folder in the installation folder, look in the folder you started DS Server from. The log folder `./logs` in *appsettings.json* is relative to the working directory of the process, while *Admin.db* and *hostsettings.json* stay in the installation folder.

To write the log to a fixed folder, set the environment variable `Logging__DSServerFile__Options__FolderPath` to an absolute path before you start the server. [Configuration](https://docs.textcontrol.com/ds-server/installation/configuration/llms-full.txt) describes the settings of *appsettings.json*.

### The Server Ends at Startup With an HTTPS Error

`dotnet TXTextControl.DocumentServices.dll` ends immediately with:

```text
Unhandled exception. System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.
To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
```

The *hostsettings.json* of the archive makes DS Server listen on HTTPS as well as HTTP:

```json
{
  "urls": "http://*:5000;https://*:5001"
}
```

HTTPS needs a certificate. On a machine with the .NET SDK, the ASP.NET Core developer certificate can fill in, but a server with only the runtime has none, and the process ends before it serves anything.

1. To run on HTTP only, for example behind a reverse proxy or for a first test, remove the HTTPS address from *hostsettings.json*:

    ```json
    {
      "urls": "http://*:5000"
    }
    ```
2. To serve HTTPS, configure a certificate for Kestrel instead, as [HTTPS](https://docs.textcontrol.com/ds-server/installation/https/llms-full.txt) describes. The blog article [DS Server: Enabling HTTPS for TX Text Control Document Services Using Kestrel](https://www.textcontrol.com/blog/2026/03/09/ds-server-enabling-https-for-tx-text-control-document-services-using-kestrel/) configures a PFX certificate in *appsettings.json*.
3. Start DS Server again and check the `Now listening on` lines in the log.

### The Server Ends Because the Port Is in Use

The process ends at startup with:

```text
Unhandled exception. System.IO.IOException: Failed to bind to address http://[::]:5000: address already in use.
 ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use
```

Another process, for example a second DS Server instance, already listens on the port.

1. Find the process that uses the port, for example with `sudo ss -ltnp` on Linux, and stop it if it's an old instance.
2. Or give this instance another port in *hostsettings.json*, as the next section shows.

### The Server Doesn't Listen on the Port You Set

You set `ASPNETCORE_URLS`, `DOTNET_URLS` or `ASPNETCORE_HTTP_PORTS`, but the log still reports `Now listening on: http://[::]:5000`. For `ASPNETCORE_HTTP_PORTS`, it also warns:

```text
[Warning] Overriding HTTP_PORTS '5059' and HTTPS_PORTS ''. Binding to values defined by URLS instead 'http://*:5000'.
```

The `urls` key of *hostsettings.json* takes precedence over these environment variables. Use one of the ways DS Server does accept:

1. Change `urls` in *hostsettings.json*, for example to `"http://*:8080"`.
2. Or pass the address on the command line:

    ```bash
    dotnet TXTextControl.DocumentServices.dll --urls http://localhost:8080
    ```
3. Or define a Kestrel endpoint, for example with the environment variable `Kestrel__Endpoints__Http__Url=http://localhost:8080`. The log then reports that it overrides the addresses of *hostsettings.json*.

### .NET Reports a Missing Framework

The `dotnet` command stops before DS Server starts:

```text
You must install or update .NET to run this application.

App: /opt/dsserver/TXTextControl.DocumentServices.dll
Architecture: x64
Framework: 'Microsoft.AspNetCore.App', version '10.0.0' (x64)
```

DS Server 5.0 is built with .NET 10. Its *TXTextControl.DocumentServices.runtimeconfig.json* requires the frameworks `Microsoft.NETCore.App` and `Microsoft.AspNetCore.App` in version 10.0.0 or later. A machine with only the .NET runtime, without ASP.NET Core, or with the .NET 8 runtimes that DS Server 4.x used, can't start it.

1. Install the .NET 10 runtimes that the [Requirements](https://docs.textcontrol.com/ds-server/installation/requirements/llms-full.txt) list for your platform and build: the ASP.NET Core Runtime 10.0 for Core, and for Classic also the Windows Desktop Runtimes.
2. Run `dotnet --list-runtimes` and check that `Microsoft.AspNetCore.App 10.0` is in the list.

### Every Document Request Says DS Server Is Not Registered

The server runs, the admin portal opens, but every endpoint of the DocumentProcessing Web API answers with status 400 and this body:

```json
"DS Server is not registered."
```

A new installation isn't licensed. Until it's registered, DS Server refuses all document processing: it has no trial mode and produces no watermarked output. The admin portal shows `UNREGISTERED` under **License User Name** on the **Licensing** page. The Document Editor and the Document Viewer show the same message; see [Document Editor and Viewer](https://docs.textcontrol.com/ds-server/troubleshooting/editor-viewer/#the-editor-or-viewer-says-ds-server-is-not-registered).

1. Open the admin portal and select **Licensing** in the menu.
2. Enter your serial number and register online or manually, as [Licensing](https://docs.textcontrol.com/ds-server/administration/licensing/llms-full.txt) describes.
3. To evaluate DS Server without a serial number, use a [Trial Token](https://docs.textcontrol.com/ds-server/getting-started/trial-token/llms-full.txt) with the Text Control trial server instead.

The license check comes before the check of the parameters, so a request with a wrong `returnFormat` also returns this message on an unregistered server.

### The Serial Number Is Rejected

Registering shows, under the **Serial** field or as the response of a licensing endpoint:

```text
Invalid serial string. A serial string consists of two upper case letters, followed by a dash and ten digits (e. g. XX-0000000000).
```

DS Server checks the form of the serial number before it contacts Text Control.

1. Copy the serial number from your Text Control account or the order confirmation again, without spaces before or after it.
2. Check that the two letters are upper case.

### The Browser Asks for a User Name and Password

Opening `http://<server>:5000/` shows the sign-in dialog of the browser instead of a page, or `http://<server>:5000/admin` returns 404.

The admin portal is at the root address of DS Server and is protected with HTTP Basic authentication: the dialog is the browser's own, and there is no sign-in page. After a new installation, the user name is `admin` and the password `admin`.

1. Open the root address, `http://<server>:5000/`, not */admin*.
2. Sign in with the admin credentials, and change the default password as [Default Admin Password](https://docs.textcontrol.com/ds-server/administration/admin-password/llms-full.txt) describes.

If the password isn't accepted, see [The Admin Password Is Lost](https://docs.textcontrol.com/ds-server/troubleshooting/authentication/#the-admin-password-is-lost).

### Related Pages

- [Manual Installation](https://docs.textcontrol.com/ds-server/installation/manual/llms-full.txt): starting DS Server with `dotnet` or under IIS.
- [Requirements](https://docs.textcontrol.com/ds-server/installation/requirements/llms-full.txt): the runtimes and Windows features each build needs.
- [Configuration](https://docs.textcontrol.com/ds-server/installation/configuration/llms-full.txt): *hostsettings.json*, *appsettings.json* and the log.
- [Linux](https://docs.textcontrol.com/ds-server/troubleshooting/linux/llms-full.txt): the limits of DS Server on Linux.
- [Authentication](https://docs.textcontrol.com/ds-server/troubleshooting/authentication/llms-full.txt): requests and tokens that DS Server refuses.

---

## Nearby

- **Previous:** [Troubleshooting](https://docs.textcontrol.com/ds-server/troubleshooting/llms-full.txt)
- **Next:** [Authentication](https://docs.textcontrol.com/ds-server/troubleshooting/authentication/llms-full.txt)
