Add new KOReader variables and missing existing ones

This commit is contained in:
Syer10
2025-08-19 15:30:16 -04:00
parent 1b26c52ba8
commit fd7a1d92c7
2 changed files with 78 additions and 48 deletions

110
README.md
View File

@@ -35,50 +35,64 @@ Use the template [docker-compose.yml](./docker-compose.yml) in this repo for cre
There are a number of environment variables available to configure Suwayomi:
| Variable | Server Default | Description |
|:--------------------------------------:|:-----------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| **TZ** | `Etc/UTC` | What time zone the container thinks it is. |
| **BIND_IP** | `0.0.0.0` | The interface to listen on, inside the container. You almost never want to change this. |
| **BIND_PORT** | `4567` | Which port Suwayomi will listen on |
| **SOCKS_PROXY_ENABLED** | `false` | Whether Suwayomi will connect through a SOCKS5 proxy |
| **SOCKS_PROXY_HOST** | ` ` | The TCP host of the SOCKS5 proxy |
| **SOCKS_PROXY_PORT** | ` ` | The port of the SOCKS5 proxy |
| **DOWNLOAD_AS_CBZ** | `false` | Whether Suwayomi should save the manga to disk in CBZ format |
| **AUTH_MODE** | `none` | Whether Suwayomi requires a login to get in. `none` or `basic_auth` or `simple_login` |
| **AUTH_USERNAME** | ` ` | The username to log in to Suwayomi. |
| **AUTH_PASSWORD** | ` ` | The password to log in to Suwayomi. |
| **DEBUG** | `false` | If extra logging is enabled. Useful for development and troubleshooting. |
| **WEB_UI_ENABLED** | `true` | If the server should serve a webUI |
| **WEB_UI_FLAVOR** | `WebUI` | "WebUI" or "Custom" |
| **WEB_UI_CHANNEL** | `stable` | "bundled" (the version bundled with the server release), "stable" or "preview" - the webUI version that should be used |
| **WEB_UI_UPDATE_INTERVAL** | `23` | Time in hours - 0 to disable auto update - range: 1 <= n < 24 - how often the server should check for webUI updates |
| **AUTO_DOWNLOAD_CHAPTERS** | `false` | If new chapters that have been retrieved should get automatically downloaded |
| **AUTO_DOWNLOAD_EXCLUDE_UNREAD** | `true` | Ignore automatic chapter downloads of entries with unread chapters |
| **AUTO_DOWNLOAD_NEW_CHAPTERS_LIMIT** | `0` | 0 to disable - how many unread downloaded chapters should be available - if the limit is reached, new chapters won't be downloaded automatically |
| **AUTO_DOWNLOAD_IGNORE_REUPLOADS** | `false` | Decides if re-uploads should be ignored during auto download of new chapters chapters |
| **DOWNLOAD_CONVERSIONS** | `{}` | Image download conversions, the format is `{ "image/filetype" = { target = "image/filetype" }, "image/filetype" = { target = "image/filetype", compressionLevel=0.6 } }`. You can also use `default` instead of `image/filetype` to add a default conversion handler. |
| **EXTENSION_REPOS** | `[]` | Any additional extension repos to use, the format is `["https://github.com/MY_ACCOUNT/MY_REPO/tree/repo", "https://github.com/MY_ACCOUNT_2/MY_REPO_2/"]` |
| **MAX_SOURCES_IN_PARALLEL** | `6` | Range: 1 <= n <= 20 - Sets how many sources can do requests (updates, downloads) in parallel. Updates/Downloads are grouped by source and all mangas of a source are updated/downloaded synchronously |
| **UPDATE_EXCLUDE_UNREAD** | `true` | If unread manga should be excluded from updates |
| **UPDATE_EXCLUDE_STARTED** | `true` | If manga that haven't been started should be excluded from updates |
| **UPDATE_EXCLUDE_COMPLETED** | `true` | If completed manga should be excluded from updates |
| **UPDATE_INTERVAL** | `12` | Time in hours - 0 to disable it - (doesn't have to be full hours e.g. 12.5) - range: 6 <= n < ∞ - Interval in which the global update will be automatically triggered |
| **UPDATE_MANGA_INFO** | `false` | If manga info should be updated along with the chapters |
| **BACKUP_TIME** | `00:00` | Range: hour: 0-23, minute: 0-59 - Time of day at which the automated backup should be triggered |
| **BACKUP_INTERVAL** | `1` | Time in days - 0 to disable it - range: 1 <= n < ∞ - Interval in which the server will automatically create a backup |
| **BACKUP_TTL** | `14` | Time in days - 0 to disable it - range: 1 <= n < ∞ - How long backup files will be kept before they will get deleted |
| **FLARESOLVERR_ENABLED** | `false` | Whether FlareSolverr is enabled and available to use |
| **FLARESOLVERR_URL** | `http://localhost:8191` | The URL of the FlareSolverr instance |
| **FLARESOLVERR_TIMEOUT** | `60` | Time in seconds for FlareSolverr to timeout if the challenge is not solved |
| **FLARESOLVERR_SESSION_NAME** | `suwayomi` | The name of the session that Suwayomi will use with FlareSolverr |
| **FLARESOLVERR_SESSION_TTL** | `15` | The time to live for the FlareSolverr session |
| **OPDS_USE_BINARY_FILE_SIZES** | `false` | If the file sizes should be displayed in binary (KiB, MiB, GiB) or decimal (KB, MB, GB) |
| **OPDS_ITEMS_PER_PAGE** | `50` | How many items to show on a page - 10 <= n < 5000 |
| **OPDS_ENABLE_PAGE_READ_PROGRESS** | `true` | Track and update your reading progress by page for each chapter during page streaming |
| **OPDS_MARK_AS_READ_ON_DOWNLOAD** | `false` | Automatically mark chapters as read when you download them |
| **OPDS_SHOW_ONLY_UNREAD_CHAPTERS** | `false` | Filter manga feed to display only chapters you haven't read |
| **OPDS_SHOW_ONLY_DOWNLOADED_CHAPTERS** | `false` | Filter manga feed to display only chapters you have downloaded |
| **OPDS_CHAPTER_SORT_ORDER** | `DESC` | "DESC" or "ASC" |
| Variable | Server Default | Description |
|:--------------------------------------:|:------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| **TZ** | `Etc/UTC` | What time zone the container thinks it is. |
| **BIND_IP** | `0.0.0.0` | The interface to listen on, inside the container. You almost never want to change this. |
| **BIND_PORT** | `4567` | Which port Suwayomi will listen on |
| **SOCKS_PROXY_ENABLED** | `false` | Whether Suwayomi will connect through a SOCKS5 proxy |
| **SOCKS_PROXY_VERSION** | `5` | The version of the SOCKS proxy |
| **SOCKS_PROXY_HOST** | ` ` | The TCP host of the SOCKS proxy |
| **SOCKS_PROXY_PORT** | ` ` | The port of the SOCKS proxy |
| **SOCKS_PROXY_USERNAME** | ` ` | The username to log in to the SOCKS proxy |
| **SOCKS_PROXY_PASSWORD** | ` ` | The password to log in to the SOCKS proxy |
| **DOWNLOAD_AS_CBZ** | `false` | Whether Suwayomi should save the manga to disk in CBZ format |
| **AUTH_MODE** | `none` | Whether Suwayomi requires a login to get in. `none` or `basic_auth` or `simple_login` |
| **AUTH_USERNAME** | ` ` | The username to log in to Suwayomi |
| **AUTH_PASSWORD** | ` ` | The password to log in to Suwayomi |
| **DEBUG** | `false` | If extra logging is enabled. Useful for development and troubleshooting. |
| **MAX_LOG_FILES** | `31` | The max number of days to keep files before they get deleted |
| **MAX_LOG_FILE_SIZE** | `10mb` | The max size of a log file - Possible values: 1 (bytes), 1KB (kilobytes), 1MB (megabytes), 1GB (gigabytes) |
| **MAX_LOG_FOLDER_SIZE** | `100mb` | The max size of all saved log files - Possible values: 1 (bytes), 1KB (kilobytes), 1MB (megabytes), 1GB (gigabytes) |
| **WEB_UI_ENABLED** | `true` | If the server should serve a webUI |
| **WEB_UI_FLAVOR** | `WebUI` | "WebUI" or "Custom" |
| **WEB_UI_CHANNEL** | `stable` | "bundled" (the version bundled with the server release), "stable" or "preview" - the webUI version that should be used |
| **WEB_UI_UPDATE_INTERVAL** | `23` | Time in hours - 0 to disable auto update - range: 1 <= n < 24 - how often the server should check for webUI updates |
| **AUTO_DOWNLOAD_CHAPTERS** | `false` | If new chapters that have been retrieved should get automatically downloaded |
| **AUTO_DOWNLOAD_EXCLUDE_UNREAD** | `true` | Ignore automatic chapter downloads of entries with unread chapters |
| **AUTO_DOWNLOAD_NEW_CHAPTERS_LIMIT** | `0` | 0 to disable - how many unread downloaded chapters should be available - if the limit is reached, new chapters won't be downloaded automatically |
| **AUTO_DOWNLOAD_IGNORE_REUPLOADS** | `false` | Decides if re-uploads should be ignored during auto download of new chapters chapters |
| **DOWNLOAD_CONVERSIONS** | `{}` | Image download conversions, the format is `{ "image/filetype" = { target = "image/filetype" }, "image/filetype" = { target = "image/filetype", compressionLevel=0.6 } }`. You can also use `default` instead of `image/filetype` to add a default conversion handler. |
| **EXTENSION_REPOS** | `[]` | Any additional extension repos to use, the format is `["https://github.com/MY_ACCOUNT/MY_REPO/tree/repo", "https://github.com/MY_ACCOUNT_2/MY_REPO_2/"]` |
| **MAX_SOURCES_IN_PARALLEL** | `6` | Range: 1 <= n <= 20 - Sets how many sources can do requests (updates, downloads) in parallel. Updates/Downloads are grouped by source and all mangas of a source are updated/downloaded synchronously |
| **UPDATE_EXCLUDE_UNREAD** | `true` | If unread manga should be excluded from updates |
| **UPDATE_EXCLUDE_STARTED** | `true` | If manga that haven't been started should be excluded from updates |
| **UPDATE_EXCLUDE_COMPLETED** | `true` | If completed manga should be excluded from updates |
| **UPDATE_INTERVAL** | `12` | Time in hours - 0 to disable it - (doesn't have to be full hours e.g. 12.5) - range: 6 <= n < ∞ - Interval in which the global update will be automatically triggered |
| **UPDATE_MANGA_INFO** | `false` | If manga info should be updated along with the chapters |
| **BACKUP_TIME** | `00:00` | Range: hour: 0-23, minute: 0-59 - Time of day at which the automated backup should be triggered |
| **BACKUP_INTERVAL** | `1` | Time in days - 0 to disable it - range: 1 <= n < ∞ - Interval in which the server will automatically create a backup |
| **BACKUP_TTL** | `14` | Time in days - 0 to disable it - range: 1 <= n < ∞ - How long backup files will be kept before they will get deleted |
| **FLARESOLVERR_ENABLED** | `false` | Whether FlareSolverr is enabled and available to use |
| **FLARESOLVERR_URL** | `http://localhost:8191` | The URL of the FlareSolverr instance |
| **FLARESOLVERR_TIMEOUT** | `60` | Time in seconds for FlareSolverr to timeout if the challenge is not solved |
| **FLARESOLVERR_SESSION_NAME** | `suwayomi` | The name of the session that Suwayomi will use with FlareSolverr |
| **FLARESOLVERR_SESSION_TTL** | `15` | The time to live for the FlareSolverr session |
| **FLARESOLVERR_RESPONSE_AS_FALLBACK** | `false` | Use the response from FlareSolverr if Suwayomi does not succeed |
| **OPDS_USE_BINARY_FILE_SIZES** | `false` | If the file sizes should be displayed in binary (KiB, MiB, GiB) or decimal (KB, MB, GB) |
| **OPDS_ITEMS_PER_PAGE** | `50` | How many items to show on a page - 10 <= n < 5000 |
| **OPDS_ENABLE_PAGE_READ_PROGRESS** | `true` | Track and update your reading progress by page for each chapter during page streaming |
| **OPDS_MARK_AS_READ_ON_DOWNLOAD** | `false` | Automatically mark chapters as read when you download them |
| **OPDS_SHOW_ONLY_UNREAD_CHAPTERS** | `false` | Filter manga feed to display only chapters you haven't read |
| **OPDS_SHOW_ONLY_DOWNLOADED_CHAPTERS** | `false` | Filter manga feed to display only chapters you have downloaded |
| **OPDS_CHAPTER_SORT_ORDER** | `DESC` | "DESC" or "ASC" |
| **KOREADER_SYNC_SERVER_URL** | `http://localhost:17200` | The URL of the KOReader Sync server |
| **KOREADER_SYNC_USERNAME** | ` ` | KOReader Sync UserName |
| **KOREADER_SYNC_USERKEY** | ` ` | KOReader Sync UserKey |
| **KOREADER_SYNC_DEVICE_ID** | ` ` | The Device-ID for KOReader |
| **KOREADER_SYNC_CHECKSUM_METHOD** | `binary` | "binary" or "filename" |
| **KOREADER_SYNC_STRATEGY** | `disabled` | "prompt", "silent", "send", "receive", "disabled" |
| **KOREADER_SYNC_PERCENTAGE_TOLERANCE** | `0.00000000000001` | Absolute tolerance for progress comparison from 1 (widest) to 1e-15 (strict) |
> [!CAUTION]
> This docker image is known to occasionally fail to work. This seems to be caused by problems in the download. If the logs simply end with `LD_PRELOAD=/opt/catch_abort.so /home/suwayomi/.local/share/Tachidesk/bin/kcef/libcef.so`, please remove the downloaded image and pull again. If this does not help, open a [new issue](https://github.com/Suwayomi/Suwayomi-Server-docker/issues/new).
@@ -87,12 +101,12 @@ There are a number of environment variables available to configure Suwayomi:
### Downloads Folder
We do not allow configuration of the downloads folder, since Docker Volumes can handle that instead, here is an example of a docker-compose.yaml that has downloads volume configuration:
```yaml
tachidesk:
suwayomi_server:
image: ghcr.io/suwayomi/suwayomi-server:stable
container_name: tachidesk
container_name: Suwayomi-Server
volumes: # The order matters! Make sure the downloads is first in the volume list or it will not work!
- /example/tachidesk/downloads:/home/suwayomi/.local/share/Tachidesk/downloads
- /example/tachidesk/files:/home/suwayomi/.local/share/Tachidesk
- /example/suwayomi-server/downloads:/home/suwayomi/.local/share/Tachidesk/downloads
- /example/suwayomi-server/files:/home/suwayomi/.local/share/Tachidesk
ports:
- 4568:4567
restart: unless-stopped

View File

@@ -28,8 +28,11 @@ sed -i -r "s/server.port = ([0-9]+|[a-zA-Z]+)( #)?/server.port = ${BIND_PORT:-\1
# Socks5 proxy
sed -i -r "s/server.socksProxyEnabled = ([0-9]+|[a-zA-Z]+)( #)?/server.socksProxyEnabled = ${SOCKS_PROXY_ENABLED:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.socksProxyVersion = ([0-9]+|[a-zA-Z]+)( #)?/server.socksProxyVersion = ${SOCKS_PROXY_VERSION:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.socksProxyHost = \"(.*?)\"( #)?/server.socksProxyHost = \"${SOCKS_PROXY_HOST:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.socksProxyPort = \"(.*?)\"( #)?/server.socksProxyPort = \"${SOCKS_PROXY_PORT:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.socksProxyUsername = \"(.*?)\"( #)?/server.socksProxyUsername = \"${SOCKS_PROXY_USERNAME:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.socksProxyPassword = \"(.*?)\"( #)?/server.socksProxyPassword = \"${SOCKS_PROXY_PASSWORD:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
# webUI
sed -i -r "s/server.webUIEnabled = ([0-9]+|[a-zA-Z]+)( #)?/server.webUIEnabled = ${WEB_UI_ENABLED:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
@@ -76,6 +79,9 @@ sed -i -r "s/server.basicAuthPassword = \"(.*?)\"( #)?/server.basicAuthPassword
# misc
sed -i -r "s/server.debugLogsEnabled = ([0-9]+|[a-zA-Z]+)( #)?/server.debugLogsEnabled = ${DEBUG:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.maxLogFiles = ([0-9]+|[a-zA-Z]+)( #)?/server.maxLogFiles = ${MAX_LOG_FILES:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.maxLogFileSize = \"(.*?)\"( #)?/server.maxLogFileSize = \"${MAX_LOG_FILE_SIZE:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.maxLogFolderSize = \"(.*?)\"( #)?/server.maxLogFolderSize = \"${MAX_LOG_FOLDER_SIZE:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
# backup
sed -i -r "s/server.backupTime = \"(.*?)\"( #)?/server.backupTime = \"${BACKUP_TIME:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
@@ -89,6 +95,7 @@ sed -i -r "s|server.flareSolverrUrl = \"(.*?)\"( #)?|server.flareSolverrUrl = \"
sed -i -r "s/server.flareSolverrTimeout = ([0-9]+|[a-zA-Z]+)( #)?/server.flareSolverrTimeout = ${FLARESOLVERR_TIMEOUT:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.flareSolverrSessionName = \"(.*?)\"( #)?/server.flareSolverrSessionName = \"${FLARESOLVERR_SESSION_NAME:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.flareSolverrSessionTtl = ([0-9]+|[a-zA-Z]+)( #)?/server.flareSolverrSessionTtl = ${FLARESOLVERR_SESSION_TTL:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.flareSolverrAsResponseFallback = ([0-9]+|[a-zA-Z]+)( #)?/server.flareSolverrAsResponseFallback = ${FLARESOLVERR_RESPONSE_AS_FALLBACK:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
# opds
sed -i -r "s/server.opdsUseBinaryFileSizes = ([0-9]+|[a-zA-Z]+)( #)?/server.opdsUseBinaryFileSizes = ${OPDS_USE_BINARY_FILE_SIZES:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
@@ -99,6 +106,15 @@ sed -i -r "s/server.opdsShowOnlyUnreadChapters = ([0-9]+|[a-zA-Z]+)( #)?/server.
sed -i -r "s/server.opdsShowOnlyDownloadedChapters = ([0-9]+|[a-zA-Z]+)( #)?/server.opdsShowOnlyDownloadedChapters = ${OPDS_SHOW_ONLY_DOWNLOADED_CHAPTERS:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.opdsChapterSortOrder = \"(.*?)\"( #)?/server.opdsChapterSortOrder = \"${OPDS_CHAPTER_SORT_ORDER:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
# koreader
sed -i -r "s/server.koreaderSyncServerUrl = \"(.*?)\"( #)?|server.koreaderSyncServerUrl = ${KOREADER_SYNC_SERVER_URL:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.koreaderSyncUsername = \"(.*?)\"( #)?/server.koreaderSyncUsername = ${KOREADER_SYNC_USERNAME:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.koreaderSyncUserkey = \"(.*?)\"( #)?/server.koreaderSyncUserkey = ${KOREADER_SYNC_USERKEY:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.koreaderSyncDeviceId = \"(.*?)\"( #)?/server.koreaderSyncDeviceId = ${KOREADER_SYNC_DEVICE_ID:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.koreaderSyncChecksumMethod = \"(.*?)\"( #)?/server.koreaderSyncChecksumMethod = ${KOREADER_SYNC_CHECKSUM_METHOD:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.koreaderSyncStrategy = \"(.*?)\"( #)?/server.koreaderSyncStrategy = ${KOREADER_SYNC_STRATEGY:-\1} #/" /home/suwayomi/.local/share/Tachidesk/server.conf
sed -i -r "s/server.koreaderSyncPercentageTolerance = ([0-9\.]+|[a-zA-Z]+)?/server.koreaderSyncPercentageTolerance = \"${KOREADER_SYNC_PERCENTAGE_TOLERANCE:-\1}\" #/" /home/suwayomi/.local/share/Tachidesk/server.conf
rm -rf /home/suwayomi/.local/share/Tachidesk/cache/kcef/Singleton*
if command -v Xvfb >/dev/null; then