Single/Multi Tenant Installation Steps
This section describes how to set up the Ed-Fi ODS / API in single/multi tenant mode. Before you proceed, make sure you have installed the prerequisites listed in Getting Started - Binary Installation.
Step 1. Download the Ed-Fi ODS / API Installer Packages
The Ed-Fi ODS / API installation packages can be downloaded from the following links:
Package Links
The required release packages to install the Ed-Fi ODS / API can be found at the links below. We recommend you stay current with the latest patch update that has been promoted to release.
- EdFi.Suite3.Installer.WebApi
- EdFi.Suite3.Installer.SwaggerUI (Optional, not for production)
- EdFi.Suite3.RestApi.Databases.5.2.0
For each of the downloads, right-click and select "Properties." Update the file extension (from .nupkg to .zip). Remove the version number (optional). Check the box next to Unblock (this will prevent PowerShell from asking for permission to load every module in the installer) and click OK.
You may need to configure TLS while running the installation scripts described in steps below.
[Net.ServicePointManager]::SecurityProtocol += [Net.SecurityProtocolType]::Tls12
File paths can become lengthy within the ODS/API package components.
In Windows, this may cause errors during deployment. To mitigate this,
consider extracting the packages close to the root directory (e.g., C:\temp
)
while running the installation steps below. Doing so minimizes the risk of
encountering excessively long file paths. Alternatively, you can enable long
paths in Windows.
Step 2. Install the Ed-Fi Databases
Extract the contents of the EdFi.Suite3.RestApi.Databases package. The paths in
these instructions assume that the package was extracted to a folder with the
name of the package (e.g., C:\temp\EdFi.Suite3.RestApi.Databases
).
Edit the configuration.json File
There are several settings in the configuration file that are left empty as they depend on whether you are opting of SQL Server or PostgreSQL backend. Update the settings by consulting the samples provided below.
- SQL Server
- PostgreSQL
- SQL Server (MultiTenant)
- PostgreSQL (MultiTenant)
{
"ConnectionStrings": {
"EdFi_Ods": "server=(local);trusted_connection=True;database=EdFi_{0};Application Name=EdFi.Ods.WebApi",
"EdFi_Security": "server=(local);trusted_connection=True;database=EdFi_Security;persist security info=True;Application Name=EdFi.Ods.WebApi",
"EdFi_Admin": "server=(local);trusted_connection=True;database=EdFi_Admin;Application Name=EdFi.Ods.WebApi",
"EdFi_Master": "server=(local);trusted_connection=True;database=master;Application Name=EdFi.Ods.WebApi"
},
"InstallType": "SingleTenant",
"ApiSettings": {
"Engine": "SQLServer",
...
"MinimalTemplateScript": "TPDMCoreMinimalTemplate",
"PopulatedTemplateScript": "TPDMCorePopulatedTemplate"
}
}
{
"ConnectionStrings": {
"EdFi_Ods": "host=localhost;port=5432;username=postgres;database=EdFi_{0};Application Name=EdFi.Ods.WebApi",
"EdFi_Security": "host=localhost;port=5432;username=postgres;database=EdFi_Security;Application Name=EdFi.Ods.WebApi",
"EdFi_Admin": "host=localhost;port=5432;username=postgres;database=EdFi_Admin;Application Name=EdFi.Ods.WebApi",
"EdFi_Master": "host=localhost;port=5432;username=postgres;database=postgres;Application Name=EdFi.Ods.WebApi"
},
"InstallType": "SingleTenant",
"ApiSettings": {
"Engine": "PostgreSQL",
...
"MinimalTemplateScript": "TPDMCorePostgreSqlMinimalTemplate",
"PopulatedTemplateScript": "TPDMCorePostgreSqlPopulatedTemplate"
}
}
{
"InstallType": "MultiTenant",
"ApiSettings": {
"Engine": "SQLServer",
"OdsTokens": "Tenant1ODS;Tenant2ODS",
"Features": [
...
{
"IsEnabled": true,
"Name": "MultiTenancy"
},
...
]
},
"Tenants" : {
"Tenant1": {
"ConnectionStrings": {
"EdFi_Security": "server=(local);trusted_connection=True;database=EdFi_Security_Tenant1;persist security info=True;application name=EdFi.Ods.WebApi;encrypt=False",
"EdFi_Admin": "server=(local);trusted_connection=True;database=EdFi_Admin_Tenant1;application name=EdFi.Ods.WebApi;encrypt=False"
}
},
"Tenant2": {
"ConnectionStrings": {
"EdFi_Security": "server=(local);trusted_connection=True;database=EdFi_Security_Tenant2;persist security info=True;application name=EdFi.Ods.WebApi;encrypt=False",
"EdFi_Admin": "server=(local);trusted_connection=True;database=EdFi_Admin_Tenant2;application name=EdFi.Ods.WebApi;encrypt=False"
}
}
}
}
{
"InstallType": "MultiTenant",
"ApiSettings": {
"Engine": "PostgreSQL",
"OdsTokens": "Tenant1ODS;Tenant2ODS",
"Features": [
...
{
"IsEnabled": true,
"Name": "MultiTenancy"
},
...
]
},
"Tenants" : {
"Tenant1": {
"ConnectionStrings": {
"EdFi_Security": "host=localhost;port=5432;username=postgres;database=EdFi_Security_Tenant1;application name=EdFi.Ods.WebApi",
"EdFi_Admin": "host=localhost;port=5432;username=postgres;database=EdFi_Admin_Tenant1;application name=EdFi.Ods.WebApi"
}
},
"Tenant2": {
"ConnectionStrings": {
"EdFi_Security": "host=localhost;port=5432;username=postgres;database=EdFi_Security_Tenant2;application name=EdFi.Ods.WebApi",
"EdFi_Admin": "host=localhost;port=5432;username=postgres;database=EdFi_Admin_Tenant2;application name=EdFi.Ods.WebApi"
}
}
}
}