Skip to content

[DX-2063] Tidy up database references for Portal #6615

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 24 commits into
base: master
Choose a base branch
from

Conversation

andyo-tyk
Copy link
Contributor

@andyo-tyk andyo-tyk commented Jul 2, 2025

User description

Removed incorrect reference to MongoDB support for Developer Portal. Tidied up references to (no longer supported) sqlite.

Preview Link

Checklist

  • Added a preview link
  • Reviewed AI PR Agent suggestions
  • For Tyk Members - Added Jira DX PR ticket to the subject
  • For Tyk Members - Added the appropriate release labels (for fixes add the latest release)

New Contributors


PR Type

Documentation


Description

  • Removed all SQLite installation and configuration instructions

  • Updated database compatibility references to exclude SQLite and MongoDB

  • Added clear note about SQLite deprecation and supported alternatives

  • Cleaned up related documentation for Docker, Docker Compose, Helm, and RPM


Changes diagram

flowchart LR
  A["Remove SQLite install sections"] -- "Docker & Compose" --> B["Update DB compatibility notes"]
  B -- "Helm & RPM sections" --> C["Clarify supported DBs (MariaDB, MySQL, PostgreSQL)"]
  C -- "Add deprecation notes" --> D["Documentation streamlined"]
Loading

Changes walkthrough 📝

Relevant files
Documentation
install.md
Remove SQLite and MongoDB references, clarify supported databases

tyk-docs/content/portal/install.md

  • Removed all SQLite installation and configuration instructions
  • Updated database compatibility references to exclude SQLite and
    MongoDB
  • Added/updated notes about SQLite deprecation and migration to
    PostgreSQL
  • Cleaned up Docker, Docker Compose, Helm, and RPM install sections
    accordingly
  • +11/-161

    Need help?
  • Type /help how to ... in the comments thread for any questions about PR-Agent usage.
  • Check out the documentation for more information.
  • Removed incorrect reference to MongoDB support for Developer Portal. Tidied up references to (no longer supported) sqlite.
    Copy link
    Contributor

    github-actions bot commented Jul 2, 2025

    ⚠️ Deploy preview for PR #6615 did not become live after 3 attempts.
    Please check Netlify or try manually: Preview URL

    Copy link
    Contributor

    github-actions bot commented Jul 2, 2025

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Documentation Consistency

    Ensure that all references to deprecated databases (SQLite, MongoDB) have been fully removed or updated across the documentation, and that no installation/configuration steps remain for unsupported databases.

        {{< note success >}}
    **Note** 
    
    Tyk no longer supports SQLite as of Tyk 5.7.0. To avoid disruption, please transition to [PostgreSQL]({{< ref"planning-for-production/database-settings#postgresql" >}}) or one of the listed compatible alternatives.
        {{< /note >}}
    
    ## Portal Installation Process
    
    The portal installation process comprises two steps:
    1. **Install the portal application.** To install the portal and launch it in the bootstrap mode, you need to configure your portal instance by specifying settings such as TLS, log level, and database connection.
    For further guidance on launching the portal, please refer to one of the installation options: [Docker container]({{< ref "portal/install#docker" >}}), [Docker Compose]({{< ref "portal/install#docker-compose" >}}), [Helm chart]({{< ref "portal/install#using-legacy-helm-chart" >}}), or [RPM package]({{< ref "portal/install#linux-redhat-centos" >}}).
    2. **[Bootstrap the portal]({{< ref "#bootstrapping-enterprise-developer-portal" >}})** After you've launched the portal, it will wait for you to provide credentials for the super admin user before it starts accepting traffic.
    Once you've created the super admin user, the portal will complete its installation process by creating the necessary database structure and initialising the required assets for its operations. You can [bootstrap]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) the portal either through the UI or using the bootstrap API.
    Please refer to [the Bootstrapping section]({{< ref "portal/install#bootstrapping-enterprise-developer-portal" >}}) for implementing this step.
    
    ## Installation Options for Enterprise Developer Portal
    
    The Tyk Enterprise Developer Portal supports multiple installation flavors. Check out the guides below to deploy the portal on the platform that suits you best. 
    
    {{< grid >}}
    
    {{< badge read="10 mins" href="portal/install#docker" image="/img/docker.png" alt="Docker install">}}
    Install with Docker
    {{< /badge >}}
    
    {{< badge read="10 mins" href="portal/install#docker-compose" image="/img/docker.png" alt="Docker-compose install">}}
    Install with Docker Compose
    {{< /badge >}}
    
    {{< badge read="10 mins" href="portal/install#using-new-helm-chart" image="/img/k8s.png" alt="Kubernetes install">}}
    Install on Kubernetes
    {{< /badge >}}
    
    {{< badge read="10 mins" href="portal/install#linux-redhat-centos" image="/img/redhat-logo2.png" alt="Red Hat install">}}
    Install on Red Hat
    {{< /badge >}}
    
    {{< /grid >}}
    
    ### Docker
    
    This section explains how to install Tyk Enterprise Developer Portal in a container using Docker.
    Depending on your preferences, you can use MariaDB, MySQL or PostgreSQL for the database.
    
    In this recipe, the database and the portal container will run on the same network, with the database storing its data on a volume. The portal's CMS assets (images, files and themes) are stored in the database, although this guide provides links to the documentation to use a persistent volume or an S3 bucket as a storage medium for CMS assets.
    Additionally, all settings for the Portal are configured using an env-file.
    
    {{< warning success >}}
    **Note**  
    
    This document is just an example. Customize all fields, including the username, password, root password, database name and more.
    
    Be sure to update the connection DSN in the env-file accordingly.
    {{< /warning >}}
    
    
    **Prerequisites**
    To successfully install the Tyk Enterprise Developer Portal with Docker, you should have installed [Docker](https://docs.docker.com/get-docker/) on the machine where you want to install the portal.
    
    #### Using PostgreSQL
    
    1. **Create a network for the portal deployment**
    
        To start with, you need to create a Docker network for communication between the database and the portal. Execute the following command to create it:
        ```console
        docker network create tyk-portal
        ```
    
    2. **Create an init script for PostgreSQL**
    
        To initialize a PostgreSQL database, you need to create an init script that will later be used to launch the PostgreSQL instance.
        Copy the content below to a file named `init.sql`, which you will need in the next step.
        ```sql
        -- init.sql
        -- Creating user
        CREATE USER admin WITH ENCRYPTED PASSWORD 'secr3t';
        CREATE DATABASE portal;
        GRANT ALL PRIVILEGES ON DATABASE portal TO admin;
        ```
    
    3. **Create the database volume and launch the database**
    
        The next step is to launch the PostgreSQL database for the portal. To achieve this, create a data volume for the database first:
        ```console
        docker volume create tyk-portal-postgres-data
        ```
    
        Then launch the PostgreSQL instance by executing the following command:
        ```container
        docker run \
        -d \
        --name tyk-portal-postgres \
        --restart on-failure:5 \
        -e POSTGRES_PASSWORD=secr3t \
        -e PGDATA=/var/lib/postgresql/data/pgdata \
        --mount type=volume,source=tyk-portal-postgres-data,target=/var/lib/postgresql/data/pgdata \
        --mount type=bind,src=$(pwd)/init.sql,dst=/docker-entrypoint-initdb.d/init.sql \
        --network tyk-portal \
        -p 5432:5432 \
        postgres:10-alpine
        ```
        **Note**
    
        {{< warning success >}}
    The above PostgreSQL configuration is an example. You can customize deployment of your PostgreSQL instance. Please refer to [the PostgreSQL documentation](https://www.postgresql.org/docs/current/installation.html) for further guidance.
        {{< /warning >}}
    
    4. **Create an environment variables file**
    
        Creating an environment variables file to specify settings for the portal is the next step.
        This is optional, as you can alternatively specify all the variables using the -e option when starting your deployment.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer to the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) in the Tyk Enterprise Developer Portal documentation.
        ```ini
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=postgres
        PORTAL_DATABASE_CONNECTIONSTRING=host=tyk-portal-postgres port=5432 dbname=portal user=admin password=secr3t sslmode=disable
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_STORAGE=db
        PORTAL_LICENSEKEY=<your-license-here>
        ```
    
        Once you have completed this step, you are ready to launch the portal application with PostgreSQL in a Docker container.
    
    5. **Pull and launch the portal container**
    
        To pull and launch the portal using Docker, use the command provided below.
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7. You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes section]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}).
        ```console
        docker run -d \
            -p 3001:3001 \
            --env-file .env \
            --network tyk-portal \
            --name tyk-portal \
            tykio/portal:<tag>
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    6. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first time you are launching it.
        Follow the [bootstrapping section]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) of the documentation to bootstrap the portal via the UI or the admin API.
    
    7. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker stop tyk-portal
        docker rm tyk-portal
        docker stop tyk-portal-postgres
        docker rm tyk-portal-postgres
        docker volume rm tyk-portal-postgres-data
        ```
    
    #### Using MySQL
    
    1. **Create a network for the portal deployment**
    
        To start with, you need to create a Docker network for communication between the database and the portal. Execute the following command to create it:
        ```console
        docker network create tyk-portal
        ```
    
    2. **Create the database volume and launch the database**
    
        The next step is to launch the MySQL database for the portal. To achieve this, create a data volume for the database first:
        ```console
        docker volume create tyk-portal-mysql-data
        ```
    
        Then launch the MySQL instance by executing the following command:
        ```console
        docker run \
        -d \
        --name tyk-portal-mysql \
        --restart on-failure:5 \
        -e MYSQL_ROOT_PASSWORD=sup3rsecr3t \
        -e MYSQL_DATABASE=portal \
        -e MYSQL_USER=admin \
        -e MYSQL_PASSWORD=secr3t \
        --mount type=volume,source=tyk-portal-mysql-data,target=/var/lib/mysql \
        --network tyk-portal \
        -p 3306:3306 \
        mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --sql-mode=ALLOW_INVALID_DATES
        ```
        {{< warning success >}}
    **Note**  
    
    The above MySQL configuration is an example. You can customize deployment of your MySQL instance.
    
    Please refer to the [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html) for further guidance.
        {{< /warning >}}
    
    3. **Create an environment variables file**
    
        Creating an environment variables file to specify settings for the portal is the next step.
        This is optional, as you can alternatively specify all the variables using the -e option when starting your deployment.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer to the [configuration]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) section in the Tyk Enterprise Developer Portal documentation.
        ```ini
        MYSQL_ROOT_PASSWORD=sup3rsecr3t
        MYSQL_DATABASE=portal
        MYSQL_USER=admin
        MYSQL_PASSWORD=secr3t
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=mysql
        PORTAL_DATABASE_CONNECTIONSTRING=admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_STORAGE=db
        PORTAL_LICENSEKEY=<your-license-here>
        ```
    
        Once you have completed this step, you are ready to launch the portal application with MySQL in a Docker container or via Docker Compose.
    
    4. **Pull and launch the portal container**
    
        To pull and launch the portal using Docker, use the command provided below.
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7.
        You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}) section.
        ```console
        docker run -d \
            -p 3001:3001 \
            --env-file .env \
            --network tyk-portal \
            --name tyk-portal \
            --mount type=bind,src=/tmp/portal/themes,dst=/opt/portal/themes \
            --mount type=bind,src=/tmp/portal/system,dst=/opt/portal/public/system \
            tykio/portal:<tag>
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    5. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first time you are launching it. Follow the [bootstrapping]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) section of the documentation to bootstrap the portal via the UI or the admin API.
    
    6. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker stop tyk-portal
        docker rm tyk-portal
        docker stop tyk-portal-mysql
        docker rm tyk-portal-mysql
        docker volume rm tyk-portal-mysql-data
        ```
    
    
    ### Docker Compose
    
    This section provides a clear and concise, step-by-step recipe for launching the Tyk Enterprise Developer Portal in a container using Docker Compose.
    Depending on your preferences, you can use MariaDB, MySQL or PostgreSQL for the database.
    
    In this recipe, the database and the portal containers will run on the same network, with the database storing it's data on a volume. The portal's CMS assets (images, files and themes) are stored in the database, although this guide provides links to the documentation to use a persistent volume or an S3 bucket as a storage medium for CMS assets.
    Additionally, all settings for the Portal are configured using an env-file.
    
    {{< warning success >}}
    **Note**
    
    This document is just an example. Customize all fields, including the username, password, root password, database name and more.
    {{< /warning >}}
    
    
    **Prerequisites**
    
    To successfully install the Tyk Enterprise Developer Portal with Docker Compose, you should have installed the following software:
    - [Docker](https://docs.docker.com/get-docker/)
    - [Docker Compose](https://docs.docker.com/compose/install/)
    
    #### Using PostgreSQL
    
    1. **Create an init script for PostgreSQL**
    
        To initialize a PostgreSQL database, you need to create an init script that will later be used to launch the PostgreSQL instance.
        Copy the content below to a file named `init.sql`, which you will need in the next step.
        ```sql
        -- init.sql
        -- Creating user
        CREATE USER admin WITH ENCRYPTED PASSWORD 'secr3t';
        CREATE DATABASE portal;
        GRANT ALL PRIVILEGES ON DATABASE portal TO admin;
        ```
    
    2. **Create an environment variables file for configuring the portal and the database**
    
        Creating an environment file to specify settings for the portal is the next step.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer to the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) in the Tyk Enterprise Developer Portal documentation.
        ```ini
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=postgres
        PORTAL_DATABASE_CONNECTIONSTRING=host=tyk-portal-postgres port=5432 dbname=portal user=admin password=secr3t sslmode=disable
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_LICENSEKEY=<your-license-here>
        PORTAL_STORAGE=db
        ```
    
        Once you have completed this step, you are ready to launch the portal application with PostgreSQL via Docker Compose.
    
    3. **Create a docker-compose file**
    
        Before launching the portal using docker-compose, you will need to create a `docker-compose.yaml` file. An example of the portal's docker-compose file is provided below, which you can use as a starting point and further customize to meet your specific requirements.
    
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7. You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes section]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}).
    
        ```yaml
        version: '3.6'
        services:
        tyk-portal:
            depends_on:
            - tyk-portal-postgres
            image: tykio/portal:<tag>
            networks:
            - tyk-portal
            ports:
            - 3001:3001
            environment:
            - PORTAL_DATABASE_DIALECT=${PORTAL_DATABASE_DIALECT}
            - PORTAL_DATABASE_CONNECTIONSTRING=${PORTAL_DATABASE_CONNECTIONSTRING}
            - PORTAL_THEMING_THEME=${PORTAL_THEMING_THEME}
            - PORTAL_THEMING_PATH=${PORTAL_THEMING_PATH}
            - PORTAL_LICENSEKEY=${PORTAL_LICENSEKEY}
            - PORTAL_STORAGE=${PORTAL_STORAGE}
    
        tyk-portal-postgres:
            image: postgres:10-alpine
            volumes:
            - tyk-portal-postgres-data:/var/lib/postgresql/data/pgdata
            - ${PWD}/init.sql:/docker-entrypoint-initdb.d/init.sql
            networks:
            - tyk-portal
            environment:
            - POSTGRES_PASSWORD=secr3t
            - PGDATA=/var/lib/postgresql/data/pgdata
    
        volumes:
        tyk-portal-postgres-data:
    
        networks:
        tyk-portal:
        ```
    
    4. **Pull and launch the portal container using docker-compose**
    
        To launch the portal using docker-compose, execute the command provided below.
        ```console
        docker-compose --env-file .env up -d
        docker-compose --env-file .env up -d
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    5. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first time you are launching it. Follow the [bootstrapping section]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) of the documentation to bootstrap the portal via the UI or the admin API. 
    
    6. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker-compose down
        docker-compose down
        ```
    
    #### Using MySQL
    
    1. **Create an environment variables file for configuring the portal and the database**
    
        The first step is to create an environment file to specify settings for the portal.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) in the Tyk Enterprise Developer Portal documentation.
        ```ini
        MYSQL_ROOT_PASSWORD=sup3rsecr3t
        MYSQL_DATABASE=portal
        MYSQL_USER=admin
        MYSQL_PASSWORD=secr3t
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=mysql
        PORTAL_DATABASE_CONNECTIONSTRING=admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_STORAGE=db
        PORTAL_LICENSEKEY=<your-license-here>
        ```
    
        Once you have completed this step, you are ready to launch the portal application with MySQL via Docker Compose.
    
    2. **Create a docker-compose file**
    
        Before launching the portal using docker-compose, you will need to create a `docker-compose.yaml` file.
        An example of the portal's docker-compose file is provided below, which you can use as a starting point and further customize to meet your specific requirements.
    
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7.
        You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes section]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}).
    
        ```yaml
        version: '3.6'
        services:
        tyk-portal:
            depends_on:
            - tyk-portal-mysql
            image: tykio/portal:<tag>
            networks:
            - tyk-portal
            ports:
            - 3001:3001
            environment:
            - PORTAL_DATABASE_DIALECT=${PORTAL_DATABASE_DIALECT}
            - PORTAL_DATABASE_CONNECTIONSTRING=${PORTAL_DATABASE_CONNECTIONSTRING}
            - PORTAL_THEMING_THEME=${PORTAL_THEMING_THEME}
            - PORTAL_THEMING_PATH=${PORTAL_THEMING_PATH}
            - PORTAL_LICENSEKEY=${PORTAL_LICENSEKEY}
            - PORTAL_STORAGE=${PORTAL_STORAGE}
    
        tyk-portal-mysql:
            image: mysql:5.7
            command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
            volumes:
            - tyk-portal-mysql-data:/var/lib/mysql
            networks:
            - tyk-portal   
            environment:
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    
        volumes:
        tyk-portal-mysql-data:
    
        networks:
        tyk-portal:
        ```
    
    3. **Pull and launch the portal container using docker-compose**
    
        To launch the portal using docker-compose, execute the command provided below.
        ```console
        docker-compose --env-file .env up -d
        docker-compose --env-file .env up -d
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    4. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first you are launching it. Follow the [bootstrapping section]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) of the documentation to bootstrap the portal via the UI or the admin API.
    
    5. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker-compose down
        docker-compose down
        ```
    
    ### Kubernetes
    
    #### Using New Helm Chart
    
    There are two ways to install Tyk Enterprise Developer Portal. You can enable `global.components.devPortal` during Tyk Self-Managed deployment by following the [Tyk Self-Managed installation instruction]({{< ref "product-stack/tyk-charts/tyk-stack-chart" >}}) using our `tyk-stack` umbrella chart. It will install Tyk Enterprise Developer Portal together with Tyk Gateway and Dashboard in the same namespace.
    
    Alternatively, you can install Tyk Enterprise Developer Portal as standalone component using our `tyk-dev-portal` chart. This page provides a clear and concise, step-by-step guide for installing the Tyk Enterprise Developer Portal as standalone component using the new helm chart.
    
    To install the portal using helm charts, you need to take the following steps:
    
    - Create the `tyk-dev-portal-conf` secret
    - Specify config settings for the portal in `values.yaml`
    - Launch the portal using the helm chart
    
    1. **Create the `tyk-dev-portal-conf` secret**
    
        Make sure the `tyk-dev-portal-conf` secret exists in your namespace. 
        This secret will automatically be generated if Tyk Dashboard instance was bootstrapped with [tyk-boostrap](https://artifacthub.io/packages/helm/tyk-helm/tyk-bootstrap) component chart 
        and `bootstrap.devPortal` was set to `true` in the `values.yaml`.
    
        If the secret does not exist, you can create it by running the following command.
    
        ```bash
        kubectl create secret generic tyk-dev-portal-conf -n ${NAMESPACE} \
        --from-literal=TYK_ORG=${TYK_ORG} \
        --from-literal=TYK_AUTH=${TYK_AUTH}
        ```
    
        The fields `TYK_ORG` and `TYK_AUTH` are the Tyk Dashboard _Organization ID_ and the Tyk Dashboard API _Access Credentials_ respectively. These can be obtained under your profile in the Tyk Dashboard.
    
    2. **Config settings**
    
        You must set the following values in the `values.yaml` or with `--set {field-name}={field-value}` using the helm upgrade command:
    
        | Field Name | Description |
        | ---------- | ----------- |
        | `global.adminUser.email` and `global.adminUser.password` | Set portal admin username and email for bootstrapping |
        | `global.secrets.devPortal` | Enable portal bootstrapping by providing secret name |
        | `license` | Tyk license key for your portal installation |
        | `storage.type` | Portal storage type, e.g. *fs*, *s3* and *db* |
        | `image.tag` | Enterprise Portal version. You can get the latest version image tag from [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) |
        | `database.dialect` | Portal database dialect, e.g. *mysql*, *postgres* |
        | `database.connectionString`| Connection string to the Portal's database, e.g. for the *mysql* dialect: `admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true` |
    
        In addition to `values.yaml`, you can also define the environment variables described in the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) to further customize your portal deployment. These environment variables can also be listed as a name value list under the `extraEnvs` section of the helm chart.
    
    3. **Launch the portal using the helm chart**
    
        Run the following command to update your infrastructure and install the developer portal:
    
        ```bash
        helm install tyk-dev-portal tyk-helm/tyk-dev-portal -f values.yaml -n tyk
        ```
    
    ###### Configuration
    Please refer to this [guide]({{< ref "product-stack/tyk-charts/tyk-stack-chart" >}}) for an explanation of all configuration options.
    
    > **Note**: Helm chart supports Enterprise Portal v1.2.0+.
    
    #### Using Legacy Helm Chart
    
    {{< warning success >}}
    **Note**
    
    It is recommended to use new helm charts instead of legacy charts. Guide for new charts can be found [here]({{< ref "portal/install#using-new-helm-chart" >}})
    
    {{< /warning >}}
    
    To install the portal using helm charts, you need to take the following steps:
    
    - Create the `tyk-enterprise-portal-conf` secret
    - Specify config settings for the portal in `values.yaml`
    - Launch the portal using the helm chart
    
    This guide provides a clear and concise, step-by-step recipe for installing the Tyk Enterprise Developer Portal using helm charts.
    
    1. **Create the `tyk-enterprise-portal-conf` secret**
    
        Make sure the `tyk-enterprise-portal-conf` secret exists in your namespace. This secret will automatically be generated during the Tyk Dashboard bootstrap if the `dash.enterprisePortalSecret` value is set to `true` in the `values.yaml`.
    
        If the secret does not exist, you can create it by running the following command.
    
        ```bash
        kubectl create secret generic tyk-enterprise-portal-conf -n ${NAMESPACE} \
        --from-literal=TYK_ORG=${TYK_ORG} \
        --from-literal=TYK_AUTH=${TYK_AUTH}
        ```
    
        Where `TYK_ORG` and `TYK_AUTH` are the Tyk Dashboard Organization ID and the Tyk Dashboard API Access Credentials respectively. Which can be obtained under your profile in the Tyk Dashboard.
    
    2. **Config settings**
    
        You must set the following values in the `values.yaml` or with `--set {field-name}={field-value}` with the helm upgrade command:
    
        | Field Name | Description |
        | ---------- | ----------- |
        | `enterprisePortal.enabled` | Enable Portal installation |
        | `enterprisePortal.bootstrap` | Enable Portal bootstrapping |
        | `enterprisePortal.license`| Tyk license key for your portal installation |
        | `enterprisePortal.storage.type`| Portal database dialect, e.g *mysql*, *postgres* |
        | `enterprisePortal.storage.connectionString` | Connection string to the Portal's database, e.g for the mysql dialect: `admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true` |
    
        In addition to values.yaml, you can also define the environment variables described in the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) to further customize your portal deployment. These environment variables can also be listed as a name value list under the `extraEnvs` section of the helm chart.
    
    3. **Launch the portal using the helm chart**
    
        Run the following command to update your infrastructure and install the developer portal:
    
        ```bash
        helm upgrade tyk-pro tyk-helm/tyk-pro -f values.yaml -n tyk
        ```
    
    {{< note success >}}
    In case this is the first time you are launching the portal, it will be necessary to bootstrap it before you can use it. For detailed instructions, please refer to the [bootstrapping documentation]({{< ref "#bootstrapping-enterprise-developer-portal" >}}).
    {{</ note >}}
    
    > **Note**: Helm chart supports Enterprise Portal v1.2.0+.
    
    
    ### Red Hat (RHEL / CentOS) {#linux-redhat-centos}
    
    This guide provides a step-by-step recipe for launching the Tyk Enterprise Developer Portal using an RPM package in Red Hat environment (RHEL / CentOS).
    
    {{< warning success >}}
    **Note**
    
    This document is just an example. Customize all fields, including the username, password, root password, database name and more.
    
    Be sure to update the connection DSN in the env-file accordingly.
    {{< /warning >}}
    
    **Prerequisites**
    
    To successfully install the Tyk Enterprise Developer Portal using RPM, your environment should satisfy the following requirements:
    - Connectivity to [packagecloud.io](https://packagecloud.io). If your environment doesn't have connectivity to packagecloud, you will need to download the portal package and copy it to the target host.
    - RPM Package Manager should be installed on the host machine.
    
    **Steps for Installation**
    
    1. **Download the portal package**
    
        To start with, you need to download the portal package from [packagecloud.io](https://packagecloud.io). To keep things organized, first create a directory where all installation assets (packages and config files) will be stored:
        ```console
        mkdir ~/portal-install
        cd ~/portal-install
        ```
    
        Next, download the portal package from [packagecloud.io](https://packagecloud.io/tyk/portal-unstable) by executing the command below.
        Ensure to replace package-version with actual package version e.g. https://packagecloud.io/tyk/portal-unstable/packages/el/8/portal-1.7.0-1.x86_64.rpm/download.rpm?distro_version_id=205 for the portal v1.7.0 for x86_64.
        ```console
        wget --content-disposition "https://packagecloud.io/tyk/portal-unstable/packages/<package-version>"
        ```
    
    2. **Install the portal package**
    
        Once the package is downloaded, you need to install using RPM. Execute the below command to so. Once again, ensure to replace `portal-1.7.0-1.x86_64.rpm` with an actual filename of the package you have downloaded on the previous step.  
        ```console
        sudo rpm -i portal-1.7.0-1.x86_64.rpm
        ```
    
    3. **Update the configuration file with your license**
    
        {{< note success >}}
    **Note** 
    
    Tyk no longer supports SQLite as of Tyk 5.7.0. To avoid disruption, please transition to [PostgreSQL]({{< ref"planning-for-production/database-settings#postgresql" >}}) or one of the listed compatible alternatives.
        {{< /note >}}
    User Migration Guidance

    Confirm that the new notes about SQLite deprecation provide clear and actionable guidance for users on how to migrate to supported databases, and that all links and references are accurate.

        {{< note success >}}
    **Note** 
    
    Tyk no longer supports SQLite as of Tyk 5.7.0. To avoid disruption, please transition to [PostgreSQL]({{< ref"planning-for-production/database-settings#postgresql" >}}) or one of the listed compatible alternatives.
        {{< /note >}}
    
    ## Portal Installation Process
    
    The portal installation process comprises two steps:
    1. **Install the portal application.** To install the portal and launch it in the bootstrap mode, you need to configure your portal instance by specifying settings such as TLS, log level, and database connection.
    For further guidance on launching the portal, please refer to one of the installation options: [Docker container]({{< ref "portal/install#docker" >}}), [Docker Compose]({{< ref "portal/install#docker-compose" >}}), [Helm chart]({{< ref "portal/install#using-legacy-helm-chart" >}}), or [RPM package]({{< ref "portal/install#linux-redhat-centos" >}}).
    2. **[Bootstrap the portal]({{< ref "#bootstrapping-enterprise-developer-portal" >}})** After you've launched the portal, it will wait for you to provide credentials for the super admin user before it starts accepting traffic.
    Once you've created the super admin user, the portal will complete its installation process by creating the necessary database structure and initialising the required assets for its operations. You can [bootstrap]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) the portal either through the UI or using the bootstrap API.
    Please refer to [the Bootstrapping section]({{< ref "portal/install#bootstrapping-enterprise-developer-portal" >}}) for implementing this step.
    
    ## Installation Options for Enterprise Developer Portal
    
    The Tyk Enterprise Developer Portal supports multiple installation flavors. Check out the guides below to deploy the portal on the platform that suits you best. 
    
    {{< grid >}}
    
    {{< badge read="10 mins" href="portal/install#docker" image="/img/docker.png" alt="Docker install">}}
    Install with Docker
    {{< /badge >}}
    
    {{< badge read="10 mins" href="portal/install#docker-compose" image="/img/docker.png" alt="Docker-compose install">}}
    Install with Docker Compose
    {{< /badge >}}
    
    {{< badge read="10 mins" href="portal/install#using-new-helm-chart" image="/img/k8s.png" alt="Kubernetes install">}}
    Install on Kubernetes
    {{< /badge >}}
    
    {{< badge read="10 mins" href="portal/install#linux-redhat-centos" image="/img/redhat-logo2.png" alt="Red Hat install">}}
    Install on Red Hat
    {{< /badge >}}
    
    {{< /grid >}}
    
    ### Docker
    
    This section explains how to install Tyk Enterprise Developer Portal in a container using Docker.
    Depending on your preferences, you can use MariaDB, MySQL or PostgreSQL for the database.
    
    In this recipe, the database and the portal container will run on the same network, with the database storing its data on a volume. The portal's CMS assets (images, files and themes) are stored in the database, although this guide provides links to the documentation to use a persistent volume or an S3 bucket as a storage medium for CMS assets.
    Additionally, all settings for the Portal are configured using an env-file.
    
    {{< warning success >}}
    **Note**  
    
    This document is just an example. Customize all fields, including the username, password, root password, database name and more.
    
    Be sure to update the connection DSN in the env-file accordingly.
    {{< /warning >}}
    
    
    **Prerequisites**
    To successfully install the Tyk Enterprise Developer Portal with Docker, you should have installed [Docker](https://docs.docker.com/get-docker/) on the machine where you want to install the portal.
    
    #### Using PostgreSQL
    
    1. **Create a network for the portal deployment**
    
        To start with, you need to create a Docker network for communication between the database and the portal. Execute the following command to create it:
        ```console
        docker network create tyk-portal
        ```
    
    2. **Create an init script for PostgreSQL**
    
        To initialize a PostgreSQL database, you need to create an init script that will later be used to launch the PostgreSQL instance.
        Copy the content below to a file named `init.sql`, which you will need in the next step.
        ```sql
        -- init.sql
        -- Creating user
        CREATE USER admin WITH ENCRYPTED PASSWORD 'secr3t';
        CREATE DATABASE portal;
        GRANT ALL PRIVILEGES ON DATABASE portal TO admin;
        ```
    
    3. **Create the database volume and launch the database**
    
        The next step is to launch the PostgreSQL database for the portal. To achieve this, create a data volume for the database first:
        ```console
        docker volume create tyk-portal-postgres-data
        ```
    
        Then launch the PostgreSQL instance by executing the following command:
        ```container
        docker run \
        -d \
        --name tyk-portal-postgres \
        --restart on-failure:5 \
        -e POSTGRES_PASSWORD=secr3t \
        -e PGDATA=/var/lib/postgresql/data/pgdata \
        --mount type=volume,source=tyk-portal-postgres-data,target=/var/lib/postgresql/data/pgdata \
        --mount type=bind,src=$(pwd)/init.sql,dst=/docker-entrypoint-initdb.d/init.sql \
        --network tyk-portal \
        -p 5432:5432 \
        postgres:10-alpine
        ```
        **Note**
    
        {{< warning success >}}
    The above PostgreSQL configuration is an example. You can customize deployment of your PostgreSQL instance. Please refer to [the PostgreSQL documentation](https://www.postgresql.org/docs/current/installation.html) for further guidance.
        {{< /warning >}}
    
    4. **Create an environment variables file**
    
        Creating an environment variables file to specify settings for the portal is the next step.
        This is optional, as you can alternatively specify all the variables using the -e option when starting your deployment.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer to the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) in the Tyk Enterprise Developer Portal documentation.
        ```ini
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=postgres
        PORTAL_DATABASE_CONNECTIONSTRING=host=tyk-portal-postgres port=5432 dbname=portal user=admin password=secr3t sslmode=disable
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_STORAGE=db
        PORTAL_LICENSEKEY=<your-license-here>
        ```
    
        Once you have completed this step, you are ready to launch the portal application with PostgreSQL in a Docker container.
    
    5. **Pull and launch the portal container**
    
        To pull and launch the portal using Docker, use the command provided below.
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7. You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes section]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}).
        ```console
        docker run -d \
            -p 3001:3001 \
            --env-file .env \
            --network tyk-portal \
            --name tyk-portal \
            tykio/portal:<tag>
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    6. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first time you are launching it.
        Follow the [bootstrapping section]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) of the documentation to bootstrap the portal via the UI or the admin API.
    
    7. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker stop tyk-portal
        docker rm tyk-portal
        docker stop tyk-portal-postgres
        docker rm tyk-portal-postgres
        docker volume rm tyk-portal-postgres-data
        ```
    
    #### Using MySQL
    
    1. **Create a network for the portal deployment**
    
        To start with, you need to create a Docker network for communication between the database and the portal. Execute the following command to create it:
        ```console
        docker network create tyk-portal
        ```
    
    2. **Create the database volume and launch the database**
    
        The next step is to launch the MySQL database for the portal. To achieve this, create a data volume for the database first:
        ```console
        docker volume create tyk-portal-mysql-data
        ```
    
        Then launch the MySQL instance by executing the following command:
        ```console
        docker run \
        -d \
        --name tyk-portal-mysql \
        --restart on-failure:5 \
        -e MYSQL_ROOT_PASSWORD=sup3rsecr3t \
        -e MYSQL_DATABASE=portal \
        -e MYSQL_USER=admin \
        -e MYSQL_PASSWORD=secr3t \
        --mount type=volume,source=tyk-portal-mysql-data,target=/var/lib/mysql \
        --network tyk-portal \
        -p 3306:3306 \
        mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --sql-mode=ALLOW_INVALID_DATES
        ```
        {{< warning success >}}
    **Note**  
    
    The above MySQL configuration is an example. You can customize deployment of your MySQL instance.
    
    Please refer to the [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html) for further guidance.
        {{< /warning >}}
    
    3. **Create an environment variables file**
    
        Creating an environment variables file to specify settings for the portal is the next step.
        This is optional, as you can alternatively specify all the variables using the -e option when starting your deployment.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer to the [configuration]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) section in the Tyk Enterprise Developer Portal documentation.
        ```ini
        MYSQL_ROOT_PASSWORD=sup3rsecr3t
        MYSQL_DATABASE=portal
        MYSQL_USER=admin
        MYSQL_PASSWORD=secr3t
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=mysql
        PORTAL_DATABASE_CONNECTIONSTRING=admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_STORAGE=db
        PORTAL_LICENSEKEY=<your-license-here>
        ```
    
        Once you have completed this step, you are ready to launch the portal application with MySQL in a Docker container or via Docker Compose.
    
    4. **Pull and launch the portal container**
    
        To pull and launch the portal using Docker, use the command provided below.
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7.
        You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}) section.
        ```console
        docker run -d \
            -p 3001:3001 \
            --env-file .env \
            --network tyk-portal \
            --name tyk-portal \
            --mount type=bind,src=/tmp/portal/themes,dst=/opt/portal/themes \
            --mount type=bind,src=/tmp/portal/system,dst=/opt/portal/public/system \
            tykio/portal:<tag>
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    5. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first time you are launching it. Follow the [bootstrapping]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) section of the documentation to bootstrap the portal via the UI or the admin API.
    
    6. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker stop tyk-portal
        docker rm tyk-portal
        docker stop tyk-portal-mysql
        docker rm tyk-portal-mysql
        docker volume rm tyk-portal-mysql-data
        ```
    
    
    ### Docker Compose
    
    This section provides a clear and concise, step-by-step recipe for launching the Tyk Enterprise Developer Portal in a container using Docker Compose.
    Depending on your preferences, you can use MariaDB, MySQL or PostgreSQL for the database.
    
    In this recipe, the database and the portal containers will run on the same network, with the database storing it's data on a volume. The portal's CMS assets (images, files and themes) are stored in the database, although this guide provides links to the documentation to use a persistent volume or an S3 bucket as a storage medium for CMS assets.
    Additionally, all settings for the Portal are configured using an env-file.
    
    {{< warning success >}}
    **Note**
    
    This document is just an example. Customize all fields, including the username, password, root password, database name and more.
    {{< /warning >}}
    
    
    **Prerequisites**
    
    To successfully install the Tyk Enterprise Developer Portal with Docker Compose, you should have installed the following software:
    - [Docker](https://docs.docker.com/get-docker/)
    - [Docker Compose](https://docs.docker.com/compose/install/)
    
    #### Using PostgreSQL
    
    1. **Create an init script for PostgreSQL**
    
        To initialize a PostgreSQL database, you need to create an init script that will later be used to launch the PostgreSQL instance.
        Copy the content below to a file named `init.sql`, which you will need in the next step.
        ```sql
        -- init.sql
        -- Creating user
        CREATE USER admin WITH ENCRYPTED PASSWORD 'secr3t';
        CREATE DATABASE portal;
        GRANT ALL PRIVILEGES ON DATABASE portal TO admin;
        ```
    
    2. **Create an environment variables file for configuring the portal and the database**
    
        Creating an environment file to specify settings for the portal is the next step.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer to the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) in the Tyk Enterprise Developer Portal documentation.
        ```ini
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=postgres
        PORTAL_DATABASE_CONNECTIONSTRING=host=tyk-portal-postgres port=5432 dbname=portal user=admin password=secr3t sslmode=disable
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_LICENSEKEY=<your-license-here>
        PORTAL_STORAGE=db
        ```
    
        Once you have completed this step, you are ready to launch the portal application with PostgreSQL via Docker Compose.
    
    3. **Create a docker-compose file**
    
        Before launching the portal using docker-compose, you will need to create a `docker-compose.yaml` file. An example of the portal's docker-compose file is provided below, which you can use as a starting point and further customize to meet your specific requirements.
    
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7. You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes section]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}).
    
        ```yaml
        version: '3.6'
        services:
        tyk-portal:
            depends_on:
            - tyk-portal-postgres
            image: tykio/portal:<tag>
            networks:
            - tyk-portal
            ports:
            - 3001:3001
            environment:
            - PORTAL_DATABASE_DIALECT=${PORTAL_DATABASE_DIALECT}
            - PORTAL_DATABASE_CONNECTIONSTRING=${PORTAL_DATABASE_CONNECTIONSTRING}
            - PORTAL_THEMING_THEME=${PORTAL_THEMING_THEME}
            - PORTAL_THEMING_PATH=${PORTAL_THEMING_PATH}
            - PORTAL_LICENSEKEY=${PORTAL_LICENSEKEY}
            - PORTAL_STORAGE=${PORTAL_STORAGE}
    
        tyk-portal-postgres:
            image: postgres:10-alpine
            volumes:
            - tyk-portal-postgres-data:/var/lib/postgresql/data/pgdata
            - ${PWD}/init.sql:/docker-entrypoint-initdb.d/init.sql
            networks:
            - tyk-portal
            environment:
            - POSTGRES_PASSWORD=secr3t
            - PGDATA=/var/lib/postgresql/data/pgdata
    
        volumes:
        tyk-portal-postgres-data:
    
        networks:
        tyk-portal:
        ```
    
    4. **Pull and launch the portal container using docker-compose**
    
        To launch the portal using docker-compose, execute the command provided below.
        ```console
        docker-compose --env-file .env up -d
        docker-compose --env-file .env up -d
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    5. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first time you are launching it. Follow the [bootstrapping section]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) of the documentation to bootstrap the portal via the UI or the admin API. 
    
    6. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker-compose down
        docker-compose down
        ```
    
    #### Using MySQL
    
    1. **Create an environment variables file for configuring the portal and the database**
    
        The first step is to create an environment file to specify settings for the portal.
    
        Here is an example of a sample environment file. For a comprehensive reference of environment variables, please refer the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) in the Tyk Enterprise Developer Portal documentation.
        ```ini
        MYSQL_ROOT_PASSWORD=sup3rsecr3t
        MYSQL_DATABASE=portal
        MYSQL_USER=admin
        MYSQL_PASSWORD=secr3t
        PORTAL_HOSTPORT=3001
        PORTAL_DATABASE_DIALECT=mysql
        PORTAL_DATABASE_CONNECTIONSTRING=admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true
        PORTAL_DATABASE_ENABLELOGS=false
        PORTAL_THEMING_THEME=default
        PORTAL_STORAGE=db
        PORTAL_LICENSEKEY=<your-license-here>
        ```
    
        Once you have completed this step, you are ready to launch the portal application with MySQL via Docker Compose.
    
    2. **Create a docker-compose file**
    
        Before launching the portal using docker-compose, you will need to create a `docker-compose.yaml` file.
        An example of the portal's docker-compose file is provided below, which you can use as a starting point and further customize to meet your specific requirements.
    
        Ensure that you replace `<tag>` with the specific version of the portal you intend to launch before executing the command, e.g. `tykio/portal:v1.7` for the portal v1.7.
        You can browse all available versions on [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) and in the [release notes section]({{< ref "developer-support/release-notes/portal#170-release-notes" >}}).
    
        ```yaml
        version: '3.6'
        services:
        tyk-portal:
            depends_on:
            - tyk-portal-mysql
            image: tykio/portal:<tag>
            networks:
            - tyk-portal
            ports:
            - 3001:3001
            environment:
            - PORTAL_DATABASE_DIALECT=${PORTAL_DATABASE_DIALECT}
            - PORTAL_DATABASE_CONNECTIONSTRING=${PORTAL_DATABASE_CONNECTIONSTRING}
            - PORTAL_THEMING_THEME=${PORTAL_THEMING_THEME}
            - PORTAL_THEMING_PATH=${PORTAL_THEMING_PATH}
            - PORTAL_LICENSEKEY=${PORTAL_LICENSEKEY}
            - PORTAL_STORAGE=${PORTAL_STORAGE}
    
        tyk-portal-mysql:
            image: mysql:5.7
            command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
            volumes:
            - tyk-portal-mysql-data:/var/lib/mysql
            networks:
            - tyk-portal   
            environment:
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    
        volumes:
        tyk-portal-mysql-data:
    
        networks:
        tyk-portal:
        ```
    
    3. **Pull and launch the portal container using docker-compose**
    
        To launch the portal using docker-compose, execute the command provided below.
        ```console
        docker-compose --env-file .env up -d
        docker-compose --env-file .env up -d
        ```
    
        This command will launch the portal on localhost at port 3001. Now, you can bootstrap the portal and start managing your API products.
    
    4. **Bootstrap the portal**
    
        Now the portal is running on port 3001, but it needs to be bootstrapped by providing credentials for the super admin user since it's the first you are launching it. Follow the [bootstrapping section]({{< ref "#bootstrapping-enterprise-developer-portal" >}}) of the documentation to bootstrap the portal via the UI or the admin API.
    
    5. **Clean up**
    
        If you want to clean up your environment or start the installation process from scratch, execute the following commands to stop and remove the portal container:
        ```console
        docker-compose down
        docker-compose down
        ```
    
    ### Kubernetes
    
    #### Using New Helm Chart
    
    There are two ways to install Tyk Enterprise Developer Portal. You can enable `global.components.devPortal` during Tyk Self-Managed deployment by following the [Tyk Self-Managed installation instruction]({{< ref "product-stack/tyk-charts/tyk-stack-chart" >}}) using our `tyk-stack` umbrella chart. It will install Tyk Enterprise Developer Portal together with Tyk Gateway and Dashboard in the same namespace.
    
    Alternatively, you can install Tyk Enterprise Developer Portal as standalone component using our `tyk-dev-portal` chart. This page provides a clear and concise, step-by-step guide for installing the Tyk Enterprise Developer Portal as standalone component using the new helm chart.
    
    To install the portal using helm charts, you need to take the following steps:
    
    - Create the `tyk-dev-portal-conf` secret
    - Specify config settings for the portal in `values.yaml`
    - Launch the portal using the helm chart
    
    1. **Create the `tyk-dev-portal-conf` secret**
    
        Make sure the `tyk-dev-portal-conf` secret exists in your namespace. 
        This secret will automatically be generated if Tyk Dashboard instance was bootstrapped with [tyk-boostrap](https://artifacthub.io/packages/helm/tyk-helm/tyk-bootstrap) component chart 
        and `bootstrap.devPortal` was set to `true` in the `values.yaml`.
    
        If the secret does not exist, you can create it by running the following command.
    
        ```bash
        kubectl create secret generic tyk-dev-portal-conf -n ${NAMESPACE} \
        --from-literal=TYK_ORG=${TYK_ORG} \
        --from-literal=TYK_AUTH=${TYK_AUTH}
        ```
    
        The fields `TYK_ORG` and `TYK_AUTH` are the Tyk Dashboard _Organization ID_ and the Tyk Dashboard API _Access Credentials_ respectively. These can be obtained under your profile in the Tyk Dashboard.
    
    2. **Config settings**
    
        You must set the following values in the `values.yaml` or with `--set {field-name}={field-value}` using the helm upgrade command:
    
        | Field Name | Description |
        | ---------- | ----------- |
        | `global.adminUser.email` and `global.adminUser.password` | Set portal admin username and email for bootstrapping |
        | `global.secrets.devPortal` | Enable portal bootstrapping by providing secret name |
        | `license` | Tyk license key for your portal installation |
        | `storage.type` | Portal storage type, e.g. *fs*, *s3* and *db* |
        | `image.tag` | Enterprise Portal version. You can get the latest version image tag from [Docker Hub](https://hub.docker.com/r/tykio/portal/tags) |
        | `database.dialect` | Portal database dialect, e.g. *mysql*, *postgres* |
        | `database.connectionString`| Connection string to the Portal's database, e.g. for the *mysql* dialect: `admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true` |
    
        In addition to `values.yaml`, you can also define the environment variables described in the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) to further customize your portal deployment. These environment variables can also be listed as a name value list under the `extraEnvs` section of the helm chart.
    
    3. **Launch the portal using the helm chart**
    
        Run the following command to update your infrastructure and install the developer portal:
    
        ```bash
        helm install tyk-dev-portal tyk-helm/tyk-dev-portal -f values.yaml -n tyk
        ```
    
    ###### Configuration
    Please refer to this [guide]({{< ref "product-stack/tyk-charts/tyk-stack-chart" >}}) for an explanation of all configuration options.
    
    > **Note**: Helm chart supports Enterprise Portal v1.2.0+.
    
    #### Using Legacy Helm Chart
    
    {{< warning success >}}
    **Note**
    
    It is recommended to use new helm charts instead of legacy charts. Guide for new charts can be found [here]({{< ref "portal/install#using-new-helm-chart" >}})
    
    {{< /warning >}}
    
    To install the portal using helm charts, you need to take the following steps:
    
    - Create the `tyk-enterprise-portal-conf` secret
    - Specify config settings for the portal in `values.yaml`
    - Launch the portal using the helm chart
    
    This guide provides a clear and concise, step-by-step recipe for installing the Tyk Enterprise Developer Portal using helm charts.
    
    1. **Create the `tyk-enterprise-portal-conf` secret**
    
        Make sure the `tyk-enterprise-portal-conf` secret exists in your namespace. This secret will automatically be generated during the Tyk Dashboard bootstrap if the `dash.enterprisePortalSecret` value is set to `true` in the `values.yaml`.
    
        If the secret does not exist, you can create it by running the following command.
    
        ```bash
        kubectl create secret generic tyk-enterprise-portal-conf -n ${NAMESPACE} \
        --from-literal=TYK_ORG=${TYK_ORG} \
        --from-literal=TYK_AUTH=${TYK_AUTH}
        ```
    
        Where `TYK_ORG` and `TYK_AUTH` are the Tyk Dashboard Organization ID and the Tyk Dashboard API Access Credentials respectively. Which can be obtained under your profile in the Tyk Dashboard.
    
    2. **Config settings**
    
        You must set the following values in the `values.yaml` or with `--set {field-name}={field-value}` with the helm upgrade command:
    
        | Field Name | Description |
        | ---------- | ----------- |
        | `enterprisePortal.enabled` | Enable Portal installation |
        | `enterprisePortal.bootstrap` | Enable Portal bootstrapping |
        | `enterprisePortal.license`| Tyk license key for your portal installation |
        | `enterprisePortal.storage.type`| Portal database dialect, e.g *mysql*, *postgres* |
        | `enterprisePortal.storage.connectionString` | Connection string to the Portal's database, e.g for the mysql dialect: `admin:secr3t@tcp(tyk-portal-mysql:3306)/portal?charset=utf8mb4&parseTime=true` |
    
        In addition to values.yaml, you can also define the environment variables described in the [configuration section]({{< ref "product-stack/tyk-enterprise-developer-portal/deploy/configuration" >}}) to further customize your portal deployment. These environment variables can also be listed as a name value list under the `extraEnvs` section of the helm chart.
    
    3. **Launch the portal using the helm chart**
    
        Run the following command to update your infrastructure and install the developer portal:
    
        ```bash
        helm upgrade tyk-pro tyk-helm/tyk-pro -f values.yaml -n tyk
        ```
    
    {{< note success >}}
    In case this is the first time you are launching the portal, it will be necessary to bootstrap it before you can use it. For detailed instructions, please refer to the [bootstrapping documentation]({{< ref "#bootstrapping-enterprise-developer-portal" >}}).
    {{</ note >}}
    
    > **Note**: Helm chart supports Enterprise Portal v1.2.0+.
    
    
    ### Red Hat (RHEL / CentOS) {#linux-redhat-centos}
    
    This guide provides a step-by-step recipe for launching the Tyk Enterprise Developer Portal using an RPM package in Red Hat environment (RHEL / CentOS).
    
    {{< warning success >}}
    **Note**
    
    This document is just an example. Customize all fields, including the username, password, root password, database name and more.
    
    Be sure to update the connection DSN in the env-file accordingly.
    {{< /warning >}}
    
    **Prerequisites**
    
    To successfully install the Tyk Enterprise Developer Portal using RPM, your environment should satisfy the following requirements:
    - Connectivity to [packagecloud.io](https://packagecloud.io). If your environment doesn't have connectivity to packagecloud, you will need to download the portal package and copy it to the target host.
    - RPM Package Manager should be installed on the host machine.
    
    **Steps for Installation**
    
    1. **Download the portal package**
    
        To start with, you need to download the portal package from [packagecloud.io](https://packagecloud.io). To keep things organized, first create a directory where all installation assets (packages and config files) will be stored:
        ```console
        mkdir ~/portal-install
        cd ~/portal-install
        ```
    
        Next, download the portal package from [packagecloud.io](https://packagecloud.io/tyk/portal-unstable) by executing the command below.
        Ensure to replace package-version with actual package version e.g. https://packagecloud.io/tyk/portal-unstable/packages/el/8/portal-1.7.0-1.x86_64.rpm/download.rpm?distro_version_id=205 for the portal v1.7.0 for x86_64.
        ```console
        wget --content-disposition "https://packagecloud.io/tyk/portal-unstable/packages/<package-version>"
        ```
    
    2. **Install the portal package**
    
        Once the package is downloaded, you need to install using RPM. Execute the below command to so. Once again, ensure to replace `portal-1.7.0-1.x86_64.rpm` with an actual filename of the package you have downloaded on the previous step.  
        ```console
        sudo rpm -i portal-1.7.0-1.x86_64.rpm
        ```
    
    3. **Update the configuration file with your license**
    
        {{< note success >}}
    **Note** 
    
    Tyk no longer supports SQLite as of Tyk 5.7.0. To avoid disruption, please transition to [PostgreSQL]({{< ref"planning-for-production/database-settings#postgresql" >}}) or one of the listed compatible alternatives.
        {{< /note >}}

    Copy link
    Contributor

    github-actions bot commented Jul 2, 2025

    PR Code Suggestions ✨

    No code suggestions found for the PR.

    Copy link

    netlify bot commented Jul 2, 2025

    PS. Add to the end of url /docs/nightly

    Name Link
    🔨 Latest commit d820b10
    🔍 Latest deploy log https://app.netlify.com/projects/tyk-docs/deploys/6875468d417ad40008f422a5
    😎 Deploy Preview https://deploy-preview-6615--tyk-docs.netlify.app
    📱 Preview on mobile
    Toggle QR Code...

    QR Code

    Use your smartphone camera to open QR code link.

    To edit notification comments on pull requests, go to your Netlify project configuration.

    @andyo-tyk andyo-tyk changed the title Tidy up database references for Portal [DX-2063] Tidy up database references for Portal Jul 2, 2025
    @letzya
    Copy link
    Collaborator

    letzya commented Jul 8, 2025

    @andyo-tyk thank you the PR.
    QQ about the notice - it shows up twice - can we remove one or you prefer to keep them both (although they are in odd places)? Also "sqlite" shows up in the config and content
    image

    @letzya
    Copy link
    Collaborator

    letzya commented Jul 8, 2025

    remove outdated and unnecessary mentions of sqlite
    @letzya letzya requested a review from lghiur July 8, 2025 19:27
    @lghiur
    Copy link
    Contributor

    lghiur commented Jul 10, 2025

    also this file needs to be fixed in the product https://deploy-preview-6615--tyk-docs.netlify.app/docs/nightly/product-stack/tyk-enterprise-developer-portal/deploy/configuration/ @lghiur - add deprecation

    @letzya the link is not working

    @andyo-tyk andyo-tyk requested a review from edsonmichaque July 11, 2025 15:59
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    6 participants