This page is part of a static HTML representation of the TiddlyWiki at https://tiddlywiki.com/

Installing TiddlyWiki on Microsoft Internet Information Server

7th May 2020 at 10:58am

Microsoft's Internet Information Server (IIS) is the built-in web server for Windows. It can be useful to host TiddlyWiki within IIS in order to take advantage of IIS features like URL rewriting, static file hosting and automatic restarts after a crash.

1. Enable IIS

  1. In Windows, access the Control Panel and click Add or Remove Programs
  2. In the Add or Remove Programs window, click Add/Remove Windows Components.
  3. Select the Internet Information Services (IIS) check box
  4. Click Next, then click Finish

2. Install the required tools

  1. Install the IIS module HttpPlatformHandler from https://www.iis.net/downloads/microsoft/httpplatformhandler
  2. Install Node.js from https://nodejs.org/
  3. Install Git from https://git-scm.com/
    • optional; only required when using the latest TiddlyWiki release pulled directly from GitHub – see below

3. Install TiddlyWiki and setup a new wiki

  1. Create a convenient directory for the wiki (e.g. C:\MyStuff)
  2. Within it, create a file called C:\MyStuff\package.json with the content:
    {
        "name": "MyStuff",
        "description": "A description of this wiki",
        "dependencies": {
            "sax": "1.2.4",
            "tiddlywiki": "*"
        }
    }
  3. Also create a file called C:\MyStuff\web.config with the content:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <handlers>
                <add 
                    name="httpplatformhandler"
                    path="*"
                    verb="*"
                    modules="httpPlatformHandler"
                    resourceType="Unspecified"
                    requireAccess="Script" />
            </handlers>
            <httpPlatform 
               stdoutLogEnabled="true"
               stdoutLogFile=".\node.log"
               startupTimeLimit="20"
               processPath="C:\Program Files\nodejs\node.exe"
               arguments=".\node_modules\tiddlywiki\tiddlywiki.js ./wiki --listen port=PORT path-prefix=/MyApp">
                <environmentVariables>
                    <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
                    <environmentVariable name="NODE_ENV" value="Production" />
                </environmentVariables>            
            </httpPlatform>
        </system.webServer>
    </configuration>
    
  4. Create a subdirectory called "wiki" (i.e. C:\MyStuff\wiki)
  5. Create a file called C:\MyStuff\wiki\tiddlywiki.info with the content:
    {
    	"description": "My wiki",
    	"plugins": [
    		"tiddlywiki/tiddlyweb",
    		"tiddlywiki/filesystem"
    	],
    	"themes": [
    		"tiddlywiki/vanilla",
    		"tiddlywiki/snowwhite"
    	]
    }
    
  6. Create a subdirectory called "tiddlers" (i.e. C:\MyStuff\wiki\tiddlers)
  7. Within it, create a file called C:\MyStuff\wiki\tiddlers\config-tiddlyweb-host.tid with the content:
    title: $:/config/tiddlyweb/host
    text: $protocol$//$host$/MyApp/
    
    • (See the documentation for details of the configuration fields for HttpPlatformHandler
  8. Execute the command npm install within the C:/MyStuff directory

4. Setup the application in IIS

  • In Windows, run the IIS Manager application (use the start menu to run inetmgr.exe)
  • Locate the server in the Connections column on the left, and click the disclosure triangle to show its content
  • Open the Sites folder
  • Right click on the Default Web Site entry, and select Add application.. from the menu
  • Enter the following information in the dialogue box:
    1. Alias: MyApp
    2. Physical path: C:\MyStuff
  • Click OK

5. Test the application

Test the app by visiting http://localhost/MyApp/ in a browser.

Notes

  • If you require authentication, specify a username and password in the --listen command in web.config. For example:
    • arguments=".\node_modules\tiddlywiki\tiddlywiki.js ./wiki-server --listen username=joe &quot;password=bloggs&quot; port=PORT path-prefix=/MyApp">
    • Take note of the need to use double quotes around non-alphanumeric passwords, and to HTML encode them into &quot;
  • If you change the settings in the web.config file, or modify the app code, then you'll need to restart the server using the IIS manager application