Skip to content

Deploy PRINTFILM 0.2.0 for AI Generated Movies

Install PRINTFILM v0.2.0 and run a self-hosted AI generated movie pipeline: Docker setup, TokenFree keys, health checks, and real fix paths.

6 min readIntermediate

Can you self-host an AI generated movie stack tonight?

Most “how to make an AI movie” guides bounce you across five SaaS tabs and a CapCut export. Fine for one clip. Miserable for a repeatable short-drama line. PRINTFILM v0.2.0 is different: open-source studio on your box – topic or script → storyboard → images → Seedance video (voice-over included at render) → FFmpeg final cut.

Repo: github.com/yi1108/printfilm (MIT). Pin 0.2.0 from the English README as of the current docs (re-check the repo tag before you automate upgrades – labels move). Deploy path only: Docker, keys, health, first short, then the traps that actually stop people.

System requirements for PRINTFILM

Use Docker. Desktop on macOS/Windows, or Engine + Compose on Linux. No local GPU for the app – generation leaves via TokenFree’s OpenAI-compatible API (Seedance / Seedream / LLM), per project docs.

Item Minimum (practical) Comfortable
OS Linux / macOS / Windows with Docker Same
RAM Unofficial guess: ~8 GB free for Postgres+Redis+API+two frontends 16 GB+
Disk Room for images plus a growing media volume (size not fixed in docs) SSD with headroom for MP4s
CPU Modern multi-core Extra cores help FFmpeg compose
GPU Not required for Docker stack N/A (cloud models)
Network Pull Aliyun ACR; call TokenFree Stable outbound HTTPS

Hybrid layout instead? deploy/README.md wants Python 3.12, FFmpeg on PATH, and Node.js. On Linux, missing CJK fonts turn burned-in subtitles into □ until you install something like fonts-wqy-zenhei and recompose.

Download / official source

git clone https://github.com/yi1108/printfilm.git
cd printfilm
cp deploy/.env.docker.example deploy/.env.docker

Public images come from Aliyun ACR under the gcc namespace – no registry login. Pull blocked in your region? Jump straight to docker-compose.full.yml with --build (install section). Don’t start from random forks.

Install PRINTFILM v0.2.0 (Docker)

Edit deploy/.env.docker before the first up. Minimum from the example file:

  • POSTGRES_PASSWORD – not the sample default
  • SECRET_KEY – long random string
  • OPENAI_API_KEY and ARK_API_KEY – both set (see tip)
  • Optional: ARK_MOCK=true for empty UI only
# public images
docker compose --env-file deploy/.env.docker up -d

docker compose --env-file deploy/.env.docker ps
docker compose --env-file deploy/.env.docker logs -f api

Web and admin wait on API health. Endpoints:

  • User app: http://localhost:8080
  • Admin: http://localhost:8081
  • API docs: http://localhost:8000/docs
  • Health: http://localhost:8000/api/health
docker compose --env-file deploy/.env.docker -f docker-compose.full.yml up -d --build

That’s the ACR-failure path – full local build, not a “stack is dead” signal.

Pro tip:OPENAI_API_KEY and ARK_API_KEY must be the same TokenFree sk-... value. One left as replace-me is still the usual “UI loads, generate dies” failure (401 / model 404 show up even when the other field looks filled).

First-time configuration

Key from tokenfree.com (console → API keys). Snippet shaped like the project’s Docker template – model IDs as of deploy/.env.docker.example; confirm they still exist on your TokenFree plan before you depend on them:

ARK_MOCK=false
OPENAI_API_KEY=sk-your-key
OPENAI_BASE_URL=https://www.tokenfree.com/v1
ARK_API_KEY=sk-your-key
MODEL_LLM=kimi-k2.6
MODEL_IMAGE=seedream-5-0-pro
MODEL_VIDEO=seedance-2-5
BILLING_ENABLED=false

Env is injected at container start, so key edits need:

docker compose --env-file deploy/.env.docker up -d --force-recreate api

Register at http://localhost:8080/auth first. Admin is opt-in: put that already-registered email in ADMIN_BOOTSTRAP_EMAILS, recreate api again. Bootstrap only promotes – it never creates the account.

Later you can also point models through Admin → System settings → Models (TokenFree channel). Back up volumes before host moves if you care about that state.

There’s a quiet moment after containers go green where the stack feels “done,” even though you haven’t spent a single generation credit. That gap is where people call the product broken when the wiring is just unfinished.

Verify the install works

Actually check three things:

  1. curl -s http://localhost:8000/api/health – healthy payload; ark_mock false once real keys are live.
  2. /docs OpenAPI UI loads.
  3. Log into the user app, start one trivial one-scene short. If generation errors, fix keys/models before you blame Docker.

A model 404 means that id isn’t on your TokenFree list – pick what the admin dropdown actually offers (IDs drift; the example file is a starting point, not a contract).

Common install errors and fixes

Image/video: key not configured – still replace-me in env, or empty admin channel. Fix, then --force-recreate api.

Health: ark_mock true – ARK_MOCK=false, non-empty keys, recreate api. README troubleshooting spells this out.

401 / insufficient quota – TokenFree console: key on? balance left?

Web never up – API healthcheck failing (Postgres/Redis, bad SECRET_KEY, wrong env file). ps + logs -f api.

ACR pull timeouts – docker-compose.full.yml ... --build.

Admin still a normal user – bootstrap email set before register, or recreate skipped. Register → promote → recreate.

Why won’t bootstrap invent users? Email registration is the identity source of truth. Auto-creating admins from env would skip verification and leave “ghost” superusers on every redeploy.

Upgrade and uninstall

docker compose --env-file deploy/.env.docker pull
docker compose --env-file deploy/.env.docker up -d

Stop, keep volumes:

docker compose --env-file deploy/.env.docker down

Full wipe (Postgres + media – irreversible):

docker compose --env-file deploy/.env.docker down -v
cd .. && rm -rf printfilm

Export media and dump Postgres first if billing rows or in-admin settings matter to you.

In-repo short-drama notes and Seedance parameter docs help once you leave the happy path; FFmpeg subtitle burn-in is the usual next sharp edge on hybrid hosts.

FAQ

Is PRINTFILM free for AI generated movie output?

MIT code. BILLING_ENABLED=false by default. TokenFree (or whatever you route) still bills tokens. Your cost locally is machine + disk.

Do I need Seedance or FFmpeg installed on the host?

Full Docker: FFmpeg compose stays inside the stack; you never install Seedance locally – video goes out with MODEL_VIDEO=seedance-2-5 as of the example env (confirm current IDs). Hybrid host install is the exception: FFmpeg must be on PATH because the API shells out for the final cut.

Can I run without any API key?

Only ARK_MOCK=true for UI shells. No real storyboard→image→video media. v0.2.0’s documented open build has no fully offline generative path. Need air-gapped models? That’s a different architecture (local ComfyUI-style stacks), not this TokenFree-wired studio – don’t force PRINTFILM into that role.

Clone, set the secrets in deploy/.env.docker, docker compose --env-file deploy/.env.docker up -d, and hold the celebration until /api/health shows mock off and a one-scene short finishes without a key error.