API
API copied to clipboard
Backend for the OpenShock solution, that enables controlling shock collars over the internet.
OpenShock API
OpenShock backend
API Documentation
You can access our Open API Doc here:
https://api.openshock.app/swagger
Configuration
The API can be configured using the following environment variables: Preferred way is a .env file.
Variable | Required | Default value | Allowed / Example value |
---|---|---|---|
OPENSHOCK__DB__CONN |
x | Host=postgres-server-host;Port=5432;Database=openshock;Username=openshock;Password=superSecurePassword |
|
OPENSHOCK__DB__SKIPMIGRATION |
false |
true , false |
|
OPENSHOCK__DB__DEBUG |
false |
true , false |
|
OPENSHOCK__FRONTEND__BASEURL |
x | https://my-openshock-instance.net or https://shocklink.net |
|
OPENSHOCK__FRONTEND__SHORTURL |
x | https://myoi.net or https://shockl.ink |
|
OPENSHOCK__FRONTEND__COOKIEDOMAIN |
x | my-openshock-instance.net |
|
OPENSHOCK__REDIS__CONN |
x | redis-server-host:6379 |
|
OPENSHOCK__MAIL__SENDER__EMAIL |
x | [email protected] |
|
OPENSHOCK__MAIL__SENDER__NAME |
x | MyOpenShockInstance System |
|
OPENSHOCK__MAIL__TYPE |
x | MAILJET , SMTP |
|
OPENSHOCK__TURNSTILE__ENABLE |
x | true , false |
|
OPENSHOCK__LCG__FQDN |
x | de1-gateway.my-openshock-instance.net de1-gateway.shocklink.net |
|
OPENSHOCK__LCG__COUNTRYCODE |
x | DE |
Reffer to the Npgsql Connection String documentation page for details about OPENSHOCK__DB_CONN
.
Reffer to StackExchange.Redis Configuration documention page for details about OPENSHOCK__REDIS__CONN
.
Turnstile
When Turnstile enable is set to true
, the following environment variable is required:
Variable | Required | Default value | Allowed / Example value |
---|---|---|---|
OPENSHOCK__TURNSTILE__SITEKEY |
x | ||
OPENSHOCK__TURNSTILE__SECRETKEY |
x |
MAILJET
You need these environment variables to use Mailjet:
Variable | Required | Default value | Allowed / Example value |
---|---|---|---|
OPENSHOCK__MAIL__MAILJET__KEY |
x | ||
OPENSHOCK__MAIL__MAILJET__SECRET |
x | ||
OPENSHOCK__MAIL__MAILJET__TEMPLATE__PASSWORDRESET |
x |
SMTP
You need these environment variables to use SMTP:
Variable | Required | Default value | Allowed / Example value |
---|---|---|---|
OPENSHOCK__MAIL__SMTP__HOST |
x | mail.my-openshock-instance.net |
|
OPENSHOCK__MAIL__SMTP__USERNAME |
x | [email protected] |
|
OPENSHOCK__MAIL__SMTP__PASSWORD |
x | superSecurePassword |
|
OPENSHOCK__MAIL__SMTP__ENABLESSL |
true |
true or false |
|
OPENSHOCK__MAIL__SMTP__VERIFYCERTIFICATE |
true |
true or false |
Deployment / Self Hosting
The OpenShock stack consists of the following components:
- Postgres as database
- Redis-Stack (with keyspace events KEA)
- The API (container, API)
- One or multiple gateways (container, LCG)
- One or multiple cron daemons (container, CRON)
- The WebUI
Requirements
OpenShock instance needs to be under the same domain name to work correctly. This is due to cookie limitations in browsers. E.g. Fontend: https://openshock.app API: https://api.openshock.app LCG: https://de1-gateway.openshock.app
Using Docker (provided docker-compose.yml)
- Grab the
docker-compose.yml
and.env
file from the repository - Change the values in the
.env
file - Adjust traefik to your needs (e.g. add SSL certificates)
Run with docker compose up -d
You could also bring your own reverse proxy.
You would need to remove traefik from the docker-compose.yml
and route the traffic in your reverse proxy.
Support development!
You can support the OpenShock Dev Team here: Sponsor OpenShock