Skip to content

Installation

Installation requirements

Install node.js

Install Node.js on your server: https://nodejs.org/

Install yarn

bash
npm install yarn -g

Log in to Septima NPM server

bash
npm login --scope=@septima --registry=https://packages.septima.dk/repository/npm-hosted/

username: readonly password: [Contact Septima]

Install Onedoor

Create an install folder. E.g. C:\onedoor\sites\onedoor-test.minkommune.dk

Download and extract desired onedoor version https://github.com/Septima/OneDoor/releases to your install folder.

In a command prompt, navigate to install folder and execute command:

yarn

This should create the following file structure with a default configuration folder:

├── CHANGELOG.md
├── config
├── node_modules
├── package.json
├── postinstall.js
├── README.md
├── web.config
└── yarn.lock

Konfiguration

Øverste konfigurationsfil for OneDoor Server. Læses af septima-search ved opstart og bruges til serverport, CORS, logniveau og frontpage-type. Denne fil ligger øverst i konfigurationshierarkiet. Konfigurationen nedarves til underliggende konfigurationer.

Fil: config/config.json


Indstillinger

servername

  • Formål: Beskrivende navn for serveren, bruges i API-metadata og fejlbeskeder.
  • Fil: config/config.json, linje 2
  • Værdier: Tekststreng
  • Eksempel: "servername": "Demo"
  • Standard: "Septima Search Server" (hvis udeladt)

port

  • Formål: Port som serveren lytter på. Kan overstyres af miljøvariablen PORT.
  • Fil: config/config.json, linje 3
  • Værdier: Tal (fx 3000)
  • Eksempel: "port": 3000
  • Standard: 3000 (hvis udeladt)

logLevel

  • Formål: Logniveau for serverlogger (pino). Bruges både ved stdout og fil-logning.
  • Fil: config/config.json, linje 4
  • Værdier: "trace" | "debug" | "info" | "warn" | "error"
  • Eksempel: "logLevel": "debug"
  • Standard: "error" (hvis udeladt)

frontpage

  • Formål: Type af forside / startvisning.
  • Fil: config/config.json, linje 5
  • Værdier: "tree" (organisations/configurations-træ) eller anden fordefineret type
  • Eksempel: "frontpage": "tree"
  • Standard: "tree" (hvis udeladt)

uiDevMode

  • Formål: Om dev-/bluescreen UI skal vises (fx fejlsider til udvikling).
  • Fil: config/config.json, linje 6
  • Værdier: true | false
  • Eksempel: "uiDevMode": false
  • Standard: false (hvis udeladt)

allow_origins

  • Formål: CORS-origins der må kalde API'et. Bruges af CORS-middleware.
  • Fil: config/config.json, linje 7-12
  • Værdier: Array af strenge (URL'er) eller ["*"] for alle
  • Eksempel:
json
"allow_origins": [
  "*",
  "http://septima.dk",
  "http://localhost:7001"
]
  • Standard: ["*"] (alle origins tilladt, hvis udeladt)

Eksempel – fuld config.json

json
{
  "servername": "OneDoor test",
  "port": 4000,
  "publicEndpoint": "http://test.onedoor.mitunikkedomæne.dk/",
  "logLevel": "error",
  "frontpage": "tree",
  "uiDevMode": false,
  "allow_origins": ["*", "http://septima.dk", "http://localhost:7001"]
}

Run onedoor under IIS on windows

Learn more here: https://onedoor.test.septima.dk/guide/iisnode.html

Configure IIS

IIS Manager

  • nyt site
    IIS Manager – nyt site

  • To allow handlers section it might be needed to unlock configuration section system.webServer/handlers in IIS configuration editor at server level: IIS – unlock handlers section

Test in browser

  • Test url onedoor-test.minkommune.dk in favourite browser

The web.config in the install folder should look something like this:

xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appSettings>
		<add key="CONFIG_PATH" value="C:\onedoor\sites\onedoor-test.minkommune.dk\config" />
	</appSettings>
	<system.webServer>
		<iisnode      
		      node_env="%node_env%"
                      nodeProcessCommandLine="C:\Program Files\nodejs\node.exe"
		      nodeProcessCountPerApplication="1"
		      maxConcurrentRequestsPerProcess="1024"
		      maxNamedPipeConnectionRetry="100"
		      namedPipeConnectionRetryDelay="250"      
		      maxNamedPipeConnectionPoolSize="512"
		      maxNamedPipePooledConnectionAge="30000"
		      asyncCompletionThreadCount="0"
		      initialRequestBufferSize="4096"
		      maxRequestBufferSize="65536"
		      watchedFiles="*.yml"
		      uncFileChangesPollingInterval="5000"      
		      gracefulShutdownTimeout="60000"
		      loggingEnabled="true"
		      logDirectory="C:\onedoor\sites\onedoor-test.minkommune.dk\log"
		      debuggingEnabled="true"
		      debugHeaderEnabled="false"
		      debuggerPortRange="5058-6058"
		      debuggerPathSegment="debug"
		      maxLogFileSizeInKB="128"
		      maxTotalLogFileSizeInKB="1024"
		      maxLogFiles="20"
		      devErrorsEnabled="true"
		      flushResponse="false"      
		      enableXFF="false"
		      promoteServerVars="LOGON_USER"
		      configOverrides="iisnode.yml"
     />
		<handlers>
			<add name="iisnode" path="node_modules/@septima/onedoor-server/index.cjs" verb="*" modules="iisnode" />
		</handlers>
		<rewrite>
			<rules>
				<rule name="onedoor-server">
					<match url="/*" />
					<action type="Rewrite" url="node_modules/@septima/onedoor-server/index.cjs" />
				</rule>
			</rules>
		</rewrite>
    <security>

    <!-- FOR SSO -->
      <authentication>
        <!-- ONLY Kerberos – no NTLM = no Windows Security popup -->
        <windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true">
          <providers>
            <clear />
            <add value="Negotiate" />
          </providers>
          <extendedProtection tokenChecking="None" />
        </windowsAuthentication>

        <anonymousAuthentication enabled="false" />
        <basicAuthentication enabled="false" />
      </authentication>

    </security>

	</system.webServer>


</configuration>

Change OneDoor version (IIS)

Stop IIS application pools

IIS Manager – stop application pools

IIS Manager – application pools

Choose version

Edit version @septima/onedoor-server in package.json:

json
{
  "type": "module",
  "dependencies": {
    "@septima/onedoor-server": "1.17.0"
  },
  "scripts": {
    "postinstall": "node postinstall"
  }
}

In a command prompt, navigate to install folder and execute command:

yarn

Start the IIS application pools again. Now your site is running the selected version.

For SSO

If SSO used in web.config:

IT afdeling skal aktivere dette med følgende kommandoer (eksempel — erstat værtsnavne og serverkonto med jeres egne):

setspn -s HTTP/test-onedoor.minkommune.dk APPSERVER01$
setspn -s HTTP/test-onedoor.minkommune.dk APPSERVER01
setspn -s HTTP/onedoor.minkommune.dk APPSERVER01$
setspn -s HTTP/onedoor.minkommune.dk APPSERVER01

Disse kommandoer registrerer SPN'er (Service Principal Names) i Active Directory for Kerberos SSO:

setspn -s HTTP/test-onedoor.minkommune.dk APPSERVER01$: Tilføjer SPN til serverens computerkonto (med $).

setspn -s HTTP/test-onedoor.minkommune.dk APPSERVER01: Tilføjer samme SPN til serverens brugerkonto (uden $).

De næste to gør det samme for værtsnavnet onedoor.minkommune.dk.

-s tjekker for duplikater og tilføjer kun hvis fraværende. Dette muliggør Windows Authentication uden login-prompt.

IT afdeling skal også tilføje sites til Local Intranet zone på brugernes PC.

Kopier OneDoor fra test til produktion (IIS)

Vejledning til at overføre en OneDoor-installation fra test til produktion ved IIS.

Forudsætning

Du har en fungerende test-installation med bl.a.:

  • Installationsmappe (fx C:\onedoor\sites\onedoor-test.minkommune.dk)
  • Config-mappe med organisations og configurations
  • IIS-site der kører onedoor-server via iisnode

Princip: To separate installationer

Anbefaling: Hold test og produktion som to adskilte installationer:

TestProduktion
MappeC:\onedoor\sites\onedoor-test.minkommune.dkC:\onedoor\sites\onedoor.minkommune.dk
Config...\config...\config
IIS-siteonedoor-test.minkommune.dkonedoor.minkommune.dk

Trin 1: Opret produktionsmappe (første gang)

C:\onedoor\sites\onedoor.minkommune.dk\
├── config\
├── log\
├── node_modules\   (via pnpm add)
├── package.json
└── web.config

Installer OneDoor som beskrevet i README (pnpm add, kopier config). Brug et fast versionsnummer i package.json (fx "@septima/onedoor-server": "1.2.3").

Trin 2: Kopier config fra test til produktion

Vigtigt: Kun config-mappen indeholder din tilpasning. node_modules kommer fra pnpm.

PowerShell:

powershell
# Erstat config helt (backup først!)
Copy-Item -Path "C:\onedoor\sites\onedoor-test.minkommune.dk\config" `
          -Destination "C:\onedoor\sites\onedoor.minkommune.dk\config" `
          -Recurse -Force

Manuelt: Kopiér hele mappen config fra test til produktion og overskriv.

Trin 3: Opdater produktions-specifikke værdier

Rediger i produktions-config efter kopi:

config/config.json

json
{
  "servername": "Esbjerg Produktion",
  "publicEndpoint": "https://onedoor.minkommune.dk/",
  "logLevel": "warn"
}

config/onedoor/config.yml

  • auth – tokens, ldap, permissions (produktions-credentials)
  • admin.db – evt. adskilt produktionsdatabase

config/organisations/.../configurations/.../params.yml

  • datafordeler.username og password – brug produktions-credentials til Datafordeleren
  • skraafoto.token – produktions-token
  • poi.token – produktions-token
  • Andre API-tokens og adresser

Trin 4: Opdater web.config i produktion

Sæt korrekt CONFIG_PATH og logDirectory:

xml
<appSettings>
  <add key="CONFIG_PATH" value="C:\onedoor\sites\onedoor.minkommune.dk\config" />
</appSettings>
xml
logDirectory="C:\onedoor\sites\onedoor.minkommune.dk\log"

Trin 5: Opret IIS-site for produktion

  1. IIS Manager → Sites → Add Website
  2. Site name: fx onedoor-produktion
  3. Binding: onedoor.minkommune.dk (HTTPS anbefalet)
  4. Physical path: C:\onedoor\sites\onedoor.minkommune.dk
  5. Application Pool: .NET CLR = "No Managed Code"; 32-bit = false
  6. Tjek at iisnode, URL Rewrite og ARR er installeret (som i README)

Senere opdateringer (test → prod)

Når du har ændret config i test og vil overføre til produktion:

  1. Backup produktions-config:

    powershell
    Copy-Item -Path "C:\onedoor\sites\onedoor.minkommune.dk\config" `
              -Destination "C:\onedoor\backup\config-$(Get-Date -Format 'yyyyMMdd-HHmm')" -Recurse
  2. Kopier kun de mapper/filer du har ændret – eller hele config hvis du overskriver credentials bagefter.

  3. Opdater produktions-credentials i params.yml (datafordeler, skraafoto, poi osv.).

  4. Genstart IIS-site eller Application Pool for produktion.

Checkliste før go-live

  • [ ] CONFIG_PATH i web.config peger på produktions-config
  • [ ] config.json: publicEndpoint, servername, logLevel
  • [ ] params.yml: datafordeler, skraafoto, poi og andre tokens med produktionsværdier
  • [ ] config/onedoor/config.yml: auth, evt. admin-database
  • [ ] IIS-binding med HTTPS
  • [ ] Backup af produktions-config taget

Automatisering (valgfrit)

Et PowerShell-script kan:

  1. Backup produktions-config
  2. Kopiere config fra test
  3. Erstatte kendte credentials via placeholder eller separat secrets-fil

For sikkerhed bør credentials ikke stå i scriptet – brug miljøvariabler eller en krypteret secrets-fil.

Fejlsøgning

ProblemTjek
500 efter deployiisnode-log i log-mappen, CONFIG_PATH korrekt
Forkerte dataparams.yml med prod-credentials?
CORS-fejlconfig.json allow_origins, publicEndpoint

Se Installations vejledning for IIS-opsætning og iisnode.

Run Onedoor from prompt

Run onedoor with your the default config

UNIX:

bash
CONFIG_PATH=/mnt/data/apps/myonedoor/config node ./node_modules/@septima/onedoor-server/

WINDOWS:

bash
>set CONFIG_PATH=C:\onedoor\sites\onedoor-test.minkommune.dk\config
>node ./node_modules/@septima/onedoor-server/

Optional settings

Edit the top level config file, config.json

  • servername - a descriptive name
  • port - the server port. Usually 3000+
  • publicEndpoint - The host name of your server
json
{
  "servername": "minkommune test",
  "port": 4000,
  "logLevel": "error",
  "frontpage": "tree",
  "uiDevMode": false
}