With Docker
#
Running the docker image ๐- MySQL
- PostgreSQL
- MongoDB
docker run -p 3567:3567 -d registry.supertokens.io/supertokens/supertokens-mysql:
- To see all the env variables available, please see the README file.
- The above command will start the container with an in-memory database. This means you do not need to connect it to MySQL to test out SuperTokens.
- When you are ready to connect it to your database, please visit the Database setup section
docker run -p 3567:3567 -d registry.supertokens.io/supertokens/supertokens-postgresql
- To see all the env variables available, please see the README file.
- The above command will start the container with an in-memory database. This means you do not need to connect it to PostgreSQL to test out SuperTokens.
- When you are ready to connect it to your database, please visit the Database setup section
docker run -p 3567:3567 -d registry.supertokens.io/supertokens/supertokens-mongodb
- To see all the env variables available, please see the README file.
- The above command will start the container with an in-memory database. This means you do not need to connect it to MongoDB to test out SuperTokens.
- When you are ready to connect it to your database, please visit the Database setup section
caution
We do not offer login functionality with MongDB yet. We only offer session management.
#
Testing that the service is running ๐คOpen a browser and visit http://localhost:3567/hello
. If you see a page that says Hello
back, then the container was started successfully!
If you are having issues with starting the docker image, please feel free to reach out to us over email or via Discord.
tip
The /hello
route checks whether the database connection is set up correctly and will only return a 200 status code if there is no issue.
If you are using kubernetes or docker swarm, this endpoint is perfect for doing readiness and liveness probes.
#
Connecting the backend SDK with SuperTokens ๐- The default
port
for SuperTokens is3567
. You can change this by binding a different port in thedocker run
command. For example,docker run -p 8080:3567
will run SuperTokens on port8080
on your machine. - The connection info will go in the
supertokens
object in theinit
function on your backend:
- NodeJS
- GoLang
- Python
import supertokens from "supertokens-node";
supertokens.init({ supertokens: { connectionURI: "http://localhost:3567", apiKey: "someKey" // OR can be undefined }, appInfo: { apiDomain: "...", appName: "...", websiteDomain: "..." }, recipeList: []});
import "github.com/supertokens/supertokens-golang/supertokens"
func main() { supertokens.Init(supertokens.TypeInput{ Supertokens: &supertokens.ConnectionInfo{ ConnectionURI: "http://localhost:3567", APIKey: "someKey", }, })}
from supertokens_python import init, InputAppInfo, SupertokensConfig
init( app_info=InputAppInfo(api_domain="...", app_name="...", website_domain="..."), supertokens_config=SupertokensConfig( connection_uri='http://localhost:3567', api_key='someKey' ), framework='...', recipe_list=[ #... ])
Security
There is no API key by default. Visit the "Auth flow customization" -> "SuperTokens Core customizations" -> "Adding API Keys" section to see how to add one.
#
Docker compose file- MySQL
- PostgreSQL
- MongoDB
version: '3'
services: db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: supertokens_user MYSQL_PASSWORD: somePassword MYSQL_DATABASE: supertokens ports: - 3306:3306 networks: - app_network restart: unless-stopped healthcheck: test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ] timeout: 20s retries: 10
supertokens: image: registry.supertokens.io/supertokens/supertokens-mysql: depends_on: - db ports: - 3567:3567 environment: MYSQL_CONNECTION_URI: mysql://supertokens_user:somePassword@db:3306/supertokens networks: - app_network restart: unless-stopped healthcheck: test: > bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"' interval: 10s timeout: 5s retries: 5
networks: app_network: driver: bridge
version: '3'
services: db: image: 'postgres:latest' environment: POSTGRES_USER: supertokens_user POSTGRES_PASSWORD: somePassword POSTGRES_DB: supertokens ports: - 5432:5432 networks: - app_network restart: unless-stopped healthcheck: test: ['CMD', 'pg_isready -U supertokens_user'] interval: 5s timeout: 5s retries: 5
supertokens: image: registry.supertokens.io/supertokens/supertokens-postgresql depends_on: - db ports: - 3567:3567 environment: POSTGRESQL_CONNECTION_URI: "postgresql://supertokens_user:somePassword@db:5432/supertokens" networks: - app_network restart: unless-stopped healthcheck: test: > bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"' interval: 10s timeout: 5s retries: 5
networks: app_network: driver: bridge
We are working on adding this section.
#
Helm charts for KubernetesFor MySQL image
For PostgreSQL image