DBGate is an ASP.NET Core 3 application built on the cross-platform Kestrel web server for ASP.NET Core.
Kestrel can be used by itself or with a reverse proxy server, such as Internet Information Services (IIS), Nginx, or Apache.
Below are useful links to learn about installing and tuning ASP.NET Core applications in different scenarios:
Below are the short step-by-step guides that help to deploy DBGate for the first time.
Go to Installing DBGate on Linux.
To create an application pool, open the IIS Manager, select Application Pools, and click the Add Application Pool... action.
Use the following values:
Use this scenario to create a subdomain like dbgate.contoso.com.
Also, use it to create a local website accessible through a URL like http://dbgate.
In the last case, also add the following line to the c:\windows\system32\drivers\etc\hosts file:
127.0.0.1 dbgate
To create a website, select the Sites node and click the Add Website... action.
Then use the following values:
Note that it is important to choose the dbgate application pool created in the previous step.
To test the local website installation, open the URL:
http://dbgate
You have to see the index page. Play with samples. DBGate loads data from an online SQL Server database.
For example, try the s02/cashbook table:
Do not use DBGate over HTTP as it uses the basic authentication and sends logins and passwords as plain text.
Always turn on HTTPS and redirect HTTP to HTTPS.
Below are steps to create a self-signed certificate.
New-SelfSignedCertificate -NotBefore (Get-Date) -NotAfter (Get-Date).AddYears(5) -DnsName "localhost", "dbgate" -KeyAlgorithm "RSA" -KeyLength 2048 -HashAlgorithm "SHA256" -CertStoreLocation "Cert:\LocalMachine\My" -KeyUsage KeyEncipherment -FriendlyName "DBGate Certificate" -TextExtension @("2.5.29.19={critical}{text}","2.5.29.37={critical}{text}1.3.6.1.5.5.7.3.1")It creates a self-signed certificate for localhost and dbgate hosts. See more details here: New-SelfSignedCertificate
To roll back the changes, restore the initial SSL certificate first, and then delete the DBGate Certificate using the certlm.msc.
Use this scenario to create an application like www.contoso.com/dbgate or localhost/dbgate.
To create an application, select the desired web site node, right-click on it, and click the Add Application... action.
Then use the following values:
Note that it is important to choose the dbgate application pool created in the previous step.
Using DBGate as an IIS application requires an additional step:
- replace the <base href="/"> line to <base href="/dbgate/"> in the following files:
To test the localhost application, open the URL:
http://localhost/dbgate
You have to see the index page. Play with samples. DBGate loads data from an online SQL Server database.
For example, try the s02/cashbook table:
Here are the complete guides:
In short, make the following steps:
Here is a complete guide: Create the service file
We recommend creating the /etc/systemd/system/kestrel-dbgate.service file with the following content:
[Unit] Description=dbgate [Service] WorkingDirectory=/var/www/dbgate ExecStart=/usr/bin/dotnet /var/www/dbgate/dbgate.dll Restart=on-failure Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-dbgate User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
After creating the file, enable and start the service:
sudo systemctl enable kestrel-dbgate.service sudo systemctl start kestrel-dbgate.service sudo systemctl status kestrel-dbgate.service
To test the service, try to get data using a command like this:
curl http://localhost:5003/api/mssql-023/s02/cashbook
To create a subdomain, make the following steps:
Here is an Nginx configuration of the dbgate.savetodb.com subdomain:
server { server_name dbgate.savetodb.com; location / { proxy_pass http://localhost:5003; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
We recommend reading this resource: Secure HTTP Traffic with Certbot