Settings
This page describes the different options and ways you can configure and customize your Arcadeia instance.
Advanced Settings
When you run Arcadeia for the first time, an empty JSON
file called appsettings.Production.json
is created. This file can override the default settings defined in appsettings.json
. From here on we describe what each section does and how one can configure it.
Defaults
The default settings are bundled with the application through the appsettings.json
file:
{
"Session": {
"IdleTimeoutSeconds": 600
},
"Thumbnails": {
"Database": {
"Name": "Thumbnails.sqlite",
"Path": "data"
},
"Video": {
"Large": {
"Width": 480
},
"Medium": {
"Width": 320
},
"Small": {
"Width": 160
},
"Sprite": {
"Count": 60,
"Width": 160,
"Sprite": true,
"Crop": false
},
"T": {
"Count": 24,
"Width": 480,
"Height": 272,
"Crop": false
}
},
"Photo": {
"Large": {
"Width": 480
},
"Medium": {
"Width": 320
},
"Small": {
"Width": 160
},
"T": {
"Count": 1,
"Width": 480,
"Height": 272,
"Crop": false
}
}
},
"Streaming": {
"Segments": {
"Duration": 10
}
},
"SupportedExtensions": {
"Audio": [],
"Video": [
".mp4",
".wmv",
".flv",
".mov",
".avi",
".asf",
".vob",
".mkv",
".webm"
],
"Photo": [
".cr2",
".gif",
".bmp",
".png",
".jpg",
".jpeg",
".tif",
".tiff",
".heic",
".webp"
]
},
"FFmpeg": {
"Path": "/usr/bin",
"TimeoutMilliseconds": 30000,
"HardwareAcceleration": null,
"Encoder": {
"Video": null,
"Audio": null,
"Subtitle": null
},
"Decoder": {
"Video": null,
"Audio": null,
"Subtitle": null
}
},
"YtDlp": {
"Path": "/usr/local/bin",
"Options": []
},
"Solr": {
"URL": "/solr/Library"
},
"Scanner": {
"StartupScan": true,
"StartupUpdate": true,
"StartupCleanup": false,
"ForceGenerateMissingThumbnails": false,
"PeriodicScanIntervalMilliseconds": 3600000,
"ParallelScannerTasks": 4,
"WatchedFolders": [],
"Folders": [
"/Network",
"/Uploads"
],
"IgnoredPatterns": [
"\\/\\..*",
"^\\..*$"
]
},
"Mounts": [],
"Security": {
"Library": {
"ReadOnly": false
},
"Settings": {
"ReadOnly": false
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.AspNetCore.SpaProxy": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"KnownProxies": []
}
Session
The Session section allows you to configure how browser sessions are managed in Arcadeia. These settings determine how long session data is retained and when it expires due to inactivity. Proper configuration of session settings is essential to ensure both optimal performance and security.
IdleTimeoutSeconds:
This setting specifies the maximum amount of time (in seconds) a browser session can remain idle before its contents are automatically discarded. If the session is accessed during the idle period, the timer resets, effectively extending the session’s lifespan.
Thumbnails
Configures how and what thumbnails are generated for each type of media file, and where they are stored.
Database
The thumbnails are stored in a SQLite database and the database is located in a named docker volume called data
.
Name
Configures the name of the database file.
Default: Thumbnails.sqlite
Path
Configures the path where the thumbnails database is stored inside the /var/lib/app/
folder. Any modifications to this path requires that the bind volume be updated inside the docker-compose-production.yml
file.
Default: data
Video
Describes what thumbnails should be generated for the supported video files. Currently the following thumbnails are generated and stored for each video file:
- Large: (480xH)
- Medium: (320xH)
- Small: (160xH)
- Sprite: 60 * (160xH)
- T: 24 * (480x272)
Name
The name of a thumbnail field or the prefix of each indexed thumbnail field in a thumbnails database row.
Settings
- Count (integer): In case of an indexed field such as
T
or a Sprite, specifies how many thumbnails should be extracted from the entire length of a video file. In case of an indexed field, the fields in the thumbnails database will be calledT0
,T1
,T2
, ... - Width (integer): The maximum width of the generated thumbnail. If omitted, the
Height
determines the size and theWidth
will be adjusted to preserve the aspect ratio. - Height (integer): The maximum height of the generated thumbnail. If omitted, the
Width
determines the size and theHeight
will be adjusted to preserve the aspect ratio. - Sprite (boolean): Determines whether the field is a Sprite consisting of a
Count
of thumbnails lined up in a single image and field. - Crop (boolean): Determines if the thumbnails are to be cropped to a
16:9
aspect ratio.
Photo
Describes what thumbnails should be generated for the supported photo files. Currently the following thumbnails are generated and stored for each photo file:
- Large: (480xH)
- Medium: (320xH)
- Small: (160xH)
- T: 1 * (480x272)
Name
The name of a thumbnail field or the prefix of each indexed thumbnail field in a thumbnails database row.
Settings
- Count (integer): This is not quite applicable in case of photo files but is used to keep the
T
thumbnails consistent with video files and as such, only one of them is generated. - Width (integer): The maximum width of the generated thumbnail. If omitted, the
Height
determines the size and theWidth
will be adjusted to preserve the aspect ratio. - Height (integer): The maximum height of the generated thumbnail. If omitted, the
Width
determines the size and theHeight
will be adjusted to preserve the aspect ratio. - Crop (boolean): Determines if the thumbnails are to be cropped to a
16:9
aspect ratio.
Streaming
Arcadeia supports transcoding and streaming video files that are not directly supported by web browsers to a format that is. Some of the parameters of these operations can be tweaked.
Segments
To make this work, a longer video file is divided into segments of fixed size. The browser first asks for a list of all the segments which is provided to it in a .m3u8
playlist and starts requesting individual segments and buffering them. Each requested segment is then transcoded and streamed to the web browser on the fly.
Duration (integer)
Determines the duration of each segment in seconds.
Default: 10
SupportedExtensions
Audio (array)
Accepts an array of audio file extensions including a dot in the beginning.
NOTE
Audio files are currently not supported and this setting has no effect.
Video (array)
Accepts an array of video file extensions including a dot in the beginning.
Photo (array)
Accepts an array of photo file extensions including a dot in the beginning.
FFmpeg
The FFmpeg utilities are bundled in the Docker image and are used for the following purposes:
- Extracting video file properties and metadata.
- Generating thumbnails and sprites from video files.
- Transcoding video files for streaming purposes.
Path (string)
Specifies where the ffmpeg
and ffprobe
executables are located.
Default: /usr/bin
TimeoutMilliseconds (integer)
Specifies the timeout in milliseconds after which any FFmpeg utility execution is forcefully terminated in case it takes an unusually long time to return.
Default: 30000
HardwareAcceleration (string)
Specifies what hardware acceleration method should be used when calling ffmpeg
through its -hwaccel
argument. You can read more about this argument here.
Default: null
Encoder
Specifies the encoders to use when transcoding video files.
Video (string)
Specifies which video encoder to use when transcoding video files.
Default: libx264
Audio (string)
Specifies which audio encoder to use when transcoding video files.
Default: aac
Subtitle (string)
Specifies which subtitle encoder to use when transcoding video files.
NOTE
Subtitles are currently not supported and this setting has no effect.
Decoder
Specifies the decoders to use when transcoding video files.
TIP
FFmpeg is designed to automatically detect the appropriate decoder based on the input file’s format and codec. It's hard to imagine a scenario where one might need to tweak these.
Video (string)
Specifies which video decoder to use when transcoding video files.
Audio (string)
Specifies which audio decoder to use when transcoding video files.
Subtitle (string)
Specifies which subtitle decoder to use when transcoding video files.
NOTE
Subtitles are currently not supported and this setting has no effect.
YtDlp
yt-dlp is a feature-rich command-line audio/video downloader with support for thousands of sites. When a URL is dropped inside the Upload Zone and the URL is of a supported site, it is passed on to yt-dlp to download and add the video file to the media library.
Path (string)
Specifies where the yt-dlp
executable is located.
Default: /usr/local/bin
Options (array)
Additional options to be passed to the yt-dlp
executable.
Solr
An Apache Solr core is the backbone of the media library, used for indexing and storing media file information. The core is then used in the user interface to browse and search media files.
URL (string)
The URL of the Solr core. The default core that is used and initialized at startup is called Library
.
Default: http://solr:8983/solr/Library
Scanner
The Scanner service is responsible for scanning specified folders for new or modified media files, indexing media file information, generating thumbnails and updating the media library.
StartupScan (boolean)
If enabled, the Scanner service will scan the available Folders and WatchedFolders at startup and insert or update the new and modified media filers to the media library. Startup Scanning does not remove deleted files from the media library.
Default: true
StartupUpdate (boolean)
If enabled, the Scanner service will go through the media library and update or remove the media files available in Folders and WatchedFolders. Startup Update detects and removes the deleted files from the media library.
Default: true
StartupCleanup (boolean)
NOTE
Startup Cleanup is not yet implemented and currently this setting has no effect.
Default: false
ForceGenerateMissingThumbnails (boolean)
Forces regeneration of any missing thumbnails upon access, startup scanning or startup update.
Default: false
PeriodicScanIntervalMilliseconds (integer)
Adjusts the interval in milliseconds at which a Periodic Scan is performed or disables it altogether. A Periodic Scan works the same way as a Startup Scan but is triggered periodically in order to keep the media library updated automatically.
Default: 3600000
ParallelScannerTasks (integer)
Adjusts the number of parallel tasks spawned during Startup Scan and Startup Update.
Default: 4
WatchedFolders (array)
The Scanner service can watch folders for changes and update the media library when media files are added, deleted or modified.
Default: []
Folders (array)
Specifies the folders to be recursively scanned or updated during Startup Scan and Startup Update.
Default: ["/Network", "/Uploads"]
IgnoredPatterns (array)
Regex patterns that specify file names to be excluded from the media library during Startup Scan or any other operation that adds files to media library.
Default:
[
"\\/\\..*", // Matches hidden files or directories (those that start with a dot .) in paths that use forward slashes.
"^\\..*$" // Matches hidden files or directories (those starting with a dot .) at the beginning of the string.
]
Mounts (array)
The FileSystem service is responsible for mounting and dismounting network mounts specified in this array. The arguments are directly passed on to the mount utility.
Example:
"Mounts": [
{
"Device": "192.168.0.123:/photos",
"Folder": "/Network/Photos",
"Options": "nolock",
"Types": "nfs"
}
]
Device (string)
The device name to mount. e.g. in the case of an NFS mount, device may look like server:/dir
.
Folder (string)
The location where the filesystem will be mounted. The folder will be created if it does not exist. By convention, this should be a folder inside /Network/
.
Options (string)
The mount options passed through the -o, --options
argument.
Types (string)
The file system type passed through -t, --types
argument.
Security
Manages settings related to security.
Library
Manages settings related to library security.
ReadOnly (boolean)
Makes the library read-only and thus unmodifiable through external means such as the user interface.
Settings
Manages settings related to configuration security.
ReadOnly (boolean)
Makes the settings read-only and thus unmodifiable through external means such as the user interface.