---
title: "Deploy Money Printer Turbo"
description: "AI generates HD short videos from a single topic instantly with one click."
category: "Other"
url: https://railway.com/deploy/money-printer-turbo
---

# Deploy Money Printer Turbo

AI generates HD short videos from a single topic instantly with one click.

**[Deploy Money Printer Turbo on Railway](https://railway.com/template/money-printer-turbo)**

- **Category:** Other
- **Total deploys:** 2

## Template content

### app

- **Image:** ghcr.io/harry0703/moneyprinterturbo:latest
- **Start command:** `sh -c 'printf "%s" "$START_SCRIPT" > /tmp/start-app.sh && exec sh /tmp/start-app.sh'`
- **Health check:** /_stcore/health
- **Public domain:** Yes

### proxy

- **Image:** caddy:2-alpine
- **Start command:** `sh -c 'export WEBUI_PASSWORD_HASH=$(caddy hash-password --plaintext "$WEBUI_PASSWORD") && printf "%s" "$CADDYFILE" > /etc/caddy/Caddyfile && exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile'`
- **Health check:** /proxy-healthz

## Documentation

# Deploy and Host Money Printer Turbo on Railway

MoneyPrinterTurbo turns a topic or keyword into a finished short video. It writes the script with an LLM, pulls matching stock footage, generates voiceover and subtitles, adds background music, and renders high-definition vertical or landscape clips through a web UI, a REST API, or in batches.

![Interface](https://raw.githubusercontent.com/arloodots/MoneyPrinterTurbo/refs/heads/main/moneyprinter.png)



## About Hosting Money Printer Turbo

Hosting this template deploys two services on Railway. The app service runs the Streamlit WebUI and FastAPI service side by side within a single container, backed by a 5 GB volume that preserves **config.toml** and all generated videos. The proxy service uses Caddy to serve both tools on a single public domain, securing them with a login prompt since MoneyPrinterTurbo lacks built-in authentication. The initial deployment takes several minutes to pull the multi-GB image. Rendering is CPU-intensive, taking a minute or more per video, or longer if you configure Whisper for subtitles, which downloads its model on first use.

![apis](https://raw.githubusercontent.com/arloodots/MoneyPrinterTurbo/main/docs/api.jpg)

## Common Use Cases

* Spinning up a private, always-on video generator for TikTok, Reels, or YouTube Shorts without keeping a local machine running
* Producing short explainer or promo clips in bulk directly from a list of topics
* Driving automated video generation programmatically from external services via the REST API

## Dependencies for Money Printer Turbo Hosting

* **An LLM API key** — Required for script generation (supports Kimi/Moonshot by default, along with OpenAI, Gemini, DeepSeek, Qwen, and Ollama)
* **A stock footage API key** — Required unless using custom uploaded material (Pexels and Pixabay are free options)
* **A persistent volume** — Included and required to ensure configuration and rendered videos survive redeploys
* **Voice, subtitles, and music** — Keyless and free via the default Edge TTS provider

### Deployment Dependencies

* [MoneyPrinterTurbo upstream repository](https://www.google.com/search?q=https://github.com/Harry-zklcdc/moneyprinterturbo)
* Prebuilt container image: `ghcr.io/harry0703/moneyprinterturbo`
* [Pexels API](https://www.pexels.com/api/) · [Pixabay API](https://pixabay.com/api/docs/)
* [Kimi / Moonshot platform](https://platform.moonshot.cn/) (Default LLM provider)
* [Caddy](https://caddyserver.com/) (Proxy service)

### Implementation Details

**Two upstream containers combined into one service.** Upstream configurations run the WebUI and API as separate containers sharing a bind mount, but Railway volumes attach to a single service. Both processes run together using:

```bash
python3 main.py &
exec streamlit run ./webui/Main.py --server.port=8501 ...

```

**Config persistence and rewrites.** Because `app/config/config.py` derives its path from the package directory (which resets on every deployment) and `save_config()` relies on `os.replace()` (breaking direct symlinks), the boot script continuously mirrors configuration changes:

```bash
cp -f /data/config.toml /MoneyPrinterTurbo/config.toml
( while true; do sleep 10; cp -f /MoneyPrinterTurbo/config.toml /data/config.toml; done ) &

```

Storage uses a clean symlink pointing directly to `/data/storage`. Template variables populate `config.toml` strictly on first boot, after which volume edits take precedence.

**Security model.** Caddy applies basic authentication to incoming traffic while keeping the internal health check endpoint open:

```caddy
@protected not path /proxy-healthz
basic_auth @protected {
	{$WEBUI_USERNAME} {$WEBUI_PASSWORD_HASH}
}

```

`WEBUI_PASSWORD` is provided as plain text and securely hashed at startup using `caddy hash-password`.

**Port mapping.** Railway probes health checks using `PORT`, whereas Streamlit runs on a fixed port 8501. The app service maps `PORT=8501` to align health checks and prevent websocket issues by setting `PUBLIC_DOMAIN=${{proxy.RAILWAY_PUBLIC_DOMAIN}}`.

## Why Deploy Money Printer Turbo on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Money Printer Turbo on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/money-printer-turbo
