11#! /bin/bash
2+ DEFAULT_PORT=7777
23DOCKER_IMAGE=" karinjs/karin:latest"
3- PORT=7777
4- INSTALL_PATH=" /opt/karin"
5-
6- while getopts " p:d:" opt; do
7- case $opt in
8- p)
9- PORT=$OPTARG
10- ;;
11- d)
12- INSTALL_PATH=$OPTARG
13- ;;
14- * )
15- echo " Usage: $0 [-p port] [-d install_path]"
16- exit 1
17- ;;
18- esac
4+ DEFAULT_PATH=" /opt/karin"
5+ echo ' 欢迎使用 Karin 安装脚本'
6+ # 输入端口跟挂载路径
7+ while true ; do
8+ read -p " 请输入本地端口号1 ~ 65535(默认 $DEFAULT_PORT ): " PORT
9+ PORT=${PORT:- $DEFAULT_PORT }
10+ if ! [[ " $PORT " =~ ^[0-9]+$ ]]; then
11+ echo " 请输入一个有效的数字端口号"
12+ continue
13+ elif [ " $PORT " -lt 1 ] || [ " $PORT " -gt 65535 ]; then
14+ echo " 端口号必须在 1 到 65535 之间"
15+ else
16+ break
17+ fi
1918done
2019
20+ read -p " 请输入本地挂载路径(默认 /opt/karin): " INSTALL_PATH
21+ INSTALL_PATH=${INSTALL_PATH:- $DEFAULT_PATH }
2122# 检查curl是否安装
2223check_curl () {
2324 if command -v curl > /dev/null 2>&1 ; then
@@ -32,15 +33,14 @@ check_curl() {
3233 elif command -v pacman > /dev/null 2>&1 ; then
3334 pacman -Sy --noconfirm curl
3435 else
35- echo " 无法安装 curl: 未找到包管理器"
36+ echo " 无法安装 curl: 未找到包管理器"
3637 exit 1
3738 fi
3839 echo " curl 安装完成"
3940 fi
4041}
4142
4243# 检查docker是否安装
43- check_docker () {
4444 if command -v docker > /dev/null 2>&1 ; then
4545 echo " Docker 已安装"
4646 return 0
@@ -53,10 +53,8 @@ check_docker() {
5353 fi
5454 echo " Docker 安装完成"
5555 fi
56- }
5756
5857# 安装Karin
59- install_karin (){
6058 echo " 正在安装 Karin..."
6159 docker pull $DOCKER_IMAGE
6260 docker run -d --name karin --restart=always \
@@ -68,12 +66,5 @@ install_karin(){
6866 -v $INSTALL_PATH /plugins:/app/plugins \
6967 $DOCKER_IMAGE
7068 source ~ /.bashrc
71- echo " Karin 安装完成, 安装目录为 $INSTALL_PATH "
72- }
73-
74- # 主程序
75- echo ' 欢迎使用 Karin 安装脚本'
76- check_curl
77- check_docker
78- install_karin
79- echo ' 安装完成, 可使用karin命令'
69+ echo " Karin 安装完成, 安装目录为 $INSTALL_PATH , 端口号为 $PORT "
70+ echo -e " 可使用\ndocker start karin 启动Karin\ndocker stop karin 停止Karin\ndocker logs -f karin 查看日志"
0 commit comments