diff --git a/appstore/bark/2.1.8/.env b/appstore/bark/2.1.9/.env similarity index 100% rename from appstore/bark/2.1.8/.env rename to appstore/bark/2.1.9/.env diff --git a/appstore/bark/2.1.8/data.yml b/appstore/bark/2.1.9/data.yml similarity index 100% rename from appstore/bark/2.1.8/data.yml rename to appstore/bark/2.1.9/data.yml diff --git a/appstore/bark/2.1.8/docker-compose.yml b/appstore/bark/2.1.9/docker-compose.yml similarity index 92% rename from appstore/bark/2.1.8/docker-compose.yml rename to appstore/bark/2.1.9/docker-compose.yml index f7ecb380..a0debb81 100644 --- a/appstore/bark/2.1.8/docker-compose.yml +++ b/appstore/bark/2.1.9/docker-compose.yml @@ -12,7 +12,7 @@ services: - BARK_SERVER_URL_PREFIX=/ - BARK_SERVER_DATA_DIR=/data - BARK_SERVER_SERVERLESS=false - image: finab/bark-server:v2.1.8 + image: finab/bark-server:v2.1.9 labels: createdBy: Apps networks: diff --git a/appstore/bark/2.1.8/envs/default.env b/appstore/bark/2.1.9/envs/default.env similarity index 100% rename from appstore/bark/2.1.8/envs/default.env rename to appstore/bark/2.1.9/envs/default.env diff --git a/appstore/bark/2.1.8/envs/global.env b/appstore/bark/2.1.9/envs/global.env similarity index 100% rename from appstore/bark/2.1.8/envs/global.env rename to appstore/bark/2.1.9/envs/global.env diff --git a/appstore/bark/2.1.8/scripts/init.sh b/appstore/bark/2.1.9/scripts/init.sh similarity index 100% rename from appstore/bark/2.1.8/scripts/init.sh rename to appstore/bark/2.1.9/scripts/init.sh diff --git a/appstore/bark/2.1.8/scripts/uninstall.sh b/appstore/bark/2.1.9/scripts/uninstall.sh similarity index 100% rename from appstore/bark/2.1.8/scripts/uninstall.sh rename to appstore/bark/2.1.9/scripts/uninstall.sh diff --git a/appstore/bark/2.1.8/scripts/upgrade.sh b/appstore/bark/2.1.9/scripts/upgrade.sh similarity index 100% rename from appstore/bark/2.1.8/scripts/upgrade.sh rename to appstore/bark/2.1.9/scripts/upgrade.sh diff --git a/dockge/bark/docker-compose.yml b/dockge/bark/docker-compose.yml index f7ecb380..a0debb81 100644 --- a/dockge/bark/docker-compose.yml +++ b/dockge/bark/docker-compose.yml @@ -12,7 +12,7 @@ services: - BARK_SERVER_URL_PREFIX=/ - BARK_SERVER_DATA_DIR=/data - BARK_SERVER_SERVERLESS=false - image: finab/bark-server:v2.1.8 + image: finab/bark-server:v2.1.9 labels: createdBy: Apps networks: diff --git a/dockge/movie-pilot/.env b/dockge/movie-pilot/.env index f2b00857..a66ae0c6 100644 --- a/dockge/movie-pilot/.env +++ b/dockge/movie-pilot/.env @@ -17,7 +17,10 @@ API_TOKEN=moviepilot PROXY_HOST= # 自动更新资源包 [必填] -AUTO_UPDATE_RESOURCE=false +AUTO_UPDATE_RESOURCES=false + +# 自动更新 [必填] +MOVIEPILOT_AUTO_UPDATE=false # 自定义挂载目录 1 CUSTOM_MOUNT_DIRECTORY_1= @@ -31,3 +34,105 @@ CUSTOM_MOUNT_DIRECTORY_3= # IYUU登录令牌 IYUU_SIGN= +# hhclub 用户名 +HHCLUB_USERNAME= + +# hhclub 密钥 +HHCLUB_PASSKEY= + +# audiences 用户ID +AUDIENCES_UID= + +# audiences 密钥 +AUDIENCES_PASSKEY= + +# hddolby 用户ID +HDDOLBY_ID= + +# hddolby 密钥 +HDDOLBY_PASSKEY= + +# zmpt 用户ID +ZMPT_UID= + +# zmpt 密钥 +ZMPT_PASSKEY= + +# freefarm 用户ID +FREEFARM_UID= + +# freefarm 密钥 +FREEFARM_PASSKEY= + +# hdfans 用户ID +HDFANS_UID= + +# hdfans 密钥 +HDFANS_PASSKEY= + +# wintersakura 用户ID +WINTERSAKURA_UID= + +# wintersakura 密钥 +WINTERSAKURA_PASSKEY= + +# leaves 用户ID +LEAVES_UID= + +# leaves 密钥 +LEAVES_PASSKEY= + +# ptba 用户ID +PTBA_UID= + +# ptba 密钥 +PTBA_PASSKEY= + +# icc2022 用户ID +ICC2022_UID= + +# icc2022 密钥 +ICC2022_PASSKEY= + +# xingtan 用户ID +XINGTAN_UID= + +# xingtan 密钥 +XINGTAN_PASSKEY= + +# ptvicomo 用户ID +PTVICOMO_UID= + +# ptvicomo 密钥 +PTVICOMO_PASSKEY= + +# agsvpt 用户ID +AGSVPT_UID= + +# agsvpt 密钥 +AGSVPT_PASSKEY= + +# hdkyl 用户ID +HDKYL_UID= + +# hdkyl 密钥 +HDKYL_PASSKEY= + +# qingwa 用户ID +QINGWA_UID= + +# qingwa 密钥 +QINGWA_PASSKEY= + +# discfan 用户ID +DISCFAN_UID= + +# discfan 密钥 +DISCFAN_PASSKEY= + +# rousi 用户ID +ROUSI_UID= + +# rousi 密钥 +ROUSI_PASSKEY= + diff --git a/dockge/movie-pilot/docker-compose.yml b/dockge/movie-pilot/docker-compose.yml index 0e46fdc1..1e72340a 100644 --- a/dockge/movie-pilot/docker-compose.yml +++ b/dockge/movie-pilot/docker-compose.yml @@ -2,7 +2,7 @@ networks: 1panel-network: external: true services: - movie-pilot-v2: + movie-pilot: container_name: movie-pilot env_file: - ./envs/global.env @@ -14,9 +14,7 @@ services: - PUID=0 - PGID=0 - UMASK=022 - - HTTP_PROXY=${PROXY_HOST} - - HTTPS_PROXY=${PROXY_HOST} - image: jxxghp/moviepilot-v2:2.1.3 + image: jxxghp/moviepilot:1.9.17 labels: createdBy: Apps logging: diff --git a/dockge/movie-pilot/envs/movie-pilot.env b/dockge/movie-pilot/envs/movie-pilot.env index 78ba50bf..d244ac86 100644 --- a/dockge/movie-pilot/envs/movie-pilot.env +++ b/dockge/movie-pilot/envs/movie-pilot.env @@ -7,33 +7,19 @@ HOST=0.0.0.0 DEBUG=false # 是否开发模式,打开后后台服务将不会启动 DEV=false -# 日志级别(DEBUG、INFO、WARNING、ERROR等),当DEBUG=true时,此配置项将被忽略,日志级别始终为DEBUG -LOG_LEVEL=INFO -# 数据库连接池的大小,可适当降低如20-50以减少I/O压力 -DB_POOL_SIZE=100 -# 数据库连接池最大溢出连接数,可适当降低如0以减少I/O压力 -DB_MAX_OVERFLOW=500 -# SQLite 的 busy_timeout 参数,可适当增加如180以减少锁定错误 -DB_TIMEOUT=60 # 【*】超级管理员,设置后一但重启将固化到数据库中,修改将无效(初始化超级管理员密码仅会生成一次,请在日志中查看并自行登录系统修改) SUPERUSER=admin -# 辅助认证,允许通过外部服务进行认证、单点登录以及自动创建用户 -AUXILIARY_AUTH_ENABLE=false # 大内存模式,开启后会增加缓存数量,但会占用更多内存 BIG_MEMORY_MODE=false # 是否启用DOH域名解析,启用后对于api.themovie.org等域名通过DOH解析,避免域名DNS被污染 DOH_ENABLE=true -# 使用 DOH 解析的域名列表,多个域名使用`,`分隔 -DOH_DOMAINS=api.themoviedb.org,api.tmdb.org,webservice.fanart.tv,api.github.com,github.com,raw.githubusercontent.com,api.telegram.org -# DOH 解析服务器列表,多个服务器使用`,`分隔 -DOH_RESOLVERS=1.0.0.1,1.1.1.1,9.9.9.9,149.112.112.112 # 元数据识别缓存过期时间,数字型,单位小时,0为系统默认(大内存模式为7天,滞则为3天),调大该值可减少themoviedb的访问次数 META_CACHE_EXPIRE=0 # 自动检查和更新站点资源包(索引、认证等) AUTO_UPDATE_RESOURCE=true -# 【*】API密钥,未设置时系统将随机生成,建议使用复杂字符串,用于Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API请求 -API_TOKEN='' -# 登录页面电影海报,tmdb/bing/mediaserver,tmdb要求能正常连接api.themoviedb.org +# 【*】API密钥,建议更换复杂字符串,有Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API中使用 +API_TOKEN=moviepilot +# 登录页面电影海报,tmdb/bing,tmdb要求能正常连接api.themoviedb.org WALLPAPER=tmdb # TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com` TMDB_IMAGE_DOMAIN=image.tmdb.org @@ -61,3 +47,7 @@ OCR_HOST=https://movie-pilot.org PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins,https://github.com/thsrite/MoviePilot-Plugins,https://github.com/InfinityPacer/MoviePilot-Plugins,https://github.com/honue/MoviePilot-Plugins # 搜索多个名称,true/false,为true时搜索时会同时搜索中英文及原始名称,搜索结果会更全面,但会增加搜索时间;为false时其中一个名称搜索到结果或全部名称搜索完毕即停止 SEARCH_MULTIPLE_NAME=true + + +# 自定义配置 +AUTH_SITE="iyuu,hhclub,audiences,hddolby,zmpt,freefarm,hdfans,wintersakura,leaves,ptba,icc2022,xingtan,ptvicomo,agsvpt,hdkyl,qingwa,discfan,haidan,rousi" diff --git a/dockge/movie-pilot_1_9_17/.env b/dockge/movie-pilot_1_9_17/.env deleted file mode 100644 index a66ae0c6..00000000 --- a/dockge/movie-pilot_1_9_17/.env +++ /dev/null @@ -1,138 +0,0 @@ -# 数据持久化路径 [必填] -MOVIEPILOT_ROOT_PATH=/home/movie-pilot - -# WebUI 端口 [必填] -PANEL_APP_PORT_HTTP=3000 - -# API 端口 [必填] -PANEL_APP_PORT_API=3001 - -# 管理员用户名 [必填] -SUPERUSER=admin - -# API 令牌 [必填] -API_TOKEN=moviepilot - -# 网络代理 -PROXY_HOST= - -# 自动更新资源包 [必填] -AUTO_UPDATE_RESOURCES=false - -# 自动更新 [必填] -MOVIEPILOT_AUTO_UPDATE=false - -# 自定义挂载目录 1 -CUSTOM_MOUNT_DIRECTORY_1= - -# 自定义挂载目录 2 -CUSTOM_MOUNT_DIRECTORY_2= - -# 自定义挂载目录 3 -CUSTOM_MOUNT_DIRECTORY_3= - -# IYUU登录令牌 -IYUU_SIGN= - -# hhclub 用户名 -HHCLUB_USERNAME= - -# hhclub 密钥 -HHCLUB_PASSKEY= - -# audiences 用户ID -AUDIENCES_UID= - -# audiences 密钥 -AUDIENCES_PASSKEY= - -# hddolby 用户ID -HDDOLBY_ID= - -# hddolby 密钥 -HDDOLBY_PASSKEY= - -# zmpt 用户ID -ZMPT_UID= - -# zmpt 密钥 -ZMPT_PASSKEY= - -# freefarm 用户ID -FREEFARM_UID= - -# freefarm 密钥 -FREEFARM_PASSKEY= - -# hdfans 用户ID -HDFANS_UID= - -# hdfans 密钥 -HDFANS_PASSKEY= - -# wintersakura 用户ID -WINTERSAKURA_UID= - -# wintersakura 密钥 -WINTERSAKURA_PASSKEY= - -# leaves 用户ID -LEAVES_UID= - -# leaves 密钥 -LEAVES_PASSKEY= - -# ptba 用户ID -PTBA_UID= - -# ptba 密钥 -PTBA_PASSKEY= - -# icc2022 用户ID -ICC2022_UID= - -# icc2022 密钥 -ICC2022_PASSKEY= - -# xingtan 用户ID -XINGTAN_UID= - -# xingtan 密钥 -XINGTAN_PASSKEY= - -# ptvicomo 用户ID -PTVICOMO_UID= - -# ptvicomo 密钥 -PTVICOMO_PASSKEY= - -# agsvpt 用户ID -AGSVPT_UID= - -# agsvpt 密钥 -AGSVPT_PASSKEY= - -# hdkyl 用户ID -HDKYL_UID= - -# hdkyl 密钥 -HDKYL_PASSKEY= - -# qingwa 用户ID -QINGWA_UID= - -# qingwa 密钥 -QINGWA_PASSKEY= - -# discfan 用户ID -DISCFAN_UID= - -# discfan 密钥 -DISCFAN_PASSKEY= - -# rousi 用户ID -ROUSI_UID= - -# rousi 密钥 -ROUSI_PASSKEY= - diff --git a/dockge/movie-pilot_2_1_3/.env b/dockge/movie-pilot_2_1_3/.env new file mode 100644 index 00000000..f2b00857 --- /dev/null +++ b/dockge/movie-pilot_2_1_3/.env @@ -0,0 +1,33 @@ +# 数据持久化路径 [必填] +MOVIEPILOT_ROOT_PATH=/home/movie-pilot + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=3000 + +# API 端口 [必填] +PANEL_APP_PORT_API=3001 + +# 管理员用户名 [必填] +SUPERUSER=admin + +# API 令牌 [必填] +API_TOKEN=moviepilot + +# 网络代理 +PROXY_HOST= + +# 自动更新资源包 [必填] +AUTO_UPDATE_RESOURCE=false + +# 自定义挂载目录 1 +CUSTOM_MOUNT_DIRECTORY_1= + +# 自定义挂载目录 2 +CUSTOM_MOUNT_DIRECTORY_2= + +# 自定义挂载目录 3 +CUSTOM_MOUNT_DIRECTORY_3= + +# IYUU登录令牌 +IYUU_SIGN= + diff --git a/dockge/movie-pilot_1_9_17/docker-compose.yml b/dockge/movie-pilot_2_1_3/docker-compose.yml similarity index 89% rename from dockge/movie-pilot_1_9_17/docker-compose.yml rename to dockge/movie-pilot_2_1_3/docker-compose.yml index 1e72340a..0e46fdc1 100644 --- a/dockge/movie-pilot_1_9_17/docker-compose.yml +++ b/dockge/movie-pilot_2_1_3/docker-compose.yml @@ -2,7 +2,7 @@ networks: 1panel-network: external: true services: - movie-pilot: + movie-pilot-v2: container_name: movie-pilot env_file: - ./envs/global.env @@ -14,7 +14,9 @@ services: - PUID=0 - PGID=0 - UMASK=022 - image: jxxghp/moviepilot:1.9.17 + - HTTP_PROXY=${PROXY_HOST} + - HTTPS_PROXY=${PROXY_HOST} + image: jxxghp/moviepilot-v2:2.1.3 labels: createdBy: Apps logging: diff --git a/dockge/movie-pilot_1_9_17/envs/default.env b/dockge/movie-pilot_2_1_3/envs/default.env similarity index 100% rename from dockge/movie-pilot_1_9_17/envs/default.env rename to dockge/movie-pilot_2_1_3/envs/default.env diff --git a/dockge/movie-pilot_1_9_17/envs/global.env b/dockge/movie-pilot_2_1_3/envs/global.env similarity index 100% rename from dockge/movie-pilot_1_9_17/envs/global.env rename to dockge/movie-pilot_2_1_3/envs/global.env diff --git a/dockge/movie-pilot_1_9_17/envs/movie-pilot.env b/dockge/movie-pilot_2_1_3/envs/movie-pilot.env similarity index 75% rename from dockge/movie-pilot_1_9_17/envs/movie-pilot.env rename to dockge/movie-pilot_2_1_3/envs/movie-pilot.env index d244ac86..78ba50bf 100644 --- a/dockge/movie-pilot_1_9_17/envs/movie-pilot.env +++ b/dockge/movie-pilot_2_1_3/envs/movie-pilot.env @@ -7,19 +7,33 @@ HOST=0.0.0.0 DEBUG=false # 是否开发模式,打开后后台服务将不会启动 DEV=false +# 日志级别(DEBUG、INFO、WARNING、ERROR等),当DEBUG=true时,此配置项将被忽略,日志级别始终为DEBUG +LOG_LEVEL=INFO +# 数据库连接池的大小,可适当降低如20-50以减少I/O压力 +DB_POOL_SIZE=100 +# 数据库连接池最大溢出连接数,可适当降低如0以减少I/O压力 +DB_MAX_OVERFLOW=500 +# SQLite 的 busy_timeout 参数,可适当增加如180以减少锁定错误 +DB_TIMEOUT=60 # 【*】超级管理员,设置后一但重启将固化到数据库中,修改将无效(初始化超级管理员密码仅会生成一次,请在日志中查看并自行登录系统修改) SUPERUSER=admin +# 辅助认证,允许通过外部服务进行认证、单点登录以及自动创建用户 +AUXILIARY_AUTH_ENABLE=false # 大内存模式,开启后会增加缓存数量,但会占用更多内存 BIG_MEMORY_MODE=false # 是否启用DOH域名解析,启用后对于api.themovie.org等域名通过DOH解析,避免域名DNS被污染 DOH_ENABLE=true +# 使用 DOH 解析的域名列表,多个域名使用`,`分隔 +DOH_DOMAINS=api.themoviedb.org,api.tmdb.org,webservice.fanart.tv,api.github.com,github.com,raw.githubusercontent.com,api.telegram.org +# DOH 解析服务器列表,多个服务器使用`,`分隔 +DOH_RESOLVERS=1.0.0.1,1.1.1.1,9.9.9.9,149.112.112.112 # 元数据识别缓存过期时间,数字型,单位小时,0为系统默认(大内存模式为7天,滞则为3天),调大该值可减少themoviedb的访问次数 META_CACHE_EXPIRE=0 # 自动检查和更新站点资源包(索引、认证等) AUTO_UPDATE_RESOURCE=true -# 【*】API密钥,建议更换复杂字符串,有Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API中使用 -API_TOKEN=moviepilot -# 登录页面电影海报,tmdb/bing,tmdb要求能正常连接api.themoviedb.org +# 【*】API密钥,未设置时系统将随机生成,建议使用复杂字符串,用于Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API请求 +API_TOKEN='' +# 登录页面电影海报,tmdb/bing/mediaserver,tmdb要求能正常连接api.themoviedb.org WALLPAPER=tmdb # TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com` TMDB_IMAGE_DOMAIN=image.tmdb.org @@ -47,7 +61,3 @@ OCR_HOST=https://movie-pilot.org PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins,https://github.com/thsrite/MoviePilot-Plugins,https://github.com/InfinityPacer/MoviePilot-Plugins,https://github.com/honue/MoviePilot-Plugins # 搜索多个名称,true/false,为true时搜索时会同时搜索中英文及原始名称,搜索结果会更全面,但会增加搜索时间;为false时其中一个名称搜索到结果或全部名称搜索完毕即停止 SEARCH_MULTIPLE_NAME=true - - -# 自定义配置 -AUTH_SITE="iyuu,hhclub,audiences,hddolby,zmpt,freefarm,hdfans,wintersakura,leaves,ptba,icc2022,xingtan,ptvicomo,agsvpt,hdkyl,qingwa,discfan,haidan,rousi" diff --git a/dockge/mysql/config/my.cnf b/dockge/mysql/config/my.cnf index c53ca32d..6d6e1a93 100644 --- a/dockge/mysql/config/my.cnf +++ b/dockge/mysql/config/my.cnf @@ -1,20 +1,42 @@ +# For advice on how to change settings please see +# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html + [mysqld] -host_cache_size=0 +# +# Remove leading # and set to the amount of RAM for the most important data +# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. +# innodb_buffer_pool_size = 128M +# +# Remove leading # to turn on a very important data integrity option: logging +# changes to the binary log between backups. +# log_bin +# +# Remove leading # to set options mainly useful for reporting servers. +# The server defaults are faster for transactions and fast SELECTs. +# Adjust sizes as needed, experiment to find the optimal values. +# join_buffer_size = 128M +# sort_buffer_size = 2M +# read_rnd_buffer_size = 2M +skip-host-cache skip-name-resolve datadir=/var/lib/mysql socket=/var/run/mysqld/mysqld.sock +secure-file-priv=/var/lib/mysql-files user=mysql -mysql_native_password=ON +# Disabling symbolic-links is recommended to prevent assorted security risks +symbolic-links=0 + +#log-error=/var/log/mysqld.log +pid-file=/var/run/mysqld/mysqld.pid + +max_allowed_packet=64M character_set_server=utf8mb4 -collation_server=utf8mb4_unicode_ci lower_case_table_names=1 group_concat_max_len=1024000 -log_bin_trust_function_creators=1 -secure_file_priv= -pid_file=/var/run/mysqld/mysqld.pid [client] socket=/var/run/mysqld/mysqld.sock !includedir /etc/mysql/conf.d/ +!includedir /etc/mysql/mysql.conf.d/ diff --git a/dockge/mysql/docker-compose.yml b/dockge/mysql/docker-compose.yml index 12a1d98e..5cac14f4 100644 --- a/dockge/mysql/docker-compose.yml +++ b/dockge/mysql/docker-compose.yml @@ -5,13 +5,14 @@ services: mysql: command: - --character-set-server=utf8mb4 - - --collation-server=utf8mb4_unicode_ci - - --mysql-native-password=ON + - --lower_case_table_names=1 + - --collation-server=utf8mb4_general_ci + - --explicit_defaults_for_timestamp=true container_name: mysql env_file: - ./envs/global.env - .env - image: mysql:8.4.3 + image: mysql:5.7.44 labels: createdBy: Apps networks: @@ -21,8 +22,8 @@ services: restart: always user: 1000:1000 volumes: - - ${MYSQL_ROOT_PATH}/data:/var/lib/mysql - - ${MYSQL_ROOT_PATH}/config/my.cnf:/etc/my.cnf + - ${MYSQL_ROOT_PATH}/data/:/var/lib/mysql + - ${MYSQL_ROOT_PATH}/config/my.cnf:/etc/mysql/my.cnf - ${MYSQL_ROOT_PATH}/log:/var/log/mysql - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro diff --git a/dockge/mysql_5_7_44/config/my.cnf b/dockge/mysql_5_7_44/config/my.cnf deleted file mode 100644 index 6d6e1a93..00000000 --- a/dockge/mysql_5_7_44/config/my.cnf +++ /dev/null @@ -1,42 +0,0 @@ -# For advice on how to change settings please see -# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html - -[mysqld] -# -# Remove leading # and set to the amount of RAM for the most important data -# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. -# innodb_buffer_pool_size = 128M -# -# Remove leading # to turn on a very important data integrity option: logging -# changes to the binary log between backups. -# log_bin -# -# Remove leading # to set options mainly useful for reporting servers. -# The server defaults are faster for transactions and fast SELECTs. -# Adjust sizes as needed, experiment to find the optimal values. -# join_buffer_size = 128M -# sort_buffer_size = 2M -# read_rnd_buffer_size = 2M -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - -# Disabling symbolic-links is recommended to prevent assorted security risks -symbolic-links=0 - -#log-error=/var/log/mysqld.log -pid-file=/var/run/mysqld/mysqld.pid - -max_allowed_packet=64M -character_set_server=utf8mb4 -lower_case_table_names=1 -group_concat_max_len=1024000 - -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ -!includedir /etc/mysql/mysql.conf.d/ diff --git a/dockge/mysql_5_7_44/.env b/dockge/mysql_8_4_3/.env similarity index 100% rename from dockge/mysql_5_7_44/.env rename to dockge/mysql_8_4_3/.env diff --git a/dockge/mysql_8_4_3/config/my.cnf b/dockge/mysql_8_4_3/config/my.cnf new file mode 100644 index 00000000..c53ca32d --- /dev/null +++ b/dockge/mysql_8_4_3/config/my.cnf @@ -0,0 +1,20 @@ +[mysqld] +host_cache_size=0 +skip-name-resolve +datadir=/var/lib/mysql +socket=/var/run/mysqld/mysqld.sock +user=mysql + +mysql_native_password=ON +character_set_server=utf8mb4 +collation_server=utf8mb4_unicode_ci +lower_case_table_names=1 +group_concat_max_len=1024000 +log_bin_trust_function_creators=1 + +secure_file_priv= +pid_file=/var/run/mysqld/mysqld.pid +[client] +socket=/var/run/mysqld/mysqld.sock + +!includedir /etc/mysql/conf.d/ diff --git a/dockge/mysql_5_7_44/docker-compose.yml b/dockge/mysql_8_4_3/docker-compose.yml similarity index 65% rename from dockge/mysql_5_7_44/docker-compose.yml rename to dockge/mysql_8_4_3/docker-compose.yml index 5cac14f4..12a1d98e 100644 --- a/dockge/mysql_5_7_44/docker-compose.yml +++ b/dockge/mysql_8_4_3/docker-compose.yml @@ -5,14 +5,13 @@ services: mysql: command: - --character-set-server=utf8mb4 - - --lower_case_table_names=1 - - --collation-server=utf8mb4_general_ci - - --explicit_defaults_for_timestamp=true + - --collation-server=utf8mb4_unicode_ci + - --mysql-native-password=ON container_name: mysql env_file: - ./envs/global.env - .env - image: mysql:5.7.44 + image: mysql:8.4.3 labels: createdBy: Apps networks: @@ -22,8 +21,8 @@ services: restart: always user: 1000:1000 volumes: - - ${MYSQL_ROOT_PATH}/data/:/var/lib/mysql - - ${MYSQL_ROOT_PATH}/config/my.cnf:/etc/mysql/my.cnf + - ${MYSQL_ROOT_PATH}/data:/var/lib/mysql + - ${MYSQL_ROOT_PATH}/config/my.cnf:/etc/my.cnf - ${MYSQL_ROOT_PATH}/log:/var/log/mysql - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro diff --git a/dockge/mysql_5_7_44/envs/default.env b/dockge/mysql_8_4_3/envs/default.env similarity index 100% rename from dockge/mysql_5_7_44/envs/default.env rename to dockge/mysql_8_4_3/envs/default.env diff --git a/dockge/mysql_5_7_44/envs/global.env b/dockge/mysql_8_4_3/envs/global.env similarity index 100% rename from dockge/mysql_5_7_44/envs/global.env rename to dockge/mysql_8_4_3/envs/global.env diff --git a/dockge/postgresql/docker-compose.yml b/dockge/postgresql/docker-compose.yml index 644e2fa7..53121747 100644 --- a/dockge/postgresql/docker-compose.yml +++ b/dockge/postgresql/docker-compose.yml @@ -3,7 +3,7 @@ networks: external: true services: postgresql: - container_name: pg15-vectors-postgresql + container_name: pg16-postgresql env_file: - ./envs/global.env - .env @@ -12,7 +12,7 @@ services: POSTGRES_INITDB_ARGS: --data-checksums POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_USER: ${POSTGRES_USER:-postgres} - image: tensorchord/pgvecto-rs:pg15-v0.2.1 + image: postgres:16 labels: createdBy: Apps networks: diff --git a/dockge/postgresql_pg16/.env b/dockge/postgresql_pg15-vectors/.env similarity index 100% rename from dockge/postgresql_pg16/.env rename to dockge/postgresql_pg15-vectors/.env diff --git a/dockge/postgresql_pg16/docker-compose.yml b/dockge/postgresql_pg15-vectors/docker-compose.yml similarity index 85% rename from dockge/postgresql_pg16/docker-compose.yml rename to dockge/postgresql_pg15-vectors/docker-compose.yml index 53121747..644e2fa7 100644 --- a/dockge/postgresql_pg16/docker-compose.yml +++ b/dockge/postgresql_pg15-vectors/docker-compose.yml @@ -3,7 +3,7 @@ networks: external: true services: postgresql: - container_name: pg16-postgresql + container_name: pg15-vectors-postgresql env_file: - ./envs/global.env - .env @@ -12,7 +12,7 @@ services: POSTGRES_INITDB_ARGS: --data-checksums POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_USER: ${POSTGRES_USER:-postgres} - image: postgres:16 + image: tensorchord/pgvecto-rs:pg15-v0.2.1 labels: createdBy: Apps networks: diff --git a/dockge/postgresql_pg16/envs/default.env b/dockge/postgresql_pg15-vectors/envs/default.env similarity index 100% rename from dockge/postgresql_pg16/envs/default.env rename to dockge/postgresql_pg15-vectors/envs/default.env diff --git a/dockge/postgresql_pg16/envs/global.env b/dockge/postgresql_pg15-vectors/envs/global.env similarity index 100% rename from dockge/postgresql_pg16/envs/global.env rename to dockge/postgresql_pg15-vectors/envs/global.env diff --git a/dockge/qbittorrent/docker-compose.yml b/dockge/qbittorrent/docker-compose.yml index f0dd9eba..5ec4b458 100644 --- a/dockge/qbittorrent/docker-compose.yml +++ b/dockge/qbittorrent/docker-compose.yml @@ -12,7 +12,7 @@ services: - UMASK=022 - WEBUI_PORT=${PANEL_APP_PORT_HTTP} - TORRENTING_PORT=${PANEL_APP_PORT_TORRENTING} - image: linuxserver/qbittorrent:5.0.2 + image: linuxserver/qbittorrent:4.6.7 labels: createdBy: Apps network_mode: ${NETWORK_MODE} diff --git a/dockge/qbittorrent_4_6_7/.env b/dockge/qbittorrent_5_0_2/.env similarity index 100% rename from dockge/qbittorrent_4_6_7/.env rename to dockge/qbittorrent_5_0_2/.env diff --git a/dockge/qbittorrent_4_6_7/docker-compose.yml b/dockge/qbittorrent_5_0_2/docker-compose.yml similarity index 95% rename from dockge/qbittorrent_4_6_7/docker-compose.yml rename to dockge/qbittorrent_5_0_2/docker-compose.yml index 5ec4b458..f0dd9eba 100644 --- a/dockge/qbittorrent_4_6_7/docker-compose.yml +++ b/dockge/qbittorrent_5_0_2/docker-compose.yml @@ -12,7 +12,7 @@ services: - UMASK=022 - WEBUI_PORT=${PANEL_APP_PORT_HTTP} - TORRENTING_PORT=${PANEL_APP_PORT_TORRENTING} - image: linuxserver/qbittorrent:4.6.7 + image: linuxserver/qbittorrent:5.0.2 labels: createdBy: Apps network_mode: ${NETWORK_MODE} diff --git a/dockge/qbittorrent_4_6_7/envs/default.env b/dockge/qbittorrent_5_0_2/envs/default.env similarity index 100% rename from dockge/qbittorrent_4_6_7/envs/default.env rename to dockge/qbittorrent_5_0_2/envs/default.env diff --git a/dockge/qbittorrent_4_6_7/envs/global.env b/dockge/qbittorrent_5_0_2/envs/global.env similarity index 100% rename from dockge/qbittorrent_4_6_7/envs/global.env rename to dockge/qbittorrent_5_0_2/envs/global.env diff --git a/dockge/redis/config/redis.conf b/dockge/redis/config/redis.conf index 8795ae29..ca22ec9f 100644 --- a/dockge/redis/config/redis.conf +++ b/dockge/redis/config/redis.conf @@ -32,17 +32,8 @@ # If instead you are interested in using includes to override configuration # options, it is better to use include as the last line. # -# Included paths may contain wildcards. All files matching the wildcards will -# be included in alphabetical order. -# Note that if an include path contains a wildcards but no files match it when -# the server is started, the include statement will be ignored and no error will -# be emitted. It is safe, therefore, to include wildcard files from empty -# directories. -# # include /path/to/local.conf # include /path/to/other.conf -# include /path/to/fragments/*.conf -# ################################## MODULES ##################################### @@ -58,81 +49,43 @@ # for connections from all available network interfaces on the host machine. # It is possible to listen to just one or multiple selected interfaces using # the "bind" configuration directive, followed by one or more IP addresses. -# Each address can be prefixed by "-", which means that redis will not fail to -# start if the address is not available. Being not available only refers to -# addresses that does not correspond to any network interface. Addresses that -# are already in use will always fail, and unsupported protocols will always BE -# silently skipped. # # Examples: # -# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses -# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6 -# bind * -::* # like the default, all available interfaces +# bind 192.168.1.100 10.0.0.1 +# bind 127.0.0.1 ::1 # # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the # internet, binding to all the interfaces is dangerous and will expose the # instance to everybody on the internet. So by default we uncomment the # following bind directive, that will force Redis to listen only on the -# IPv4 and IPv6 (if available) loopback interface addresses (this means Redis -# will only be able to accept client connections from the same host that it is -# running on). +# IPv4 loopback interface address (this means Redis will only be able to +# accept client connections from the same host that it is running on). # # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES -# COMMENT OUT THE FOLLOWING LINE. -# -# You will also need to set a password unless you explicitly disable protected -# mode. +# JUST COMMENT OUT THE FOLLOWING LINE. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind 0.0.0.0 -# By default, outgoing connections (from replica to master, from Sentinel to -# instances, cluster bus, etc.) are not bound to a specific local address. In -# most cases, this means the operating system will handle that based on routing -# and the interface through which the connection goes out. -# -# Using bind-source-addr it is possible to configure a specific address to bind -# to, which may also affect how the connection gets routed. -# -# Example: -# -# bind-source-addr 10.0.0.1 - # Protected mode is a layer of security protection, in order to avoid that # Redis instances left open on the internet are accessed and exploited. # -# When protected mode is on and the default user has no password, the server -# only accepts local connections from the IPv4 address (127.0.0.1), IPv6 address -# (::1) or Unix domain sockets. +# When protected mode is on and if: +# +# 1) The server is not binding explicitly to a set of addresses using the +# "bind" directive. +# 2) No password is configured. +# +# The server only accepts connections from clients connecting from the +# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain +# sockets. # # By default protected mode is enabled. You should disable it only if # you are sure you want clients from other hosts to connect to Redis -# even if no authentication is configured. +# even if no authentication is configured, nor a specific set of interfaces +# are explicitly listed using the "bind" directive. protected-mode yes -# Redis uses default hardened security configuration directives to reduce the -# attack surface on innocent users. Therefore, several sensitive configuration -# directives are immutable, and some potentially-dangerous commands are blocked. -# -# Configuration directives that control files that Redis writes to (e.g., 'dir' -# and 'dbfilename') and that aren't usually modified during runtime -# are protected by making them immutable. -# -# Commands that can increase the attack surface of Redis and that aren't usually -# called by users are blocked by default. -# -# These can be exposed to either all connections or just local ones by setting -# each of the configs listed below to either of these values: -# -# no - Block for any connection (remain immutable) -# yes - Allow for any connection (no protection) -# local - Allow only for local connections. Ones originating from the -# IPv4 address (127.0.0.1), IPv6 address (::1) or Unix domain sockets. -# -# enable-protected-configs no -# enable-debug-command no -# enable-module-command no - # Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. port 6379 @@ -152,7 +105,7 @@ tcp-backlog 511 # incoming connections. There is no default, so Redis will not listen # on a unix socket when not specified. # -# unixsocket /run/redis.sock +# unixsocket /tmp/redis.sock # unixsocketperm 700 # Close the connection after a client is idle for N seconds (0 to disable) @@ -175,16 +128,6 @@ timeout 0 # Redis default starting with Redis 3.2.1. tcp-keepalive 300 -# Apply OS-specific mechanism to mark the listening socket with the specified -# ID, to support advanced routing and filtering capabilities. -# -# On Linux, the ID represents a connection mark. -# On FreeBSD, the ID represents a socket cookie ID. -# On OpenBSD, the ID represents a route table ID. -# -# The default value is 0, which implies no marking is required. -# socket-mark-id 0 - ################################# TLS/SSL ##################################### # By default, TLS/SSL is disabled. To enable it, the "tls-port" configuration @@ -200,32 +143,8 @@ tcp-keepalive 300 # # tls-cert-file redis.crt # tls-key-file redis.key -# -# If the key file is encrypted using a passphrase, it can be included here -# as well. -# -# tls-key-file-pass secret -# Normally Redis uses the same certificate for both server functions (accepting -# connections) and client functions (replicating from a master, establishing -# cluster bus connections, etc.). -# -# Sometimes certificates are issued with attributes that designate them as -# client-only or server-only certificates. In that case it may be desired to use -# different certificates for incoming (server) and outgoing (client) -# connections. To do that, use the following directives: -# -# tls-client-cert-file client.crt -# tls-client-key-file client.key -# -# If the key file is encrypted using a passphrase, it can be included here -# as well. -# -# tls-client-key-file-pass secret - -# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange, -# required by older versions of OpenSSL (<3.0). Newer versions do not require -# this configuration and recommend against it. +# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange: # # tls-dh-params-file redis.dh @@ -258,12 +177,9 @@ tcp-keepalive 300 # # tls-cluster yes -# By default, only TLSv1.2 and TLSv1.3 are enabled and it is highly recommended -# that older formally deprecated versions are kept disabled to reduce the attack surface. -# You can explicitly specify TLS versions to support. -# Allowed values are case insensitive and include "TLSv1", "TLSv1.1", "TLSv1.2", -# "TLSv1.3" (OpenSSL >= 1.1.1) or any combination. -# To enable only TLSv1.2 and TLSv1.3, use: +# Explicitly specify TLS versions to support. Allowed values are case insensitive +# and include "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3" (OpenSSL >= 1.1.1) or +# any combination. To enable only TLSv1.2 and TLSv1.3, use: # # tls-protocols "TLSv1.2 TLSv1.3" @@ -305,7 +221,6 @@ tcp-keepalive 300 # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. -# When Redis is supervised by upstart or systemd, this parameter has no impact. daemonize no # If you run Redis from upstart or systemd, Redis can interact with your @@ -314,17 +229,11 @@ daemonize no # supervised upstart - signal upstart by putting Redis into SIGSTOP mode # requires "expect stop" in your upstart job config # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET -# on startup, and updating Redis status on a regular -# basis. # supervised auto - detect upstart or systemd method based on # UPSTART_JOB or NOTIFY_SOCKET environment variables # Note: these supervision methods only signal "process is ready." # They do not enable continuous pings back to your supervisor. -# -# The default is "no". To run under upstart/systemd, you can simply uncomment -# the line below: -# -# supervised auto +supervised no # If a pid file is specified, Redis writes it where specified at startup # and removes it at exit. @@ -335,9 +244,6 @@ daemonize no # # Creating a pid file is best effort: if Redis is not able to create it # nothing bad happens, the server will start and run normally. -# -# Note that on modern Linux systems "/run/redis.pid" is more conforming -# and should be used instead. pidfile /var/run/redis_6379.pid # Specify the server verbosity level. @@ -363,74 +269,44 @@ logfile "" # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. # syslog-facility local0 -# To disable the built in crash log, which will possibly produce cleaner core -# dumps when they are needed, uncomment the following: -# -# crash-log-enabled no - -# To disable the fast memory check that's run as part of the crash log, which -# will possibly let redis terminate sooner, uncomment the following: -# -# crash-memcheck-enabled no - # Set the number of databases. The default database is DB 0, you can select # a different one on a per-connection basis using SELECT where # dbid is a number between 0 and 'databases'-1 databases 16 # By default Redis shows an ASCII art logo only when started to log to the -# standard output and if the standard output is a TTY and syslog logging is -# disabled. Basically this means that normally a logo is displayed only in -# interactive sessions. +# standard output and if the standard output is a TTY. Basically this means +# that normally a logo is displayed only in interactive sessions. # # However it is possible to force the pre-4.0 behavior and always show a # ASCII art logo in startup logs by setting the following option to yes. -always-show-logo no - -# By default, Redis modifies the process title (as seen in 'top' and 'ps') to -# provide some runtime information. It is possible to disable this and leave -# the process name as executed by setting the following to no. -set-proc-title yes - -# When changing the process title, Redis uses the following template to construct -# the modified title. -# -# Template variables are specified in curly brackets. The following variables are -# supported: -# -# {title} Name of process as executed if parent, or type of child process. -# {listen-addr} Bind address or '*' followed by TCP or TLS port listening on, or -# Unix socket if only that's available. -# {server-mode} Special mode, i.e. "[sentinel]" or "[cluster]". -# {port} TCP port listening on, or 0. -# {tls-port} TLS port listening on, or 0. -# {unixsocket} Unix domain socket listening on, or "". -# {config-file} Name of configuration file used. -# -proc-title-template "{title} {listen-addr} {server-mode}" +always-show-logo yes ################################ SNAPSHOTTING ################################ +# +# Save the DB on disk: +# +# save +# +# Will save the DB if both the given number of seconds and the given +# number of write operations against the DB occurred. +# +# In the example below the behavior will be to save: +# after 900 sec (15 min) if at least 1 key changed +# after 300 sec (5 min) if at least 10 keys changed +# after 60 sec if at least 10000 keys changed +# +# Note: you can disable saving completely by commenting out all "save" lines. +# +# It is also possible to remove all the previously configured save +# points by adding a save directive with a single empty string argument +# like in the following example: +# +# save "" -# Save the DB to disk. -# -# save [ ...] -# -# Redis will save the DB if the given number of seconds elapsed and it -# surpassed the given number of write operations against the DB. -# -# Snapshotting can be completely disabled with a single empty string argument -# as in following example: -# -# save "" -# -# Unless specified otherwise, by default Redis will save the DB: -# * After 3600 seconds (an hour) if at least 1 change was performed -# * After 300 seconds (5 minutes) if at least 100 changes were performed -# * After 60 seconds if at least 10000 changes were performed -# -# You can set these explicitly by uncommenting the following line. -# -# save 3600 1 300 100 60 10000 +save 900 1 +save 300 10 +save 60 10000 # By default Redis will stop accepting writes if RDB snapshots are enabled # (at least one save point) and the latest background save failed. @@ -462,21 +338,6 @@ rdbcompression yes # tell the loading code to skip the check. rdbchecksum yes -# Enables or disables full sanitization checks for ziplist and listpack etc when -# loading an RDB or RESTORE payload. This reduces the chances of a assertion or -# crash later on while processing commands. -# Options: -# no - Never perform full sanitization -# yes - Always perform full sanitization -# clients - Perform full sanitization only for user connections. -# Excludes: RDB files, RESTORE commands received from the master -# connection, and client connections which have the -# skip-sanitize-payload ACL flag. -# The default should be 'clients' but since it currently affects cluster -# resharding via MIGRATE, it is temporarily set to 'no' by default. -# -# sanitize-dump-payload no - # The filename where to dump the DB dbfilename dump.rdb @@ -551,10 +412,9 @@ dir ./ # still reply to client requests, possibly with out of date data, or the # data set may just be empty if this is the first synchronization. # -# 2) If replica-serve-stale-data is set to 'no' the replica will reply with error -# "MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'" -# to all data access commands, excluding commands such as: -# INFO, REPLICAOF, AUTH, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, +# 2) If replica-serve-stale-data is set to 'no' the replica will reply with +# an error "SYNC with master in progress" to all commands except: +# INFO, REPLICAOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, # UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, # HOST and LATENCY. # @@ -603,7 +463,7 @@ replica-read-only yes # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. -repl-diskless-sync yes +repl-diskless-sync no # When diskless replication is enabled, it is possible to configure the delay # the server waits in order to spawn the child that transfers the RDB via socket @@ -617,18 +477,12 @@ repl-diskless-sync yes # it entirely just set it to 0 seconds and the transfer will start ASAP. repl-diskless-sync-delay 5 -# When diskless replication is enabled with a delay, it is possible to let -# the replication start before the maximum delay is reached if the maximum -# number of replicas expected have connected. Default of 0 means that the -# maximum is not defined and Redis will wait the full delay. -repl-diskless-sync-max-replicas 0 - # ----------------------------------------------------------------------------- # WARNING: RDB diskless load is experimental. Since in this setup the replica # does not immediately store an RDB on disk, it may cause data loss during # failovers. RDB diskless load + Redis modules not handling I/O reads may also # cause Redis to abort in case of I/O errors during the initial synchronization -# stage with the master. Use only if you know what you are doing. +# stage with the master. Use only if your do what you are doing. # ----------------------------------------------------------------------------- # # Replica can load the RDB it reads from the replication link directly from the @@ -637,23 +491,19 @@ repl-diskless-sync-max-replicas 0 # # In many cases the disk is slower than the network, and storing and loading # the RDB file may increase replication time (and even increase the master's -# Copy on Write memory and replica buffers). +# Copy on Write memory and salve buffers). # However, parsing the RDB file directly from the socket may mean that we have # to flush the contents of the current database before the full rdb was # received. For this reason we have the following options: # # "disabled" - Don't use diskless load (store the rdb file to the disk first) # "on-empty-db" - Use diskless load only when it is completely safe. -# "swapdb" - Keep current db contents in RAM while parsing the data directly -# from the socket. Replicas in this mode can keep serving current -# data set while replication is in progress, except for cases where -# they can't recognize master as having a data set from same -# replication history. -# Note that this requires sufficient memory, if you don't have it, -# you risk an OOM kill. +# "swapdb" - Keep a copy of the current db contents in RAM while parsing +# the data directly from the socket. note that this requires +# sufficient memory, if you don't have it, you risk an OOM kill. repl-diskless-load disabled -# Master send PINGs to its replicas in a predefined interval. It's possible to +# Replicas send PINGs to server in a predefined interval. It's possible to # change this interval with the repl_ping_replica_period option. The default # value is 10 seconds. # @@ -728,43 +578,6 @@ repl-disable-tcp-nodelay no # By default the priority is 100. replica-priority 100 -# The propagation error behavior controls how Redis will behave when it is -# unable to handle a command being processed in the replication stream from a master -# or processed while reading from an AOF file. Errors that occur during propagation -# are unexpected, and can cause data inconsistency. However, there are edge cases -# in earlier versions of Redis where it was possible for the server to replicate or persist -# commands that would fail on future versions. For this reason the default behavior -# is to ignore such errors and continue processing commands. -# -# If an application wants to ensure there is no data divergence, this configuration -# should be set to 'panic' instead. The value can also be set to 'panic-on-replicas' -# to only panic when a replica encounters an error on the replication stream. One of -# these two panic values will become the default value in the future once there are -# sufficient safety mechanisms in place to prevent false positive crashes. -# -# propagation-error-behavior ignore - -# Replica ignore disk write errors controls the behavior of a replica when it is -# unable to persist a write command received from its master to disk. By default, -# this configuration is set to 'no' and will crash the replica in this condition. -# It is not recommended to change this default, however in order to be compatible -# with older versions of Redis this config can be toggled to 'yes' which will just -# log a warning and execute the write command it got from the master. -# -# replica-ignore-disk-write-errors no - -# ----------------------------------------------------------------------------- -# By default, Redis Sentinel includes all replicas in its reports. A replica -# can be excluded from Redis Sentinel's announcements. An unannounced replica -# will be ignored by the 'sentinel replicas ' command and won't be -# exposed to Redis Sentinel's clients. -# -# This option does not change the behavior of replica-priority. Even with -# replica-announced set to 'no', the replica can be promoted to master. To -# prevent this behavior, set replica-priority to 0. -# -# replica-announced yes - # It is possible for a master to stop accepting writes if there are less than # N replicas connected, having a lag less or equal than M seconds. # @@ -820,7 +633,7 @@ replica-priority 100 # Redis implements server assisted support for client side caching of values. # This is implemented using an invalidation table that remembers, using -# a radix key indexed by key name, what clients have which keys. In turn +# 16 millions of slots, what clients may have certain subsets of keys. In turn # this is used in order to send invalidation messages to clients. Please # check this page to understand more about the feature: # @@ -884,12 +697,8 @@ replica-priority 100 # off Disable the user: it's no longer possible to authenticate # with this user, however the already authenticated connections # will still work. -# skip-sanitize-payload RESTORE dump-payload sanitization is skipped. -# sanitize-payload RESTORE dump-payload is sanitized (default). -# + Allow the execution of that command. -# May be used with `|` for allowing subcommands (e.g "+config|get") -# - Disallow the execution of that command. -# May be used with `|` for blocking subcommands (e.g "-config|set") +# + Allow the execution of that command +# - Disallow the execution of that command # +@ Allow the execution of all the commands in such category # with valid categories are like @admin, @set, @sortedset, ... # and so forth, see the full list in the server.c file where @@ -897,11 +706,10 @@ replica-priority 100 # The special category @all means all the commands, but currently # present in the server, and that will be loaded in the future # via modules. -# +|first-arg Allow a specific first argument of an otherwise -# disabled command. It is only supported on commands with -# no sub-commands, and is not allowed as negative form -# like -SELECT|1, only additive starting with "+". This -# feature is deprecated and may be removed in the future. +# +|subcommand Allow a specific subcommand of an otherwise +# disabled command. Note that this form is not +# allowed as negative like -DEBUG|SEGFAULT, but +# only additive starting with "+". # allcommands Alias for +@all. Note that it implies the ability to execute # all the future commands loaded via the modules system. # nocommands Alias for -@all. @@ -909,17 +717,8 @@ replica-priority 100 # commands. For instance ~* allows all the keys. The pattern # is a glob-style pattern like the one of KEYS. # It is possible to specify multiple patterns. -# %R~ Add key read pattern that specifies which keys can be read -# from. -# %W~ Add key write pattern that specifies which keys can be -# written to. # allkeys Alias for ~* # resetkeys Flush the list of allowed keys patterns. -# & Add a glob-style pattern of Pub/Sub channels that can be -# accessed by the user. It is possible to specify multiple channel -# patterns. -# allchannels Alias for &* -# resetchannels Flush the list of allowed channel patterns. # > Add this password to the list of valid password for the user. # For example >mypass will add "mypass" to the list. # This directive clears the "nopass" flag (see later). @@ -938,14 +737,6 @@ replica-priority 100 # reset Performs the following actions: resetpass, resetkeys, off, # -@all. The user returns to the same state it has immediately # after its creation. -# () Create a new selector with the options specified within the -# parentheses and attach it to the user. Each option should be -# space separated. The first character must be ( and the last -# character must be ). -# clearselectors Remove all of the currently attached selectors. -# Note this does not change the "root" user permissions, -# which are the permissions directly applied onto the -# user (outside the parentheses). # # ACL rules can be specified in any order: for instance you can start with # passwords, then flags, or key patterns. However note that the additive @@ -967,40 +758,6 @@ replica-priority 100 # # Basically ACL rules are processed left-to-right. # -# The following is a list of command categories and their meanings: -# * keyspace - Writing or reading from keys, databases, or their metadata -# in a type agnostic way. Includes DEL, RESTORE, DUMP, RENAME, EXISTS, DBSIZE, -# KEYS, EXPIRE, TTL, FLUSHALL, etc. Commands that may modify the keyspace, -# key or metadata will also have `write` category. Commands that only read -# the keyspace, key or metadata will have the `read` category. -# * read - Reading from keys (values or metadata). Note that commands that don't -# interact with keys, will not have either `read` or `write`. -# * write - Writing to keys (values or metadata) -# * admin - Administrative commands. Normal applications will never need to use -# these. Includes REPLICAOF, CONFIG, DEBUG, SAVE, MONITOR, ACL, SHUTDOWN, etc. -# * dangerous - Potentially dangerous (each should be considered with care for -# various reasons). This includes FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, -# CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF, etc. -# * connection - Commands affecting the connection or other connections. -# This includes AUTH, SELECT, COMMAND, CLIENT, ECHO, PING, etc. -# * blocking - Potentially blocking the connection until released by another -# command. -# * fast - Fast O(1) commands. May loop on the number of arguments, but not the -# number of elements in the key. -# * slow - All commands that are not Fast. -# * pubsub - PUBLISH / SUBSCRIBE related -# * transaction - WATCH / MULTI / EXEC related commands. -# * scripting - Scripting related. -# * set - Data type: sets related. -# * sortedset - Data type: zsets related. -# * list - Data type: lists related. -# * hash - Data type: hashes related. -# * string - Data type: strings related. -# * bitmap - Data type: bitmaps related. -# * hyperloglog - Data type: hyperloglog related. -# * geo - Data type: geo related. -# * stream - Data type: streams related. -# # For more information about ACL configuration please refer to # the Redis web site at https://redis.io/topics/acl @@ -1030,24 +787,8 @@ acllog-max-len 128 # AUTH as usually, or more explicitly with AUTH default # if they follow the new protocol: both will work. # -# The requirepass is not compatible with aclfile option and the ACL LOAD -# command, these will cause requirepass to be ignored. -# # requirepass foobared -# New users are initialized with restrictive permissions by default, via the -# equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it -# is possible to manage access to Pub/Sub channels with ACL rules as well. The -# default Pub/Sub channels permission if new users is controlled by the -# acl-pubsub-default configuration directive, which accepts one of these values: -# -# allchannels: grants access to all Pub/Sub channels -# resetchannels: revokes access to all Pub/Sub channels -# -# From Redis 7.0, acl-pubsub-default defaults to 'resetchannels' permission. -# -# acl-pubsub-default resetchannels - # Command renaming (DEPRECATED). # # ------------------------------------------------------------------------ @@ -1136,12 +877,14 @@ acllog-max-len 128 # Both LRU, LFU and volatile-ttl are implemented using approximated # randomized algorithms. # -# Note: with any of the above policies, when there are no suitable keys for -# eviction, Redis will return an error on write operations that require -# more memory. These are usually commands that create new keys, add data or -# modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE, -# SORT (due to the STORE argument), and EXEC (if the transaction includes any -# command that requires memory). +# Note: with any of the above policies, Redis will return an error on write +# operations, when there are no suitable keys for eviction. +# +# At the date of writing these commands are: set setnx setex append +# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd +# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby +# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby +# getset mset msetnx exec sort # # The default is: # @@ -1158,14 +901,6 @@ acllog-max-len 128 # # maxmemory-samples 5 -# Eviction processing is designed to function well with the default setting. -# If there is an unusually large amount of write traffic, this value may need to -# be increased. Decreasing this value may reduce latency at the risk of -# eviction processing effectiveness -# 0 = minimum latency, 10 = default, 100 = process without regard to latency -# -# maxmemory-eviction-tenacity 10 - # Starting from Redis 5, by default a replica will ignore its maxmemory setting # (unless it is promoted to master after a failover or manually). It means # that the eviction of keys will be just handled by the master, sending the @@ -1259,13 +994,6 @@ replica-lazy-flush no lazyfree-lazy-user-del no -# FLUSHDB, FLUSHALL, SCRIPT FLUSH and FUNCTION FLUSH support both asynchronous and synchronous -# deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the -# commands. When neither flag is passed, this directive will be used to determine -# if the data should be deleted asynchronously. - -lazyfree-lazy-user-flush no - ################################ THREADED I/O ################################# # Redis is mostly single threaded, however there are certain threaded @@ -1304,7 +1032,7 @@ lazyfree-lazy-user-flush no # Usually threading reads doesn't help much. # # NOTE 1: This configuration directive cannot be changed at runtime via -# CONFIG SET. Also, this feature currently does not work when SSL is +# CONFIG SET. Aso this feature currently does not work when SSL is # enabled. # # NOTE 2: If you want to test the Redis speedup using redis-benchmark, make @@ -1322,7 +1050,7 @@ lazyfree-lazy-user-flush no # attempt to have background child processes killed before all others, and # replicas killed before masters. # -# Redis supports these options: +# Redis supports three options: # # no: Don't make changes to oom-score-adj (default). # yes: Alias to "relative" see below. @@ -1343,19 +1071,6 @@ oom-score-adj no # oom-score-adj-values to positive values will always succeed. oom-score-adj-values 0 200 800 - -#################### KERNEL transparent hugepage CONTROL ###################### - -# Usually the kernel Transparent Huge Pages control is set to "madvise" or -# or "never" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which -# case this config has no effect. On systems in which it is set to "always", -# redis will attempt to disable it specifically for the redis process in order -# to avoid latency problems specifically with fork(2) and CoW. -# If for some reason you prefer to keep it enabled, you can set this config to -# "no" and the kernel global to "always". - -disable-thp yes - ############################## APPEND ONLY MODE ############################### # By default Redis asynchronously dumps the dataset on disk. This mode is @@ -1374,43 +1089,14 @@ disable-thp yes # If the AOF is enabled on startup Redis will load the AOF, that is the file # with the better durability guarantees. # -# Please check https://redis.io/topics/persistence for more information. +# Please check http://redis.io/topics/persistence for more information. appendonly no -# The base name of the append only file. -# -# Redis 7 and newer use a set of append-only files to persist the dataset -# and changes applied to it. There are two basic types of files in use: -# -# - Base files, which are a snapshot representing the complete state of the -# dataset at the time the file was created. Base files can be either in -# the form of RDB (binary serialized) or AOF (textual commands). -# - Incremental files, which contain additional commands that were applied -# to the dataset following the previous file. -# -# In addition, manifest files are used to track the files and the order in -# which they were created and should be applied. -# -# Append-only file names are created by Redis following a specific pattern. -# The file name's prefix is based on the 'appendfilename' configuration -# parameter, followed by additional information about the sequence and type. -# -# For example, if appendfilename is set to appendonly.aof, the following file -# names could be derived: -# -# - appendonly.aof.1.base.rdb as a base file. -# - appendonly.aof.1.incr.aof, appendonly.aof.2.incr.aof as incremental files. -# - appendonly.aof.manifest as a manifest file. +# The name of the append only file (default: "appendonly.aof") appendfilename "appendonly.aof" -# For convenience, Redis stores all persistent append-only files in a dedicated -# directory. The name of the directory is determined by the appenddirname -# configuration parameter. - -appenddirname "appendonlydir" - # The fsync() call tells the Operating System to actually write data on disk # instead of waiting for more data in the output buffer. Some OS will really flush # data on disk, some other OS will just try to do it ASAP. @@ -1450,7 +1136,7 @@ appendfsync everysec # BGSAVE or BGREWRITEAOF is in progress. # # This means that while another child is saving, the durability of Redis is -# the same as "appendfsync no". In practical terms, this means that it is +# the same as "appendfsync none". In practical terms, this means that it is # possible to lose up to 30 seconds of log in the worst scenario (with the # default Linux settings). # @@ -1503,69 +1189,34 @@ auto-aof-rewrite-min-size 64mb # will be found. aof-load-truncated yes -# Redis can create append-only base files in either RDB or AOF formats. Using -# the RDB format is always faster and more efficient, and disabling it is only -# supported for backward compatibility purposes. +# When rewriting the AOF file, Redis is able to use an RDB preamble in the +# AOF file for faster rewrites and recoveries. When this option is turned +# on the rewritten AOF file is composed of two different stanzas: +# +# [RDB file][AOF tail] +# +# When loading, Redis recognizes that the AOF file starts with the "REDIS" +# string and loads the prefixed RDB file, then continues loading the AOF +# tail. aof-use-rdb-preamble yes -# Redis supports recording timestamp annotations in the AOF to support restoring -# the data from a specific point-in-time. However, using this capability changes -# the AOF format in a way that may not be compatible with existing AOF parsers. -aof-timestamp-enabled no +################################ LUA SCRIPTING ############################### -################################ SHUTDOWN ##################################### - -# Maximum time to wait for replicas when shutting down, in seconds. +# Max execution time of a Lua script in milliseconds. # -# During shut down, a grace period allows any lagging replicas to catch up with -# the latest replication offset before the master exists. This period can -# prevent data loss, especially for deployments without configured disk backups. +# If the maximum execution time is reached Redis will log that a script is +# still in execution after the maximum allowed time and will start to +# reply to queries with an error. # -# The 'shutdown-timeout' value is the grace period's duration in seconds. It is -# only applicable when the instance has replicas. To disable the feature, set -# the value to 0. +# When a long running script exceeds the maximum execution time only the +# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be +# used to stop a script that did not yet call any write commands. The second +# is the only way to shut down the server in the case a write command was +# already issued by the script but the user doesn't want to wait for the natural +# termination of the script. # -# shutdown-timeout 10 - -# When Redis receives a SIGINT or SIGTERM, shutdown is initiated and by default -# an RDB snapshot is written to disk in a blocking operation if save points are configured. -# The options used on signaled shutdown can include the following values: -# default: Saves RDB snapshot only if save points are configured. -# Waits for lagging replicas to catch up. -# save: Forces a DB saving operation even if no save points are configured. -# nosave: Prevents DB saving operation even if one or more save points are configured. -# now: Skips waiting for lagging replicas. -# force: Ignores any errors that would normally prevent the server from exiting. -# -# Any combination of values is allowed as long as "save" and "nosave" are not set simultaneously. -# Example: "nosave force now" -# -# shutdown-on-sigint default -# shutdown-on-sigterm default - -################ NON-DETERMINISTIC LONG BLOCKING COMMANDS ##################### - -# Maximum time in milliseconds for EVAL scripts, functions and in some cases -# modules' commands before Redis can start processing or rejecting other clients. -# -# If the maximum execution time is reached Redis will start to reply to most -# commands with a BUSY error. -# -# In this state Redis will only allow a handful of commands to be executed. -# For instance, SCRIPT KILL, FUNCTION KILL, SHUTDOWN NOSAVE and possibly some -# module specific 'allow-busy' commands. -# -# SCRIPT KILL and FUNCTION KILL will only be able to stop a script that did not -# yet call any write commands, so SHUTDOWN NOSAVE may be the only way to stop -# the server in the case a write command was already issued by the script when -# the user doesn't want to wait for the natural termination of the script. -# -# The default is 5 seconds. It is possible to set it to 0 or a negative value -# to disable this mechanism (uninterrupted execution). Note that in the past -# this config had a different name, which is now an alias, so both of these do -# the same: -# lua-time-limit 5000 -# busy-reply-threshold 5000 +# Set it to 0 or a negative value for unlimited execution without warnings. +lua-time-limit 5000 ################################ REDIS CLUSTER ############################### @@ -1589,11 +1240,6 @@ aof-timestamp-enabled no # # cluster-node-timeout 15000 -# The cluster port is the port that the cluster bus will listen for inbound connections on. When set -# to the default value, 0, it will be bound to the command port + 10000. Setting this value requires -# you to specify the cluster bus port when executing cluster meet. -# cluster-port 0 - # A replica of a failing master will avoid to start a failover if its data # looks too old. # @@ -1652,21 +1298,12 @@ aof-timestamp-enabled no # master in your cluster. # # Default is 1 (replicas migrate only if their masters remain with at least -# one replica). To disable migration just set it to a very large value or -# set cluster-allow-replica-migration to 'no'. +# one replica). To disable migration just set it to a very large value. # A value of 0 can be set but is useful only for debugging and dangerous # in production. # # cluster-migration-barrier 1 -# Turning off this option allows to use less automatic cluster configuration. -# It both disables migration to orphaned masters and migration from masters -# that became empty. -# -# Default is 'yes' (allow automatic migrations). -# -# cluster-allow-replica-migration yes - # By default Redis Cluster nodes stop accepting queries if they detect there # is at least a hash slot uncovered (no available node is serving it). # This way if the cluster is partially down (for example a range of hash slots @@ -1681,7 +1318,7 @@ aof-timestamp-enabled no # cluster-require-full-coverage yes # This option, when set to yes, prevents replicas from trying to failover its -# master during master failures. However the replica can still perform a +# master during master failures. However the master can still perform a # manual failover, if forced to do so. # # This is useful in different scenarios, especially in the case of multiple @@ -1691,7 +1328,7 @@ aof-timestamp-enabled no # cluster-replica-no-failover no # This option, when set to yes, allows nodes to serve read traffic while the -# cluster is in a down state, as long as it believes it owns the slots. +# the cluster is in a down state, as long as it believes it owns the slots. # # This is useful for two cases. The first case is for when an application # doesn't require consistency of data during node failures or network partitions. @@ -1706,54 +1343,8 @@ aof-timestamp-enabled no # # cluster-allow-reads-when-down no -# This option, when set to yes, allows nodes to serve pubsub shard traffic while -# the cluster is in a down state, as long as it believes it owns the slots. -# -# This is useful if the application would like to use the pubsub feature even when -# the cluster global stable state is not OK. If the application wants to make sure only -# one shard is serving a given channel, this feature should be kept as yes. -# -# cluster-allow-pubsubshard-when-down yes - -# Cluster link send buffer limit is the limit on the memory usage of an individual -# cluster bus link's send buffer in bytes. Cluster links would be freed if they exceed -# this limit. This is to primarily prevent send buffers from growing unbounded on links -# toward slow peers (E.g. PubSub messages being piled up). -# This limit is disabled by default. Enable this limit when 'mem_cluster_links' INFO field -# and/or 'send-buffer-allocated' entries in the 'CLUSTER LINKS` command output continuously increase. -# Minimum limit of 1gb is recommended so that cluster link buffer can fit in at least a single -# PubSub message by default. (client-query-buffer-limit default value is 1gb) -# -# cluster-link-sendbuf-limit 0 - -# Clusters can configure their announced hostname using this config. This is a common use case for -# applications that need to use TLS Server Name Indication (SNI) or dealing with DNS based -# routing. By default this value is only shown as additional metadata in the CLUSTER SLOTS -# command, but can be changed using 'cluster-preferred-endpoint-type' config. This value is -# communicated along the clusterbus to all nodes, setting it to an empty string will remove -# the hostname and also propagate the removal. -# -# cluster-announce-hostname "" - -# Clusters can advertise how clients should connect to them using either their IP address, -# a user defined hostname, or by declaring they have no endpoint. Which endpoint is -# shown as the preferred endpoint is set by using the cluster-preferred-endpoint-type -# config with values 'ip', 'hostname', or 'unknown-endpoint'. This value controls how -# the endpoint returned for MOVED/ASKING requests as well as the first field of CLUSTER SLOTS. -# If the preferred endpoint type is set to hostname, but no announced hostname is set, a '?' -# will be returned instead. -# -# When a cluster advertises itself as having an unknown endpoint, it's indicating that -# the server doesn't know how clients can reach the cluster. This can happen in certain -# networking situations where there are multiple possible routes to the node, and the -# server doesn't know which one the client took. In this case, the server is expecting -# the client to reach out on the same endpoint it used for making the last request, but use -# the port provided in the response. -# -# cluster-preferred-endpoint-type ip - # In order to setup your cluster make sure to read the documentation -# available at https://redis.io web site. +# available at http://redis.io web site. ########################## CLUSTER DOCKER/NAT support ######################## @@ -1763,21 +1354,16 @@ aof-timestamp-enabled no # # In order to make Redis Cluster working in such environments, a static # configuration where each node knows its public address is needed. The -# following four options are used for this scope, and are: +# following two options are used for this scope, and are: # # * cluster-announce-ip # * cluster-announce-port -# * cluster-announce-tls-port # * cluster-announce-bus-port # -# Each instructs the node about its address, client ports (for connections -# without and with TLS) and cluster message bus port. The information is then -# published in the header of the bus packets so that other nodes will be able to -# correctly map the address of the node publishing the information. -# -# If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set -# to zero, then cluster-announce-port refers to the TLS port. Note also that -# cluster-announce-tls-port has no effect if cluster-tls is set to no. +# Each instructs the node about its address, client port, and cluster message +# bus port. The information is then published in the header of the bus packets +# so that other nodes will be able to correctly map the address of the node +# publishing the information. # # If the above options are not used, the normal Redis Cluster auto-detection # will be used instead. @@ -1790,8 +1376,7 @@ aof-timestamp-enabled no # Example: # # cluster-announce-ip 10.1.1.5 -# cluster-announce-tls-port 6379 -# cluster-announce-port 0 +# cluster-announce-port 6379 # cluster-announce-bus-port 6380 ################################## SLOW LOG ################################### @@ -1839,24 +1424,10 @@ slowlog-max-len 128 # "CONFIG SET latency-monitor-threshold " if needed. latency-monitor-threshold 0 -################################ LATENCY TRACKING ############################## - -# The Redis extended latency monitoring tracks the per command latencies and enables -# exporting the percentile distribution via the INFO latencystats command, -# and cumulative latency distributions (histograms) via the LATENCY command. -# -# By default, the extended latency monitoring is enabled since the overhead -# of keeping track of the command latency is very small. -# latency-tracking yes - -# By default the exported latency percentiles via the INFO latencystats command -# are the p50, p99, and p999. -# latency-tracking-info-percentiles 50 99 99.9 - ############################# EVENT NOTIFICATION ############################## # Redis can notify Pub/Sub clients about events happening in the key space. -# This feature is documented at https://redis.io/topics/notifications +# This feature is documented at http://redis.io/topics/notifications # # For instance if keyspace events notification is enabled, and a client # performs a DEL operation on key "foo" stored in the Database 0, two @@ -1878,11 +1449,9 @@ latency-monitor-threshold 0 # z Sorted set commands # x Expired events (events generated every time a key expires) # e Evicted events (events generated when a key is evicted for maxmemory) -# n New key events (Note: not included in the 'A' class) # t Stream commands -# d Module key type events # m Key-miss events (Note: It is not included in the 'A' class) -# A Alias for g$lshzxetd, so that the "AKE" string means all the events +# A Alias for g$lshzxet, so that the "AKE" string means all the events # (Except key-miss events which are excluded from 'A' due to their # unique nature). # @@ -1905,13 +1474,71 @@ latency-monitor-threshold 0 # specify at least one of K or E, no events will be delivered. notify-keyspace-events "" +############################### GOPHER SERVER ################################# + +# Redis contains an implementation of the Gopher protocol, as specified in +# the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt). +# +# The Gopher protocol was very popular in the late '90s. It is an alternative +# to the web, and the implementation both server and client side is so simple +# that the Redis server has just 100 lines of code in order to implement this +# support. +# +# What do you do with Gopher nowadays? Well Gopher never *really* died, and +# lately there is a movement in order for the Gopher more hierarchical content +# composed of just plain text documents to be resurrected. Some want a simpler +# internet, others believe that the mainstream internet became too much +# controlled, and it's cool to create an alternative space for people that +# want a bit of fresh air. +# +# Anyway for the 10nth birthday of the Redis, we gave it the Gopher protocol +# as a gift. +# +# --- HOW IT WORKS? --- +# +# The Redis Gopher support uses the inline protocol of Redis, and specifically +# two kind of inline requests that were anyway illegal: an empty request +# or any request that starts with "/" (there are no Redis commands starting +# with such a slash). Normal RESP2/RESP3 requests are completely out of the +# path of the Gopher protocol implementation and are served as usual as well. +# +# If you open a connection to Redis when Gopher is enabled and send it +# a string like "/foo", if there is a key named "/foo" it is served via the +# Gopher protocol. +# +# In order to create a real Gopher "hole" (the name of a Gopher site in Gopher +# talking), you likely need a script like the following: +# +# https://github.com/antirez/gopher2redis +# +# --- SECURITY WARNING --- +# +# If you plan to put Redis on the internet in a publicly accessible address +# to server Gopher pages MAKE SURE TO SET A PASSWORD to the instance. +# Once a password is set: +# +# 1. The Gopher server (when enabled, not by default) will still serve +# content via Gopher. +# 2. However other commands cannot be called before the client will +# authenticate. +# +# So use the 'requirepass' option to protect your instance. +# +# Note that Gopher is not currently supported when 'io-threads-do-reads' +# is enabled. +# +# To enable Gopher support, uncomment the following line and set the option +# from no (the default) to yes. +# +# gopher-enabled no + ############################### ADVANCED CONFIG ############################### # Hashes are encoded using a memory efficient data structure when they have a # small number of entries, and the biggest entry does not exceed a given # threshold. These thresholds can be configured using the following directives. -hash-max-listpack-entries 512 -hash-max-listpack-value 64 +hash-max-ziplist-entries 512 +hash-max-ziplist-value 64 # Lists are also encoded in a special way to save a lot of space. # The number of entries allowed per internal list node can be specified @@ -1926,7 +1553,7 @@ hash-max-listpack-value 64 # per list node. # The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), # but if your use case is unique, adjust the settings as necessary. -list-max-listpack-size -2 +list-max-ziplist-size -2 # Lists may also be compressed. # Compress depth is the number of quicklist ziplist nodes from *each* side of @@ -1954,8 +1581,8 @@ set-max-intset-entries 512 # Similarly to hashes and lists, sorted sets are also specially encoded in # order to save a lot of space. This encoding is only used when the length and # elements of a sorted set are below the following limits: -zset-max-listpack-entries 128 -zset-max-listpack-value 64 +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 # HyperLogLog sparse representation bytes limit. The limit includes the # 16 bytes header. When an HyperLogLog using the sparse representation crosses @@ -1977,7 +1604,7 @@ hll-sparse-max-bytes 3000 # maximum number of items it may contain before switching to a new node when # appending new stream entries. If any of the following settings are set to # zero, the limit is ignored, so for instance it is possible to set just a -# max entries limit by setting max-bytes to 0 and max-entries to the desired +# max entires limit by setting max-bytes to 0 and max-entries to the desired # value. stream-node-max-bytes 4096 stream-node-max-entries 100 @@ -2010,7 +1637,7 @@ activerehashing yes # The limit can be set differently for the three different classes of clients: # # normal -> normal clients including MONITOR clients -# replica -> replica clients +# replica -> replica clients # pubsub -> clients subscribed to at least one pubsub channel or pattern # # The syntax of every client-output-buffer-limit directive is the following: @@ -2034,13 +1661,6 @@ activerehashing yes # Instead there is a default limit for pubsub and replica clients, since # subscribers and replicas receive data in a push fashion. # -# Note that it doesn't make sense to set the replica clients output buffer -# limit lower than the repl-backlog-size config (partial sync will succeed -# and then replica will get disconnected). -# Such a configuration is ignored (the size of repl-backlog-size will be used). -# This doesn't have memory consumption implications since the replica client -# will share the backlog buffers memory. -# # Both the hard or the soft limit can be disabled by setting them to zero. client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 @@ -2054,25 +1674,6 @@ client-output-buffer-limit pubsub 32mb 8mb 60 # # client-query-buffer-limit 1gb -# In some scenarios client connections can hog up memory leading to OOM -# errors or data eviction. To avoid this we can cap the accumulated memory -# used by all client connections (all pubsub and normal clients). Once we -# reach that limit connections will be dropped by the server freeing up -# memory. The server will attempt to drop the connections using the most -# memory first. We call this mechanism "client eviction". -# -# Client eviction is configured using the maxmemory-clients setting as follows: -# 0 - client eviction is disabled (default) -# -# A memory value can be used for the client eviction threshold, -# for example: -# maxmemory-clients 1g -# -# A percentage value (between 1% and 100%) means the client eviction threshold -# is based on a percentage of the maxmemory setting. For example to set client -# eviction at 5% of maxmemory: -# maxmemory-clients 5% - # In the Redis protocol, bulk requests, that are, elements representing single # strings, are normally limited to 512 mb. However you can change this limit # here, but must be 1mb or greater @@ -2113,13 +1714,13 @@ hz 10 dynamic-hz yes # When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 4 MB of data generated. This is useful +# the file will be fsync-ed every 32 MB of data generated. This is useful # in order to commit the file to the disk more incrementally and avoid # big latency spikes. aof-rewrite-incremental-fsync yes # When redis saves RDB file, if the following option is enabled -# the file will be fsync-ed every 4 MB of data generated. This is useful +# the file will be fsync-ed every 32 MB of data generated. This is useful # in order to commit the file to the disk more incrementally and avoid # big latency spikes. rdb-save-incremental-fsync yes @@ -2216,7 +1817,7 @@ rdb-save-incremental-fsync yes # defragmentation process. If you are not sure about what they mean it is # a good idea to leave the defaults untouched. -# Active defragmentation is disabled by default +# Enabled active defragmentation # activedefrag no # Minimum amount of fragmentation waste to start active defrag diff --git a/dockge/redis/docker-compose.yml b/dockge/redis/docker-compose.yml index ea836be9..95805faa 100644 --- a/dockge/redis/docker-compose.yml +++ b/dockge/redis/docker-compose.yml @@ -7,7 +7,7 @@ services: else\n redis-server /etc/redis/redis.conf --requirepass ${REDIS_ROOT_PASSWORD}\n\ fi'\n" container_name: redis - image: redis:7.4.1-alpine + image: redis:6.2.16-alpine labels: createdBy: Apps networks: diff --git a/dockge/redis_6_2_16/.env b/dockge/redis_7_4_1/.env similarity index 100% rename from dockge/redis_6_2_16/.env rename to dockge/redis_7_4_1/.env diff --git a/dockge/redis_6_2_16/config/redis.conf b/dockge/redis_7_4_1/config/redis.conf similarity index 72% rename from dockge/redis_6_2_16/config/redis.conf rename to dockge/redis_7_4_1/config/redis.conf index ca22ec9f..8795ae29 100644 --- a/dockge/redis_6_2_16/config/redis.conf +++ b/dockge/redis_7_4_1/config/redis.conf @@ -32,8 +32,17 @@ # If instead you are interested in using includes to override configuration # options, it is better to use include as the last line. # +# Included paths may contain wildcards. All files matching the wildcards will +# be included in alphabetical order. +# Note that if an include path contains a wildcards but no files match it when +# the server is started, the include statement will be ignored and no error will +# be emitted. It is safe, therefore, to include wildcard files from empty +# directories. +# # include /path/to/local.conf # include /path/to/other.conf +# include /path/to/fragments/*.conf +# ################################## MODULES ##################################### @@ -49,43 +58,81 @@ # for connections from all available network interfaces on the host machine. # It is possible to listen to just one or multiple selected interfaces using # the "bind" configuration directive, followed by one or more IP addresses. +# Each address can be prefixed by "-", which means that redis will not fail to +# start if the address is not available. Being not available only refers to +# addresses that does not correspond to any network interface. Addresses that +# are already in use will always fail, and unsupported protocols will always BE +# silently skipped. # # Examples: # -# bind 192.168.1.100 10.0.0.1 -# bind 127.0.0.1 ::1 +# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses +# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6 +# bind * -::* # like the default, all available interfaces # # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the # internet, binding to all the interfaces is dangerous and will expose the # instance to everybody on the internet. So by default we uncomment the # following bind directive, that will force Redis to listen only on the -# IPv4 loopback interface address (this means Redis will only be able to -# accept client connections from the same host that it is running on). +# IPv4 and IPv6 (if available) loopback interface addresses (this means Redis +# will only be able to accept client connections from the same host that it is +# running on). # # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES -# JUST COMMENT OUT THE FOLLOWING LINE. +# COMMENT OUT THE FOLLOWING LINE. +# +# You will also need to set a password unless you explicitly disable protected +# mode. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind 0.0.0.0 +# By default, outgoing connections (from replica to master, from Sentinel to +# instances, cluster bus, etc.) are not bound to a specific local address. In +# most cases, this means the operating system will handle that based on routing +# and the interface through which the connection goes out. +# +# Using bind-source-addr it is possible to configure a specific address to bind +# to, which may also affect how the connection gets routed. +# +# Example: +# +# bind-source-addr 10.0.0.1 + # Protected mode is a layer of security protection, in order to avoid that # Redis instances left open on the internet are accessed and exploited. # -# When protected mode is on and if: -# -# 1) The server is not binding explicitly to a set of addresses using the -# "bind" directive. -# 2) No password is configured. -# -# The server only accepts connections from clients connecting from the -# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain -# sockets. +# When protected mode is on and the default user has no password, the server +# only accepts local connections from the IPv4 address (127.0.0.1), IPv6 address +# (::1) or Unix domain sockets. # # By default protected mode is enabled. You should disable it only if # you are sure you want clients from other hosts to connect to Redis -# even if no authentication is configured, nor a specific set of interfaces -# are explicitly listed using the "bind" directive. +# even if no authentication is configured. protected-mode yes +# Redis uses default hardened security configuration directives to reduce the +# attack surface on innocent users. Therefore, several sensitive configuration +# directives are immutable, and some potentially-dangerous commands are blocked. +# +# Configuration directives that control files that Redis writes to (e.g., 'dir' +# and 'dbfilename') and that aren't usually modified during runtime +# are protected by making them immutable. +# +# Commands that can increase the attack surface of Redis and that aren't usually +# called by users are blocked by default. +# +# These can be exposed to either all connections or just local ones by setting +# each of the configs listed below to either of these values: +# +# no - Block for any connection (remain immutable) +# yes - Allow for any connection (no protection) +# local - Allow only for local connections. Ones originating from the +# IPv4 address (127.0.0.1), IPv6 address (::1) or Unix domain sockets. +# +# enable-protected-configs no +# enable-debug-command no +# enable-module-command no + # Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. port 6379 @@ -105,7 +152,7 @@ tcp-backlog 511 # incoming connections. There is no default, so Redis will not listen # on a unix socket when not specified. # -# unixsocket /tmp/redis.sock +# unixsocket /run/redis.sock # unixsocketperm 700 # Close the connection after a client is idle for N seconds (0 to disable) @@ -128,6 +175,16 @@ timeout 0 # Redis default starting with Redis 3.2.1. tcp-keepalive 300 +# Apply OS-specific mechanism to mark the listening socket with the specified +# ID, to support advanced routing and filtering capabilities. +# +# On Linux, the ID represents a connection mark. +# On FreeBSD, the ID represents a socket cookie ID. +# On OpenBSD, the ID represents a route table ID. +# +# The default value is 0, which implies no marking is required. +# socket-mark-id 0 + ################################# TLS/SSL ##################################### # By default, TLS/SSL is disabled. To enable it, the "tls-port" configuration @@ -143,8 +200,32 @@ tcp-keepalive 300 # # tls-cert-file redis.crt # tls-key-file redis.key +# +# If the key file is encrypted using a passphrase, it can be included here +# as well. +# +# tls-key-file-pass secret -# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange: +# Normally Redis uses the same certificate for both server functions (accepting +# connections) and client functions (replicating from a master, establishing +# cluster bus connections, etc.). +# +# Sometimes certificates are issued with attributes that designate them as +# client-only or server-only certificates. In that case it may be desired to use +# different certificates for incoming (server) and outgoing (client) +# connections. To do that, use the following directives: +# +# tls-client-cert-file client.crt +# tls-client-key-file client.key +# +# If the key file is encrypted using a passphrase, it can be included here +# as well. +# +# tls-client-key-file-pass secret + +# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange, +# required by older versions of OpenSSL (<3.0). Newer versions do not require +# this configuration and recommend against it. # # tls-dh-params-file redis.dh @@ -177,9 +258,12 @@ tcp-keepalive 300 # # tls-cluster yes -# Explicitly specify TLS versions to support. Allowed values are case insensitive -# and include "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3" (OpenSSL >= 1.1.1) or -# any combination. To enable only TLSv1.2 and TLSv1.3, use: +# By default, only TLSv1.2 and TLSv1.3 are enabled and it is highly recommended +# that older formally deprecated versions are kept disabled to reduce the attack surface. +# You can explicitly specify TLS versions to support. +# Allowed values are case insensitive and include "TLSv1", "TLSv1.1", "TLSv1.2", +# "TLSv1.3" (OpenSSL >= 1.1.1) or any combination. +# To enable only TLSv1.2 and TLSv1.3, use: # # tls-protocols "TLSv1.2 TLSv1.3" @@ -221,6 +305,7 @@ tcp-keepalive 300 # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. +# When Redis is supervised by upstart or systemd, this parameter has no impact. daemonize no # If you run Redis from upstart or systemd, Redis can interact with your @@ -229,11 +314,17 @@ daemonize no # supervised upstart - signal upstart by putting Redis into SIGSTOP mode # requires "expect stop" in your upstart job config # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET +# on startup, and updating Redis status on a regular +# basis. # supervised auto - detect upstart or systemd method based on # UPSTART_JOB or NOTIFY_SOCKET environment variables # Note: these supervision methods only signal "process is ready." # They do not enable continuous pings back to your supervisor. -supervised no +# +# The default is "no". To run under upstart/systemd, you can simply uncomment +# the line below: +# +# supervised auto # If a pid file is specified, Redis writes it where specified at startup # and removes it at exit. @@ -244,6 +335,9 @@ supervised no # # Creating a pid file is best effort: if Redis is not able to create it # nothing bad happens, the server will start and run normally. +# +# Note that on modern Linux systems "/run/redis.pid" is more conforming +# and should be used instead. pidfile /var/run/redis_6379.pid # Specify the server verbosity level. @@ -269,44 +363,74 @@ logfile "" # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. # syslog-facility local0 +# To disable the built in crash log, which will possibly produce cleaner core +# dumps when they are needed, uncomment the following: +# +# crash-log-enabled no + +# To disable the fast memory check that's run as part of the crash log, which +# will possibly let redis terminate sooner, uncomment the following: +# +# crash-memcheck-enabled no + # Set the number of databases. The default database is DB 0, you can select # a different one on a per-connection basis using SELECT where # dbid is a number between 0 and 'databases'-1 databases 16 # By default Redis shows an ASCII art logo only when started to log to the -# standard output and if the standard output is a TTY. Basically this means -# that normally a logo is displayed only in interactive sessions. +# standard output and if the standard output is a TTY and syslog logging is +# disabled. Basically this means that normally a logo is displayed only in +# interactive sessions. # # However it is possible to force the pre-4.0 behavior and always show a # ASCII art logo in startup logs by setting the following option to yes. -always-show-logo yes +always-show-logo no + +# By default, Redis modifies the process title (as seen in 'top' and 'ps') to +# provide some runtime information. It is possible to disable this and leave +# the process name as executed by setting the following to no. +set-proc-title yes + +# When changing the process title, Redis uses the following template to construct +# the modified title. +# +# Template variables are specified in curly brackets. The following variables are +# supported: +# +# {title} Name of process as executed if parent, or type of child process. +# {listen-addr} Bind address or '*' followed by TCP or TLS port listening on, or +# Unix socket if only that's available. +# {server-mode} Special mode, i.e. "[sentinel]" or "[cluster]". +# {port} TCP port listening on, or 0. +# {tls-port} TLS port listening on, or 0. +# {unixsocket} Unix domain socket listening on, or "". +# {config-file} Name of configuration file used. +# +proc-title-template "{title} {listen-addr} {server-mode}" ################################ SNAPSHOTTING ################################ -# -# Save the DB on disk: -# -# save -# -# Will save the DB if both the given number of seconds and the given -# number of write operations against the DB occurred. -# -# In the example below the behavior will be to save: -# after 900 sec (15 min) if at least 1 key changed -# after 300 sec (5 min) if at least 10 keys changed -# after 60 sec if at least 10000 keys changed -# -# Note: you can disable saving completely by commenting out all "save" lines. -# -# It is also possible to remove all the previously configured save -# points by adding a save directive with a single empty string argument -# like in the following example: -# -# save "" -save 900 1 -save 300 10 -save 60 10000 +# Save the DB to disk. +# +# save [ ...] +# +# Redis will save the DB if the given number of seconds elapsed and it +# surpassed the given number of write operations against the DB. +# +# Snapshotting can be completely disabled with a single empty string argument +# as in following example: +# +# save "" +# +# Unless specified otherwise, by default Redis will save the DB: +# * After 3600 seconds (an hour) if at least 1 change was performed +# * After 300 seconds (5 minutes) if at least 100 changes were performed +# * After 60 seconds if at least 10000 changes were performed +# +# You can set these explicitly by uncommenting the following line. +# +# save 3600 1 300 100 60 10000 # By default Redis will stop accepting writes if RDB snapshots are enabled # (at least one save point) and the latest background save failed. @@ -338,6 +462,21 @@ rdbcompression yes # tell the loading code to skip the check. rdbchecksum yes +# Enables or disables full sanitization checks for ziplist and listpack etc when +# loading an RDB or RESTORE payload. This reduces the chances of a assertion or +# crash later on while processing commands. +# Options: +# no - Never perform full sanitization +# yes - Always perform full sanitization +# clients - Perform full sanitization only for user connections. +# Excludes: RDB files, RESTORE commands received from the master +# connection, and client connections which have the +# skip-sanitize-payload ACL flag. +# The default should be 'clients' but since it currently affects cluster +# resharding via MIGRATE, it is temporarily set to 'no' by default. +# +# sanitize-dump-payload no + # The filename where to dump the DB dbfilename dump.rdb @@ -412,9 +551,10 @@ dir ./ # still reply to client requests, possibly with out of date data, or the # data set may just be empty if this is the first synchronization. # -# 2) If replica-serve-stale-data is set to 'no' the replica will reply with -# an error "SYNC with master in progress" to all commands except: -# INFO, REPLICAOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, +# 2) If replica-serve-stale-data is set to 'no' the replica will reply with error +# "MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'" +# to all data access commands, excluding commands such as: +# INFO, REPLICAOF, AUTH, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, # UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, # HOST and LATENCY. # @@ -463,7 +603,7 @@ replica-read-only yes # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. -repl-diskless-sync no +repl-diskless-sync yes # When diskless replication is enabled, it is possible to configure the delay # the server waits in order to spawn the child that transfers the RDB via socket @@ -477,12 +617,18 @@ repl-diskless-sync no # it entirely just set it to 0 seconds and the transfer will start ASAP. repl-diskless-sync-delay 5 +# When diskless replication is enabled with a delay, it is possible to let +# the replication start before the maximum delay is reached if the maximum +# number of replicas expected have connected. Default of 0 means that the +# maximum is not defined and Redis will wait the full delay. +repl-diskless-sync-max-replicas 0 + # ----------------------------------------------------------------------------- # WARNING: RDB diskless load is experimental. Since in this setup the replica # does not immediately store an RDB on disk, it may cause data loss during # failovers. RDB diskless load + Redis modules not handling I/O reads may also # cause Redis to abort in case of I/O errors during the initial synchronization -# stage with the master. Use only if your do what you are doing. +# stage with the master. Use only if you know what you are doing. # ----------------------------------------------------------------------------- # # Replica can load the RDB it reads from the replication link directly from the @@ -491,19 +637,23 @@ repl-diskless-sync-delay 5 # # In many cases the disk is slower than the network, and storing and loading # the RDB file may increase replication time (and even increase the master's -# Copy on Write memory and salve buffers). +# Copy on Write memory and replica buffers). # However, parsing the RDB file directly from the socket may mean that we have # to flush the contents of the current database before the full rdb was # received. For this reason we have the following options: # # "disabled" - Don't use diskless load (store the rdb file to the disk first) # "on-empty-db" - Use diskless load only when it is completely safe. -# "swapdb" - Keep a copy of the current db contents in RAM while parsing -# the data directly from the socket. note that this requires -# sufficient memory, if you don't have it, you risk an OOM kill. +# "swapdb" - Keep current db contents in RAM while parsing the data directly +# from the socket. Replicas in this mode can keep serving current +# data set while replication is in progress, except for cases where +# they can't recognize master as having a data set from same +# replication history. +# Note that this requires sufficient memory, if you don't have it, +# you risk an OOM kill. repl-diskless-load disabled -# Replicas send PINGs to server in a predefined interval. It's possible to +# Master send PINGs to its replicas in a predefined interval. It's possible to # change this interval with the repl_ping_replica_period option. The default # value is 10 seconds. # @@ -578,6 +728,43 @@ repl-disable-tcp-nodelay no # By default the priority is 100. replica-priority 100 +# The propagation error behavior controls how Redis will behave when it is +# unable to handle a command being processed in the replication stream from a master +# or processed while reading from an AOF file. Errors that occur during propagation +# are unexpected, and can cause data inconsistency. However, there are edge cases +# in earlier versions of Redis where it was possible for the server to replicate or persist +# commands that would fail on future versions. For this reason the default behavior +# is to ignore such errors and continue processing commands. +# +# If an application wants to ensure there is no data divergence, this configuration +# should be set to 'panic' instead. The value can also be set to 'panic-on-replicas' +# to only panic when a replica encounters an error on the replication stream. One of +# these two panic values will become the default value in the future once there are +# sufficient safety mechanisms in place to prevent false positive crashes. +# +# propagation-error-behavior ignore + +# Replica ignore disk write errors controls the behavior of a replica when it is +# unable to persist a write command received from its master to disk. By default, +# this configuration is set to 'no' and will crash the replica in this condition. +# It is not recommended to change this default, however in order to be compatible +# with older versions of Redis this config can be toggled to 'yes' which will just +# log a warning and execute the write command it got from the master. +# +# replica-ignore-disk-write-errors no + +# ----------------------------------------------------------------------------- +# By default, Redis Sentinel includes all replicas in its reports. A replica +# can be excluded from Redis Sentinel's announcements. An unannounced replica +# will be ignored by the 'sentinel replicas ' command and won't be +# exposed to Redis Sentinel's clients. +# +# This option does not change the behavior of replica-priority. Even with +# replica-announced set to 'no', the replica can be promoted to master. To +# prevent this behavior, set replica-priority to 0. +# +# replica-announced yes + # It is possible for a master to stop accepting writes if there are less than # N replicas connected, having a lag less or equal than M seconds. # @@ -633,7 +820,7 @@ replica-priority 100 # Redis implements server assisted support for client side caching of values. # This is implemented using an invalidation table that remembers, using -# 16 millions of slots, what clients may have certain subsets of keys. In turn +# a radix key indexed by key name, what clients have which keys. In turn # this is used in order to send invalidation messages to clients. Please # check this page to understand more about the feature: # @@ -697,8 +884,12 @@ replica-priority 100 # off Disable the user: it's no longer possible to authenticate # with this user, however the already authenticated connections # will still work. -# + Allow the execution of that command -# - Disallow the execution of that command +# skip-sanitize-payload RESTORE dump-payload sanitization is skipped. +# sanitize-payload RESTORE dump-payload is sanitized (default). +# + Allow the execution of that command. +# May be used with `|` for allowing subcommands (e.g "+config|get") +# - Disallow the execution of that command. +# May be used with `|` for blocking subcommands (e.g "-config|set") # +@ Allow the execution of all the commands in such category # with valid categories are like @admin, @set, @sortedset, ... # and so forth, see the full list in the server.c file where @@ -706,10 +897,11 @@ replica-priority 100 # The special category @all means all the commands, but currently # present in the server, and that will be loaded in the future # via modules. -# +|subcommand Allow a specific subcommand of an otherwise -# disabled command. Note that this form is not -# allowed as negative like -DEBUG|SEGFAULT, but -# only additive starting with "+". +# +|first-arg Allow a specific first argument of an otherwise +# disabled command. It is only supported on commands with +# no sub-commands, and is not allowed as negative form +# like -SELECT|1, only additive starting with "+". This +# feature is deprecated and may be removed in the future. # allcommands Alias for +@all. Note that it implies the ability to execute # all the future commands loaded via the modules system. # nocommands Alias for -@all. @@ -717,8 +909,17 @@ replica-priority 100 # commands. For instance ~* allows all the keys. The pattern # is a glob-style pattern like the one of KEYS. # It is possible to specify multiple patterns. +# %R~ Add key read pattern that specifies which keys can be read +# from. +# %W~ Add key write pattern that specifies which keys can be +# written to. # allkeys Alias for ~* # resetkeys Flush the list of allowed keys patterns. +# & Add a glob-style pattern of Pub/Sub channels that can be +# accessed by the user. It is possible to specify multiple channel +# patterns. +# allchannels Alias for &* +# resetchannels Flush the list of allowed channel patterns. # > Add this password to the list of valid password for the user. # For example >mypass will add "mypass" to the list. # This directive clears the "nopass" flag (see later). @@ -737,6 +938,14 @@ replica-priority 100 # reset Performs the following actions: resetpass, resetkeys, off, # -@all. The user returns to the same state it has immediately # after its creation. +# () Create a new selector with the options specified within the +# parentheses and attach it to the user. Each option should be +# space separated. The first character must be ( and the last +# character must be ). +# clearselectors Remove all of the currently attached selectors. +# Note this does not change the "root" user permissions, +# which are the permissions directly applied onto the +# user (outside the parentheses). # # ACL rules can be specified in any order: for instance you can start with # passwords, then flags, or key patterns. However note that the additive @@ -758,6 +967,40 @@ replica-priority 100 # # Basically ACL rules are processed left-to-right. # +# The following is a list of command categories and their meanings: +# * keyspace - Writing or reading from keys, databases, or their metadata +# in a type agnostic way. Includes DEL, RESTORE, DUMP, RENAME, EXISTS, DBSIZE, +# KEYS, EXPIRE, TTL, FLUSHALL, etc. Commands that may modify the keyspace, +# key or metadata will also have `write` category. Commands that only read +# the keyspace, key or metadata will have the `read` category. +# * read - Reading from keys (values or metadata). Note that commands that don't +# interact with keys, will not have either `read` or `write`. +# * write - Writing to keys (values or metadata) +# * admin - Administrative commands. Normal applications will never need to use +# these. Includes REPLICAOF, CONFIG, DEBUG, SAVE, MONITOR, ACL, SHUTDOWN, etc. +# * dangerous - Potentially dangerous (each should be considered with care for +# various reasons). This includes FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, +# CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF, etc. +# * connection - Commands affecting the connection or other connections. +# This includes AUTH, SELECT, COMMAND, CLIENT, ECHO, PING, etc. +# * blocking - Potentially blocking the connection until released by another +# command. +# * fast - Fast O(1) commands. May loop on the number of arguments, but not the +# number of elements in the key. +# * slow - All commands that are not Fast. +# * pubsub - PUBLISH / SUBSCRIBE related +# * transaction - WATCH / MULTI / EXEC related commands. +# * scripting - Scripting related. +# * set - Data type: sets related. +# * sortedset - Data type: zsets related. +# * list - Data type: lists related. +# * hash - Data type: hashes related. +# * string - Data type: strings related. +# * bitmap - Data type: bitmaps related. +# * hyperloglog - Data type: hyperloglog related. +# * geo - Data type: geo related. +# * stream - Data type: streams related. +# # For more information about ACL configuration please refer to # the Redis web site at https://redis.io/topics/acl @@ -787,8 +1030,24 @@ acllog-max-len 128 # AUTH as usually, or more explicitly with AUTH default # if they follow the new protocol: both will work. # +# The requirepass is not compatible with aclfile option and the ACL LOAD +# command, these will cause requirepass to be ignored. +# # requirepass foobared +# New users are initialized with restrictive permissions by default, via the +# equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it +# is possible to manage access to Pub/Sub channels with ACL rules as well. The +# default Pub/Sub channels permission if new users is controlled by the +# acl-pubsub-default configuration directive, which accepts one of these values: +# +# allchannels: grants access to all Pub/Sub channels +# resetchannels: revokes access to all Pub/Sub channels +# +# From Redis 7.0, acl-pubsub-default defaults to 'resetchannels' permission. +# +# acl-pubsub-default resetchannels + # Command renaming (DEPRECATED). # # ------------------------------------------------------------------------ @@ -877,14 +1136,12 @@ acllog-max-len 128 # Both LRU, LFU and volatile-ttl are implemented using approximated # randomized algorithms. # -# Note: with any of the above policies, Redis will return an error on write -# operations, when there are no suitable keys for eviction. -# -# At the date of writing these commands are: set setnx setex append -# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd -# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby -# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby -# getset mset msetnx exec sort +# Note: with any of the above policies, when there are no suitable keys for +# eviction, Redis will return an error on write operations that require +# more memory. These are usually commands that create new keys, add data or +# modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE, +# SORT (due to the STORE argument), and EXEC (if the transaction includes any +# command that requires memory). # # The default is: # @@ -901,6 +1158,14 @@ acllog-max-len 128 # # maxmemory-samples 5 +# Eviction processing is designed to function well with the default setting. +# If there is an unusually large amount of write traffic, this value may need to +# be increased. Decreasing this value may reduce latency at the risk of +# eviction processing effectiveness +# 0 = minimum latency, 10 = default, 100 = process without regard to latency +# +# maxmemory-eviction-tenacity 10 + # Starting from Redis 5, by default a replica will ignore its maxmemory setting # (unless it is promoted to master after a failover or manually). It means # that the eviction of keys will be just handled by the master, sending the @@ -994,6 +1259,13 @@ replica-lazy-flush no lazyfree-lazy-user-del no +# FLUSHDB, FLUSHALL, SCRIPT FLUSH and FUNCTION FLUSH support both asynchronous and synchronous +# deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the +# commands. When neither flag is passed, this directive will be used to determine +# if the data should be deleted asynchronously. + +lazyfree-lazy-user-flush no + ################################ THREADED I/O ################################# # Redis is mostly single threaded, however there are certain threaded @@ -1032,7 +1304,7 @@ lazyfree-lazy-user-del no # Usually threading reads doesn't help much. # # NOTE 1: This configuration directive cannot be changed at runtime via -# CONFIG SET. Aso this feature currently does not work when SSL is +# CONFIG SET. Also, this feature currently does not work when SSL is # enabled. # # NOTE 2: If you want to test the Redis speedup using redis-benchmark, make @@ -1050,7 +1322,7 @@ lazyfree-lazy-user-del no # attempt to have background child processes killed before all others, and # replicas killed before masters. # -# Redis supports three options: +# Redis supports these options: # # no: Don't make changes to oom-score-adj (default). # yes: Alias to "relative" see below. @@ -1071,6 +1343,19 @@ oom-score-adj no # oom-score-adj-values to positive values will always succeed. oom-score-adj-values 0 200 800 + +#################### KERNEL transparent hugepage CONTROL ###################### + +# Usually the kernel Transparent Huge Pages control is set to "madvise" or +# or "never" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which +# case this config has no effect. On systems in which it is set to "always", +# redis will attempt to disable it specifically for the redis process in order +# to avoid latency problems specifically with fork(2) and CoW. +# If for some reason you prefer to keep it enabled, you can set this config to +# "no" and the kernel global to "always". + +disable-thp yes + ############################## APPEND ONLY MODE ############################### # By default Redis asynchronously dumps the dataset on disk. This mode is @@ -1089,14 +1374,43 @@ oom-score-adj-values 0 200 800 # If the AOF is enabled on startup Redis will load the AOF, that is the file # with the better durability guarantees. # -# Please check http://redis.io/topics/persistence for more information. +# Please check https://redis.io/topics/persistence for more information. appendonly no -# The name of the append only file (default: "appendonly.aof") +# The base name of the append only file. +# +# Redis 7 and newer use a set of append-only files to persist the dataset +# and changes applied to it. There are two basic types of files in use: +# +# - Base files, which are a snapshot representing the complete state of the +# dataset at the time the file was created. Base files can be either in +# the form of RDB (binary serialized) or AOF (textual commands). +# - Incremental files, which contain additional commands that were applied +# to the dataset following the previous file. +# +# In addition, manifest files are used to track the files and the order in +# which they were created and should be applied. +# +# Append-only file names are created by Redis following a specific pattern. +# The file name's prefix is based on the 'appendfilename' configuration +# parameter, followed by additional information about the sequence and type. +# +# For example, if appendfilename is set to appendonly.aof, the following file +# names could be derived: +# +# - appendonly.aof.1.base.rdb as a base file. +# - appendonly.aof.1.incr.aof, appendonly.aof.2.incr.aof as incremental files. +# - appendonly.aof.manifest as a manifest file. appendfilename "appendonly.aof" +# For convenience, Redis stores all persistent append-only files in a dedicated +# directory. The name of the directory is determined by the appenddirname +# configuration parameter. + +appenddirname "appendonlydir" + # The fsync() call tells the Operating System to actually write data on disk # instead of waiting for more data in the output buffer. Some OS will really flush # data on disk, some other OS will just try to do it ASAP. @@ -1136,7 +1450,7 @@ appendfsync everysec # BGSAVE or BGREWRITEAOF is in progress. # # This means that while another child is saving, the durability of Redis is -# the same as "appendfsync none". In practical terms, this means that it is +# the same as "appendfsync no". In practical terms, this means that it is # possible to lose up to 30 seconds of log in the worst scenario (with the # default Linux settings). # @@ -1189,34 +1503,69 @@ auto-aof-rewrite-min-size 64mb # will be found. aof-load-truncated yes -# When rewriting the AOF file, Redis is able to use an RDB preamble in the -# AOF file for faster rewrites and recoveries. When this option is turned -# on the rewritten AOF file is composed of two different stanzas: -# -# [RDB file][AOF tail] -# -# When loading, Redis recognizes that the AOF file starts with the "REDIS" -# string and loads the prefixed RDB file, then continues loading the AOF -# tail. +# Redis can create append-only base files in either RDB or AOF formats. Using +# the RDB format is always faster and more efficient, and disabling it is only +# supported for backward compatibility purposes. aof-use-rdb-preamble yes -################################ LUA SCRIPTING ############################### +# Redis supports recording timestamp annotations in the AOF to support restoring +# the data from a specific point-in-time. However, using this capability changes +# the AOF format in a way that may not be compatible with existing AOF parsers. +aof-timestamp-enabled no -# Max execution time of a Lua script in milliseconds. +################################ SHUTDOWN ##################################### + +# Maximum time to wait for replicas when shutting down, in seconds. # -# If the maximum execution time is reached Redis will log that a script is -# still in execution after the maximum allowed time and will start to -# reply to queries with an error. +# During shut down, a grace period allows any lagging replicas to catch up with +# the latest replication offset before the master exists. This period can +# prevent data loss, especially for deployments without configured disk backups. # -# When a long running script exceeds the maximum execution time only the -# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be -# used to stop a script that did not yet call any write commands. The second -# is the only way to shut down the server in the case a write command was -# already issued by the script but the user doesn't want to wait for the natural -# termination of the script. +# The 'shutdown-timeout' value is the grace period's duration in seconds. It is +# only applicable when the instance has replicas. To disable the feature, set +# the value to 0. # -# Set it to 0 or a negative value for unlimited execution without warnings. -lua-time-limit 5000 +# shutdown-timeout 10 + +# When Redis receives a SIGINT or SIGTERM, shutdown is initiated and by default +# an RDB snapshot is written to disk in a blocking operation if save points are configured. +# The options used on signaled shutdown can include the following values: +# default: Saves RDB snapshot only if save points are configured. +# Waits for lagging replicas to catch up. +# save: Forces a DB saving operation even if no save points are configured. +# nosave: Prevents DB saving operation even if one or more save points are configured. +# now: Skips waiting for lagging replicas. +# force: Ignores any errors that would normally prevent the server from exiting. +# +# Any combination of values is allowed as long as "save" and "nosave" are not set simultaneously. +# Example: "nosave force now" +# +# shutdown-on-sigint default +# shutdown-on-sigterm default + +################ NON-DETERMINISTIC LONG BLOCKING COMMANDS ##################### + +# Maximum time in milliseconds for EVAL scripts, functions and in some cases +# modules' commands before Redis can start processing or rejecting other clients. +# +# If the maximum execution time is reached Redis will start to reply to most +# commands with a BUSY error. +# +# In this state Redis will only allow a handful of commands to be executed. +# For instance, SCRIPT KILL, FUNCTION KILL, SHUTDOWN NOSAVE and possibly some +# module specific 'allow-busy' commands. +# +# SCRIPT KILL and FUNCTION KILL will only be able to stop a script that did not +# yet call any write commands, so SHUTDOWN NOSAVE may be the only way to stop +# the server in the case a write command was already issued by the script when +# the user doesn't want to wait for the natural termination of the script. +# +# The default is 5 seconds. It is possible to set it to 0 or a negative value +# to disable this mechanism (uninterrupted execution). Note that in the past +# this config had a different name, which is now an alias, so both of these do +# the same: +# lua-time-limit 5000 +# busy-reply-threshold 5000 ################################ REDIS CLUSTER ############################### @@ -1240,6 +1589,11 @@ lua-time-limit 5000 # # cluster-node-timeout 15000 +# The cluster port is the port that the cluster bus will listen for inbound connections on. When set +# to the default value, 0, it will be bound to the command port + 10000. Setting this value requires +# you to specify the cluster bus port when executing cluster meet. +# cluster-port 0 + # A replica of a failing master will avoid to start a failover if its data # looks too old. # @@ -1298,12 +1652,21 @@ lua-time-limit 5000 # master in your cluster. # # Default is 1 (replicas migrate only if their masters remain with at least -# one replica). To disable migration just set it to a very large value. +# one replica). To disable migration just set it to a very large value or +# set cluster-allow-replica-migration to 'no'. # A value of 0 can be set but is useful only for debugging and dangerous # in production. # # cluster-migration-barrier 1 +# Turning off this option allows to use less automatic cluster configuration. +# It both disables migration to orphaned masters and migration from masters +# that became empty. +# +# Default is 'yes' (allow automatic migrations). +# +# cluster-allow-replica-migration yes + # By default Redis Cluster nodes stop accepting queries if they detect there # is at least a hash slot uncovered (no available node is serving it). # This way if the cluster is partially down (for example a range of hash slots @@ -1318,7 +1681,7 @@ lua-time-limit 5000 # cluster-require-full-coverage yes # This option, when set to yes, prevents replicas from trying to failover its -# master during master failures. However the master can still perform a +# master during master failures. However the replica can still perform a # manual failover, if forced to do so. # # This is useful in different scenarios, especially in the case of multiple @@ -1328,7 +1691,7 @@ lua-time-limit 5000 # cluster-replica-no-failover no # This option, when set to yes, allows nodes to serve read traffic while the -# the cluster is in a down state, as long as it believes it owns the slots. +# cluster is in a down state, as long as it believes it owns the slots. # # This is useful for two cases. The first case is for when an application # doesn't require consistency of data during node failures or network partitions. @@ -1343,8 +1706,54 @@ lua-time-limit 5000 # # cluster-allow-reads-when-down no +# This option, when set to yes, allows nodes to serve pubsub shard traffic while +# the cluster is in a down state, as long as it believes it owns the slots. +# +# This is useful if the application would like to use the pubsub feature even when +# the cluster global stable state is not OK. If the application wants to make sure only +# one shard is serving a given channel, this feature should be kept as yes. +# +# cluster-allow-pubsubshard-when-down yes + +# Cluster link send buffer limit is the limit on the memory usage of an individual +# cluster bus link's send buffer in bytes. Cluster links would be freed if they exceed +# this limit. This is to primarily prevent send buffers from growing unbounded on links +# toward slow peers (E.g. PubSub messages being piled up). +# This limit is disabled by default. Enable this limit when 'mem_cluster_links' INFO field +# and/or 'send-buffer-allocated' entries in the 'CLUSTER LINKS` command output continuously increase. +# Minimum limit of 1gb is recommended so that cluster link buffer can fit in at least a single +# PubSub message by default. (client-query-buffer-limit default value is 1gb) +# +# cluster-link-sendbuf-limit 0 + +# Clusters can configure their announced hostname using this config. This is a common use case for +# applications that need to use TLS Server Name Indication (SNI) or dealing with DNS based +# routing. By default this value is only shown as additional metadata in the CLUSTER SLOTS +# command, but can be changed using 'cluster-preferred-endpoint-type' config. This value is +# communicated along the clusterbus to all nodes, setting it to an empty string will remove +# the hostname and also propagate the removal. +# +# cluster-announce-hostname "" + +# Clusters can advertise how clients should connect to them using either their IP address, +# a user defined hostname, or by declaring they have no endpoint. Which endpoint is +# shown as the preferred endpoint is set by using the cluster-preferred-endpoint-type +# config with values 'ip', 'hostname', or 'unknown-endpoint'. This value controls how +# the endpoint returned for MOVED/ASKING requests as well as the first field of CLUSTER SLOTS. +# If the preferred endpoint type is set to hostname, but no announced hostname is set, a '?' +# will be returned instead. +# +# When a cluster advertises itself as having an unknown endpoint, it's indicating that +# the server doesn't know how clients can reach the cluster. This can happen in certain +# networking situations where there are multiple possible routes to the node, and the +# server doesn't know which one the client took. In this case, the server is expecting +# the client to reach out on the same endpoint it used for making the last request, but use +# the port provided in the response. +# +# cluster-preferred-endpoint-type ip + # In order to setup your cluster make sure to read the documentation -# available at http://redis.io web site. +# available at https://redis.io web site. ########################## CLUSTER DOCKER/NAT support ######################## @@ -1354,16 +1763,21 @@ lua-time-limit 5000 # # In order to make Redis Cluster working in such environments, a static # configuration where each node knows its public address is needed. The -# following two options are used for this scope, and are: +# following four options are used for this scope, and are: # # * cluster-announce-ip # * cluster-announce-port +# * cluster-announce-tls-port # * cluster-announce-bus-port # -# Each instructs the node about its address, client port, and cluster message -# bus port. The information is then published in the header of the bus packets -# so that other nodes will be able to correctly map the address of the node -# publishing the information. +# Each instructs the node about its address, client ports (for connections +# without and with TLS) and cluster message bus port. The information is then +# published in the header of the bus packets so that other nodes will be able to +# correctly map the address of the node publishing the information. +# +# If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set +# to zero, then cluster-announce-port refers to the TLS port. Note also that +# cluster-announce-tls-port has no effect if cluster-tls is set to no. # # If the above options are not used, the normal Redis Cluster auto-detection # will be used instead. @@ -1376,7 +1790,8 @@ lua-time-limit 5000 # Example: # # cluster-announce-ip 10.1.1.5 -# cluster-announce-port 6379 +# cluster-announce-tls-port 6379 +# cluster-announce-port 0 # cluster-announce-bus-port 6380 ################################## SLOW LOG ################################### @@ -1424,10 +1839,24 @@ slowlog-max-len 128 # "CONFIG SET latency-monitor-threshold " if needed. latency-monitor-threshold 0 +################################ LATENCY TRACKING ############################## + +# The Redis extended latency monitoring tracks the per command latencies and enables +# exporting the percentile distribution via the INFO latencystats command, +# and cumulative latency distributions (histograms) via the LATENCY command. +# +# By default, the extended latency monitoring is enabled since the overhead +# of keeping track of the command latency is very small. +# latency-tracking yes + +# By default the exported latency percentiles via the INFO latencystats command +# are the p50, p99, and p999. +# latency-tracking-info-percentiles 50 99 99.9 + ############################# EVENT NOTIFICATION ############################## # Redis can notify Pub/Sub clients about events happening in the key space. -# This feature is documented at http://redis.io/topics/notifications +# This feature is documented at https://redis.io/topics/notifications # # For instance if keyspace events notification is enabled, and a client # performs a DEL operation on key "foo" stored in the Database 0, two @@ -1449,9 +1878,11 @@ latency-monitor-threshold 0 # z Sorted set commands # x Expired events (events generated every time a key expires) # e Evicted events (events generated when a key is evicted for maxmemory) +# n New key events (Note: not included in the 'A' class) # t Stream commands +# d Module key type events # m Key-miss events (Note: It is not included in the 'A' class) -# A Alias for g$lshzxet, so that the "AKE" string means all the events +# A Alias for g$lshzxetd, so that the "AKE" string means all the events # (Except key-miss events which are excluded from 'A' due to their # unique nature). # @@ -1474,71 +1905,13 @@ latency-monitor-threshold 0 # specify at least one of K or E, no events will be delivered. notify-keyspace-events "" -############################### GOPHER SERVER ################################# - -# Redis contains an implementation of the Gopher protocol, as specified in -# the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt). -# -# The Gopher protocol was very popular in the late '90s. It is an alternative -# to the web, and the implementation both server and client side is so simple -# that the Redis server has just 100 lines of code in order to implement this -# support. -# -# What do you do with Gopher nowadays? Well Gopher never *really* died, and -# lately there is a movement in order for the Gopher more hierarchical content -# composed of just plain text documents to be resurrected. Some want a simpler -# internet, others believe that the mainstream internet became too much -# controlled, and it's cool to create an alternative space for people that -# want a bit of fresh air. -# -# Anyway for the 10nth birthday of the Redis, we gave it the Gopher protocol -# as a gift. -# -# --- HOW IT WORKS? --- -# -# The Redis Gopher support uses the inline protocol of Redis, and specifically -# two kind of inline requests that were anyway illegal: an empty request -# or any request that starts with "/" (there are no Redis commands starting -# with such a slash). Normal RESP2/RESP3 requests are completely out of the -# path of the Gopher protocol implementation and are served as usual as well. -# -# If you open a connection to Redis when Gopher is enabled and send it -# a string like "/foo", if there is a key named "/foo" it is served via the -# Gopher protocol. -# -# In order to create a real Gopher "hole" (the name of a Gopher site in Gopher -# talking), you likely need a script like the following: -# -# https://github.com/antirez/gopher2redis -# -# --- SECURITY WARNING --- -# -# If you plan to put Redis on the internet in a publicly accessible address -# to server Gopher pages MAKE SURE TO SET A PASSWORD to the instance. -# Once a password is set: -# -# 1. The Gopher server (when enabled, not by default) will still serve -# content via Gopher. -# 2. However other commands cannot be called before the client will -# authenticate. -# -# So use the 'requirepass' option to protect your instance. -# -# Note that Gopher is not currently supported when 'io-threads-do-reads' -# is enabled. -# -# To enable Gopher support, uncomment the following line and set the option -# from no (the default) to yes. -# -# gopher-enabled no - ############################### ADVANCED CONFIG ############################### # Hashes are encoded using a memory efficient data structure when they have a # small number of entries, and the biggest entry does not exceed a given # threshold. These thresholds can be configured using the following directives. -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 +hash-max-listpack-entries 512 +hash-max-listpack-value 64 # Lists are also encoded in a special way to save a lot of space. # The number of entries allowed per internal list node can be specified @@ -1553,7 +1926,7 @@ hash-max-ziplist-value 64 # per list node. # The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), # but if your use case is unique, adjust the settings as necessary. -list-max-ziplist-size -2 +list-max-listpack-size -2 # Lists may also be compressed. # Compress depth is the number of quicklist ziplist nodes from *each* side of @@ -1581,8 +1954,8 @@ set-max-intset-entries 512 # Similarly to hashes and lists, sorted sets are also specially encoded in # order to save a lot of space. This encoding is only used when the length and # elements of a sorted set are below the following limits: -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 +zset-max-listpack-entries 128 +zset-max-listpack-value 64 # HyperLogLog sparse representation bytes limit. The limit includes the # 16 bytes header. When an HyperLogLog using the sparse representation crosses @@ -1604,7 +1977,7 @@ hll-sparse-max-bytes 3000 # maximum number of items it may contain before switching to a new node when # appending new stream entries. If any of the following settings are set to # zero, the limit is ignored, so for instance it is possible to set just a -# max entires limit by setting max-bytes to 0 and max-entries to the desired +# max entries limit by setting max-bytes to 0 and max-entries to the desired # value. stream-node-max-bytes 4096 stream-node-max-entries 100 @@ -1637,7 +2010,7 @@ activerehashing yes # The limit can be set differently for the three different classes of clients: # # normal -> normal clients including MONITOR clients -# replica -> replica clients +# replica -> replica clients # pubsub -> clients subscribed to at least one pubsub channel or pattern # # The syntax of every client-output-buffer-limit directive is the following: @@ -1661,6 +2034,13 @@ activerehashing yes # Instead there is a default limit for pubsub and replica clients, since # subscribers and replicas receive data in a push fashion. # +# Note that it doesn't make sense to set the replica clients output buffer +# limit lower than the repl-backlog-size config (partial sync will succeed +# and then replica will get disconnected). +# Such a configuration is ignored (the size of repl-backlog-size will be used). +# This doesn't have memory consumption implications since the replica client +# will share the backlog buffers memory. +# # Both the hard or the soft limit can be disabled by setting them to zero. client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 @@ -1674,6 +2054,25 @@ client-output-buffer-limit pubsub 32mb 8mb 60 # # client-query-buffer-limit 1gb +# In some scenarios client connections can hog up memory leading to OOM +# errors or data eviction. To avoid this we can cap the accumulated memory +# used by all client connections (all pubsub and normal clients). Once we +# reach that limit connections will be dropped by the server freeing up +# memory. The server will attempt to drop the connections using the most +# memory first. We call this mechanism "client eviction". +# +# Client eviction is configured using the maxmemory-clients setting as follows: +# 0 - client eviction is disabled (default) +# +# A memory value can be used for the client eviction threshold, +# for example: +# maxmemory-clients 1g +# +# A percentage value (between 1% and 100%) means the client eviction threshold +# is based on a percentage of the maxmemory setting. For example to set client +# eviction at 5% of maxmemory: +# maxmemory-clients 5% + # In the Redis protocol, bulk requests, that are, elements representing single # strings, are normally limited to 512 mb. However you can change this limit # here, but must be 1mb or greater @@ -1714,13 +2113,13 @@ hz 10 dynamic-hz yes # When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful +# the file will be fsync-ed every 4 MB of data generated. This is useful # in order to commit the file to the disk more incrementally and avoid # big latency spikes. aof-rewrite-incremental-fsync yes # When redis saves RDB file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful +# the file will be fsync-ed every 4 MB of data generated. This is useful # in order to commit the file to the disk more incrementally and avoid # big latency spikes. rdb-save-incremental-fsync yes @@ -1817,7 +2216,7 @@ rdb-save-incremental-fsync yes # defragmentation process. If you are not sure about what they mean it is # a good idea to leave the defaults untouched. -# Enabled active defragmentation +# Active defragmentation is disabled by default # activedefrag no # Minimum amount of fragmentation waste to start active defrag diff --git a/dockge/redis_6_2_16/docker-compose.yml b/dockge/redis_7_4_1/docker-compose.yml similarity index 94% rename from dockge/redis_6_2_16/docker-compose.yml rename to dockge/redis_7_4_1/docker-compose.yml index 95805faa..ea836be9 100644 --- a/dockge/redis_6_2_16/docker-compose.yml +++ b/dockge/redis_7_4_1/docker-compose.yml @@ -7,7 +7,7 @@ services: else\n redis-server /etc/redis/redis.conf --requirepass ${REDIS_ROOT_PASSWORD}\n\ fi'\n" container_name: redis - image: redis:6.2.16-alpine + image: redis:7.4.1-alpine labels: createdBy: Apps networks: diff --git a/dockge/redis_6_2_16/envs/default.env b/dockge/redis_7_4_1/envs/default.env similarity index 100% rename from dockge/redis_6_2_16/envs/default.env rename to dockge/redis_7_4_1/envs/default.env diff --git a/dockge/redis_6_2_16/envs/global.env b/dockge/redis_7_4_1/envs/global.env similarity index 100% rename from dockge/redis_6_2_16/envs/global.env rename to dockge/redis_7_4_1/envs/global.env diff --git a/dockge/uptime-kuma/.env b/dockge/uptime-kuma/.env index 32a291fc..5fa74c15 100644 --- a/dockge/uptime-kuma/.env +++ b/dockge/uptime-kuma/.env @@ -4,3 +4,9 @@ UPTIME_KUMA_ROOT_PATH=/home/uptime-kuma # WebUI 端口 [必填] PANEL_APP_PORT_HTTP=3001 +# Cloudflared 隧道令牌 +UPTIME_KUMA_CLOUDFLARED_TOKEN= + +# 禁用 Frame SameOrigin [必填] +UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN=false + diff --git a/dockge/uptime-kuma/docker-compose.yml b/dockge/uptime-kuma/docker-compose.yml index 0c3c36f4..f425a24b 100644 --- a/dockge/uptime-kuma/docker-compose.yml +++ b/dockge/uptime-kuma/docker-compose.yml @@ -7,7 +7,16 @@ services: env_file: - ./envs/global.env - .env - image: louislam/uptime-kuma:2.0.0-beta.0 + environment: + - PUID=0 + - PGID=0 + - UPTIME_KUMA_PORT=3001 + - UPTIME_KUMA_HOST=0.0.0.0 + - DATA_DIR=/app/data + - NODE_TLS_REJECT_UNAUTHORIZED=0 + - UPTIME_KUMA_ALLOW_ALL_CHROME_EXEC=0 + - UPTIME_KUMA_WS_ORIGIN_CHECK=cors-like + image: louislam/uptime-kuma:1.23.15 labels: createdBy: Apps networks: diff --git a/dockge/uptime-kuma_1_23_15/.env b/dockge/uptime-kuma_1_23_15/.env deleted file mode 100644 index 5fa74c15..00000000 --- a/dockge/uptime-kuma_1_23_15/.env +++ /dev/null @@ -1,12 +0,0 @@ -# 数据持久化路径 [必填] -UPTIME_KUMA_ROOT_PATH=/home/uptime-kuma - -# WebUI 端口 [必填] -PANEL_APP_PORT_HTTP=3001 - -# Cloudflared 隧道令牌 -UPTIME_KUMA_CLOUDFLARED_TOKEN= - -# 禁用 Frame SameOrigin [必填] -UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN=false - diff --git a/dockge/uptime-kuma_2_0_0/.env b/dockge/uptime-kuma_2_0_0/.env new file mode 100644 index 00000000..32a291fc --- /dev/null +++ b/dockge/uptime-kuma_2_0_0/.env @@ -0,0 +1,6 @@ +# 数据持久化路径 [必填] +UPTIME_KUMA_ROOT_PATH=/home/uptime-kuma + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=3001 + diff --git a/dockge/uptime-kuma_1_23_15/docker-compose.yml b/dockge/uptime-kuma_2_0_0/docker-compose.yml similarity index 57% rename from dockge/uptime-kuma_1_23_15/docker-compose.yml rename to dockge/uptime-kuma_2_0_0/docker-compose.yml index f425a24b..0c3c36f4 100644 --- a/dockge/uptime-kuma_1_23_15/docker-compose.yml +++ b/dockge/uptime-kuma_2_0_0/docker-compose.yml @@ -7,16 +7,7 @@ services: env_file: - ./envs/global.env - .env - environment: - - PUID=0 - - PGID=0 - - UPTIME_KUMA_PORT=3001 - - UPTIME_KUMA_HOST=0.0.0.0 - - DATA_DIR=/app/data - - NODE_TLS_REJECT_UNAUTHORIZED=0 - - UPTIME_KUMA_ALLOW_ALL_CHROME_EXEC=0 - - UPTIME_KUMA_WS_ORIGIN_CHECK=cors-like - image: louislam/uptime-kuma:1.23.15 + image: louislam/uptime-kuma:2.0.0-beta.0 labels: createdBy: Apps networks: diff --git a/dockge/uptime-kuma_1_23_15/envs/default.env b/dockge/uptime-kuma_2_0_0/envs/default.env similarity index 100% rename from dockge/uptime-kuma_1_23_15/envs/default.env rename to dockge/uptime-kuma_2_0_0/envs/default.env diff --git a/dockge/uptime-kuma_1_23_15/envs/global.env b/dockge/uptime-kuma_2_0_0/envs/global.env similarity index 100% rename from dockge/uptime-kuma_1_23_15/envs/global.env rename to dockge/uptime-kuma_2_0_0/envs/global.env