# How to Install MoneyPrinterTurbo: Complete Setup Guide

> Learn how to install MoneyPrinterTurbo with this comprehensive setup guide. Follow simple steps to clone the repo, set up your environment, and get the FastAPI server running quickly.

- Repository: [Harry/MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo)
- Tags: how-to-guide
- Published: 2026-03-23

---

**Clone the repository, create a Python 3.11 virtual environment, install dependencies from [`requirements.txt`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/requirements.txt), configure your API keys in [`config.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.toml), and run `python main.py` to start the FastAPI server on `127.0.0.1:8080`.**

MoneyPrinterTurbo is a FastAPI-based service that automatically generates short videos complete with AI scripts, stock footage, subtitles, and voiceovers. Installing MoneyPrinterTurbo requires only a lightweight Python setup to get the full MVC application running locally. This guide covers both local Python installation and Docker deployment using the actual source code structure from the `harry0703/MoneyPrinterTurbo` repository.

## Local Installation Steps

Follow these steps to install MoneyPrinterTurbo in a local Python environment. This method is ideal for development and gives you direct control over the configuration files.

### 1. Clone the Repository

Start by cloning the source code from GitHub:

```bash
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo

```

### 2. Create a Python Virtual Environment

The application requires **Python 3.11**. Use `conda` to create an isolated environment:

```bash
conda create -n MoneyPrinterTurbo python=3.11
conda activate MoneyPrinterTurbo

```

### 3. Install Dependencies

Install the required packages listed in [`requirements.txt`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/requirements.txt):

```bash
pip install -r requirements.txt

```

This installs FastAPI, Uvicorn, and other core dependencies needed by the application entry point in [`main.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/main.py).

### 4. Install ImageMagick (Optional)

**ImageMagick is required for subtitle rendering.** Without it, video generation will fail at the subtitle composition stage.

- **Windows**: Download the static build, install it, and set the path in [`config.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.toml).
- **macOS**: `brew install imagemagick`
- **Ubuntu**: `sudo apt-get install imagemagick`

### 5. Configure the Application

Copy the example configuration template and edit it with your credentials:

```bash
cp config.example.toml config.toml

```

Edit [`config.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.toml) to add your **Pexels API key**, **LLM provider** (OpenAI, Azure, or local), and **ImageMagick binary path**. The configuration loader in [`app/config/config.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/config/config.py) parses this file at runtime to populate `config.app` settings and `config.listen_port`.

### 6. Start the FastAPI Server

Run the entry point script to start the Uvicorn server:

```bash
python main.py

```

By default, the server listens on `127.0.0.1:8080`. The interactive API documentation is available at `http://127.0.0.1:8080/docs`, which reflects all endpoints registered in [`app/router.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/router.py) and implemented in [`app/controllers/v1/video.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/video.py).

### 7. Launch the Web UI (Optional)

To use the browser interface instead of direct API calls, start the Streamlit-based UI:

- **Linux/macOS**: `sh webui.sh`
- **Windows**: `webui.bat`

These scripts execute `streamlit run webui/Main.py` and automatically open your default browser.

## Docker Deployment

For production servers or to avoid dependency conflicts, use the containerized setup.

### Start with Docker Compose

From the project root, run:

```bash
docker compose up

```

This builds the image, installs ImageMagick automatically, and exposes:
- The FastAPI backend on `0.0.0.0:8080`
- The Streamlit Web UI on `0.0.0.0:8501`

## Verifying the Installation

Test your setup by creating a video through the REST API. The business logic resides in `app/services/`, while the endpoint definitions live in [`app/controllers/v1/video.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/video.py).

### Create a Video Task

```python
import requests

api_url = "http://127.0.0.1:8080/videos"
payload = {
    "theme": "How to make coffee",
    "language": "en",
    "video_width": 1080,
    "video_height": 1920,
    "subtitle_provider": "edge"
}
resp = requests.post(api_url, json=payload)
print(resp.json())  # Contains task_id

```

### Poll for Completion

Task state is managed by the controller layer in `app/controllers/manager/`:

```python
import time
import requests

task_id = "your-task-id"
status_url = f"http://127.0.0.1:8080/tasks/{task_id}"

while True:
    r = requests.get(status_url)
    data = r.json()["data"]
    if data.get("status") == "finished":
        print("Video ready:", data["videos"])
        break
    time.sleep(2)

```

### Download the Result

Retrieve the final MP4 file:

```python
download_url = f"http://127.0.0.1:8080/download/{task_id}/final-1.mp4"
r = requests.get(download_url)

with open("final.mp4", "wb") as f:
    f.write(r.content)

```

## Key Architecture Components

Understanding these files helps with troubleshooting:

- **[`main.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/main.py)**: Entry point that creates the FastAPI app and starts the Uvicorn server.
- **[`app/router.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/router.py)**: Root router mounting all version-1 controllers including [`app/controllers/v1/video.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/video.py) and [`app/controllers/v1/llm.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/llm.py).
- **[`app/controllers/v1/video.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/video.py)**: Implements `/videos` POST, `/tasks/{task_id}` GET, and `/download/{file_path}` endpoints.
- **`app/services/`**: Core logic for video stitching, audio synthesis, and subtitle generation.
- **[`webui.sh`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/webui.sh)** / **`webui.bat`**: Convenience scripts that launch the Streamlit interface.

## Summary

- **Local install**: Clone, create Python 3.11 environment, run `pip install -r requirements.txt`, copy [`config.example.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.example.toml) to [`config.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.toml), then execute `python main.py`.
- **Docker install**: Run `docker compose up` from the project root to expose ports 8080 (API) and 8501 (UI).
- **Prerequisites**: Python 3.11 is required; ImageMagick is optional but necessary for subtitle rendering.
- **Configuration**: Edit [`config.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.toml) to set your Pexels API key and LLM provider before starting the server.
- **Entry points**: [`main.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/main.py) starts the API, while [`webui.sh`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/webui.sh) or `webui.bat` launches the browser interface.
- **API location**: Endpoints are defined in [`app/controllers/v1/video.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/video.py) and documented at `/docs` when the server runs.

## Frequently Asked Questions

### What Python version is required to install MoneyPrinterTurbo?

**Python 3.11 is recommended.** The project uses modern type hints and async features that require this version. Create your environment specifically with `python=3.11` to avoid compatibility issues with dependencies in [`requirements.txt`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/requirements.txt).

### Is ImageMagick mandatory for MoneyPrinterTurbo?

**ImageMagick is optional for the API server but required for video generation.** If you skip the installation, the FastAPI server will start, but video creation will fail when the subtitle service in `app/services/` attempts to render text overlays. Install it via Homebrew on macOS, APT on Ubuntu, or download the static binary for Windows.

### How do I run MoneyPrinterTurbo on a remote server?

**Change the listen host in [`config.toml`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/config.toml) from `127.0.0.1` to `0.0.0.0`**, then start the server with `python main.py`. For production environments, use the Docker Compose setup instead of the local Python installation, as it handles networking and process isolation automatically.

### Can I use MoneyPrinterTurbo without the Web UI?

**Yes, the Web UI is completely optional.** The core functionality is exposed through the REST API defined in [`app/controllers/v1/video.py`](https://github.com/harry0703/MoneyPrinterTurbo/blob/main/app/controllers/v1/video.py). You can interact directly with endpoints like `POST /videos` and `GET /tasks/{task_id}` using HTTP clients or the Python `requests` library, as shown in the verification examples above.