From b1617c5caae31c93cc53f9dd7d86f5e7ed35a3f9 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 3 Feb 2026 15:20:46 +0800 Subject: [PATCH 1/8] perf: some liense --- jmsctl.sh | 7 ++++ scripts/utils.sh | 83 +++++++++++++++++++++++++++++++----------------- 2 files changed, 61 insertions(+), 29 deletions(-) diff --git a/jmsctl.sh b/jmsctl.sh index 68feb5a..ea123ce 100755 --- a/jmsctl.sh +++ b/jmsctl.sh @@ -78,6 +78,13 @@ function service_to_docker_name() { EXE="" function start() { + target="/opt/jumpserver/installer" + if [[ -f "${target}" && -L "${target}" ]]; then + rm -f "${target}" + fi + if [[ ! -f "${target}" ]]; then + ln -s "${PROJECT_DIR}" "${target}" || echo "" + fi ${EXE} up -d } diff --git a/scripts/utils.sh b/scripts/utils.sh index 3bf9188..5c92340 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -138,6 +138,38 @@ function check_db_data() { fi } +function get_enabled_services() { + enabled_services="" + services=(core celery koko lion chen web) + xpack_services=(magnus razor xrdp video-worker panda nec facelive) + + use_xpack=$(get_config_or_env USE_XPACK) + if [[ "${use_xpack}" == "1" ]]; then + services=("${services[@]}" "${xpack_services[@]}") + fi + + for service in "${services[@]}"; do + key=$(echo "$service" | tr '[:lower:]' '[:upper:]') + key="${key}_ENABLED" + key=$(echo "$key" | sed 's/-/_/g') + if get_config_enabled "${key}"; then + enabled_services+=" ${service}" + fi + done + + echo "${enabled_services}" +} + +function get_config_enabled() { + key=$1 + value=$(get_config "${key}") + if [[ "${value}" == "0" || "${value}" == "false" || "${value}" == "False" ]]; then + return 0 + else + return 1 + fi +} + function get_db_info() { info_type=$1 db_engine=$(get_config DB_ENGINE "mysql") @@ -197,34 +229,25 @@ function get_db_images_file() { function get_images() { use_xpack=$(get_config_or_env USE_XPACK) - db_images=$(get_db_images) - images=( - "redis:7.4.6-bookworm" - "${db_images}" - ) - for image in "${images[@]}"; do - echo "${image}" - done - if [[ "$use_xpack" == "1" ]];then - echo "registry.fit2cloud.com/jumpserver/core:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/koko:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/lion:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/chen:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/web:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/magnus:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/razor:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/video-worker:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/xrdp:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/panda:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/nec:${VERSION}" - echo "registry.fit2cloud.com/jumpserver/facelive:${VERSION}" - else - echo "jumpserver/core:${VERSION}" - echo "jumpserver/koko:${VERSION}" - echo "jumpserver/lion:${VERSION}" - echo "jumpserver/chen:${VERSION}" - echo "jumpserver/web:${VERSION}" + images=() + if get_config_enabled "DATABASE_ENABLED"; then + images+=("$(get_db_images)") fi + if get_config_enabled "REDIS_ENABLED"; then + images+=("redis:7.4.6-bookworm") + fi + enabled_services=$(get_enabled_services) + for service in "${enabled_services[@]}"; do + if [[ "${service}" == "video" ]]; then + image="jumpserver/video-worker:${VERSION}" + else + image="jumpserver/${service}:${VERSION}" + fi + if [[ "${use_xpack}" == "1" ]]; then + image="registry.fit2cloud.com/${image}" + fi + echo $image + done } function read_from_input() { @@ -356,7 +379,7 @@ function get_docker_compose_services() { fi for service in core celery koko lion chen web; do - enabled=$(get_config "${service^^}_ENABLED") + enabled=$(get_config "$(echo "$service" | tr '[:lower:]' '[:upper:]')_ENABLED") [[ "${enabled}" == "0" ]] && services="${services//${service}/}" done @@ -367,7 +390,7 @@ function get_docker_compose_services() { if [[ "${use_xpack}" == "1" ]]; then services+=" magnus razor xrdp video panda nec facelive" for service in magnus razor xrdp video panda nec facelive; do - enabled=$(get_config "${service^^}_ENABLED") + enabled=$(get_config "$(echo "$service" | tr '[:lower:]' '[:upper:]')_ENABLED") [[ "${enabled}" == "0" ]] && services="${services//${service}/}" done fi @@ -417,6 +440,8 @@ function get_docker_compose_cmd_line() { cmd+=" -f compose/loki.yml" fi + xpack_services="magnus razor xrdp video panda nec facelive" + if [[ "${use_xpack}" == '1' ]]; then for service in magnus razor xrdp video panda nec facelive; do if [[ "${services}" =~ ${service} ]]; then From b6b08e33d2c789ffbaea436d09cc6e794e724323 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 26 Feb 2026 19:09:34 +0800 Subject: [PATCH 2/8] perf: update get service --- scripts/utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/utils.sh b/scripts/utils.sh index 5c92340..7fb4644 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -152,7 +152,7 @@ function get_enabled_services() { key=$(echo "$service" | tr '[:lower:]' '[:upper:]') key="${key}_ENABLED" key=$(echo "$key" | sed 's/-/_/g') - if get_config_enabled "${key}"; then + if [[ "$(get_config_enabled "${key}")" != "0" ]]; then enabled_services+=" ${service}" fi done From d3169b119bf2908eebfcea745489a8ca84b1e2da Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 27 Feb 2026 10:36:39 +0800 Subject: [PATCH 3/8] perf: update service --- scripts/utils.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/utils.sh b/scripts/utils.sh index 7fb4644..d3e7064 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -237,9 +237,11 @@ function get_images() { images+=("redis:7.4.6-bookworm") fi enabled_services=$(get_enabled_services) - for service in "${enabled_services[@]}"; do + for service in ${enabled_services}; do if [[ "${service}" == "video" ]]; then image="jumpserver/video-worker:${VERSION}" + elif [[ "${service}" == "" ]]; then + continue else image="jumpserver/${service}:${VERSION}" fi From 01e368c6f37a97dbf5abbbad5d74ee35ea5e815b Mon Sep 17 00:00:00 2001 From: fit2bot Date: Fri, 27 Feb 2026 10:53:58 +0800 Subject: [PATCH 4/8] fix: get service --- scripts/utils.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/utils.sh b/scripts/utils.sh index d3e7064..5a96728 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -152,7 +152,10 @@ function get_enabled_services() { key=$(echo "$service" | tr '[:lower:]' '[:upper:]') key="${key}_ENABLED" key=$(echo "$key" | sed 's/-/_/g') - if [[ "$(get_config_enabled "${key}")" != "0" ]]; then + if [[ "${service}" == "video-worker" ]]; then + key="VIDEO_ENABLED" + fi + if [[ "$(get_config_or_env "${key}")" != "0" ]]; then enabled_services+=" ${service}" fi done @@ -240,7 +243,7 @@ function get_images() { for service in ${enabled_services}; do if [[ "${service}" == "video" ]]; then image="jumpserver/video-worker:${VERSION}" - elif [[ "${service}" == "" ]]; then + elif [[ "${service}" == "" || "${service}" == "celery" ]]; then continue else image="jumpserver/${service}:${VERSION}" From 94fc9290491c6363ad1740f9d054c2d91efde810 Mon Sep 17 00:00:00 2001 From: fit2bot Date: Fri, 27 Feb 2026 14:59:46 +0800 Subject: [PATCH 5/8] perf: update install --- scripts/4_install_jumpserver.sh | 2 ++ scripts/utils.sh | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/scripts/4_install_jumpserver.sh b/scripts/4_install_jumpserver.sh index b34b5e7..3776cf0 100644 --- a/scripts/4_install_jumpserver.sh +++ b/scripts/4_install_jumpserver.sh @@ -9,6 +9,7 @@ function pre_install() { if [[ -n "$UNCHECK_DEPENDENCIES" ]]; then return 0 fi + if ! command -v systemctl &>/dev/null; then docker version &>/dev/null || { log_error "$(gettext 'The current Linux system does not support systemd management. Please deploy docker by yourself before running this script again')" @@ -19,6 +20,7 @@ function pre_install() { exit 1 } fi + if ! command -v iptables &>/dev/null; then log_error "$(gettext 'command not found, Please install it first') iptables" exit 1 diff --git a/scripts/utils.sh b/scripts/utils.sh index 5a96728..b436607 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -48,7 +48,11 @@ function has_config() { function get_config() { key=$1 default=${2-''} - value=$(grep "^${key}=" "${CONFIG_FILE}" | awk -F= '{ print $2 }' | awk -F' ' '{ print $1 }' | tail -1) + + if [[ -f "${CONFIG_FILE}" ]]; then + value=$(grep "^${key}=" "${CONFIG_FILE}" | awk -F= '{ print $2 }' | awk -F' ' '{ print $1 }' | tail -1) + fi + if [[ -z "$value" ]];then value="$default" fi @@ -232,14 +236,10 @@ function get_db_images_file() { function get_images() { use_xpack=$(get_config_or_env USE_XPACK) - images=() - if get_config_enabled "DATABASE_ENABLED"; then - images+=("$(get_db_images)") - fi - if get_config_enabled "REDIS_ENABLED"; then - images+=("redis:7.4.6-bookworm") - fi + images=("redis:7.4.6-bookworm") + images+=("$(get_db_images)") enabled_services=$(get_enabled_services) + for service in ${enabled_services}; do if [[ "${service}" == "video" ]]; then image="jumpserver/video-worker:${VERSION}" @@ -251,8 +251,9 @@ function get_images() { if [[ "${use_xpack}" == "1" ]]; then image="registry.fit2cloud.com/${image}" fi - echo $image + images+=("${image}") done + echo "${images[@]}" } function read_from_input() { From d9a7e8c55f5ecbcfb6581c55fa64de4593f73573 Mon Sep 17 00:00:00 2001 From: fit2bot Date: Fri, 27 Feb 2026 15:03:10 +0800 Subject: [PATCH 6/8] perf: update download images --- scripts/0_prepare.sh | 9 ++++++--- static.env | 7 ++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/0_prepare.sh b/scripts/0_prepare.sh index 5ff425b..9ebe23c 100644 --- a/scripts/0_prepare.sh +++ b/scripts/0_prepare.sh @@ -63,6 +63,12 @@ function prepare_image_files() { echo "$(gettext 'Docker is not running, please install and start') ..." exit 1 fi + + if [[ ! -d "${IMAGE_DIR}" ]]; then + mkdir -p "${IMAGE_DIR}" + fi + rm -f "${IMAGE_DIR}/*" + pull_images images=$(get_images) @@ -78,9 +84,6 @@ function prepare_image_files() { saved_id=$(cat "${md5_path}") fi - if [[ ! -d "${IMAGE_DIR}" ]]; then - mkdir -p "${IMAGE_DIR}" - fi if [[ -f "${image_path}" ]]; then if [[ "${image_id}" != "${saved_id}" ]]; then diff --git a/static.env b/static.env index fe82e3f..b261ef5 100644 --- a/static.env +++ b/static.env @@ -1 +1,6 @@ -export VERSION=dev +export VERSION=v4.10.15-osm +export USE_XPACK=1 +export REGISTRY=registry.fit2cloud.com +export XRDP_ENABLED=0 +export FACELIVE_ENABLED=0 +export VIDEO_ENABLED=0 From bebed39c47f1c07e55e29941362db1d70c3ae0d5 Mon Sep 17 00:00:00 2001 From: fit2bot Date: Fri, 27 Feb 2026 15:56:05 +0800 Subject: [PATCH 7/8] perf: update installer start --- compose/{postgres.yml => postgresql.yml} | 0 jmsctl.sh | 4 +- scripts/utils.sh | 73 ++++-------------------- 3 files changed, 14 insertions(+), 63 deletions(-) rename compose/{postgres.yml => postgresql.yml} (100%) diff --git a/compose/postgres.yml b/compose/postgresql.yml similarity index 100% rename from compose/postgres.yml rename to compose/postgresql.yml diff --git a/jmsctl.sh b/jmsctl.sh index ea123ce..343a1df 100755 --- a/jmsctl.sh +++ b/jmsctl.sh @@ -79,10 +79,10 @@ EXE="" function start() { target="/opt/jumpserver/installer" - if [[ -f "${target}" && -L "${target}" ]]; then + if [[ -L "${target}" ]]; then rm -f "${target}" fi - if [[ ! -f "${target}" ]]; then + if [[ ! -e "${target}" ]]; then ln -s "${PROJECT_DIR}" "${target}" || echo "" fi ${EXE} up -d diff --git a/scripts/utils.sh b/scripts/utils.sh index b436607..1803f2a 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -5,6 +5,9 @@ BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" . "${BASE_DIR}/const.sh" +common_services=(core celery koko lion chen web) +xpack_services=(magnus razor xrdp video panda nec facelive) + function check_root() { [[ "$(id -u)" == 0 ]] } @@ -143,13 +146,12 @@ function check_db_data() { } function get_enabled_services() { - enabled_services="" - services=(core celery koko lion chen web) - xpack_services=(magnus razor xrdp video-worker panda nec facelive) + enabled_services=() use_xpack=$(get_config_or_env USE_XPACK) + services=("${common_services[@]}") if [[ "${use_xpack}" == "1" ]]; then - services=("${services[@]}" "${xpack_services[@]}") + services+=("${xpack_services[@]}") fi for service in "${services[@]}"; do @@ -160,11 +162,11 @@ function get_enabled_services() { key="VIDEO_ENABLED" fi if [[ "$(get_config_or_env "${key}")" != "0" ]]; then - enabled_services+=" ${service}" + enabled_services+=("${service}") fi done - echo "${enabled_services}" + echo "${enabled_services[@]}" } function get_config_enabled() { @@ -218,7 +220,7 @@ function get_db_info() { elif [[ "${mariadb_data_exists}" == "1" ]]; then echo "compose/mariadb.yml" elif [[ "${postgres_data_exists}" == "1" ]]; then - echo "compose/postgres.yml" + echo "compose/postgresql.yml" fi ;; *) @@ -365,12 +367,7 @@ function get_docker_compose_services() { use_xpack=$(get_config_or_env USE_XPACK) - services="core celery koko lion chen web" - - receptor_enabled=$(get_config RECEPTOR_ENABLED) - if [[ "${receptor_enabled}" == "1" ]]; then - services+=" receptor" - fi + services=$(get_enabled_services) if [[ "${ignore_db}" != "ignore_db" ]]; then case "${db_engine}" in @@ -384,23 +381,10 @@ function get_docker_compose_services() { [[ "${redis_host}" == "redis" ]] && services+=" redis" fi - for service in core celery koko lion chen web; do - enabled=$(get_config "$(echo "$service" | tr '[:lower:]' '[:upper:]')_ENABLED") - [[ "${enabled}" == "0" ]] && services="${services//${service}/}" - done - [[ "${use_es}" == "1" ]] && services+=" es" [[ "${use_minio}" == "1" ]] && services+=" minio" [[ "${use_loki}" == "1" ]] && services+=" loki" - if [[ "${use_xpack}" == "1" ]]; then - services+=" magnus razor xrdp video panda nec facelive" - for service in magnus razor xrdp video panda nec facelive; do - enabled=$(get_config "$(echo "$service" | tr '[:lower:]' '[:upper:]')_ENABLED") - [[ "${enabled}" == "0" ]] && services="${services//${service}/}" - done - fi - echo "${services}" } @@ -410,6 +394,7 @@ function get_docker_compose_cmd_line() { use_xpack=$(get_config_or_env USE_XPACK) https_port=$(get_config HTTPS_PORT) db_images_file=$(get_db_images_file) + cmd="docker compose" if [[ "${use_ipv6}" != "1" ]]; then cmd+=" -f compose/network.yml" @@ -418,44 +403,10 @@ function get_docker_compose_cmd_line() { fi services=$(get_docker_compose_services "$ignore_db") - for service in core celery receptor koko lion chen web redis; do - if [[ "${services}" =~ ${service} ]]; then + for service in $services; do cmd+=" -f compose/${service}.yml" - fi done - if [[ "${services}" =~ "mysql" || "${services}" =~ "postgresql" ]]; then - cmd+=" -f ${db_images_file}" - fi - - use_es=$(get_config USE_ES) - if [[ "${use_es}" == "1" ]]; then - cmd+=" -f compose/es.yml" - fi - - use_minio=$(get_config USE_MINIO) - if [[ "${use_minio}" == "1" ]]; then - cmd+=" -f compose/minio.yml" - fi - - if [[ -n "${https_port}" ]]; then - cmd+=" -f compose/lb.yml" - fi - - if [[ "${services}" =~ loki ]]; then - cmd+=" -f compose/loki.yml" - fi - - xpack_services="magnus razor xrdp video panda nec facelive" - - if [[ "${use_xpack}" == '1' ]]; then - for service in magnus razor xrdp video panda nec facelive; do - if [[ "${services}" =~ ${service} ]]; then - cmd+=" -f compose/${service}.yml" - fi - done - fi - echo "${cmd}" } From 9261578e6f517d69786785a269ac878c17697c4a Mon Sep 17 00:00:00 2001 From: fit2bot Date: Fri, 27 Feb 2026 16:18:25 +0800 Subject: [PATCH 8/8] perf: update installer for simple --- scripts/1_config_jumpserver.sh | 13 +------------ scripts/4_install_jumpserver.sh | 12 ++++++++++-- scripts/logo.txt | 7 +++++++ scripts/utils.sh | 17 +++++++---------- 4 files changed, 25 insertions(+), 24 deletions(-) create mode 100644 scripts/logo.txt diff --git a/scripts/1_config_jumpserver.sh b/scripts/1_config_jumpserver.sh index fe489ee..4d3bab0 100644 --- a/scripts/1_config_jumpserver.sh +++ b/scripts/1_config_jumpserver.sh @@ -231,16 +231,8 @@ function set_service() { fi } -function init_db() { - echo_yellow "\n6. $(gettext 'Init JumpServer Database')" - if ! perform_db_migrations; then - log_error "$(gettext 'Failed to change the table structure')!" - exit 1 - fi -} - function set_others() { - echo_yellow "\n7. $(gettext 'Configure Others')" + echo_yellow "\n6. $(gettext 'Configure Others')" lang=$(get_config LANGUAGE_CODE "zh") read_from_input lang "$(gettext 'Please enter language')" "zh/en/ja/es/ko/ru/vi" "${lang}" set_config LANGUAGE_CODE "${lang}" @@ -269,9 +261,6 @@ function main() { if set_others; then echo_done fi - if init_db; then - echo_done - fi } if [[ "$0" == "${BASH_SOURCE[0]}" ]]; then diff --git a/scripts/4_install_jumpserver.sh b/scripts/4_install_jumpserver.sh index 3776cf0..6bca413 100644 --- a/scripts/4_install_jumpserver.sh +++ b/scripts/4_install_jumpserver.sh @@ -95,14 +95,22 @@ function main() { exit 1 fi + echo_green "\n>>> $(gettext 'Install and Configure JumpServer')" + if ! bash "${BASE_DIR}/1_config_jumpserver.sh"; then + exit 1 + fi + echo_green "\n>>> $(gettext 'Loading Docker Image')" if ! bash "${BASE_DIR}/3_load_images.sh"; then exit 1 fi - echo_green "\n>>> $(gettext 'Install and Configure JumpServer')" - if ! bash "${BASE_DIR}/1_config_jumpserver.sh"; then + + echo_green "\n>>> $(gettext 'Initialize Database')" + if ! perform_db_migrations; then + log_error "$(gettext 'Failed to change the table structure')!" exit 1 fi + installation_log "install" post_install } diff --git a/scripts/logo.txt b/scripts/logo.txt new file mode 100644 index 0000000..4948fa8 --- /dev/null +++ b/scripts/logo.txt @@ -0,0 +1,7 @@ + + ██╗██╗ ██╗███╗ ███╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗ + ██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗ + ██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝ + ██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗ + ╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║ + ╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝ diff --git a/scripts/utils.sh b/scripts/utils.sh index 1803f2a..06159f4 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -279,6 +279,12 @@ function read_from_input() { fi echo -n "${msg}: " + if [[ "${AUTO_INSTALL}" == "1" ]]; then + echo "${default}" + export "${var}"="${default}" + return + fi + read -r input if [[ -z "${input}" && -n "${default}" ]]; then export "${var}"="${default}" @@ -525,16 +531,7 @@ function prepare_config() { } function echo_logo() { - cat <<"EOF" - - ██╗██╗ ██╗███╗ ███╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗ - ██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗ - ██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝ - ██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗ - ╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║ - ╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝ - -EOF + cat "${BASE_DIR}/logo.txt" echo -e "\t\t\t\t\t\t\t\t Version: \033[33m $VERSION \033[0m \n" }