From dffebf003e47b2b9b43ac28665300db1b5e5d102 Mon Sep 17 00:00:00 2001 From: mofeng-git Date: Fri, 13 Sep 2024 23:25:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=A6=82=E4=B8=8B?= =?UTF-8?q?=20Docker=20=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=EF=BC=9A=20USE?= =?UTF-8?q?RNAME=20=E7=94=A8=E6=88=B7=E8=B4=A6=E5=8F=B7=20PASSWORD=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81=20NOSSL=20=E7=A6=81?= =?UTF-8?q?=E7=94=A8=20HTTPS=EF=BC=8C=E5=90=AF=E7=94=A8=20HTTP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/Dockerfile | 7 ++---- configs/kvmd/init.sh | 53 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 40e09f70..8c9e8364 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -89,12 +89,9 @@ COPY testenv/js/* /usr/share/janus/javascript/ RUN touch /run/kvmd/ustreamer.sock /etc/kvmd/.docker_flag \ && adduser kvmd --gecos "" --disabled-password \ - && /usr/share/kvmd/kvmd-gencert --do-the-thing \ - && /usr/share/kvmd/kvmd-gencert --do-the-thing --vnc \ - && ln -sf /usr/share/tesseract-ocr/*/tessdata /usr/share/tessdata \ - && python -m kvmd.apps.ngxmkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf + && ln -sf /usr/share/tesseract-ocr/*/tessdata /usr/share/tessdata -#RUN supervisord -c /etc/kvmd/supervisord.conf +#RUN bash /etc/kvmd/init.sh EXPOSE 4430 CMD ["/etc/kvmd/init.sh"] \ No newline at end of file diff --git a/configs/kvmd/init.sh b/configs/kvmd/init.sh index 580092f5..81e12baf 100755 --- a/configs/kvmd/init.sh +++ b/configs/kvmd/init.sh @@ -1,13 +1,27 @@ #!/bin/bash -echo "One-KVM pre-starting..." +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +BLUE='\033[0;34m' +NC='\033[0m' -if [ "$OTG" == "1" ]; then - echo "OTG is enabled." - - if [ ! -f /etc/kvmd/.otg_flag ]; then - echo "Enable One-KVM otg config." - touch /etc/kvmd/.otg_flag +echo -e "${GREEN}One-KVM pre-starting...${NC}" + +#仅首次运行,用于初始化配置文件 +if [ ! -f /etc/kvmd/.init_flag ]; then + #生成 ssl 证书 和 vnc 证书 + /usr/share/kvmd/kvmd-gencert --do-the-thing + /usr/share/kvmd/kvmd-gencert --do-the-thing --vnc + #生成 nginx 配置文件 + if [ "$NOSSL" = 1 ]; then + python -m kvmd.apps.ngxmkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf -o nginx/https/enabled=false + else + python -m kvmd.apps.ngxmkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf + fi + #OTG 初始化修改默认配置文件 + if [ "$OTG" == "1" ]; then + echo -e "${GREEN}One-KVM OTG is enabled.${NC}" sed -i "s/ch9329/otg/g" /etc/kvmd/override.yaml sed -i "s/device: \/dev\/ttyUSB0//g" /etc/kvmd/override.yaml cat >> /etc/kvmd/supervisord.conf << EOF @@ -24,15 +38,34 @@ stdout_logfile_maxbytes = 0 redirect_stderr=true EOF fi + #/dev/video0 设备优先级高于 /dev/kvmd-video if [ -f /dev/video0 ]; then + echo -e "${GREEN}Found /dev/video0, use it as kvmd video device.${NC}" sed -i "s/\/dev\/kvmd-video/\/dev\/video0/g" /etc/kvmd/override.yaml fi + #设置用户账号密码 + if [ ! -z "$USERNAME" ] && [ ! -z "$PASSWORD" ]; then + python -m kvmd.apps.htpasswd del admin + echo $PASSWORD | python -m kvmd.apps.htpasswd set -i "$USERNAME" + echo "$PASSWORD -> $USERNAME:$PASSWORD" > /etc/kvmd/vncpasswd + echo "$USERNAME:$PASSWORD -> $USERNAME:$PASSWORD" > /etc/kvmd/ipmipasswd + else + echo -e "${YELLOW} USERNAME and PASSWORD environment variables is not set, using defalut(admin/admin).${NC}" + fi + #新建 flag 标记文件 + touch /etc/kvmd/.init_flag +fi + +#尝试挂载 usb_gadget +if [ "$OTG" == "1" ]; then + echo "Trying OTG Port..." if [ -d /sys/kernel/config/usb_gadget/kvmd ]; then - echo -e "\033[31m Usb_gadget kvmd exists, please reboot your host system. \033[0m" + echo -e "${RED}Usb_gadget kvmd exists, please reboot your host system. ${NC}" exit -1 elif [ ! -d /sys/kernel/config/usb_gadget ]; then mount -t configfs none /sys/kernel/config fi - fi -supervisord -c /etc/kvmd/supervisord.conf \ No newline at end of file + +echo -e "${GREEN}One-KVM starting...${NC}" +exec supervisord -c /etc/kvmd/supervisord.conf \ No newline at end of file