mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 00:51:53 +08:00
支持配置文件目录挂载,删除多余文件
-v ./kvmd_config:/etc/kvmd
This commit is contained in:
@@ -99,16 +99,7 @@ RUN if [ ${TARGETARCH} = arm ]; then ARCH=armhf; elif [ ${TARGETARCH} = arm64 ];
|
||||
&& chmod +x /usr/local/bin/ttyd \
|
||||
&& adduser kvmd --gecos "" --disabled-password \
|
||||
&& ln -sf /usr/share/tesseract-ocr/*/tessdata /usr/share/tessdata \
|
||||
&& mkdir -p \
|
||||
/etc/kvmd/nginx \
|
||||
/etc/kvmd/vnc \
|
||||
/etc/kvmd/override.d\
|
||||
/etc/kvmd/hw_info/ \
|
||||
/var/lib/kvmd/msd \
|
||||
/var/lib/kvmd/pst/data \
|
||||
/opt/vc/bin \
|
||||
/run/kvmd \
|
||||
/tmp/kvmd-nginx \
|
||||
&& mkdir -p /etc/kvmd/override.d /var/lib/kvmd/msd /var/lib/kvmd/pst/data /opt/vc/bin /run/kvmd /tmp/kvmd-nginx \
|
||||
&& touch /run/kvmd/ustreamer.sock /etc/kvmd/.docker_flag
|
||||
|
||||
|
||||
@@ -117,13 +108,11 @@ COPY extras/ /usr/share/kvmd/extras/
|
||||
COPY web/ /usr/share/kvmd/web/
|
||||
COPY build/platform scripts/kvmd-gencert /usr/share/kvmd/
|
||||
COPY contrib/keymaps /usr/share/kvmd/keymaps
|
||||
COPY kvmd/ /kvmd
|
||||
COPY configs/kvmd/* /etc/kvmd/
|
||||
COPY configs/nginx/* /etc/kvmd/nginx/
|
||||
COPY configs/janus/* /etc/kvmd/janus/
|
||||
COPY configs/hw_info/* /etc/kvmd/hw_info/
|
||||
COPY build/v2-hdmiusb-rpi4.override.yaml /etc/kvmd/override.yaml
|
||||
COPY configs/kvmd/main/v2-hdmiusb-rpi4.yaml /etc/kvmd/main.yaml
|
||||
COPY kvmd/ build/init.sh /kvmd/
|
||||
COPY configs/kvmd/* /etc/kvmd_backup/
|
||||
COPY configs/nginx/* /etc/kvmd_backup/nginx/
|
||||
COPY configs/janus/* /etc/kvmd_backup/janus/
|
||||
COPY configs/hw_info/* /etc/kvmd_backup/hw_info/
|
||||
COPY testenv/js/* /usr/share/janus/javascript/
|
||||
|
||||
CMD ["/etc/kvmd/init.sh"]
|
||||
ENTRYPOINT ["/kvmd/init.sh"]
|
||||
151
build/init.sh
Executable file
151
build/init.sh
Executable file
@@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${GREEN}One-KVM pre-starting...${NC}"
|
||||
|
||||
#仅首次运行,用于初始化配置文件
|
||||
if [ ! -f /etc/kvmd/.init_flag ]; then
|
||||
|
||||
cp -r /etc/kvmd_backup/* /etc/kvmd/
|
||||
|
||||
#生成 ssl 证书 和 vnc 证书
|
||||
/usr/share/kvmd/kvmd-gencert --do-the-thing
|
||||
/usr/share/kvmd/kvmd-gencert --do-the-thing --vnc
|
||||
|
||||
#生成 nginx 配置文件
|
||||
if [ "$NOSSL" = 1 ]; then
|
||||
echo -e "${GREEN}One-KVM SSL is disabled.${NC}"
|
||||
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
|
||||
|
||||
|
||||
if [ "$NOAUTH" == "1" ]; then
|
||||
sed -i "s/enabled: true/enabled: false/g" /etc/kvmd/override.yaml
|
||||
fi
|
||||
|
||||
#生成 supervisord 配置文件是否添加扩展服务
|
||||
if [ "$NOWEBTERM" == "1" ]; then
|
||||
echo -e "${GREEN}One-KVM webterm is disabled.${NC}"
|
||||
rm -r /usr/share/kvmd/extras/webterm
|
||||
else
|
||||
cat >> /etc/kvmd/supervisord.conf << EOF
|
||||
|
||||
[program:kvmd-webterm]
|
||||
command=/usr/local/bin/ttyd --interface=/run/kvmd/ttyd.sock --port=0 --writable /bin/bash -c '/etc/kvmd/armbain-motd; bash'
|
||||
directory=/
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=14
|
||||
stopasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes = 0
|
||||
redirect_stderr=true
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [ "$NOWEBTERMWRITE" == "1" ]; then
|
||||
sed -i "s/--writable//g" /etc/kvmd/supervisord.conf
|
||||
fi
|
||||
|
||||
if [ "$NOVNC" == "1" ]; then
|
||||
echo -e "${GREEN}One-KVM VNC is disabled.${NC}"
|
||||
rm -r /usr/share/kvmd/extras/vnc
|
||||
else
|
||||
cat >> /etc/kvmd/supervisord.conf << EOF
|
||||
|
||||
[program:kvmd-vnc]
|
||||
command=python -m kvmd.apps.vnc --run
|
||||
directory=/
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=11
|
||||
stopasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes = 0
|
||||
redirect_stderr=true
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [ "$NOIPMI" == "1" ]; then
|
||||
echo -e "${GREEN}One-KVM IPMI is disabled.${NC}"
|
||||
rm -r /usr/share/kvmd/extras/ipmi
|
||||
else
|
||||
cat >> /etc/kvmd/supervisord.conf << EOF
|
||||
|
||||
[program:kvmd-ipmi]
|
||||
command=python -m kvmd.apps.ipmi --run
|
||||
directory=/
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=12
|
||||
stopasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes = 0
|
||||
redirect_stderr=true
|
||||
EOF
|
||||
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
|
||||
|
||||
[program:kvmd-otg]
|
||||
command=python -m kvmd.apps.otg start
|
||||
directory=/
|
||||
autostart=true
|
||||
autorestart=unexpected
|
||||
priority=9
|
||||
stopasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes = 0
|
||||
redirect_stderr=true
|
||||
EOF
|
||||
fi
|
||||
|
||||
#/dev/kvmd-video 设备优先级高于 /dev/video0,/dev/kvmd-hid 设备优先级高于 /dev/ttyUSB0
|
||||
if [ -f /dev/kvmd-video ]; then
|
||||
echo -e "${GREEN}Found dev/kvmd-video, use it as kvmd video device.${NC}"
|
||||
sed -i "s/\/dev\/video0/\/dev\/kvmd-video/g" /etc/kvmd/override.yaml
|
||||
fi
|
||||
if [ -f /dev/kvmd-hid ]; then
|
||||
echo -e "${GREEN}Found /dev/kvmd-hid, use it as kvmd video device.${NC}"
|
||||
sed -i "s/\/dev\/ttyUSB0/\/dev\/kvmd-hid/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 "${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
|
||||
|
||||
echo -e "${GREEN}One-KVM starting...${NC}"
|
||||
exec supervisord -c /etc/kvmd/supervisord.conf
|
||||
@@ -1,78 +0,0 @@
|
||||
kvmd:
|
||||
auth:
|
||||
enabled: true
|
||||
|
||||
server:
|
||||
unix_mode: 0666
|
||||
|
||||
atx:
|
||||
type: disabled
|
||||
|
||||
hid:
|
||||
type: ch9329
|
||||
device: /dev/ttyUSB0
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
resolution:
|
||||
default: 1280x720
|
||||
forever: true
|
||||
h264_bitrate:
|
||||
default: 2000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/video0"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--encoder=LIBX264-VIDEO"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--last-as-blank=0"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0666"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
- "--slowdown"
|
||||
|
||||
vnc:
|
||||
keymap: /usr/share/kvmd/keymaps/ru
|
||||
|
||||
auth:
|
||||
vncauth:
|
||||
enabled: true
|
||||
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
|
||||
otgnet:
|
||||
commands:
|
||||
post_start_cmd:
|
||||
- "/bin/true"
|
||||
pre_stop_cmd:
|
||||
- "/bin/true"
|
||||
|
||||
nginx:
|
||||
http:
|
||||
port: 8080
|
||||
https:
|
||||
port: 4430
|
||||
|
||||
|
||||
languages:
|
||||
console: zh
|
||||
web: zh
|
||||
Reference in New Issue
Block a user