Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Setting up Jellything

Installation

From the AUR

This is the recommended option. It will also install a systemd service and default config.

paru -S jellything-git
# OR
yay -S jellything-git
# OR
git clone https://aur.archlinux.org/jellything-git.git
cd jellything-git && makepkg -si

From Source

See Building.

Configuration

Jellything is configured with YAML. The recommended config path for a system installation (and the one used in the AUR package’s systemd service) is /etc/jellything.yaml but any other path will work just fine too.

All configuration options in Jellything have a sensible default value such that an empty file is a valid configuration. You might however want to change the following options in particular:

  • base_path Folder where database and cache are placed
  • import.media_path Root folder of your media hierarchy. (Default: <base_path>/media)

For advanced configuration see Configuration.

Running

jellything /etc/config.yaml

Configuration

Below is an annotated config with all default values manually specified. Basically all configuration fields are optional.

base_path: . # shortcut for setting both db, cache and media paths
database_path: db # relative to base_path
cache_path: cachedb # relative to base_path

admin_password: admin
max_memory_cache_size: 100000000 # 100MB

ui:
    brand: "Jellything"
    slogan: "Somebody put a nice slogan here"
    favicon: null # path
    # TODO add logo option after refactor

    # Each font option comes with another field (font_path, bold_font_path, emoji_font_path) to specify the path directly that takes precendence and skips font resolution via fontconfig.
    font: Cantarell:variable=true # used for all interface text
    bold_font: Open Sans:weight=200:width=75 # used for fallback image backgrounds
    emoji_font: Noto Color Emoji:color=true # used for server-side emoji rendering in fallback images

import:
    media_path: media
    # Max. Parallelism when importing. Do note that import operations are often blocking on the network so increasing this value beyond the default has a positive effect.
    num_threads: <number of logical cores on host machine>
    # TODO add api/plugin config after refactor

stream:
    # Options to offer a codec for transcoding. Transcoding audio to opus is always enabled.
    offer_avc: false
    offer_hevc: false
    offer_vp8: false
    offer_vp9: false
    offer_av1: false
    transcoder:
        enable_rkmpp: false # only supported on RK35xx series chips with custom ffmpeg
        enable_rkrga: false # only supported on RK35xx series chips with custom ffmpeg
        use_svtav1: false # only supported on x86
        use_rav1e: false
        # Preset values default to ffmpeg's defaults
        svtav1_preset: null # 0..=13, high is fast
        rav1e_preset: null # 0..=10
        aom_preset: null # 0..=8, high is fast
        x264_preset: null

Building

Build Requirements

  • rustup
  • esbuild
  • nasm
  • meson
  • ninja
  • cmake
  • dav1d

Runtime Requirements

  • fontconfig (unless font path is manually specified)
  • ffmpeg (if transcodeing or chapter previews are desired)
  • Default Fonts: Cantarell VF, OpenSans Condensed ExtraBold, Noto Color Emoji

Jellything was only tested on x86_64-unknown-linux-gnu and aarch64-unknown-linux-gnu platforms; others likely work too.

Build Procedure

git clone --recursive https://codeberg.org/metamuffin/jellything.git
cd jellything
cargo build --release
# Global installation
install -Dm755 target/release/jellything /usr/local/bin/jellything
# OR: User installation
install -Dm755 target/release/jellything ~/.local/bin/jellything

Development / Debugging

There are compile-time features that improve debugging and development:

  • reload_css reads CSS files on every request (which normally requires compiling again)
  • reload_js recompiles JS files on every request (also usually requires compiling)
  • bypass_auth skips all authentication and always assumes an admin account. Useful for making requests with external tools that dont have cookies by default.

Jellything uses env_logger with configuration variable named LOG. Useful config could be LOG=info,jellyremuxer=debug etc.