Prefer Linux or Docker?
The same server runs beyond Windows
The chat server also runs on Linux behind Nginx and in Docker, all against the same SQL Server schema. Pick the platform your team already operates and keep the data in your own database.
Installing on Windows Server with IIS
DChat is a normal ASP.NET Core application, so it deploys the way any other one does. These are the steps that matter, including the two that catch people out.
-
1. Install the prerequisites
Install IIS first, then the ASP.NET Core Hosting Bundle for .NET 8 - it installs the runtime and the IIS module together. Restart IIS afterwards so the module is registered. You also need SQL Server 2014 or newer; Express is fine.
-
2. Create the database
Create an empty database, then run the two scripts from the package in order:
install-source\ZCHAT-APP-DB.sql -- tables
install-source\seed-data.sql -- initial accounts
The seed accounts exist so you can sign in immediately. Change those passwords before the server is reachable by anyone else - the dashboard shows a warning banner until you do.
-
3. Point the application at it
Put your connection string in Web\appsettings.json, or copy Web\appsettings.example.json and edit that. Keep Web\zchat.lic in the Web folder, and restart the site after changing either.
-
4. Create the IIS site
Point a site at the Web folder and set its application pool's .NET CLR version to No Managed Code. ASP.NET Core runs out of process, so IIS should not load a managed runtime for it. Bind your certificate for HTTPS.
-
5. Verify before announcing it
Open /health/ready - it should report database, licence and schema all healthy. Then sign in at /dashboard, open /widget-test.html, and run one conversation end to end.
Questions we get asked
What do I need on the Windows server?
The ASP.NET Core Hosting Bundle for .NET 8, which installs the runtime and the IIS module together, plus SQL Server 2014 or newer. Install the hosting bundle after IIS, and restart IIS afterwards so the module registers.
What application pool settings does DChat need?
Set the pool's .NET CLR version to 'No Managed Code'. ASP.NET Core runs out of process behind IIS, so IIS must not try to load a managed runtime for it.
Where do I put the connection string?
In Web\appsettings.json, or as an environment variable. The package includes appsettings.example.json to copy from. Restart the site after changing it.
How do I know the install succeeded?
Open /health/ready. It reports the database, licence and schema separately, so a failure names the dependency at fault rather than returning a bare error. /health/live confirms only that the process is answering.
How do I serve it over HTTPS?
Bind your certificate to the site in IIS as you would for any other application, and use the https address in the widget embed so the page and the widget share a scheme.