Requirements
what the server needs.
Vodmill decodes, analyses and renders video on the same machine that serves the app, so it needs a real server with CPU, memory and disk that you control. Check this list before you rent one.
01Software
| Software | Version | Notes |
|---|---|---|
| Node.js | 22.12 or newer | "engines": {"node": ">=22.12"} in package.json. Inside the Docker image already. |
| ffmpeg with ffprobe | Required From your distribution | Reads, cuts and encodes video and audio. Not bundled. The server finds both on the PATH, or at FFMPEG_PATH and FFPROBE_PATH. The renderer was checked on ffmpeg 8.1 and needs neither libass nor drawtext (packages/render/README.md). |
| Build tools | python3 make g++ | Only when no prebuilt database driver (better-sqlite3) fits your system. Build time only. |
| Caddy or nginx | Any current version | https in front of the server |
| whisper.cpp | Optional | Local transcription with no API cost. You build it and fetch a model yourself (steps). |
| yt-dlp | Optional | Only if you want to offer import from a link. Not bundled; you install it yourself (Imports). |
| Docker | Optional | An alternative to installing Node.js on the host |
Vodmill itself is Node.js and TypeScript only. No Python code ships, and no browser runs on the server.
02Server: CPU, memory, disk
The author has not published benchmark figures for Vodmill 1.0.0, so this section gives you what the code says and a way to size the server yourself.
| Resource | What the code tells you |
|---|---|
| CPU | One render uses every core (x264) (packages/render/README.md). Face detection for reframing and the 720p preview copy of each source also run on the CPU. No GPU is needed. |
| Memory | One render uses about 400 MB (packages/render/README.md), on top of the server itself and the operating system. Local whisper.cpp adds the memory of the model you choose. |
| Parallel work | A new install runs one render and one analysis at a time (console, System, Rendering). Both can be raised to 4. Raise them only on a machine with the cores and memory for it. |
| Disk | For every source the server keeps the original file, a 720p preview copy, the extracted audio and the transcript; for every render the MP4, subtitles and cover. A single upload may be up to 8 GB by default ("Largest upload", 1 to 200 GB). A plan's storage limit is 10 GB per workspace by default. |
| Operating system | Linux. This guide uses Ubuntu 22.04 or 24.04 with systemd. |
| Access | Root or sudo over SSH, to install packages, the service and the https proxy |
As a suggestion only: start with 4 CPU cores, 8 GB of memory and 100 GB of disk, keep the defaults of one render and one analysis at a time, process a few of your own typical videos, and watch the console's System health and Render queue pages. If renders wait too long, add cores before you raise the parallel settings. This suggestion is not a benchmark.
Vodmill is a long-running Node.js process that starts ffmpeg and writes large files. Shared hosting, cPanel-only plans and "serverless" platforms cannot run it. Use a VPS from any provider, or your own machine.
03Domain and https
You need a domain or subdomain pointing at the server, and https in front of Vodmill. Invite links, password reset links, share links, Stripe's return addresses, signed file links and the YouTube connection all use the public https address. The console's status check "Public URL is https" is a blocker until it is set (src/server/admin/manifest.ts). Caddy gets a certificate by itself (Installation).
04Accounts you may need
All optional, each one switches on features. You open these accounts yourself and pay their providers directly.
| Service | Switches on |
|---|---|
| Anthropic | AI moment picking, the complete-thought check, titles, hooks, hashtags, post texts |
| ElevenLabs | Transcription with ElevenLabs Scribe, with speaker labels |
| Groq, OpenAI or a compatible server | Transcription with Whisper over HTTP |
| Stripe | Selling plans and credit packs |
| Resend | Invite and password reset e-mails, with a sending domain you verify there |
| Google Cloud | A YouTube Data API key (campaign view counts) and an OAuth client (publishing to YouTube) |
| Twitch developer console | Twitch view counts for campaigns, and viewer-made top clips of a Twitch video as signals |
Transcription needs one of: an ElevenLabs key, a Whisper provider key, or local whisper.cpp.
05Your own computer
Any modern browser opens the app and the console. Captions use a colour emoji font format (COLRv1) that Chromium-based browsers draw; the caption package notes that Safari versions without COLRv1 support do not show colour emoji in the preview (packages/captions/README.md). The rendered video is not affected. For the MCP server (optional), the computer that runs the AI assistant needs Node.js 22 or newer.