Manual Installation
This documentation serves only as a reference to how our products our configured on Windows. and may help you troubleshoot problems that you couldn't fix by reinstalling with InedoHub.
Please do not attempt to install our products manually.
This documentation is based the installation script run by the Inedo Hub when installing ProGet 2025. For earlier versions (i.e. ProGet 2024, BuildMaster 2024, and Otter 2024), see manual-installation (github.com).
Extract Installation Package
The installation package can be downloaded from our Products Release Feed.
It will contain two sub-packages that you need to extract the installation directory (e.g. %ProgramFiles%
):
Path within Package | Destination Directory |
---|---|
/package/Service |
%ProgramFiles%\Service |
/package/Extensions |
%ProgramFiles%\Extensions |
Any other files/directories you find in the installation package are not needed and should not be extracted to the installation directory.
Create Database
There are two supported database backends.
PostgreSQL Database
SQL Server
If you don't already have SQL Server installed, you can download and install the latest version of SQL Server Express: https://www.microsoft.com/en-us/sql-server/sql-server-editions-express.
When installing SQL Server, we recommend naming your new instance INEDO
.
Creating a SQL Server Database
We recommend naming your database ProGet
, BuildMaster
, or Otter
, depending on the Inedo Product you're installing.
The database collation must be SQL_Latin1_General_CP1_CI_AS
to ensure case-insensitivity in default text comparisons.
You will also need to create a database user based on a server login (see CREATE LOGIN), and grant that user the appropriate permissions.
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]
ALTER USER [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_owner] ADD MEMBER [NT AUTHORITY\NETWORK SERVICE]
Finally, make sure to set the database recovery model to Simple; this will significantly improve performance. The default (Full) model does not offer any benefit to Inedo product usage.
Create Configuration File
You will need to create an Installation Configuration File in the %ProgramData%\Inedo\SharedConfig\
.
For example, ProGet's configuration file would be C:\ProgramData\Inedo\SharedConfig\ProGet.config
and look something like this:
<?xml version="1.0" encoding="utf-8"?>
<InedoAppConfig>
<ConnectionString>server=localhost;database=proget;integrated security=sspi;</ConnectionString>
<EncryptionKey>1fa97faa42744155a879c056a70c11a7</EncryptionKey>
<WebServer Urls="http://*:8624" />
</InedoAppConfig>
Note that you can simply useNew-Guid
to create an Encryption Key.
Register Windows Service
The %ProgramFiles\«inedo-product»\Service
directory will contain the main service executable «inedo-product».exe
. You can run this program from an elevated command prompt or PowerShell window to install the Windows Service using the install
command.
For example, to install ProGet, you would run:
%ProgramFiles\ProGet\Service\proget.exe install
This will create a service named INEDOPROGETSVC
that runs under NT AUTHORITY\NETWORK SERVICE
.
The service can then be run via the Windows Service Controller or with the Start-Service
PowerShell CmdLet.
First Run Configuration
Once the service is started, your Inedo product should be accessible through the binding you specified in the configuration file. The first time you access your Inedo product through the site, some additional settings will need to be configured.
Once you log-in to your Inedo product for the first time, you can visit the Administration > Advanced Settings page to finalize the configuration stored in the database.
Create & Configure Data Directories
The following settings within the product that must be configured, their corresponding directories, and their installer defaults are listed below:
Setting | Description | Installer Default |
---|---|---|
Extensions.BuiltInExtensionsPath |
path containing extensions included with the installation package | C:\Program Files\«inedo-product»\Extensions |
Extensions.ExtensionsPath |
the disk path where downloaded extensions are stored and loaded from by ProGet | C:\ProgramData\«inedo-product»\Extensions |
Extensions.CommonCachePath |
temp path where extensions loaded from ExtensionsPath are extracted to and loaded by the «inedo-product» service |
C:\ProgramData\«inedo-product»\ExtensionsCache |
Storage.PackagesRootPath |
ProGet Only base path on disk for ProGet's default package store | C:\ProgramData\ProGet\Packages (more info) |
Artifacts.BasePath |
BuildMaster Only base path on disk for BuildMaster's default artifact store | C:\ProgramData\BuildMaster\Artifacts |
The directories referenced in the configuration values must exist before you start using your Inedo software, because the Inedo product does not create them for you.
If these directories do not exist, the Diagnostic Center will log various errors related to extensions and/or the packages may be stored on disk in an undefined manner. If the directories did not exist, but your Inedo product has already been started, the Windows service must be restarted.
Each of these directories can be assigned to a path on a local volume or UNC share provided that the user account specified as the "log on user" for the Windows Service has read/write/delete access to them.
We do not recommend using a mapped drive (e.g. X:\Packages
) to reference directories for the reasons described here. Instead, use the full UNC path that the drive is mapped to, for example: \\file-sv01\$x\packages
If you do attempt to use a mapped drive (or you are installing on Azure using Azure Files as the backing store), you may need to configure the application pool to set the Load User Profile
property to True
.
ProGet only: Packages Root Path
The Storage.PackagesRootPath
setting defines the base storage location on disk for packages managed by ProGet's default package store. Its value is stored in the database and assignable on the Advanced Settings page.
There are several other packages path settings (e.g., Storage.NpmPackagesLibrary
, Storage.MavenArtifactLibrary
) that are relative to the Storage.PackagesRootPath
by default. If one of these settings is individually set, it will override the default behavior of being relative to the root path. To restore that behavior, save the desired field with an empty value.
Troubleshooting
We don't maintain any troubleshooting documentation anymore, but we used to have some guides that are probably irrelevant now.