# Manual Installation

> Install DS Server from the archive without Docker: run it with dotnet on Linux as a systemd service, on Windows as a Windows service or in IIS, then sign in.

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

---

DS Server needs no installer. The download archive contains a published ASP.NET Core application, `TXTextControl.DocumentServices.dll` with its dependencies, and you install it by copying a folder to the server and starting it with `dotnet`. On Linux, you run the Core build, usually as a systemd service. On Windows, you run Core or Classic from the command line, as a Windows service or in IIS.

The sections below cover each of these ways, from extracting the archive to the first sign-in to the admin portal. For containers, use the Docker guides instead.

### Get the Archive

The current release is DS Server 5.0.2, in the archive *DS Server 5.0.2.zip*. Licensed customers download it from their Text Control account. To evaluate DS Server, sign in on the [DS Server download page](https://www.textcontrol.com/product/ds-server/download/) and download the 30-day trial version.

The archive has two folders:

| Folder | Build | Runs on |
|---|---|---|
| *core* | Core, cross-platform | Linux and Windows |
| *classic* | Classic | Windows only |

Install the runtimes that [Requirements](https://docs.textcontrol.com/ds-server/installation/requirements/llms-full.txt) lists for your build before you start DS Server.

### Remove or Configure the HTTPS Address

The file *hostsettings.json* in each folder sets the addresses DS Server listens on:

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

The HTTPS address needs a certificate. On a server with only the .NET runtime, DS Server ends at startup with this message:

```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.
```

> Important
>
> **HTTPS Address.** Before the first start, either remove the HTTPS address, so that the file contains `"urls": "http://*:5000"`, or configure a certificate as described in [HTTPS](https://docs.textcontrol.com/ds-server/installation/https/llms-full.txt). The file is not used when IIS hosts DS Server.

### Install on Linux

1. **Install the ASP.NET Core Runtime 10.0** for your distribution, as described in Microsoft's [Install .NET on Linux](https://learn.microsoft.com/en-us/dotnet/core/install/linux). Check it with `dotnet --list-runtimes`, which must list `Microsoft.AspNetCore.App` and `Microsoft.NETCore.App` with a version 10.0.x.
2. **Extract the Core build**, for example to */opt/dsserver/core*:

    ```bash
    sudo mkdir -p /opt/dsserver
    sudo unzip "DS Server 5.0.2.zip" "core/*" -d /opt/dsserver
    ```
3. **Edit *hostsettings.json*** as described [above](#remove-or-configure-the-https-address).
4. **Start DS Server** in its folder:

    ```bash
    cd /opt/dsserver/core
    sudo dotnet TXTextControl.DocumentServices.dll
    ```

    The console shows two lines about plugins and nothing else. DS Server writes its start messages to a log file in the *logs* folder of the working directory, one file per day, such as *logs/log\_20260929.log*:

    ```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.
    ```
5. **Open the admin portal** at `http://<server>:5000` and sign in, as described in [Sign In to the Admin Portal](#sign-in-to-the-admin-portal).

DS Server creates *Admin.db* and *Admin-log.db* in its own folder and the *logs* folder in the working directory of the process, so the user that runs it needs write access to both. The example uses `sudo` because */opt/dsserver* belongs to root; for a permanent installation, run DS Server as a service with its own user.

#### Run DS Server as a systemd Service

A systemd service starts DS Server with the machine and restarts it after a failure. Create a user for the service and give it the folder:

```bash
sudo useradd --system --no-create-home dsserver
sudo chown -R dsserver /opt/dsserver/core
```

Save the unit file */etc/systemd/system/dsserver.service*:

```text
[Unit]
Description=TX Text Control DS Server

[Service]
WorkingDirectory=/opt/dsserver/core
ExecStart=/usr/bin/dotnet /opt/dsserver/core/TXTextControl.DocumentServices.dll
Restart=always
RestartSec=10
User=dsserver

[Install]
WantedBy=multi-user.target
```

- **`WorkingDirectory`** is the DS Server folder. DS Server creates the *logs* folder in the working directory, not in its own folder.
- **`ExecStart`** starts DS Server with *dotnet*. `which dotnet` shows the path of *dotnet* on your machine.
- **Ports** come from *hostsettings.json*. DS Server ignores the environment variable `ASPNETCORE_URLS`; to use another address, change *hostsettings.json* or add `--urls http://*:8080` to `ExecStart`. See [Configuration](https://docs.textcontrol.com/ds-server/installation/configuration/#change-the-ports).

Enable and start the service, and check its state:

```bash
sudo systemctl daemon-reload
sudo systemctl enable --now dsserver.service
sudo systemctl status dsserver.service
```

The same unit works for the Core build on any systemd-based distribution. Microsoft's [Host ASP.NET Core on Linux with Nginx](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx) describes how to put nginx in front of such a service.

### Install on Windows

1. **Install the runtimes and components** from [Requirements](https://docs.textcontrol.com/ds-server/installation/requirements/llms-full.txt): the .NET 10 Hosting Bundle and the Visual C++ Redistributable, and for Classic also the .NET Desktop Runtimes 10.0 and 8.0.
2. **Extract the build** you chose, for example to *C:\\DSServer\\classic* or *C:\\DSServer\\core*.
3. **Edit *hostsettings.json*** as described [above](#remove-or-configure-the-https-address).
4. **Start DS Server** from a command prompt in the folder:

    ```powershell
    cd C:\DSServer\classic
    dotnet TXTextControl.DocumentServices.dll
    ```

    The Classic build can also be started with *TXTextControl.DocumentServices.exe*.
5. **Open the admin portal** at `http://localhost:5000` and sign in.

#### Run DS Server as a Windows Service

Since version 3.0, DS Server can be registered as a Windows service, which starts with Windows and runs without a signed-in user. A service doesn't start in the DS Server folder: its working directory is *C:\\Windows\\System32*. DS Server keeps *Admin.db* in its own folder, but it creates the *logs* folder in the working directory, so set an absolute log folder in *appsettings.json* first:

```json
{
  "Logging": {
    "DSServerFile": {
      "Options": {
        "FolderPath": "C:\\DSServer\\logs",
        "FileName": "log_{dateTime}.log"
      }
    }
  }
}
```

Change only `FolderPath` and keep the other settings of the file. Then register and start the service in an administrative PowerShell, here for the Classic build:

```powershell
New-Service -Name DSServer -BinaryPathName "C:\DSServer\classic\TXTextControl.DocumentServices.exe" -DisplayName "TX Text Control DS Server" -StartupType Automatic
Start-Service -Name DSServer
```

The service reads its ports from *hostsettings.json* in the DS Server folder. `Stop-Service -Name DSServer` stops it, and `sc.exe delete DSServer` removes it (`Remove-Service` needs PowerShell 6 or later). Microsoft's [Host ASP.NET Core in a Windows Service](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service) describes service accounts and recovery options.

### Host DS Server in IIS

IIS hosts DS Server in-process with the ASP.NET Core Module, as set by the *web.config* in each folder. The steps below add the Classic build as a new website on a Windows server with IIS enabled, as listed in [Requirements](https://docs.textcontrol.com/ds-server/installation/requirements/#windows-components). Install the .NET 10 Hosting Bundle after IIS, so that it adds the ASP.NET Core Module.

1. Extract the *classic* folder to a location on the server, for example *C:\\DSServer\\classic*.
2. Open the **Internet Information Services (IIS) Manager**. Right-click **Sites** and choose **Add Website...**.

    ![The context menu of the Sites node in IIS Manager with the entry Add Website.](https://docs.textcontrol.com/assets/img/ds-server/iis-add-website.0b0060be.webp)
3. Enter *DocumentServices* as the **Site name**, and select the *classic* folder as the **Physical path**. Set the binding of the site, its type, IP address, port and host name.

    ![The Add Website dialog of IIS Manager with the site name DocumentServices, the application pool DocumentServices, the physical path of DS Server and an http binding on port 80.](https://docs.textcontrol.com/assets/img/ds-server/iis-add-website-dialog.55d7870e.webp)
4. Click **OK**. IIS creates the site and an application pool with the same name.
5. Select **Application Pools**, select the pool *DocumentServices* and open **Advanced Settings...**.

    ![The Application Pools list of IIS Manager with the pool DocumentServices selected and the Advanced Settings action.](https://docs.textcontrol.com/assets/img/ds-server/iis-app-pool-settings.27ea0237.webp)
6. Set **.NET CLR Version** to **No Managed Code** and click **OK**. ASP.NET Core applications don't use the .NET Framework runtime of the pool.

    ![The Advanced Settings dialog of the application pool with .NET CLR Version set to No Managed Code.](https://docs.textcontrol.com/assets/img/ds-server/iis-no-managed-code.eb9cbc53.webp)
7. Give the identity of the application pool write access to the *classic* folder. DS Server creates *Admin.db* and its logs there.

Make sure the port of the binding, for example 80 or 443, is reachable through the firewall, and open the site in a browser, for example `https://yourdomain.com/`. If you add DS Server as an application below an existing site instead of as a site of its own, its address includes the application name, for example `https://yourdomain.com/DocumentServices`. That address is the service URL your applications connect to.

In IIS, the site bindings set the ports and HTTPS, not *hostsettings.json*. The *web.config* also sets request limits for IIS; see [Configuration](https://docs.textcontrol.com/ds-server/installation/configuration/#web-config-for-iis).

### Sign In to the Admin Portal

The admin portal is at the root of the service URL. The browser asks for a user name and password in its own sign-in dialog. Enter the default credentials:

- User name: `admin`
- Password: `admin`

The welcome page opens:

![The welcome page of the DS Server admin portal with the navigation Security Profiles, Licensing, Authentication and Plugins, a red box that asks to change the default admin password, and the tiles Security Profiles, Licensing and Authentication Servers.](https://docs.textcontrol.com/assets/img/ds-server/portal-welcome.63bc002c.webp)

A new installation is not registered: the Web API answers every DocumentProcessing request with "DS Server is not registered." until you register a serial number. Complete the installation in this order:

1. [Default Admin Password](https://docs.textcontrol.com/ds-server/administration/admin-password/llms-full.txt): replace the default password.
2. [Licensing](https://docs.textcontrol.com/ds-server/administration/licensing/llms-full.txt): register the server with your serial number.
3. [Creating Security Profiles](https://docs.textcontrol.com/ds-server/administration/security-profiles/llms-full.txt): create the credentials for your first application.

### Next Steps

- [Configuration](https://docs.textcontrol.com/ds-server/installation/configuration/llms-full.txt): ports, logging, the admin database and the folders of the installation.
- [HTTPS](https://docs.textcontrol.com/ds-server/installation/https/llms-full.txt): serve DS Server over HTTPS with Kestrel.
- [Getting Started](https://docs.textcontrol.com/ds-server/getting-started/llms-full.txt): connect a first application to your server.
- [Installation](https://docs.textcontrol.com/ds-server/troubleshooting/installation/llms-full.txt): what to check when DS Server doesn't start.

---

## Nearby

- **Previous:** [Installing Using Docker (Classic on Windows)](https://docs.textcontrol.com/ds-server/installation/docker-windows/llms-full.txt)
- **Next:** [Multiple Servers With Load Balancing](https://docs.textcontrol.com/ds-server/installation/load-balancing/llms-full.txt)
