WebUI MoneyPrinterTurbo на Mac mini M4: автоматический рендер коротких AI-видео 9:16 через ffmpeg и Streamlit

2026 Аренда Mac mini MoneyPrinterTurbo: AI короткие видео, деплой и TCO

MoneyPrinterTurbo (harry0703/MoneyPrinterTurbo, ~78k stars) — MVC-пайплайн: LLM → Pexels/локальные клипы → Edge/Azure TTS → субтитры edge/whisper → mux через MoviePy 2.x + ffmpeg. Для batch-операторов вопрос не в «какой промпт», а в где держать fd-лимиты и APFS I/O: ноутбук с sleep, Docker-volume на VPS без VideoToolbox, или Mac mini M4 с 16 GB UMA в аренде. Ниже — измеримые SLI, матрица RAM, восемь шагов деплоя, TCO на 24 месяца и почему SFTPMAC закрывает 7×24 без Colab-сессий.

1. Три узких места до первого MP4

MoneyPrinterTurbo — не «чёрный ящик ML», а детерминированный конвейер: Python orchestration, внешние HTTP API, локальный mux. Понимание слоёв сокращает время до первого MP4 с дней до часов.

По Issues доминируют инфраструктурные сбои, не «плохой GPT».

  1. fd exhaustion: OSError: [Errno 24] Too many open files при mux — типично при batch без ulimit -n 10240 и ASCII-пути /Users/mptsvc/MoneyPrinterTurbo. Проверка: ulimit -n до старта Streamlit.
  2. Сеть к API: Pexels, LLM, HuggingFace (whisper) — нужен стабильный egress; split-tunnel VPN ломает загрузку whisper-large-v3 (~3 GB).
  3. Sleep / DHCP: WebUI на MacBook обрывает длинный render; для cron-batch нужен launchd на always-on узле — арендованный mini, не dev-лэптоп.

Фиксируйте baseline: свободный APFS, sysctl hw.memsize, версия ffmpeg -version, latency до api.openai.com — потом тюнинг subtitle_provider.

2. Архитектура и порты

Репозиторий harry0703/MoneyPrinterTurbo — MIT, MVC, два entrypoint. Понимание портов и config.toml критично для firewall rules на арендованном Mac: открыты наружу должны быть только SSH (22) и ваш mesh VPN, не Streamlit.

Компоненты из upstream:

  • WebUI: Streamlit ./webui/Main.py:8501
  • API: FastAPI main.py:8080 (/docs, /redoc)
  • Config: config.tomlllm_provider, pexels_api_keys, subtitle_provider, ffmpeg_path
  • Выход: output/ MP4; 9:16 = 1080×1920, 16:9 = 1920×1080
  • Стек: Python 3.11, uv sync --frozen по lockfile; MoviePy 2.x — без ImageMagick (Pillow для субтитров)

На Apple Silicon ffmpeg и Python делят Unified Memory — нет дискретной VRAM; whisper на CPU конкурирует с Streamlit за bandwidth UMA. Cloud LLM + edge субтитры минимизируют локальный compute — оптимальный профиль для M4 16 GB в аренде.

3. UMA, CPU и профили нагрузки

Профиль RAM (UMA) subtitle_provider Параллель Ожидаемый P95
Smoke 8 GB edge 1 < 10 min/clip
Prod M4 16 GB edge 1–2 6–8 min/clip
whisper local 32 GB whisper large-v3-turbo 2 +30–90 s audio STT
API-only 16 GB edge N jobs cron без UI overhead

README: CPU 4c min, 6–8c comfort, RAM 4/8/16 GB tiers. Для nightly batch на M4 измеряйте memory_pressure в Activity Monitor (SSH) — sustained yellow → снизить параллель или арендовать 32 GB.

4. Аренда / покупка / Docker / Colab

Вариант CAPEX 7×24 VideoToolbox / APFS rsync
MacBook 0 Плохо Да, но sleep Вручную
Покупка mini ~899+ USD eq. OK Нативно LAN
SFTPMAC аренда 0 CAPEX SLA Нативно SSH/SFTP
Docker Linux VPS OK Нет VT Volume
Colab Usage Сессия Нет Нет

docker compose up из README — для изоляции; production с models/whisper-large-v3 и кастомными resource/fonts быстрее на bare-metal APFS. Colab — только PoC.

5. Восемь шагов на удалённом Mac

Профиль хоста для production: macOS 13+, Apple Silicon M4, 16 GB UMA, APFS с ≥200 GB свободно под output/ и опционально models/. x86 Mac mini — legacy, не рекомендуем для новых batch. Проверка: uname -m → arm64, sw_vers, df -h .

  1. Узел: Mac mini M4 16 GB, SSH key-only, ulimit -n 10240 в ~/.zprofile.
  2. brew install uv ffmpeg git
  3. git clone https://github.com/harry0703/MoneyPrinterTurbo.git
    cd MoneyPrinterTurbo
  4. uv python install 3.11 && uv sync --frozen
  5. cp config.example.toml config.toml — секреты вне git; ротация ключей по календарю.
  6. WebUI: uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False; доступ ssh -L 8501:127.0.0.1:8501 user@host — не публикуйте 0.0.0.0 без auth.
  7. API: uv run python main.py — интеграция CI через REST.
  8. launchd plist для Streamlit/API; cron rsync output/ на NAS; мониторинг disk > 85% fill.

Обновления: git pull, uv sync --frozen, changelog в Pull requests. Windows — update.bat; macOS — git.

6. Первый 9:16 и метрики

Перед batch прогоните smoke: один keyword, один clip, лог ffmpeg без warning, размер output/ предсказуем. Зафиксируйте baseline wall-clock — потом любой регресс после git pull виден в Grafana или простом CSV cron.

WebUI: 1080×1920, RU/EN script, Edge TTS preview, subtitle_provider=edge. Acceptance:

  • Wall-clock P95 < 8 min (cloud LLM, 16 GB, 1 job)
  • MP4 15–45 MB; anomaly → inspect ffmpeg stderr
  • Subtitle contrast/readability — fonts in resource/fonts
  • License: Pexels + resource/songs (см. README)

Batch size 3+ только после 3 green runs без Errno 24. Логируйте RSS процесса Streamlit/ffmpeg — не субъективную «тормозит». Для вертикали 9:16 проверьте safe zone субтитров под UI TikTok — отступы задаются в WebUI, не пост-продом вручную на каждом ролике.

Provider LLM: в config поддерживаются OpenAI, DeepSeek, Ollama, Gemini, Qwen и др. — latency и rate limit различаются; для ночного batch выберите один provider на весь cron, чтобы не смешивать quota policies в одном прогоне.

7. whisper, TTS, API batch

edge: timestamps от TTS — CPU-light, не грузит UMA моделями STT. whisper: faster-whisper декодирует финальный аудиотрек; модель models/whisper-large-v3 (~3 GB) или turbo ~250 MB. При блокировке HuggingFace — зеркала Baidu/Quark из README; структура каталога с config.json, model.bin обязательна.

Azure TTS V2: speech_key + speech_region — не путать с бесплатным Edge (UI label «Azure TTS V1»). Девять голосов V1.1.2+ — отдельная строка бюджета. API batch: POST на localhost:8080, rsync MP4 — headless scale без Streamlit event loop.

bgm_volume, stroke субтитров, video_segment_duration — параметры в config.toml; git на remote Mac. Ollama на том же M4 (OpenClaw/Ollama гайд) — локальный LLM для скрипта, Pexels остаётся egress.

MoviePy 2.x рендерит субтитры через Pillow — ImageMagick не нужен. Если видите ImageMagick error — устаревший checkout; git pull обязателен. IMAGEIO_FFMPEG_EXE или ffmpeg_path в config при non-standard brew prefix.

Пакетная генерация: README поддерживает multiple videos per run — на 16 GB UMA не ставьте parallel >2 без замера memory_pressure. Каждый job держит десятки fd на временных кадрах — корень Errno 24.

7a. Ops: CI, backup, incident

Pipeline: keywords JSON → GitHub Actions SSH → curl API :8080 → rsync CDN staging → human QA. SLI: success rate night jobs, mean render time, free APFS GB, P95 fd usage via lsof -p $(pgrep -f streamlit) на пике.

Backup: daily config.toml template (secrets from vault), weekly fonts/songs, monthly models/ if whisper. Restore drill: 1 clip < 30 min quarterly. APFS snapshot до major git pull — откат ffmpeg regression за минуты.

Incidents: ffmpeg missing → ffmpeg_path; Pexels 429 → exponential backoff; LLM 401 → vault rotate; HF whisper fail → local_files_only + manual model path. Source of truth — git repo, не random ZIP с форумов.

Security: WebUI :8501 только через SSH -L или Tailscale; не выставлять Streamlit на публичный IP без OAuth reverse proxy. API keys в config.toml — chmod 600, отдельный UNIX user mptsvc. Логи Streamlit не копировать в тикеты с полными промптами — риск утечки PII.

Мониторинг Metal/UMA: при whisper large-v3 на 16 GB смотрите swap и compressor в memory_pressure -Q. Sustained critical — арендуйте 32 GB или вернитесь на edge субтитры. VideoToolbox ускоряет часть ffmpeg decode на Apple Silicon, но основной gain — достаточный UMA bandwidth, не «магия GPU».

8. TCO 24 месяца

Оценка USD/EUR equiv., июнь 2026 — подставьте тариф SFTPMAC.

Статья 24 мес Покупка M4 16GB Аренда SFTPMAC VPS Docker
Железо/хостинг ~899 ~2136–3576 ~960
Электричество/канал ~120 в тарифе включено
Ops admin ~7680 ~3840 ~11520
LLM API ~1200 ~1200 ~1200
Итого ~9899 ~7176–8616 ~13680

Break-even покупки ~18–22 мес при полной загрузке. Пики кампаний 3–6 мес — аренда без CAPEX. При 5000 clips/мес (~400 € LLM при $0.08/clip) оптимизируйте provider, не железо. При 200 clips/мес LLM ~16 € — negligible vs admin hours.

Сравнение с матрицей M5: MoneyPrinterTurbo не требует Neural Engine exclusive — M4 16 GB достаточно до параллельного whisper + второго пайплайна. Для фабрики Shorts критичны стабильный ffmpeg, предсказуемый ulimit и rsync output — не маркетинговая метка чипа.

Цитируемые константы: 78k+ stars, ports 8501/8080, Python 3.11, 1080×1920, whisper ~3GB, ulimit -n 10240, README RAM tiers 4/8/16 GB, CPU comfort 6–8 cores, pyproject + uv.lock как единственный dependency contract.

Docker на Linux: docker compose up — порт 8501/8080 map, volume для output/ и models/. Overhead cgroup + отсутствие VideoToolbox часто даёт +15–25% wall-clock vs bare-metal M4 при том же vCPU count — измеряйте, не предполагайте.

9. Пределы DIY и SFTPMAC

Laptop demo OK; production — sleep, NAT, нет tenant isolation. SaaS (RecCloud и др. из README) — fast TTFF, zero audit trail config.toml, данные в облаке вендора.

Colab notebook из README — хорош для eval, плох для cron: сессия умирает, нет постоянного :8080, нет rsync output в ваш CDN. Windows one-click zip на v1.2.6 — устаревший snapshot; на Mac используйте git + uv, не ZIP с неизвестного зеркала.

SFTPMAC: M4 16GB UMA, mptsvc, launchd KeepAlive для Streamlit/API, SFTP/rsync output/, EU DC для GDPR-like требований. Тот же SSH что для CI rsync — один ключ для кода и рендера.

Onboarding checklist: (1) тариф 16GB, (2) ed25519 SSH key, (3) brew install uv ffmpeg, (4) clone MoneyPrinterTurbo, (5) uv sync --frozen, (6) config.toml из vault, (7) tunnel :8501 admin-only, (8) первый 9:16 accept, (9) launchd + rsync cron. ETA <4h для senior macOS ops.

Сосуществование с другими агентами: OpenClaw gateway и MoneyPrinterTurbo делят UMA — не запускайте одновременно whisper large-v3 и локальный 70B Ollama на 16 GB. Планируйте окна: ночь — video batch, день — LLM agent, или арендуйте второй mini tenant.

Итог: код на GitHub; стабильность — на always-on Mac mini в аренде. Аренда выигрывает при пиках и изоляции; покупка — при 24+ месяцах 7×24. Colab и sleeping MacBook — антипаттерн для 9:16 factory. SFTPMAC закрывает fd limits, APFS, launchd и team SFTP — измеримый ops stack, не «надеемся на ноутбук». Деплой по этому runbook на арендованном M4 обычно укладывается в одну смену ops; дальше масштабируйте batch через API :8080, а не ручные клики в WebUI.

10. FAQ

GPU на Mac? Не нужен для cloud LLM+edge; whisper — CPU/RAM bound на UMA.

Какой Python? 3.11 через uv; uv sync --frozen обязателен для воспроизводимости с lockfile.

Нужен ли Pexels key? Да для stock video; без ключа — только local assets в resource.

Colab? Только тест — нет persistent API и launchd.

ImageMagick error? Устарело на MoviePy 2.x — git pull с upstream.

Поддержка? Issues + ffmpeg version + config без ключей + вывод ulimit -n.

Можно ли без субтитров? Пустой subtitle_provider в config — быстрее рендер, хуже для Shorts без звука в ленте.