Skip to content

Installing As a Windows Service

farus13 edited this page Dec 1, 2022 · 11 revisions

Loosely based upon the instructions found here. I crafted the following and it provided me with a fully working sinopia service installation:

  1. Create a directory for sinopia
    • mkdir c:\sinopia
    • cd c:\sinopia
  2. Install sinopia locally (I ran into npm issues with global installs)
    • npm install sinopia
  3. Create your config.yaml file in this location (c:\sinopia\config.yaml)
  4. Windows Service Setup
    • Using NSSM:

      • Download NSSM and extract

      • Open an administrative command

      • Browse to the nssm extract location

      • Run nssm install sinopia At a minimum you must fill in the Application tab Path, Startup directory and Arguments fields. Assuming an install with node in the system path and a location of c:\sinopia the below values will work:

        • Path: node
        • Startup directory: c:\sinopia
        • Arguments: c:\sinopia\node_modules\sinopia\lib\cli.js -c c:\sinopia\config.yaml

        You can adjust other service settings under other tabs as desired. When you are done, click Install service button

      • Start the service sc start sinopia

    • Using WinSW

      • Download WinSW
        • Place the executable (e.g. winsw-1.19-bin.exe) into this folder (c:\sinopia) and rename it to sinopia-winsw.exe
      • Create a configuration file in c:\sinopia, named sinopia-winsw.xml with the following configuration
<service>
  <id>sinopia</id>
  <name>sinopia</name>
  <description>sinopia</description>
  <executable>node</executable>
  <arguments>c:\sinopia\node_modules\sinopia\lib\cli.js -c c:\sinopia\config.yaml</arguments>
  <logmode>roll</logmode>
  <workingdirectory>c:\sinopia\</workingdirectory>
</service>
    * Install your service
        * `cd c:\sinopia`
        * `sinopia-winsw.exe install`
    * Start your service
        * `sinopia-winsw.exe start`

Some of the above config is more verbose than I had expected, it appears as though 'workingdirectory' is ignored, but other than that, this works for me and allows my sinopia instance to persist between restarts of the server, and also restart itself should there be any crashes of the sinopia process.

Clone this wiki locally