Skip to content
Credenza

Install Credenza

Two containers, on anything that runs Docker. Or one line on a Linux machine you already own: it needs nothing but systemd, and it brings its own runtime.

Docker

x86-64 · ARM64

The server and its database as two containers, for a NAS or anything that already runs them.

  1. 01 Save this as docker-compose.yml in a folder of its own, and change /srv/media to wherever your films and shows are.

    services:
      credenza:
        image: credenza/credenza:${CREDENZA_VERSION:-latest}
        restart: unless-stopped
        user: "${PUID:?set PUID in .env}:${PGID:?set PGID in .env}"
        ports:
          - "8080:8080"
        environment:
          HOME: /data
          MediaServer__Database__ConnectionString: >-
            Host=postgres;Database=credenza;Username=credenza;Password=${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
        volumes:
          - ./data/credenza:/data
          # Your media, at the same path on both sides:
          # it is the path you give Credenza when you add a library.
          - /srv/media:/srv/media
        depends_on:
          postgres:
            condition: service_healthy
    
      postgres:
        image: credenza/postgres:18-pgmq1.12.0-pgsearch0.25.3
        restart: unless-stopped
        user: "${PUID:?set PUID in .env}:${PGID:?set PGID in .env}"
        environment:
          POSTGRES_DB: credenza
          POSTGRES_USER: credenza
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
        volumes:
          - ./data/postgres:/var/lib/postgresql
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U credenza -d credenza"]
          interval: 5s
          timeout: 3s
          retries: 30
    the Compose file
  2. 02 Give the database a password and start it, in the same folder. Both containers run as PUID and PGID — your own account below; set them to whichever account owns your media if that is someone else. Then visit port 8080 and the server asks for its administrator, as it does on Linux.

    echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" > .env
    echo "PUID=$(id -u)" >> .env
    echo "PGID=$(id -g)" >> .env
    mkdir -p data/credenza data/postgres
    docker compose up -d
    the start commands
  3. 03 Optional: transcode on the GPU. Pick your card and save its file as docker-compose.override.yml beside the first one and run docker compose up -d again. Settings → Server → Transcoding then says which encoder it chose.

    Graphics card

    Needs the NVIDIA Container Toolkit on the host. Works on Windows too, under Docker Desktop.

    services:
      credenza:
        environment:
          NVIDIA_DRIVER_CAPABILITIES: compute,utility,video
        deploy:
          resources:
            reservations:
              devices:
                - driver: nvidia
                  count: all
                  capabilities: [gpu, video]
    the NVIDIA override file

    Linux only. Add the render device’s group to .env first, then save the file:

    echo "RENDER_GID=$(stat -c %g /dev/dri/renderD128)" >> .env
    the render group command
    services:
      credenza:
        devices:
          - /dev/dri:/dev/dri
        group_add:
          - "${RENDER_GID:?set RENDER_GID in .env}"
    the AMD and Intel override file
Upgrading, and pinning a version

To move to the newest release:

docker compose pull && docker compose up -d
the upgrade command

To stay on one, put CREDENZA_VERSION=0.1.1 in .env beside the password. The version numbers are the Linux packages’ own, so the two installs are always the same release.

Linux

x86-64 · ARM64

One command that installs the server as a service, on any machine with systemd.

curl -fsSL https://credenza.tv/install.sh | sh
the install command

Run the same line again to upgrade. Read the script before you pipe it to a shell.

  1. 01

    Installs the right package

    The .deb on Debian and Ubuntu, the .rpm on Fedora and RHEL, a tarball on anything else with systemd — checked against the release’s checksums before anything is installed.

  2. 02

    Asks where the database runs

    In Docker, which it installs for you and is the recommended answer, or in this machine’s own PostgreSQL with the three extensions Credenza needs added to it.

  3. 03

    Opens in a browser

    Visit port 8080 on the machine and the server asks for its administrator, its first libraries and a TMDB token. Everything else is set from there.

Unattended installs, and Fedora

To answer the database question up front — for a script, or a machine you are not sitting at:

curl -fsSL https://credenza.tv/install.sh | sh -s -- --database docker --yes
the unattended install command

Put CREDENZA_VERSION=0.1.1 before sh to pin a version, and pass --no-setup to install the package and run sudo credenza-setup yourself.

On Fedora, the default ffmpeg has no H.264 encoder, so anything that needs transcoding will not play. Swap it for RPM Fusion’s:

sudo dnf swap ffmpeg-free ffmpeg --allowerasing
the Fedora ffmpeg command

Windows

Coming soon

An installer that runs the server as a service, with the database set up for you.

macOS

Coming soon

For the Mac mini in the cupboard, on Apple silicon and Intel alike.