How can we help?

Setup, storage, converting and every message iVault can show you, in one place.

Getting started

What does the first-run setup ask for?

The first time iVault opens, it walks you through five steps: Welcome, FFmpeg, Storage, Catalog and Finish. Press Skip setup at any point to do it later.

  • FFmpeg checks for the video encoder. See FFmpeg on Windows or on macOS and Linux.
  • Storage connects your first place to upload to. Setup offers S3 / R2 / MinIO, Local / NAS, GitHub and WebDAV; add Telegram, Google Drive or OneDrive later from the Storage screen.
  • Catalog asks for your wuxia-web folder. Skip it if you only need stream links.

To see it again: Settings → General → Run setup again. Nothing is reset.

How do I turn my first video into a link?
  1. Press New Video (Ctrl N), or drop video files anywhere on the window.
  2. Source: add files with Browse… or drag and drop, and give each one a Title. Series, episode, subtitles and poster are optional.
  3. Quality: keep the sizes you want, from 360p to 1080p.
  4. Storage: choose where to upload.
  5. Review: press Convert & upload.

When the job shows Ready, open it and press Copy URL in the Stream URL panel, or right-click it in the Library and choose Copy stream URL. That master.m3u8 link plays in any HLS player.

Can I close the window while videos are converting?

You can leave the New Video screen as soon as the videos are queued. Work carries on in the background and shows on the Dashboard, Library and Batches screens.

Quitting the app is different, so iVault asks first (Quit while converting?). If you quit anyway, uploads carry on where they stopped next time, but a conversion that was running starts again from the beginning. When iVault reopens it tells you Resumed N interrupted jobs.

Which files can I add, and what comes out?
  • Video: mp4, mkv, mov, avi, webm, m4v, ts.
  • Subtitles: srt, vtt, txt, one file per language. iVault converts them to WebVTT.
  • Posters: jpg, png, webp.

The output is HLS (H.264 video, AAC audio, 6-second segments) at 360p, 480p, 720p and 1080p. iVault never upscales: sizes taller than your source are skipped.

FFmpeg

Install FFmpeg on Windows

iVault converts video with FFmpeg, which is not bundled with the app.

  1. Open Settings → Conversion. Under FFmpeg, press Open gyan.dev, or go to gyan.dev/ffmpeg/builds.
  2. Download the release essentials zip and unzip it somewhere permanent, for example C:\ffmpeg.
  3. Back in iVault, next to FFmpeg folder press Choose… and pick the bin folder: the one containing ffmpeg.exe and ffprobe.exe.

The status changes to Found and shows the path. If FFmpeg is already on your PATH, iVault finds it without a folder.

Install FFmpeg on macOS or Linux

Open Settings → Conversion and press Install FFmpeg. iVault downloads a build (about 80 MB), checks it against a published checksum, and installs it for itself only. If the check fails, nothing is installed.

Prefer your own copy? Install FFmpeg with Homebrew or your package manager, or choose its folder under FFmpeg folder.

It still says “Not found”
  • Both ffmpeg and ffprobe must be in the same folder. Choose the bin folder, not the folder above it.
  • iVault looks in this order: the folder you chose, its own installed copy, then your PATH.
  • If a conversion is already running, a new folder takes effect after you restart iVault.

Storage setup

Add storage on the Storage screen with Add storage. Every provider asks for a Name; then Save and test checks that iVault can write there before it saves. Passwords, keys and tokens go to your system keychain, never iVault's database.

Cloudflare R2, Amazon S3 or MinIO

Choose S3 / R2 / MinIO, then pick a Preset to fill in the endpoint and region. This is the recommended choice for public streaming.

FieldWhat to enter
EndpointR2: https://<account-id>.r2.cloudflarestorage.com. MinIO: your server, e.g. http://127.0.0.1:9000. Optional for AWS.
Regionauto for R2; your bucket's region for AWS.
BucketThe bucket name, e.g. ivault-videos.
Public URLThe address that serves the bucket to viewers: a custom domain or the r2.dev URL.
Path-style URLsTick for MinIO.
Access key ID, Secret access keyAn API key that can write to the bucket.

After uploading, iVault checks every file through the Public URL. If the bucket isn't publicly readable there, the job stops at Verifying with “files missing”.

Local folder or NAS

Choose Local / NAS and enter the Folder (on this computer or a mounted NAS share) and the Public URL of the web server that serves that folder, e.g. http://nas.local/videos.

It needs no account. iVault checks every file through the Public URL after uploading, so that address must really serve the folder, or the job stops at Verifying.

GitHub

iVault pushes each video to its own branch and serves it through jsDelivr. It uses the git installed on your computer; install it from git-scm.com if iVault says it's missing.

  • Owner and Repository: where the videos go.
  • Branch name: a template, {file} by default. It can use {file}, {title}, {series} and {n:02}, and must come out different for every video.
  • Authentication: HTTPS token needs a personal access token that can push: a fine-grained token with access to that repository and Contents: Read and write, or a classic token with the repo scope (how to make one). SSH key uses your computer's SSH setup.

Test checks that the token can push, with a dry run that changes nothing in the repository. A read-only token fails it with the reason.

jsDelivr won't serve a file over 20 MB, so iVault refuses larger files for GitHub.

Telegram
  1. In Telegram, message @BotFather, send /newbot and copy the Bot token it replies with.
  2. Create a channel and add the bot to it as an administrator.
  3. Find the Channel ID: forward any post from the channel to @userinfobot, or open the channel on web.telegram.org and put -100 in front of the number in the address. A private channel's ID looks like -1001234567890; a public one can use @channelname.

Good to know:

  • Your website must play the videos with the same bot: a file can only be read by the bot that uploaded it.
  • Telegram keeps one quality per video, so there's no quality switching. Tick the tallest size you want.
  • Telegram allows about 20 files a minute and 20 MB per file, so large batches are slow. iVault stays under the limits and waits when Telegram asks it to.
Google Drive
Storage, not a streaming service

Google Drive throttles the hundreds of small requests a video makes. Use it for an archive or a small audience, not a public catalogue.

This is an advanced setup. You need:

  • An OAuth client in your own Google Cloud project: its Client ID and Client secret.
  • The OAuth consent screen set to In Production. While it is in Testing, Google ends the connection after 7 days.
  • An Edge base URL: your own deployment of the ivault-edge Worker, holding the same Google account's credentials. It streams the files to viewers.

Enter a Drive folder name (it's created on the first upload), then press Connect Google account. Your browser opens; iVault only asks for the files it creates, not the rest of your Drive. If the browser doesn't come back, see sign-in problems.

OneDrive

This is an advanced setup. You need:

  • An app registration in Microsoft Entra: its Application (client) ID. Register it as a public client with a loopback redirect; OneDrive uses no client secret.
  • An Edge base URL: your own ivault-edge Worker, holding the same Microsoft account's credentials.

Press Connect Microsoft account. iVault only asks for its own app folder. The connection needs renewing about every 90 days: reconnect in iVault and update the Worker's secret.

WebDAV: Nextcloud, ownCloud or a NAS
  • Base URL: the WebDAV address to upload to, e.g. https://files.example.com/dav/ivault. Don't put the password in it.
  • Public URL: the address that serves the same files to viewers, often the same host.
  • Username and Password.

http:// is fine for a NAS on your own network but sends the password unencrypted; use https:// anywhere else. SFTP isn't supported.

What do “Not tested”, “Connected” and “Connection problem” mean?
  • Not tested: iVault hasn't checked this storage since it started. Press Test on its card.
  • Connected: the last test could write there.
  • Connection problem: the last test failed. Videos already uploaded keep playing. Press Fix connection, check the values, and test again. New uploads to it wait and retry rather than fail.

To choose where new videos go by default, use Set as default in the card's ⋯ menu, or Settings → Storage.

How do I remove a storage provider?

On the Storage screen, open the card's ⋯ menu and choose Disconnect…. Its saved credentials are removed from your keychain too. Files already uploaded stay where they are.

Converting and uploading

What do the job statuses mean?
StatusMeaning
QueuedWaiting its turn. Settings → Conversion → Convert at once sets how many run together.
AnalysingReading the file's length, streams and resolution.
ConvertingFFmpeg is making the HLS versions.
UploadingSending the files to your storage.
VerifyingChecking every file is reachable at the public URL.
RetryingSomething failed. iVault tries up to 5 times, waiting a little longer each time.
Paused, StoppedYou paused or stopped it. A paused job keeps its progress.
FailedIt gave up. Open the job to see why, then press Resume or Retry.
ReadyDone. The stream URL is ready to copy.
A job failed halfway. Do I start over?

No. Open the job and read the card at the top. If it failed while uploading or verifying, it says Your converted files are safe: press Resume and only what's missing is uploaded. If it failed while reading or converting, fix the cause and press Retry. Your source file is never changed.

Why are some qualities greyed out?

iVault doesn't upscale. A size taller than your source shows Source is …p and is skipped. Telegram also allows only one quality per video.

How do I add subtitles, a poster or a series?
  • Subtitles: in the file table press Choose file…, then Add another language… for more. For a finished video, choose Add subtitles… from its menu in the Library.
  • Poster: use the image button in the file table, or Upload thumbnail… later.
  • Series: open the Series picker and search. Tick Also use it for the other files in this batch to set them all at once. The series has to exist on the Catalog screen first.
How can I make conversion faster?

In Settings → Conversion, set Encoding effort to Fast; it trades picture quality for speed, not file size. Convert at once runs several videos side by side, which helps on computers with many cores. Choosing fewer qualities saves time too.

Catalog and wuxia-web

How do I create a series?

On the Catalog screen press New series and type the English title. Look up on TMDB suggests the poster, year, rating and description for you to accept or ignore, and Translate to Khmer drafts the Khmer title and description. Review them, then Save series.

The Slug names the series' file in wuxia-web. It's made from the title (lowercase letters, numbers and single dashes) and can't be changed once the series is created.

Where do I get the TMDB and Gemini keys?

Both go in Settings → Catalog, under wuxia-web, and are saved to your keychain.

  • TMDB read access token: on themoviedb.org, open Settings → API and copy the long API Read Access Token, not the short v3 key.
  • Gemini API key: at aistudio.google.com, choose Get API key.

When you press Translate, the series' English title, description and year are sent to Google. Nothing else leaves your computer.

How do I export to wuxia-web?
  1. Set your wuxia-web db folder in Settings → Catalog.
  2. Open the series and press Export to wuxia-web.

iVault writes <slug>.json and updates index.json in that folder on your computer. Episodes from other sources are kept. It doesn't commit or upload anything: review the change with git diff, then commit and deploy as usual. To bring existing series in, use Import from wuxia-web.

Error messages

What iVault's messages mean, and what to do about them.

Storage: “Authentication failed”, “Access denied”, “Could not reach…”
MessageWhat to do
Authentication failed — check the access key, bot token or credentialsThe key or token is wrong or was revoked. Edit the storage and paste it again.
Access denied — the key can't write to bucket …The key works but lacks permission. Give it write access to that bucket.
Access denied — the bot has to be an administrator of …Make the Telegram bot an administrator of the channel.
Access denied — those credentials can't reach owner/repoThe GitHub token needs the repo scope and access to that repository.
Permission to owner/repo.git denied to … (403) — GitHub accepted the token but will not let it pushThe token can read but not push. Give it Contents: Read and write (fine-grained) or the repo scope (classic), paste it again under Storage → Edit, press Test, then Resume the video. Each computer keeps its own copy of the token.
Could not reach the endpoint, Telegram or GitHubCheck your internet connection and the endpoint address, then press Test.
Storage is full on this provider.Free up space or raise the quota, then Resume.
… asked iVault to slow down — try again in N s.A rate limit. iVault waits and retries by itself.
“files missing on …”, “provider limit is …”, “which … already uses”
  • N files missing on … — Retry re-uploads them: the upload finished, but some files can't be fetched from the Public URL. Check that the URL really serves the bucket or folder, then press Retry.
  • … is N bytes; provider limit is …: GitHub and Telegram accept files up to 20 MB. Choose a lower quality or other storage.
  • This would publish to …, which “…” already uses: two GitHub videos would share a branch. Change the branch template or rename one of them.
“Couldn't read the video”, “Conversion failed”, “file has no video stream”

FFmpeg couldn't read or convert the file. Check that it plays in a video player. A damaged file, or one with sound only (file has no video stream), can't be converted. Open the job's Logs tab and press Copy logs to include the details when you ask for help.

Google or Microsoft sign-in doesn't finish
  • iVault stopped waiting for that sign-in: iVault waits 5 minutes for the browser. Press Connect again and finish in the browser.
  • The sign-in was cancelled: the page was closed or declined. Nothing was connected.
  • Google refused this sign-in: check the client ID and client secret.
  • Microsoft refused this sign-in: check the client ID, and that the app registration allows a loopback redirect.
  • It worked until a few days ago: your Google consent screen is probably still in Testing (7-day limit), or the Microsoft connection is due its 90-day renewal. Reconnect.

When it works, the browser tab says Connected and you can close it.

“TMDB rejected the token”, “Gemini rejected the API key”

Paste the key again in Settings → Catalog; see where to get the keys. For TMDB, make sure it's the long read access token. … is rate-limiting requests means wait a minute and try again. If TMDB finds nothing, try the original-language title or add the year.

“Lost the connection to the job engine”, “the job queue has stopped”

Quit and reopen iVault. Interrupted jobs resume on their own, and uploads carry on where they stopped.

Settings, data and shortcuts

Where does iVault keep my data?

Open Settings → Advanced → Folders and press Reveal next to Cache, Data or FFmpeg. Data holds your library and settings; Cache holds conversions in progress. Credentials are in your system keychain. Nothing is sent to us: see the privacy policy.

Clear the cache or reset settings

Both are in Settings → Advanced → Maintenance.

  • Clear cache frees disk space. Ready videos keep playing; failed and stopped jobs will convert again from scratch.
  • Reset settings returns the theme, quit behaviour, parallel conversions and the FFmpeg and wuxia-web folders to their defaults. Your videos, storage and credentials are not touched.
Which version do I have?

Settings → About shows the version. Include it when you report a problem.

Keyboard shortcuts

Use Ctrl on Windows and Linux, ⌘ on macOS.

KeysAction
Ctrl NNew Video
Ctrl OBrowse for files, on the Source step
Ctrl ,Settings
Ctrl FSearch the Library
Enter, SpaceOpen or preview the selected video
Ctrl CCopy the selected video's stream URL
DeleteRemove the selected video
EscClear the search

Right-click a video in the Library for all of its actions.

Still stuck?

Report a problem or ask a question

Include your iVault version (Settings → About), your operating system, your storage provider, the exact message, and the job's copied logs if it failed. Remove access keys, tokens and passwords first.

Open an issue