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».
- fd exhaustion:
OSError: [Errno 24] Too many open filesпри mux — типично при batch безulimit -n 10240и ASCII-пути/Users/mptsvc/MoneyPrinterTurbo. Проверка:ulimit -nдо старта Streamlit. - Сеть к API: Pexels, LLM, HuggingFace (whisper) — нужен стабильный egress; split-tunnel VPN ломает загрузку
whisper-large-v3(~3 GB). - 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.toml—llm_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 .
- Узел: Mac mini M4 16 GB, SSH key-only,
ulimit -n 10240в~/.zprofile. brew install uv ffmpeg git-
git clone https://github.com/harry0703/MoneyPrinterTurbo.git cd MoneyPrinterTurbo uv python install 3.11 && uv sync --frozencp config.example.toml config.toml— секреты вне git; ротация ключей по календарю.- 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. - API:
uv run python main.py— интеграция CI через REST. - 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 без звука в ленте.