1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Fossil as a Windows Service
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If you need Fossil to start automatically on Windows, it is suggested to install
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Fossil as a Windows Service.
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Assumptions
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. You have Administrative access to a Windows 2012r2 or above server.
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. You have PowerShell 5.1 or above installed.
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Place Fossil on Server
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
However you obtained your copy of Fossil, it is recommended that you follow
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Windows conventions and place it within `\Program Files\FossilSCM`, the
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
proper location for the official 64-bit binary.
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This way Fossil is at an expected location and you will have minimal issues with
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Windows interfering in your ability to run Fossil as a service. You will need
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Administrative rights to place fossil at the recommended location. If you will
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
only be running Fossil as a service, you do not need to add this location to the
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
path, though you may do so if you wish.
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Installing Fossil as a Service
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Luckily the hard work to use Fossil as a Windows Service has been done by the
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Fossil team. We simply have to install it with the proper command line options.
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Fossil on Windows has a command `fossil winsrv` to allow installing Fossil as a
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
service on Windows. This command is only documented on the windows executable
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
of Fossil. You must also run the command as administrator for it to be
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
successful.
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Fossil winsrv Example
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The simplest form of the command is:
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
fossil winsrv create --repository D:/Path/to/Repo.fossil
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This will create a windows service named 'Fossil-DSCM' running under the local
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
system account and accessible on port 8080 by default. `fossil winsrv` can also
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
start, stop, and delete the service. For all available options, please execute
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`fossil help winsrv` on a windows install of Fossil.
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If you wish to serve a directory of repositories, the `fossil winsrv` command
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
requires a slightly different set of options vs. `fossil server`:
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
fossil winsrv create --repository D:/Path/to/Repos --repolist
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Choice of Directory Considerations
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When the Fossil server will be used at times that files may be locked
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
during virus scanning, it is prudent to arrange that its directory used
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for temporary files is exempted from such scanning. Ordinarily, this
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
will be a subdirectory named "fossil" in the temporary directory given
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
by the Windows GetTempPath(...) API, [namely](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-gettemppathw#remarks)
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
the value of the first existing environment variable from `%TMP%`, `%TEMP%`,
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`%USERPROFILE%`, and `%SystemRoot%`; you can look for their actual values in
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
your system by accessing the `/test-env` webpage.
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Excluding this subdirectory will avoid certain rare failures where the
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
fossil.exe process is unable to use the directory normally during a scan.
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### <a id='PowerShell'></a>Advanced service installation using PowerShell
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
As great as `fossil winsrv` is, it does not have one to one reflection of all of
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
the `fossil server` [options](/help/server). When you need to use some of
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
the more advanced options, such as `--https`, `--skin`, or `--extroot`, you will
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
need to use PowerShell to configure and install the Windows service.
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
PowerShell provides the [New-Service](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-service?view=powershell-5.1)
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
command, which we can use to install and configure Fossil as a service. The
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
below should all be entered as a single line in an Administrative PowerShell
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
console.
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```PowerShell
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
New-Service -Name fossil -DisplayName fossil -BinaryPathName '"C:\Program Files\FossilSCM\fossil.exe" server --port 8080 --repolist "D:/Path/to/Repos"' -StartupType Automatic
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Please note the use of forward slashes in the repolist path passed to Fossil.
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Windows will accept either back slashes or forward slashes in path names, but
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Fossil has a preference for forward slashes. The use of `--repolist` will make
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this a multiple repository server. If you want to serve only a single
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
repository, then leave off the `--repolist` parameter and provide the full path
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
to the proper repository file. Other options are listed in the
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[fossil server](/help/server) documentation.
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The service will be installed by default to use the Local Service account.
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Since Fossil only needs access to local files, this is fine and causes no
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
issues. The service will not be running once installed. You will need to start
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
it to proceed (the `-StartupType Automatic` parameter to `New-Service` will
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
result in the service auto-starting on boot). This can be done by entering
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```PowerShell
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Start-Service -Name fossil
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
in the PowerShell console.
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Congratulations, you now have a base http accessible Fossil server running on
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Windows.
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Removing the Windows Service
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If you want to remove the Fossil service, execute the following from an
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Administrative PowerShell or Command Prompt console:
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
sc.exe delete fossil
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If you have Powershell version 6.0 or later, you can use:
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```PowerShell
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Remove-Service -Name fossil
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
with the same effect.
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
*[Return to the top-level Fossil server article.](../)*
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!