Installation
Installation requirements
Install node.js
Install Node.js on your server: https://nodejs.org/
Install yarn
bash
npm install yarn -gLog 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:
yarnThis 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.lockKonfiguration
Ø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
- Install IIS ARR https://www.iis.net/downloads/microsoft/application-request-routing
- Install IIS URL Rewrite https://www.iis.net/downloads/microsoft/url-rewrite
- Install IIS iisnode https://github.com/Azure/iisnode
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:

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


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:
yarnStart 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 APPSERVER01Disse 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:
| Test | Produktion | |
|---|---|---|
| Mappe | C:\onedoor\sites\onedoor-test.minkommune.dk | C:\onedoor\sites\onedoor.minkommune.dk |
| Config | ...\config | ...\config |
| IIS-site | onedoor-test.minkommune.dk | onedoor.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.configInstaller 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 -ForceManuelt: 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.usernameogpassword– brug produktions-credentials til Datafordelerenskraafoto.token– produktions-tokenpoi.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
- IIS Manager → Sites → Add Website
- Site name: fx
onedoor-produktion - Binding:
onedoor.minkommune.dk(HTTPS anbefalet) - Physical path:
C:\onedoor\sites\onedoor.minkommune.dk - Application Pool: .NET CLR = "No Managed Code"; 32-bit = false
- 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:
Backup produktions-config:
powershellCopy-Item -Path "C:\onedoor\sites\onedoor.minkommune.dk\config" ` -Destination "C:\onedoor\backup\config-$(Get-Date -Format 'yyyyMMdd-HHmm')" -RecurseKopier kun de mapper/filer du har ændret – eller hele config hvis du overskriver credentials bagefter.
Opdater produktions-credentials i params.yml (datafordeler, skraafoto, poi osv.).
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:
- Backup produktions-config
- Kopiere config fra test
- 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
| Problem | Tjek |
|---|---|
| 500 efter deploy | iisnode-log i log-mappen, CONFIG_PATH korrekt |
| Forkerte data | params.yml med prod-credentials? |
| CORS-fejl | config.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
}