> ## Documentation Index
> Fetch the complete documentation index at: https://cinepro-changelog-2026-05-21.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart: Run CinePro Core locally

> Get a CinePro Core streaming backend running on your machine in 5-10 minutes using Docker or a local Node.js setup with your TMDB API key.

## Prerequisites

Before you start, you will need:

* **A TMDB API key** — [Get one for free at themoviedb.org](https://www.themoviedb.org/settings/api)

<Tabs>
  <Tab title="Docker (recommended)">
    <Steps>
      <Step title="Install Docker" icon="container">
        Make sure you have Docker installed and running. You can download it from [docker.com](https://www.docker.com/get-started).
      </Step>

      <Step title="Run CinePro Core with one command" icon="play">
        ```bash theme={null}
        docker run --name cinepro-core -p 3000:3000 -e TMDB_API_KEY=your_tmdb_api_key_here ghcr.io/cinepro-org/core:latest
        ```

        This command pulls the latest CinePro Core image, starts it in a container, and exposes it on port 3000. Make sure to replace `your_tmdb_api_key_here` with your actual TMDB API key.

        <Info>
          You can add more environment variables as needed (e.g. `HOST`, `PORT`, `CACHE_TYPE`, etc.) — just append `-e VAR_NAME=value` for each one.
        </Info>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Windows (development)">
    <Steps>
      <Step title="Install Node.js" icon="square-terminal">
        Install Node.js **v20 or higher**.

        <AccordionGroup>
          <Accordion title="Using winget (recommended)" icon="square-terminal">
            ```bash theme={null}
            winget install OpenJS.NodeJS.LTS
            ```
          </Accordion>

          <Accordion title="Manual installer" icon="download">
            Download and run the LTS installer from [nodejs.org](https://nodejs.org/en/download/).
          </Accordion>
        </AccordionGroup>

        Verify your installation:

        ```bash theme={null}
        node -v   # should print v20.x.x or higher
        npm -v
        ```
      </Step>

      <Step title="Clone the repository" icon="git-branch">
        ```bash theme={null}
        git clone https://github.com/cinepro-org/core.git
        cd core
        ```
      </Step>

      <Step title="Install dependencies" icon="package">
        ```bash theme={null}
        npm install
        ```
      </Step>

      <Step title="Configure environment variables" icon="lock-keyhole">
        Copy the example environment file and fill in your values:

        ```bash theme={null}
        copy .env.example .env
        ```

        Open `.env` in your editor and set at minimum:

        ```env theme={null}
        # Required
        TMDB_API_KEY=your_tmdb_api_key_here

        # Server
        PORT=3000
        HOST=localhost
        NODE_ENV=development

        # Cache (use 'memory' for local dev)
        CACHE_TYPE=memory
        ```

        <Info>
          `CACHE_TYPE=memory` is fine for development. Switch to `redis` for production deployments.
        </Info>
      </Step>

      <Step title="Start the dev server" icon="play">
        ```bash theme={null}
        npm run dev
        ```

        CinePro Core will start with hot reload at [http://localhost:3000](http://localhost:3000).
      </Step>
    </Steps>
  </Tab>

  <Tab title="Linux">
    <Steps>
      <Step title="Install Node.js" icon="square-terminal">
        Install Node.js **v20 or higher**.

        <AccordionGroup>
          <Accordion title="Using nvm (recommended)" icon="rectangle-terminal">
            ```bash theme={null}
            curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
            source ~/.bashrc
            nvm install 20
            nvm use 20
            ```
          </Accordion>

          <Accordion title="Using apt (Ubuntu/Debian)" icon="rectangle-terminal">
            ```bash theme={null}
            curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
            sudo apt-get install -y nodejs
            ```
          </Accordion>
        </AccordionGroup>

        Verify your installation:

        ```bash theme={null}
        node -v   # should print v20.x.x or higher
        npm -v
        ```
      </Step>

      <Step title="Clone the repository" icon="git-branch">
        ```bash theme={null}
        git clone https://github.com/cinepro-org/core.git
        cd core
        ```
      </Step>

      <Step title="Install dependencies" icon="package">
        ```bash theme={null}
        npm install
        ```
      </Step>

      <Step title="Configure environment variables" icon="lock-keyhole">
        ```bash theme={null}
        cp .env.example .env
        ```

        Edit `.env` and set at minimum:

        ```env theme={null}
        # Required
        TMDB_API_KEY=your_tmdb_api_key_here

        # Server
        PORT=3000
        HOST=localhost
        NODE_ENV=development

        # Cache
        CACHE_TYPE=memory
        ```
      </Step>

      <Step title="Start the dev server" icon="play">
        ```bash theme={null}
        npm run dev
        ```

        CinePro Core will start with hot reload at [http://localhost:3000](http://localhost:3000).
      </Step>
    </Steps>
  </Tab>

  <Tab title="macOS">
    <Steps>
      <Step title="Install Node.js" icon="square-terminal">
        Install Node.js **v20 or higher**.

        <AccordionGroup>
          <Accordion title="Using Homebrew (recommended)" icon="rectangle-terminal">
            ```bash theme={null}
            brew install node@20
            ```
          </Accordion>

          <Accordion title="Using nvm" icon="rectangle-terminal">
            ```bash theme={null}
            curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
            source ~/.zshrc
            nvm install 20
            nvm use 20
            ```
          </Accordion>
        </AccordionGroup>

        Verify your installation:

        ```bash theme={null}
        node -v   # should print v20.x.x or higher
        npm -v
        ```
      </Step>

      <Step title="Clone the repository" icon="git-branch">
        ```bash theme={null}
        git clone https://github.com/cinepro-org/core.git
        cd core
        ```
      </Step>

      <Step title="Install dependencies" icon="package">
        ```bash theme={null}
        npm install
        ```
      </Step>

      <Step title="Configure environment variables" icon="lock-keyhole">
        ```bash theme={null}
        cp .env.example .env
        ```

        Edit `.env` and set at minimum:

        ```env theme={null}
        # Required
        TMDB_API_KEY=your_tmdb_api_key_here

        # Server
        PORT=3000
        HOST=localhost
        NODE_ENV=development

        # Cache
        CACHE_TYPE=memory
        ```
      </Step>

      <Step title="Start the dev server" icon="play">
        ```bash theme={null}
        npm run dev
        ```

        CinePro Core will start with hot reload at [http://localhost:3000](http://localhost:3000).
      </Step>
    </Steps>
  </Tab>

  <Tab title="Docker (compose)">
    <Note>
      Docker Compose is the **recommended production deployment** method. It includes a Redis instance automatically.

      This is overkill if you just want to run a local dev server, but it's a great way to get a production-like environment up and running quickly.
    </Note>

    <Steps>
      <Step title="Install Docker" icon="container">
        Download and install [Docker Desktop](https://www.docker.com/get-started) (includes Compose).

        Verify:

        ```bash theme={null}
        docker -v
        docker compose version
        ```
      </Step>

      <Step title="Clone the repository" icon="git-branch">
        ```bash theme={null}
        git clone https://github.com/cinepro-org/core.git
        cd core
        ```
      </Step>

      <Step title="Configure environment variables" icon="lock-keyhole">
        ```bash theme={null}
        cp .env.example .env
        ```

        The only variable required by `compose.yml` is `TMDB_API_KEY` — Redis is configured automatically:

        ```env theme={null}
        TMDB_API_KEY=your_tmdb_api_key_here
        ```

        <Info>
          The Compose file sets `CACHE_TYPE=redis` and wires `REDIS_HOST=redis` automatically. You don't need to change those values.
        </Info>
      </Step>

      <Step title="Start services" icon="play">
        ```bash theme={null}
        docker compose up -d
        ```

        This builds the `cinepro-core` image and starts it alongside a **Redis 7 Alpine** container on a shared bridge network. The server is exposed on port **3000**.
      </Step>

      <Step title="View logs" icon="file-text">
        ```bash theme={null}
        docker compose logs -f cinepro-core
        ```
      </Step>
    </Steps>
  </Tab>
</Tabs>

***

## Production build (without Docker)

If you prefer running without Docker in a production environment:

```bash theme={null}
# 1. Build the TypeScript source
npm run build

# 2. Set production env vars
NODE_ENV=production

# 3. Start the compiled server
npm start
```

<Warning>
  Set `NODE_ENV=production` to silence debug logging. For persistence across restarts consider a process manager such as **PM2** (`pm2 start dist/server.js`).
</Warning>

***

## Available scripts

| Command          | Description                                    |
| ---------------- | ---------------------------------------------- |
| `npm run dev`    | Development server with hot reload             |
| `npm run build`  | Compile TypeScript to `dist/`                  |
| `npm start`      | Start production server (requires build first) |
| `npm run format` | Format code with Prettier                      |

***

<CardGroup cols={2}>
  <Card title="Explore the API" icon="square-terminal" href="/core/api-reference/introduction">
    Your server is running — dive into the OMSS-compliant endpoint reference to start fetching movie and TV show sources.
  </Card>

  <Card title="Configure providers" icon="plug" href="/core/configuration/providers">
    Learn how to enable, disable, or add new streaming source providers to your CinePro Core instance.
  </Card>

  <Card title="Open the CinePro UI" icon="globe" href="https://ui.cinepro.cc">
    Use the [CinePro UI](https://ui.cinepro.cc) (public beta) to browse and stream from your instance in the browser. On startup, the server prints a ready-to-use link of the form `https://ui.cinepro.cc/?omssurl=<your-instance-url>` derived from your [`PUBLIC_URL`](/core/configuration/environment#param-public-url).
  </Card>
</CardGroup>
