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_pathFolder where database and cache are placedimport.media_pathRoot 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_cssreads CSS files on every request (which normally requires compiling again)reload_jsrecompiles JS files on every request (also usually requires compiling)bypass_authskips 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.