mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
Merge remote-tracking branch 'origin/dev'
This commit is contained in:
commit
6d1002a80b
19
.bumpversion.cfg
Normal file
19
.bumpversion.cfg
Normal file
@ -0,0 +1,19 @@
|
||||
[bumpversion]
|
||||
commit = True
|
||||
tag = True
|
||||
current_version = 4.3
|
||||
parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)?
|
||||
serialize =
|
||||
{major}.{minor}
|
||||
|
||||
[bumpversion:file:kvmd/__init__.py]
|
||||
search = __version__ = "{current_version}"
|
||||
replace = __version__ = "{new_version}"
|
||||
|
||||
[bumpversion:file:setup.py]
|
||||
search = version="{current_version}"
|
||||
replace = version="{new_version}"
|
||||
|
||||
[bumpversion:file:PKGBUILD]
|
||||
search = pkgver={current_version}
|
||||
replace = pkgver={new_version}
|
||||
23
.dockerignore
Normal file
23
.dockerignore
Normal file
@ -0,0 +1,23 @@
|
||||
/pkg/
|
||||
/src/
|
||||
/site/
|
||||
/dist/
|
||||
/kvmd.egg-info/
|
||||
/testenv/run/
|
||||
/testenv/.tox/
|
||||
/testenv/.mypy_cache/
|
||||
/testenv/.ssl/
|
||||
/hid/arduino/.pio/
|
||||
/hid/arduino/.platformio/
|
||||
/hid/pico/.pico-sdk.tmp/
|
||||
/hid/pico/.pico-sdk/
|
||||
/hid/pico/.tinyusb.tmp/
|
||||
/hid/pico/.tinyusb/
|
||||
/hid/pico/.build/
|
||||
/hid/pico/*.uf2
|
||||
/.git/
|
||||
/v*.tar.gz
|
||||
/*.pkg.tar.xz
|
||||
/*.pkg.tar.zst
|
||||
/*.egg-info
|
||||
/*kvmd-*.tar.gz
|
||||
10
.editorconfig
Normal file
10
.editorconfig
Normal file
@ -0,0 +1,10 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_file = lf
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.{py,yaml}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
4
.github/FUNDING.yml
vendored
Normal file
4
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
patreon: pikvm
|
||||
custom: https://paypal.me/pikvm
|
||||
23
.github/workflows/arduino-hid.yml
vendored
Normal file
23
.github/workflows/arduino-hid.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
name: Arduino HID CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: python
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare platformio
|
||||
run: pip install platformio
|
||||
|
||||
- name: Build all
|
||||
run: make -C hid/arduino _build_all
|
||||
41
.github/workflows/pico-hid-release.yml
vendored
Normal file
41
.github/workflows/pico-hid-release.yml
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
name: Pico HID Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Installing deps ...
|
||||
run: sudo apt-get install cmake gcc-arm-none-eabi build-essential
|
||||
|
||||
- name: Building ...
|
||||
run: make -C hid/pico all
|
||||
|
||||
- name: Releasing ...
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: Uploading firmware ...
|
||||
id: upload-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./hid/pico/hid.uf2
|
||||
asset_name: pico-hid.uf2
|
||||
asset_content_type: application/octet-stream
|
||||
20
.github/workflows/pico-hid.yml
vendored
Normal file
20
.github/workflows/pico-hid.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
name: Pico HID CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Installing deps ...
|
||||
run: sudo apt-get install cmake gcc-arm-none-eabi build-essential
|
||||
|
||||
- name: Running tests ...
|
||||
run: make -C hid/pico all
|
||||
20
.github/workflows/tox.yml
vendored
Normal file
20
.github/workflows/tox.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
name: TOX CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Building testenv ...
|
||||
run: make testenv
|
||||
|
||||
- name: Running tests ...
|
||||
run: make tox CMD="tox -c testenv/tox.ini"
|
||||
20
.gitignore
vendored
Normal file
20
.gitignore
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
/pkg/
|
||||
/src/
|
||||
/site/
|
||||
/dist/
|
||||
/kvmd.egg-info/
|
||||
/config.mk
|
||||
/testenv/.tox/
|
||||
/testenv/.mypy_cache/
|
||||
/testenv/.coverage*
|
||||
/testenv/run/*.sock
|
||||
/testenv/run/*.pid
|
||||
/testenv/.ssl/
|
||||
/v*.tar.gz
|
||||
/*.pkg.tar.xz
|
||||
/*.pkg.tar.zst
|
||||
/*.egg-info
|
||||
/*kvmd-*.tar.gz
|
||||
*.pyc
|
||||
*.swp
|
||||
/venv/
|
||||
@ -1,15 +0,0 @@
|
||||
更新日志
|
||||
- V0.61:对于用户:KVMD主程序从3.198升级至3.291,Ustreamer升级至6.12,Linux内核升级至6.6.34-current-meson;支持CH9329键鼠驱动;网页界面和翻译的优化;实装h.264视频转码服务,可手动开启:systemctl start kvmd-ffmpeg;对于开发者:基于srepac/kvmd-armbian项目重构安装脚本,主程序和依赖软件版本升级;资源本地化,减小网络原因的影响;添加kvmd-ffmpeg和kvmd-display服务及服务安装脚本;内核去除2.2G CD-ROM镜像文件限制(暂未做软件适配)
|
||||
- V0.58: 增强通用性,取消内核和设备树修改,系统配置操作放在/etc/rc.local,修改便捷;更新内核至 6.6.32-current-meson
|
||||
- V0.57: [build]mac固定,第一次启动时随机生成;解决armbain源因密钥无法使用;解决sd启动配置问题
|
||||
- V0.56:[Build-Armbian]回退5.9内核版本(V0.52),目前运行最稳定的内核版本;支持docker;此前高内核的累积更新
|
||||
- V0.55: [build]使用lanlan Uboot,通电按重置键可进入线刷模式;HDM可用,WIFI模块已编译;预装armbian-config实用工具;Webterm和VNC修复(tighervnc存在兼容问题,可尝试使用uvnc viewer),添加状态信息显示
|
||||
- V0.54: [build]内核切换至xdarklight/linux/tree/meson-mx-integration-6.7-20231221,系统运行更加稳定;包含armbian-config等实用工具
|
||||
- V0.53: [build]修复高内核OTG拔插内核崩溃问题;切换至更新的Linux内核(6.6.15-current-meson);去除线刷镜像分区校验
|
||||
- V0.52:[Build-Armbian]添加MSD内核补丁;完全使用hzyitc的uboot,减小boot分区从512M至128M,引导和分区表使用UUID,默认关闭线刷刷机;dtb切换为外围设备模式;led颜色修改,红色(UBoot)-紫色(内核)-绿色(完全启动);调整dts CPU频率和版本,添加H.264支持(来自群友 自.知 )
|
||||
- V0.51: [Build-Armbian]5.9内核构建,初步完成直刷镜像构建。
|
||||
- V0.5:通过锁定CPU频率修复ustreamer mjpeg视频流异常的问题;屏蔽主程序找不到温度传感器的报错;优化中文翻译;更新VNC依赖;优化安装流程。
|
||||
- V0.4:利用玩客云自动GPIO实现ATX开关机物理控制功能;初步建立飞书使用文档;制作一键安装脚本,优化安装流程。
|
||||
- V0.3:添加简体中文补丁;实现MSD功能在EMMC和TF卡上的使用;添加WOL和中文OCR功能;优化了安装流程。
|
||||
- V0.2:通过替换系统解决OTG拔插死机问题;初步实现MSD功能;修改启动分区解决开机卡线刷检测;优化安装流程。
|
||||
- V0.1:PiKVM在玩客云上初步运行。
|
||||
18
LICENSE
18
LICENSE
@ -1,7 +1,11 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
<<<<<<< HEAD
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
=======
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
>>>>>>> origin/dev
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -645,7 +649,11 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
<<<<<<< HEAD
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
=======
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
>>>>>>> origin/dev
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@ -664,11 +672,19 @@ might be different; for a GUI interface, you would use an "about box".
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<<<<<<< HEAD
|
||||
<https://www.gnu.org/licenses/>.
|
||||
=======
|
||||
<http://www.gnu.org/licenses/>.
|
||||
>>>>>>> origin/dev
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
<<<<<<< HEAD
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
=======
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
>>>>>>> origin/dev
|
||||
|
||||
314
Makefile
Normal file
314
Makefile
Normal file
@ -0,0 +1,314 @@
|
||||
-include config.mk
|
||||
|
||||
TESTENV_IMAGE ?= kvmd-testenv
|
||||
TESTENV_HID ?= /dev/ttyS10
|
||||
TESTENV_VIDEO ?= /dev/video0
|
||||
TESTENV_GPIO ?= /dev/gpiochip0
|
||||
TESTENV_RELAY ?= $(if $(shell ls /dev/hidraw0 2>/dev/null || true),/dev/hidraw0,)
|
||||
|
||||
LIBGPIOD_VERSION ?= 1.6.3
|
||||
|
||||
USTREAMER_MIN_VERSION ?= $(shell grep -o 'ustreamer>=[^"]\+' PKGBUILD | sed 's/ustreamer>=//g')
|
||||
|
||||
DEFAULT_PLATFORM ?= v2-hdmiusb-rpi4
|
||||
|
||||
DOCKER ?= docker
|
||||
|
||||
|
||||
# =====
|
||||
define optbool
|
||||
$(filter $(shell echo $(1) | tr A-Z a-z),yes on 1)
|
||||
endef
|
||||
|
||||
|
||||
# =====
|
||||
all:
|
||||
@ echo "Useful commands:"
|
||||
@ echo " make # Print this help"
|
||||
@ echo " make testenv # Build test environment"
|
||||
@ echo " make tox # Run tests and linters"
|
||||
@ echo " make tox E=pytest # Run selected test environment"
|
||||
@ echo " make gpio # Create gpio mockup"
|
||||
@ echo " make run # Run kvmd"
|
||||
@ echo " make run CMD=... # Run specified command inside kvmd environment"
|
||||
@ echo " make run-cfg # Run kvmd -m"
|
||||
@ echo " make run-ipmi # Run kvmd-ipmi"
|
||||
@ echo " make run-ipmi CMD=... # Run specified command inside kvmd-ipmi environment"
|
||||
@ echo " make run-vnc # Run kvmd-vnc"
|
||||
@ echo " make run-vnc CMD=... # Run specified command inside kvmd-vnc environment"
|
||||
@ echo " make regen # Regen some sources like keymap"
|
||||
@ echo " make bump # Bump minor version"
|
||||
@ echo " make bump V=major # Bump major version"
|
||||
@ echo " make release # Publish the new release (include bump minor)"
|
||||
@ echo " make clean # Remove garbage"
|
||||
@ echo " make clean-all # Remove garbage and test results"
|
||||
@ echo
|
||||
@ echo "Also you can add option NC=1 to rebuild docker test environment"
|
||||
|
||||
|
||||
testenv:
|
||||
$(DOCKER) build \
|
||||
$(if $(call optbool,$(NC)),--no-cache,) \
|
||||
--rm \
|
||||
--tag $(TESTENV_IMAGE) \
|
||||
--build-arg LIBGPIOD_VERSION=$(LIBGPIOD_VERSION) \
|
||||
--build-arg USTREAMER_MIN_VERSION=$(USTREAMER_MIN_VERSION) \
|
||||
-f testenv/Dockerfile .
|
||||
test -d testenv/.ssl || $(DOCKER) run --rm \
|
||||
--volume `pwd`:/src:ro \
|
||||
--volume `pwd`/testenv:/src/testenv:rw \
|
||||
-t $(TESTENV_IMAGE) bash -c " \
|
||||
groupadd kvmd-nginx \
|
||||
&& groupadd kvmd-vnc \
|
||||
&& /src/scripts/kvmd-gencert --do-the-thing \
|
||||
&& /src/scripts/kvmd-gencert --do-the-thing --vnc \
|
||||
&& chown -R root:root /etc/kvmd/{nginx,vnc}/ssl \
|
||||
&& chmod 664 /etc/kvmd/{nginx,vnc}/ssl/* \
|
||||
&& chmod 775 /etc/kvmd/{nginx,vnc}/ssl \
|
||||
&& mkdir /src/testenv/.ssl \
|
||||
&& mv /etc/kvmd/nginx/ssl /src/testenv/.ssl/nginx \
|
||||
&& mv /etc/kvmd/vnc/ssl /src/testenv/.ssl/vnc \
|
||||
"
|
||||
|
||||
|
||||
tox: testenv
|
||||
time $(DOCKER) run --rm \
|
||||
--volume `pwd`:/src:ro \
|
||||
--volume `pwd`/testenv:/src/testenv:rw \
|
||||
--volume `pwd`/testenv/tests:/src/testenv/tests:ro \
|
||||
--volume `pwd`/extras:/usr/share/kvmd/extras:ro \
|
||||
--volume `pwd`/configs:/usr/share/kvmd/configs.default:ro \
|
||||
--volume `pwd`/contrib/keymaps:/usr/share/kvmd/keymaps:ro \
|
||||
-t $(TESTENV_IMAGE) bash -c " \
|
||||
cp -a /src/testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
|
||||
&& cp -a /src/testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
|
||||
&& cp /src/testenv/platform /usr/share/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||
&& mkdir -p /etc/kvmd/override.d \
|
||||
&& cp /src/testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||
&& cd /src \
|
||||
&& $(if $(CMD),$(CMD),tox -q -c testenv/tox.ini $(if $(E),-e $(E),-p auto)) \
|
||||
"
|
||||
|
||||
|
||||
$(TESTENV_GPIO):
|
||||
test ! -e $(TESTENV_GPIO)
|
||||
sudo modprobe gpio-mockup gpio_mockup_ranges=0,40
|
||||
test -c $(TESTENV_GPIO)
|
||||
|
||||
|
||||
run: testenv $(TESTENV_GPIO)
|
||||
- $(DOCKER) run --rm --name kvmd \
|
||||
--privileged \
|
||||
--volume `pwd`/testenv/run:/run/kvmd:rw \
|
||||
--volume `pwd`/testenv:/testenv:ro \
|
||||
--volume `pwd`/kvmd:/kvmd:ro \
|
||||
--volume `pwd`/testenv/env.py:/kvmd/env.py:ro \
|
||||
--volume `pwd`/web:/usr/share/kvmd/web:ro \
|
||||
--volume `pwd`/extras:/usr/share/kvmd/extras:ro \
|
||||
--volume `pwd`/configs:/usr/share/kvmd/configs.default:ro \
|
||||
--volume `pwd`/contrib/keymaps:/usr/share/kvmd/keymaps:ro \
|
||||
--device $(TESTENV_VIDEO):$(TESTENV_VIDEO) \
|
||||
--device $(TESTENV_GPIO):$(TESTENV_GPIO) \
|
||||
$(if $(TESTENV_RELAY),--device $(TESTENV_RELAY):$(TESTENV_RELAY),) \
|
||||
--publish 8080:8080/tcp \
|
||||
--publish 4430:4430/tcp \
|
||||
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
||||
mkdir -p /tmp/kvmd-nginx \
|
||||
&& mount -t debugfs none /sys/kernel/debug \
|
||||
&& test -d /sys/kernel/debug/gpio-mockup/`basename $(TESTENV_GPIO)`/ || (echo \"Missing GPIO mockup\" && exit 1) \
|
||||
&& (socat PTY,link=$(TESTENV_HID) PTY,link=/dev/ttyS11 &) \
|
||||
&& cp -r /usr/share/kvmd/configs.default/nginx/* /etc/kvmd/nginx \
|
||||
&& cp -a /testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
|
||||
&& cp -a /testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
|
||||
&& cp /testenv/platform /usr/share/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||
&& ln -s /testenv/web.css /etc/kvmd/web.css \
|
||||
&& mkdir -p /etc/kvmd/override.d \
|
||||
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||
&& python -m kvmd.apps.ngxmkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf \
|
||||
&& nginx -c /etc/kvmd/nginx/nginx.conf -g 'user http; error_log stderr;' \
|
||||
&& ln -s $(TESTENV_VIDEO) /dev/kvmd-video \
|
||||
&& ln -s $(TESTENV_GPIO) /dev/kvmd-gpio \
|
||||
&& $(if $(CMD),$(CMD),python -m kvmd.apps.kvmd --run) \
|
||||
"
|
||||
|
||||
|
||||
run-cfg: testenv
|
||||
- $(DOCKER) run --rm --name kvmd-cfg \
|
||||
--volume `pwd`/testenv/run:/run/kvmd:rw \
|
||||
--volume `pwd`/testenv:/testenv:ro \
|
||||
--volume `pwd`/kvmd:/kvmd:ro \
|
||||
--volume `pwd`/extras:/usr/share/kvmd/extras:ro \
|
||||
--volume `pwd`/configs:/usr/share/kvmd/configs.default:ro \
|
||||
--volume `pwd`/contrib/keymaps:/usr/share/kvmd/keymaps:ro \
|
||||
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
||||
cp -a /testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
|
||||
&& cp -a /testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
|
||||
&& cp /testenv/platform /usr/share/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||
&& mkdir -p /etc/kvmd/override.d \
|
||||
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||
&& $(if $(CMD),$(CMD),python -m kvmd.apps.kvmd -m) \
|
||||
"
|
||||
|
||||
|
||||
run-ipmi: testenv
|
||||
- $(DOCKER) run --rm --name kvmd-ipmi \
|
||||
--volume `pwd`/testenv/run:/run/kvmd:rw \
|
||||
--volume `pwd`/testenv:/testenv:ro \
|
||||
--volume `pwd`/kvmd:/kvmd:ro \
|
||||
--volume `pwd`/extras:/usr/share/kvmd/extras:ro \
|
||||
--volume `pwd`/configs:/usr/share/kvmd/configs.default:ro \
|
||||
--volume `pwd`/contrib/keymaps:/usr/share/kvmd/keymaps:ro \
|
||||
--publish 6230:623/udp \
|
||||
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
||||
cp -a /testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
|
||||
&& cp -a /testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
|
||||
&& cp /testenv/platform /usr/share/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||
&& mkdir -p /etc/kvmd/override.d \
|
||||
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||
&& $(if $(CMD),$(CMD),python -m kvmd.apps.ipmi --run) \
|
||||
"
|
||||
|
||||
|
||||
run-vnc: testenv
|
||||
- $(DOCKER) run --rm --name kvmd-vnc \
|
||||
--volume `pwd`/testenv/run:/run/kvmd:rw \
|
||||
--volume `pwd`/testenv:/testenv:ro \
|
||||
--volume `pwd`/kvmd:/kvmd:ro \
|
||||
--volume `pwd`/extras:/usr/share/kvmd/extras:ro \
|
||||
--volume `pwd`/configs:/usr/share/kvmd/configs.default:ro \
|
||||
--volume `pwd`/contrib/keymaps:/usr/share/kvmd/keymaps:ro \
|
||||
--publish 5900:5900/tcp \
|
||||
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
||||
cp -a /testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
|
||||
&& cp -a /testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
|
||||
&& cp /testenv/platform /usr/share/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||
&& mkdir -p /etc/kvmd/override.d \
|
||||
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||
&& $(if $(CMD),$(CMD),python -m kvmd.apps.vnc --run) \
|
||||
"
|
||||
|
||||
|
||||
regen: keymap pug
|
||||
|
||||
|
||||
keymap: testenv
|
||||
$(DOCKER) run --user `id -u`:`id -g` --rm \
|
||||
--volume `pwd`:/src \
|
||||
-it $(TESTENV_IMAGE) bash -c "cd src \
|
||||
&& ./genmap.py keymap.csv kvmd/keyboard/mappings.py.mako kvmd/keyboard/mappings.py \
|
||||
&& ./genmap.py keymap.csv hid/arduino/lib/drivers/usb-keymap.h.mako hid/arduino/lib/drivers/usb-keymap.h \
|
||||
&& ./genmap.py keymap.csv hid/arduino/lib/drivers-avr/ps2/keymap.h.mako hid/arduino/lib/drivers-avr/ps2/keymap.h \
|
||||
&& ./genmap.py keymap.csv hid/pico/src/ph_usb_keymap.h.mako hid/pico/src/ph_usb_keymap.h \
|
||||
"
|
||||
|
||||
|
||||
pug: testenv
|
||||
$(DOCKER) run --user `id -u`:`id -g` --rm \
|
||||
--volume `pwd`:/src \
|
||||
-it $(TESTENV_IMAGE) bash -c "cd src \
|
||||
&& pug --pretty web/index.pug -o web \
|
||||
&& pug --pretty web/login/index.pug -o web/login \
|
||||
&& pug --pretty web/kvm/index.pug -o web/kvm \
|
||||
&& pug --pretty web/ipmi/index.pug -o web/ipmi \
|
||||
&& pug --pretty web/vnc/index.pug -o web/vnc \
|
||||
"
|
||||
|
||||
|
||||
release:
|
||||
make clean
|
||||
make tox
|
||||
make clean
|
||||
make push
|
||||
make bump V=$(V)
|
||||
make push
|
||||
make clean
|
||||
|
||||
|
||||
bump:
|
||||
bumpversion $(if $(V),$(V),minor)
|
||||
|
||||
|
||||
push:
|
||||
git push
|
||||
git push --tags
|
||||
|
||||
|
||||
clean:
|
||||
rm -rf testenv/run/*.{pid,sock} build site dist pkg src v*.tar.gz *.pkg.tar.{xz,zst} *.egg-info kvmd-*.tar.gz
|
||||
find kvmd testenv/tests -name __pycache__ | xargs rm -rf
|
||||
make -C hid/arduino clean
|
||||
make -C hid/pico clean
|
||||
|
||||
|
||||
clean-all: testenv clean
|
||||
make -C hid/arduino clean-all
|
||||
make -C hid/pico clean-all
|
||||
- $(DOCKER) run --rm \
|
||||
--volume `pwd`:/src \
|
||||
-it $(TESTENV_IMAGE) bash -c "cd src && rm -rf testenv/{.ssl,.tox,.mypy_cache,.coverage}"
|
||||
|
||||
|
||||
.PHONY: testenv
|
||||
|
||||
run-build:
|
||||
$(DOCKER) buildx build -t registry.cn-hangzhou.aliyuncs.com/silentwind/kvmd:dev \
|
||||
--allow security.insecure --progress plain \
|
||||
--platform linux/amd64,linux/arm64,linux/arm/v7 \
|
||||
-f build/Dockerfile . \
|
||||
--push
|
||||
|
||||
run-nogpio: testenv
|
||||
- $(DOCKER) run --rm --name kvmd \
|
||||
--privileged \
|
||||
--volume `pwd`/testenv/run:/run/kvmd:rw \
|
||||
--volume `pwd`/testenv:/testenv:ro \
|
||||
--volume `pwd`/kvmd:/kvmd:ro \
|
||||
--volume `pwd`/testenv/env.py:/kvmd/env.py:ro \
|
||||
--volume `pwd`/web:/usr/share/kvmd/web:ro \
|
||||
--volume `pwd`/extras:/usr/share/kvmd/extras:ro \
|
||||
--volume `pwd`/configs:/usr/share/kvmd/configs.default:ro \
|
||||
--volume `pwd`/contrib/keymaps:/usr/share/kvmd/keymaps:ro \
|
||||
--device $(TESTENV_VIDEO):$(TESTENV_VIDEO) \
|
||||
$(if $(TESTENV_RELAY),--device $(TESTENV_RELAY):$(TESTENV_RELAY),) \
|
||||
--publish 8080:8080/tcp \
|
||||
--publish 4430:4430/tcp \
|
||||
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
||||
mkdir -p /tmp/kvmd-nginx \
|
||||
&& mount -t debugfs none /sys/kernel/debug \
|
||||
&& (socat PTY,link=$(TESTENV_HID) PTY,link=/dev/ttyS11 &) \
|
||||
&& cp -r /usr/share/kvmd/configs.default/nginx/* /etc/kvmd/nginx \
|
||||
&& cp -a /testenv/.ssl/nginx /etc/kvmd/nginx/ssl \
|
||||
&& cp -a /testenv/.ssl/vnc /etc/kvmd/vnc/ssl \
|
||||
&& touch /etc/kvmd/.docker_flag \
|
||||
&& cp /testenv/platform /usr/share/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.secret /etc/kvmd \
|
||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||
&& ln -s /testenv/web.css /etc/kvmd/web.css \
|
||||
&& mkdir -p /etc/kvmd/override.d \
|
||||
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||
&& python -m kvmd.apps.ngxmkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf \
|
||||
&& nginx -c /etc/kvmd/nginx/nginx.conf -g 'user http; error_log stderr;' \
|
||||
&& $(if $(CMD),$(CMD),python -m kvmd.apps.kvmd --run) \
|
||||
"
|
||||
265
PKGBUILD
Normal file
265
PKGBUILD
Normal file
@ -0,0 +1,265 @@
|
||||
# Contributor: Maxim Devaev <mdevaev@gmail.com>
|
||||
# Author: Maxim Devaev <mdevaev@gmail.com>
|
||||
|
||||
|
||||
_variants=(
|
||||
v0-hdmi:zero2w
|
||||
v0-hdmi:rpi2
|
||||
v0-hdmi:rpi3
|
||||
|
||||
v0-hdmiusb:zero2w
|
||||
v0-hdmiusb:rpi2
|
||||
v0-hdmiusb:rpi3
|
||||
|
||||
v1-hdmi:zero2w
|
||||
v1-hdmi:rpi2
|
||||
v1-hdmi:rpi3
|
||||
|
||||
v1-hdmiusb:zero2w
|
||||
v1-hdmiusb:rpi2
|
||||
v1-hdmiusb:rpi3
|
||||
|
||||
v2-hdmi:zero2w
|
||||
v2-hdmi:rpi3
|
||||
v2-hdmi:rpi4
|
||||
|
||||
v2-hdmiusb:rpi4
|
||||
|
||||
v3-hdmi:rpi4
|
||||
|
||||
v4mini-hdmi:rpi4
|
||||
v4plus-hdmi:rpi4
|
||||
)
|
||||
|
||||
|
||||
pkgname=(kvmd)
|
||||
for _variant in "${_variants[@]}"; do
|
||||
_platform=${_variant%:*}
|
||||
_board=${_variant#*:}
|
||||
pkgname+=(kvmd-platform-$_platform-$_board)
|
||||
done
|
||||
pkgbase=kvmd
|
||||
pkgver=4.3
|
||||
pkgrel=1
|
||||
pkgdesc="The main PiKVM daemon"
|
||||
url="https://github.com/pikvm/kvmd"
|
||||
license=(GPL)
|
||||
arch=(any)
|
||||
depends=(
|
||||
"python>=3.12"
|
||||
"python<3.13"
|
||||
python-yaml
|
||||
python-aiohttp
|
||||
python-aiofiles
|
||||
python-async-lru
|
||||
python-passlib
|
||||
python-pyotp
|
||||
python-qrcode
|
||||
python-periphery
|
||||
python-pyserial
|
||||
python-pyserial-asyncio
|
||||
python-spidev
|
||||
python-setproctitle
|
||||
python-psutil
|
||||
python-netifaces
|
||||
python-systemd
|
||||
python-dbus
|
||||
python-dbus-next
|
||||
python-pygments
|
||||
python-pyghmi
|
||||
python-pam
|
||||
python-pillow
|
||||
python-xlib
|
||||
libxkbcommon
|
||||
python-hidapi
|
||||
python-six
|
||||
python-pyrad
|
||||
python-ldap
|
||||
python-zstandard
|
||||
python-mako
|
||||
"libgpiod>=2.1"
|
||||
freetype2
|
||||
"v4l-utils>=1.22.1-1"
|
||||
"nginx-mainline>=1.25.1"
|
||||
openssl
|
||||
sudo
|
||||
iptables
|
||||
iproute2
|
||||
dnsmasq
|
||||
ipmitool
|
||||
"janus-gateway-pikvm>=0.14.2-3"
|
||||
certbot
|
||||
platform-io-access
|
||||
raspberrypi-utils
|
||||
"ustreamer>=6.11"
|
||||
|
||||
# Systemd UDEV bug
|
||||
"systemd>=248.3-2"
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2035802
|
||||
# https://archlinuxarm.org/forum/viewtopic.php?f=15&t=15725&start=40
|
||||
"zstd>=1.5.1-2.1"
|
||||
|
||||
# Possible hotfix for the new os update
|
||||
openssl-1.1
|
||||
|
||||
# Bootconfig
|
||||
dos2unix
|
||||
parted
|
||||
e2fsprogs
|
||||
openssh
|
||||
# FIXME:
|
||||
# - https://archlinuxarm.org/forum/viewtopic.php?f=15&t=17007&p=72789
|
||||
# - https://github.com/pikvm/pikvm/issues/1375
|
||||
wpa_supplicant-pikvm
|
||||
run-parts
|
||||
|
||||
# fsck for /boot
|
||||
dosfstools
|
||||
|
||||
# pgrep for kvmd-udev-restart-pass
|
||||
procps-ng
|
||||
|
||||
# Misc
|
||||
hostapd
|
||||
)
|
||||
optdepends=(
|
||||
tesseract
|
||||
)
|
||||
conflicts=(
|
||||
python-pikvm
|
||||
python-aiohttp-pikvm
|
||||
platformio
|
||||
avrdude-pikvm
|
||||
)
|
||||
makedepends=(
|
||||
python-setuptools
|
||||
python-pip
|
||||
)
|
||||
source=("$url/archive/v$pkgver.tar.gz")
|
||||
md5sums=(SKIP)
|
||||
backup=(
|
||||
etc/kvmd/{override,logging,auth,meta}.yaml
|
||||
etc/kvmd/{ht,ipmi,vnc}passwd
|
||||
etc/kvmd/totp.secret
|
||||
etc/kvmd/nginx/{kvmd.ctx-{http,server},certbot.ctx-server}.conf
|
||||
etc/kvmd/nginx/loc-{login,nocache,proxy,websocket,nobuffering,bigpost}.conf
|
||||
etc/kvmd/nginx/{mime-types,ssl}.conf
|
||||
etc/kvmd/nginx/nginx.conf.mako
|
||||
etc/kvmd/janus/janus{,.plugin.ustreamer,.transport.websockets}.jcfg
|
||||
etc/kvmd/web.css
|
||||
)
|
||||
|
||||
|
||||
package_kvmd() {
|
||||
install=$pkgname.install
|
||||
|
||||
cd "$srcdir/kvmd-$pkgver"
|
||||
pip install --root="$pkgdir" --no-deps .
|
||||
|
||||
install -Dm755 -t "$pkgdir/usr/bin" scripts/kvmd-{bootconfig,gencert,certbot}
|
||||
|
||||
install -Dm644 -t "$pkgdir/usr/lib/systemd/system" configs/os/services/*
|
||||
install -DTm644 configs/os/sysusers.conf "$pkgdir/usr/lib/sysusers.d/kvmd.conf"
|
||||
install -DTm644 configs/os/tmpfiles.conf "$pkgdir/usr/lib/tmpfiles.d/kvmd.conf"
|
||||
|
||||
mkdir -p "$pkgdir/usr/share/kvmd"
|
||||
cp -r {hid,web,extras,contrib/keymaps} "$pkgdir/usr/share/kvmd"
|
||||
find "$pkgdir/usr/share/kvmd/web" -name '*.pug' -exec rm -f '{}' \;
|
||||
|
||||
local _cfg_default="$pkgdir/usr/share/kvmd/configs.default"
|
||||
mkdir -p "$_cfg_default"
|
||||
cp -r configs/* "$_cfg_default"
|
||||
|
||||
find "$pkgdir" -name ".gitignore" -delete
|
||||
find "$_cfg_default" -type f -exec chmod 444 '{}' \;
|
||||
chmod 400 "$_cfg_default/kvmd"/*passwd
|
||||
chmod 400 "$_cfg_default/kvmd"/*.secret
|
||||
chmod 750 "$_cfg_default/os/sudoers"
|
||||
chmod 400 "$_cfg_default/os/sudoers"/*
|
||||
|
||||
mkdir -p "$pkgdir/etc/kvmd/"{nginx,vnc}"/ssl"
|
||||
chmod 755 "$pkgdir/etc/kvmd/"{nginx,vnc}"/ssl"
|
||||
install -Dm444 -t "$pkgdir/etc/kvmd/nginx" "$_cfg_default/nginx"/*.conf*
|
||||
chmod 644 "$pkgdir/etc/kvmd/nginx/"{nginx,ssl}.conf*
|
||||
|
||||
mkdir -p "$pkgdir/etc/kvmd/janus"
|
||||
chmod 755 "$pkgdir/etc/kvmd/janus"
|
||||
install -Dm444 -t "$pkgdir/etc/kvmd/janus" "$_cfg_default/janus"/*.jcfg
|
||||
|
||||
install -Dm644 -t "$pkgdir/etc/kvmd" "$_cfg_default/kvmd"/*.yaml
|
||||
install -Dm600 -t "$pkgdir/etc/kvmd" "$_cfg_default/kvmd"/*passwd
|
||||
install -Dm600 -t "$pkgdir/etc/kvmd" "$_cfg_default/kvmd"/*.secret
|
||||
install -Dm644 -t "$pkgdir/etc/kvmd" "$_cfg_default/kvmd"/web.css
|
||||
mkdir -p "$pkgdir/etc/kvmd/override.d"
|
||||
|
||||
mkdir -p "$pkgdir/var/lib/kvmd/"{msd,pst}
|
||||
}
|
||||
|
||||
|
||||
for _variant in "${_variants[@]}"; do
|
||||
_platform=${_variant%:*}
|
||||
_board=${_variant#*:}
|
||||
_base=${_platform%-*}
|
||||
_video=${_platform#*-}
|
||||
eval "package_kvmd-platform-$_platform-$_board() {
|
||||
cd \"kvmd-\$pkgver\"
|
||||
|
||||
pkgdesc=\"PiKVM platform configs - $_platform for $_board\"
|
||||
depends=(kvmd=$pkgver-$pkgrel \"linux-rpi-pikvm>=6.6.21-3\")
|
||||
|
||||
backup=(
|
||||
etc/sysctl.d/99-kvmd.conf
|
||||
etc/udev/rules.d/99-kvmd.rules
|
||||
etc/kvmd/main.yaml
|
||||
)
|
||||
|
||||
if [[ $_base == v0 ]]; then
|
||||
depends=(\"\${depends[@]}\" platformio-core avrdude make patch)
|
||||
elif [[ $_base == v4plus ]]; then
|
||||
depends=(\"\${depends[@]}\" flashrom-pikvm)
|
||||
fi
|
||||
|
||||
if [[ $_platform =~ ^.*-hdmiusb$ ]]; then
|
||||
install -Dm755 -t \"\$pkgdir/usr/bin\" scripts/kvmd-udev-hdmiusb-check
|
||||
fi
|
||||
if [[ $_base == v4plus ]]; then
|
||||
install -Dm755 -t \"\$pkgdir/usr/bin\" scripts/kvmd-udev-restart-pass
|
||||
fi
|
||||
|
||||
install -DTm644 configs/os/sysctl.conf \"\$pkgdir/etc/sysctl.d/99-kvmd.conf\"
|
||||
install -DTm644 configs/os/udev/common.rules \"\$pkgdir/usr/lib/udev/rules.d/99-kvmd-common.rules\"
|
||||
install -DTm644 configs/os/udev/$_platform-$_board.rules \"\$pkgdir/etc/udev/rules.d/99-kvmd.rules\"
|
||||
install -DTm444 configs/kvmd/main/$_platform-$_board.yaml \"\$pkgdir/etc/kvmd/main.yaml\"
|
||||
|
||||
if [ -f configs/kvmd/fan/$_platform.ini ]; then
|
||||
backup=(\"\${backup[@]}\" etc/kvmd/fan.ini)
|
||||
depends=(\"\${depends[@]}\" \"kvmd-fan>=0.18\")
|
||||
install -DTm444 configs/kvmd/fan/$_platform.ini \"\$pkgdir/etc/kvmd/fan.ini\"
|
||||
fi
|
||||
|
||||
if [ -f configs/os/modules-load/$_platform.conf ]; then
|
||||
backup=(\"\${backup[@]}\" etc/modules-load.d/kvmd.conf)
|
||||
install -DTm644 configs/os/modules-load/$_platform.conf \"\$pkgdir/etc/modules-load.d/kvmd.conf\"
|
||||
fi
|
||||
|
||||
if [ -f configs/os/sudoers/$_platform ]; then
|
||||
backup=(\"\${backup[@]}\" etc/sudoers.d/99_kvmd)
|
||||
install -DTm440 configs/os/sudoers/$_platform \"\$pkgdir/etc/sudoers.d/99_kvmd\"
|
||||
chmod 750 \"\$pkgdir/etc/sudoers.d\"
|
||||
fi
|
||||
|
||||
if [[ $_platform =~ ^.*-hdmi$ ]]; then
|
||||
backup=(\"\${backup[@]}\" etc/kvmd/tc358743-edid.hex)
|
||||
install -DTm444 configs/kvmd/edid/$_base.hex \"\$pkgdir/etc/kvmd/tc358743-edid.hex\"
|
||||
fi
|
||||
|
||||
mkdir -p \"\$pkgdir/usr/share/kvmd\"
|
||||
local _platform=\"\$pkgdir/usr/share/kvmd/platform\"
|
||||
rm -f \"\$_platform\"
|
||||
echo PIKVM_MODEL=$_base > \"\$_platform\"
|
||||
echo PIKVM_VIDEO=$_video >> \"\$_platform\"
|
||||
echo PIKVM_BOARD=$_board >> \"\$_platform\"
|
||||
chmod 444 \"\$_platform\"
|
||||
}"
|
||||
done
|
||||
64
README.md
64
README.md
@ -4,6 +4,7 @@
|
||||
|
||||
### 介绍
|
||||
|
||||
<<<<<<< HEAD
|
||||
One-KVM 是基于廉价计算机硬件(目前为玩客云和 X64 兼容机)和PiKVM软件的硬件级远程控制项目。KVM over IP 可以远程管理服务器或工作站,实现无侵入式控制,无论被控机为什么操作系统或是否安装了操作系统,具有更广泛的适用性。此项目基于 [PiKVM](https://github.com/pikvm/pikvm),和基于远控软件的远程管理方式不同,无需在被控电脑安装任何软件,实现无侵入式控制。
|
||||
|
||||
### 快速开始
|
||||
@ -43,12 +44,58 @@ sudo bash kvmd_h264_install.sh
|
||||
```bash
|
||||
#使用示例:
|
||||
docker run -itd -p443:443 -p80:80 --name pikvm-docker --device=/dev/ttyUSB0:/dev/kvmd-hid --device=/dev/video0:/dev/kvmd-video silentwind0/pikvm-ch9329:0.61
|
||||
=======
|
||||
One-KVM 是基于廉价计算机硬件和PiKVM软件的硬件级远程控制项目。KVM over IP 可以远程管理服务器或工作站,实现无侵入式控制,无论被控机为什么操作系统或是否安装了操作系统,具有更广泛的适用性。此项目基于 [PiKVM](https://github.com/pikvm/pikvm),和基于远控软件的远程管理方式不同,无需在被控电脑安装任何软件,实现无侵入式控制。
|
||||
|
||||
### 快速开始
|
||||
|
||||
**方式一:Docker 镜像部署(推荐)**
|
||||
|
||||
目前 Docker 版只能使用 CH9329 作为虚拟 HID ,支持 amd64、arm64、armv7 架构的 Linux 系统安装。
|
||||
|
||||
当前只有dev分支,尚未发布稳定版本,演示网站(账号密码:admin/admin):https://kvmd-demo.mofeng.run/
|
||||
|
||||
部署命令:
|
||||
```bash
|
||||
sudo docker run --name kvmd -itd \
|
||||
--device /dev/video0:/dev/kvmd-video \
|
||||
--device /dev/ttyUSB0:/dev/kvmd-hid \
|
||||
-p 8080:8080 -p 4430:4430 -p 5900:5900 -p 623:623 \
|
||||
registry.cn-hangzhou.aliyuncs.com/silentwind/kvmd:dev
|
||||
```
|
||||
|
||||
部署完成访问 http://IP:8080 即可开始使用,默认密码:admin/admin。如无法访问可以使用 `sudo docker logs kvmd` 命令查看日志尝试修复、提交 issue 或在 QQ 群内寻求帮助。
|
||||
|
||||
如果暂时相关没有 USB 设备或只想要查看新版特性,可以使用以下命令启动一个无 USB 硬件的应用(演示模式):
|
||||
```bash
|
||||
sudo docker run --name kvmd -itd \
|
||||
--device /dev/tty10:/dev/kvmd-hid \
|
||||
-p 8080:8080 -p 4430:4430 -p 5900:5900 -p 623:623 \
|
||||
registry.cn-hangzhou.aliyuncs.com/silentwind/kvmd:dev
|
||||
>>>>>>> origin/dev
|
||||
```
|
||||
|
||||
详细内容可以参照 [One-KVM文档](https://one-kvm.mofeng.run/)。
|
||||
|
||||
<<<<<<< HEAD
|
||||
### 功能特性
|
||||
|
||||
=======
|
||||
**方式二:直刷 One-KVM 镜像**
|
||||
|
||||
对于玩客云设备,本项目 Releases 页可以找到适配玩客云的 One-KVM 预编译镜像。镜像名称带 One-KVM 前缀、burn 后缀的为线刷镜像,可使用 USB_Burning_Tool 软件线刷至玩客云。预编译线刷镜像为开箱即用,刷好后启动设备就可以开始使用 One-KVM。
|
||||
|
||||
**方式三:One-KVM 脚本安装**(暂停维护)
|
||||
|
||||
**作者目前只是个人业余开发者,能力有限,难以覆盖和测试多种多样硬件设备和系统,故此一键脚本暂时停止维护。**
|
||||
|
||||
目前已将开发中心转移至 Docker 平台,推荐使用 Docker 方式部署。若仍有需要可通过 Releases 页找到项目历史存档。
|
||||
|
||||
### 功能特性
|
||||
|
||||
**Docker 版本中以下特性尚未全部实现,但包含在将来的开发计划中**
|
||||
|
||||
>>>>>>> origin/dev
|
||||
主要功能比较,TinyPilot 社区版本、PiKVMv3 版本出现在这里仅做比较目的。
|
||||
| 功能 | One-KVM | TinyPilot 社区版本 | PiKVMv3版本 |
|
||||
| :------------: | :---------------------: | :----------------: | :----------: |
|
||||
@ -69,6 +116,7 @@ docker run -itd -p443:443 -p80:80 --name pikvm-docker --device=/dev/ttyUSB0:/dev
|
||||
| 最大视频分辨率 | 1920x1080 | 1920x1080 | 1920x1080 |
|
||||
|
||||
### 已测试设备
|
||||
<<<<<<< HEAD
|
||||
- 玩客云
|
||||
- X64 主机
|
||||
|
||||
@ -81,6 +129,13 @@ docker run -itd -p443:443 -p80:80 --name pikvm-docker --device=/dev/ttyUSB0:/dev
|
||||
2. 资源本地化,减小网络原因的影响
|
||||
3. 添加kvmd-ffmpeg和kvmd-display服务安装脚本
|
||||
4. HTML汉化和一些微调
|
||||
=======
|
||||
|
||||
- 玩客云
|
||||
- X64 主机
|
||||
- Vmare 虚拟机
|
||||
- VPS(仅演示模式)
|
||||
>>>>>>> origin/dev
|
||||
|
||||
|
||||
**赞助**
|
||||
@ -120,16 +175,25 @@ Will
|
||||
......
|
||||
</details>
|
||||
|
||||
<<<<<<< HEAD
|
||||
**更新日志**
|
||||
|
||||
[One-KVM/ChangeLogs.txt](https://github.com/mofeng-git/One-KVM/blob/main/ChangeLogs.txt)
|
||||
=======
|
||||
|
||||
>>>>>>> origin/dev
|
||||
|
||||
**Star历史**
|
||||
|
||||
[](https://star-history.com/#mofeng-git/One-KVM&Date)
|
||||
|
||||
<<<<<<< HEAD
|
||||
本项目间接或直接使用了下下列开源项目:
|
||||
1. [pikvm/pikvm: Open and inexpensive DIY IP-KVM based on Raspberry Pi (github.com)](https://github.com/pikvm/pikvm)
|
||||
2. [hzyitc/armbian-onecloud: Armbian for onecloud. 玩客云用armbian (github.com)](https://github.com/hzyitc/armbian-onecloud/)
|
||||
3. [jacobbar/fruity-pikvm: Install Pi-KVM on debian SBCs such as Orange Pi, Banana Pi, Mango Pi, etc (github.com)](https://github.com/jacobbar/fruity-pikvm)
|
||||
4. [kvmd-armbian/install.sh at master · srepac/kvmd-armbian (github.com)](https://github.com/srepac/kvmd-armbian/blob/master/install.sh)
|
||||
=======
|
||||
本项目使用了下列开源项目:
|
||||
1. [pikvm/pikvm: Open and inexpensive DIY IP-KVM based on Raspberry Pi (github.com)](https://github.com/pikvm/pikvm)
|
||||
>>>>>>> origin/dev
|
||||
|
||||
BIN
aiofiles.tar
BIN
aiofiles.tar
Binary file not shown.
@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
if [ -e /etc/update-motd.d/10-armbian-header ]; then /etc/update-motd.d/10-armbian-header; fi
|
||||
if [ -e /etc/update-motd.d/30-armbian-sysinfo ]; then /etc/update-motd.d/30-armbian-sysinfo; fi
|
||||
if [ -e /etc/update-motd.d/41-armbian-config ]; then /etc/update-motd.d/41-armbian-config; fi
|
||||
|
||||
printf " 欢迎使用 One-KVM,基于开源程序 PiKVM 的 IP-KVM 应用
|
||||
____________________________________________________________________________
|
||||
|
||||
要阻止内核消息输出到终端,可以使用命令\"dmesg -n 1\"
|
||||
|
||||
要修改默认账户 admin 的密码可使用命令 \"kvmd-htpasswd set admin\"
|
||||
|
||||
项目链接:
|
||||
* https://pikvm.org
|
||||
* https://github.com/srepac/kvmd-armbian
|
||||
* https://github.com/mofeng-git/One-KVM
|
||||
|
||||
文档链接:
|
||||
* https://docs.pikvm.org
|
||||
* https://one-kvm.mofeng.run
|
||||
|
||||
"
|
||||
|
||||
if [ -e /etc/motd.custom ]; then cat /etc/motd.custom; fi
|
||||
@ -1,206 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: http://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
#
|
||||
|
||||
# DO NOT EDIT THIS FILE but add config options to /etc/default/armbian-motd
|
||||
# generate system information
|
||||
|
||||
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
THIS_SCRIPT="sysinfo"
|
||||
MOTD_DISABLE=""
|
||||
STORAGE=/dev/sda1
|
||||
SHOW_IP_PATTERN="^bond.*|^[ewr].*|^br.*|^lt.*|^umts.*|^lan.*"
|
||||
|
||||
CPU_TEMP_LIMIT=60
|
||||
HDD_TEMP_LIMIT=60
|
||||
AMB_TEMP_LIMIT=40
|
||||
|
||||
[[ -f /etc/default/armbian-motd ]] && . /etc/default/armbian-motd
|
||||
|
||||
for f in $MOTD_DISABLE; do
|
||||
[[ $f == $THIS_SCRIPT ]] && exit 0
|
||||
done
|
||||
|
||||
# don't edit below here
|
||||
|
||||
function display() {
|
||||
# $1=name $2=value $3=red_limit $4=minimal_show_limit $5=unit $6=after $7=acs/desc{
|
||||
# battery red color is opposite, lower number
|
||||
if [[ "$1" == "Battery" ]]; then local great="<"; else local great=">"; fi
|
||||
if [[ -n "$2" && "$2" > "0" && (( "${2%.*}" -ge "$4" )) ]]; then
|
||||
printf "%-14s%s" "$1:"
|
||||
if awk "BEGIN{exit ! ($2 $great $3)}"; then echo -ne "\e[0;91m $2"; else echo -ne "\e[0;92m $2"; fi
|
||||
printf "%-1s%s\x1B[0m" "$5"
|
||||
printf "%-11s%s\t" "$6"
|
||||
return 1
|
||||
fi
|
||||
} # display
|
||||
|
||||
function getboardtemp() {
|
||||
if [ -f /etc/armbianmonitor/datasources/soctemp ]; then
|
||||
read raw_temp </etc/armbianmonitor/datasources/soctemp 2>/dev/null
|
||||
if [ ! -z $(echo "$raw_temp" | grep -o "^[1-9][0-9]*\.\?[0-9]*$") ] && (( $(echo "${raw_temp} < 200" |bc -l) )); then
|
||||
# Allwinner legacy kernels output degree C
|
||||
board_temp=${raw_temp}
|
||||
else
|
||||
board_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp})
|
||||
fi
|
||||
elif [ -f /etc/armbianmonitor/datasources/pmictemp ]; then
|
||||
# fallback to PMIC temperature
|
||||
board_temp=$(awk '{printf("%d",$1/1000)}' </etc/armbianmonitor/datasources/pmictemp)
|
||||
fi
|
||||
} # getboardtemp
|
||||
|
||||
function batteryinfo() {
|
||||
# Battery info for Allwinner
|
||||
mainline_dir="/sys/power/axp_pmu"
|
||||
legacy_dir="/sys/class/power_supply"
|
||||
if [[ -e "$mainline_dir" ]]; then
|
||||
read status_battery_connected < $mainline_dir/battery/connected 2>/dev/null
|
||||
if [[ "$status_battery_connected" == "1" ]]; then
|
||||
read status_battery_charging < $mainline_dir/charger/charging
|
||||
read status_ac_connect < $mainline_dir/ac/connected
|
||||
read battery_percent< $mainline_dir/battery/capacity
|
||||
# dispay charging / percentage
|
||||
if [[ "$status_ac_connect" == "1" && "$battery_percent" -lt "100" ]]; then
|
||||
status_battery_text=" charging"
|
||||
elif [[ "$status_ac_connect" == "1" && "$battery_percent" -eq "100" ]]; then
|
||||
status_battery_text=" charged"
|
||||
else
|
||||
status_battery_text=" discharging"
|
||||
fi
|
||||
fi
|
||||
elif [[ -e "$legacy_dir/axp813-ac" ]]; then
|
||||
read status_battery_connected < $legacy_dir/axp20x-battery/present
|
||||
if [[ "$status_battery_connected" == "1" ]]; then
|
||||
status_battery_text=" "$(awk '{print tolower($0)}' < $legacy_dir/axp20x-battery/status)
|
||||
read status_ac_connect < $legacy_dir/axp813-ac/present
|
||||
read battery_percent< $legacy_dir/axp20x-battery/capacity
|
||||
fi
|
||||
elif [[ -e "$legacy_dir/battery" ]]; then
|
||||
if [[ (("$(cat $legacy_dir/battery/voltage_now)" -gt "5" )) ]]; then
|
||||
status_battery_text=" "$(awk '{print tolower($0)}' < $legacy_dir/battery/status)
|
||||
read battery_percent <$legacy_dir/battery/capacity
|
||||
fi
|
||||
fi
|
||||
} # batteryinfo
|
||||
|
||||
function ambienttemp() {
|
||||
# define where w1 usually shows up
|
||||
W1_DIR="/sys/devices/w1_bus_master1/"
|
||||
if [ -f /etc/armbianmonitor/datasources/ambienttemp ]; then
|
||||
read raw_temp </etc/armbianmonitor/datasources/ambienttemp 2>/dev/null
|
||||
amb_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp})
|
||||
echo $amb_temp
|
||||
elif [[ -d $W1_DIR && $ONE_WIRE == yes ]]; then
|
||||
device=$(ls -1 $W1_DIR | grep -Eo '^[0-9]{1,4}' | head -1)
|
||||
if [[ -n $device ]]; then
|
||||
if [[ -d ${W1_DIR}${device}/hwmon/hwmon0 ]]; then hwmon=0; else hwmon=1; fi
|
||||
read raw_temp < ${W1_DIR}${device}/hwmon/hwmon${hwmon}/temp1_input 2>/dev/null
|
||||
amb_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp})
|
||||
echo $amb_temp
|
||||
fi
|
||||
else
|
||||
# read ambient temperature from USB device if available
|
||||
if [[ ! -f /usr/bin/temper ]]; then
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
amb_temp=$(temper -c 2>/dev/null)
|
||||
case ${amb_temp} in
|
||||
*"find the USB device"*)
|
||||
echo ""
|
||||
;;
|
||||
*)
|
||||
amb_temp=$(awk '{print $NF}' <<<$amb_temp | sed 's/C//g')
|
||||
echo -n "scale=1;${amb_temp}/1" | grep -oE "\-?[[:digit:]]+\.[[:digit:]]"
|
||||
esac
|
||||
fi
|
||||
} # ambienttemp
|
||||
|
||||
function get_ip_addresses() {
|
||||
local ips=()
|
||||
for f in /sys/class/net/*; do
|
||||
local intf=$(basename $f)
|
||||
# match only interface names starting with e (Ethernet), br (bridge), w (wireless), r (some Ralink drivers use ra<number> format)
|
||||
if [[ $intf =~ $SHOW_IP_PATTERN ]]; then
|
||||
local tmp=$(ip -4 addr show dev $intf | awk '/inet/ {print $2}' | cut -d'/' -f1)
|
||||
# add both name and IP - can be informative but becomes ugly with long persistent/predictable device names
|
||||
#[[ -n $tmp ]] && ips+=("$intf: $tmp")
|
||||
# add IP only
|
||||
[[ -n $tmp ]] && ips+=("$tmp")
|
||||
fi
|
||||
done
|
||||
echo "${ips[@]}"
|
||||
} # get_ip_addresses
|
||||
|
||||
function storage_info() {
|
||||
# storage info
|
||||
RootInfo=$(df -h /)
|
||||
root_usage=$(awk '/\// {print $(NF-1)}' <<<${RootInfo} | sed 's/%//g')
|
||||
root_total=$(awk '/\// {print $(NF-4)}' <<<${RootInfo})
|
||||
StorageInfo=$(df -h $STORAGE 2>/dev/null | grep $STORAGE)
|
||||
if [[ -n "${StorageInfo}" && ${RootInfo} != *$STORAGE* ]]; then
|
||||
storage_usage=$(awk '/\// {print $(NF-1)}' <<<${StorageInfo} | sed 's/%//g')
|
||||
storage_total=$(awk '/\// {print $(NF-4)}' <<<${StorageInfo})
|
||||
if [[ -n "$(command -v smartctl)" ]]; then
|
||||
DISK="${STORAGE::-1}"
|
||||
storage_temp+=$(sudo smartctl -A $DISK 2> /dev/null | grep -i temperature | awk '{print $(NF-2)}')
|
||||
fi
|
||||
fi
|
||||
} # storage_info
|
||||
|
||||
|
||||
|
||||
# query various systems and send some stuff to the background for overall faster execution.
|
||||
# Works only with ambienttemp and batteryinfo since A20 is slow enough :)
|
||||
amb_temp=$(ambienttemp &)
|
||||
ip_address=$(get_ip_addresses &)
|
||||
batteryinfo
|
||||
storage_info
|
||||
getboardtemp
|
||||
critical_load=80
|
||||
|
||||
# get uptime, logged in users and load in one take
|
||||
UPTIME=$(LC_ALL=C uptime)
|
||||
UPT1=${UPTIME#*'up '}
|
||||
UPT2=${UPT1%'user'*}
|
||||
users=${UPT2//*','}
|
||||
users=${users//' '}
|
||||
time=${UPT2%','*}
|
||||
time=${time//','}
|
||||
time=$(echo $time | xargs)
|
||||
load=${UPTIME#*'load average: '}
|
||||
load=${load//','}
|
||||
load=$(echo $load | cut -d" " -f1)
|
||||
[[ $load == 0.0* ]] && load=0.10
|
||||
cpucount=$(grep -c processor /proc/cpuinfo)
|
||||
|
||||
load=$(awk '{printf("%.0f",($1/$2) * 100)}' <<< "$load $cpucount")
|
||||
|
||||
# memory and swap
|
||||
mem_info=$(LC_ALL=C free -w 2>/dev/null | grep "^Mem" || LC_ALL=C free | grep "^Mem")
|
||||
memory_usage=$(awk '{printf("%.0f",(($2-($4+$6+$7))/$2) * 100)}' <<<${mem_info})
|
||||
mem_info=$(echo $mem_info | awk '{print $2}')
|
||||
memory_total=$(( mem_info / 1024 ))
|
||||
swap_info=$(LC_ALL=C free -m | grep "^Swap")
|
||||
swap_usage=$( (awk '/Swap/ { printf("%3.0f", $3/$2*100) }' <<<${swap_info} 2>/dev/null || echo 0) | tr -c -d '[:digit:]')
|
||||
swap_total=$(awk '{print $(2)}' <<<${swap_info})
|
||||
if [[ ${memory_total} -gt 1000 ]]; then
|
||||
memory_total=$(awk '{printf("%.2f",$1/1024)}' <<<${memory_total})"G"
|
||||
else
|
||||
memory_total+="M"
|
||||
fi
|
||||
|
||||
if [[ ${swap_total} -gt 500 ]]; then
|
||||
swap_total=$(awk '{printf("%.2f",$1/1024)}' <<<${swap_total})"G"
|
||||
else
|
||||
swap_total+="M"
|
||||
fi
|
||||
|
||||
@ -1,70 +0,0 @@
|
||||
#!/bin/bash
|
||||
cd `dirname $0`
|
||||
source armbian-sysinfo
|
||||
|
||||
case $1 in
|
||||
get_throttled) echo "throttled=0x0";;
|
||||
# measure_temp) echo "temp=$board_temp'C";;
|
||||
get_config)
|
||||
case $2 in
|
||||
total_mem)
|
||||
NUM=$( free -m | grep Mem: | awk '{print $2}' )
|
||||
if [ -e /var/log/dmesg ]; then
|
||||
KB=$( sudo grep 'Memory:' /var/log/dmesg | awk '{print $5}' | cut -d'/' -f2 | sed 's/K//g' | head -1 )
|
||||
else
|
||||
KB=""
|
||||
fi
|
||||
|
||||
if [[ "$KB" == "" ]]; then
|
||||
GB=`echo "( $NUM + 256 ) / 256" | bc`
|
||||
MB=$( echo "${GB} * 256" | bc )
|
||||
else
|
||||
GB=$( echo "($KB + 2048) / 1024 / 256" | bc )
|
||||
MB=$( echo "${GB} * 256" | bc )
|
||||
fi
|
||||
echo "total_mem=$MB"
|
||||
;;
|
||||
*)
|
||||
echo "invalid option";;
|
||||
esac
|
||||
;;
|
||||
measure_clock)
|
||||
case ${2} in
|
||||
arm)
|
||||
# awk is probably overkill....
|
||||
value=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | awk '{print $1 * 1000}'`
|
||||
echo 'frequency(45)='${value}
|
||||
exit
|
||||
;;
|
||||
core)
|
||||
value=0 # TODO / FIXME
|
||||
echo 'frequency(1)='${value}
|
||||
exit
|
||||
;;
|
||||
# TODO anything else thrown an error/debug
|
||||
esac
|
||||
exit
|
||||
;;
|
||||
measure_temp)
|
||||
# awk is probably overkill....
|
||||
value=`cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1 / 1000}'`
|
||||
echo 'temp='${value}"'C"
|
||||
exit
|
||||
;;
|
||||
measure_volts)
|
||||
case ${2} in
|
||||
core)
|
||||
value=1 # TODO / FIXME
|
||||
echo 'volt='${value}'.0000V'
|
||||
exit
|
||||
;;
|
||||
# TODO anything else thrown an error/debug
|
||||
esac
|
||||
;;
|
||||
version)
|
||||
echo 'Nov 4 2018 16:31:07'
|
||||
echo 'Copyright (c) 2012 rock64'
|
||||
echo 'version rock64_TODO (clean) (release)'
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
96
build/Dockerfile
Normal file
96
build/Dockerfile
Normal file
@ -0,0 +1,96 @@
|
||||
# syntax = docker/dockerfile:experimental
|
||||
FROM python:3.12.0rc2-slim-bookworm AS builder
|
||||
|
||||
ARG TARGETARCH
|
||||
|
||||
RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list.d/debian.sources \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends build-essential libssl-dev libffi-dev python3-dev libevent-dev libjpeg-dev libbsd-dev libudev-dev git pkg-config wget curl
|
||||
|
||||
COPY build/cargo_config /tmp/config
|
||||
|
||||
RUN --security=insecure pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
|
||||
&& if [ ${TARGETARCH} = arm ]; then \
|
||||
mkdir -p /root/.cargo \
|
||||
&& chmod 777 /root/.cargo && mount -t tmpfs none /root/.cargo \
|
||||
&& export RUSTUP_DIST_SERVER="https://mirrors.tuna.tsinghua.edu.cn/rustup" \
|
||||
&& export RUSTUP_UPDATE_ROOT="https://mirrors.ustc.edu.cn/rust-static/rustup" \
|
||||
&& wget https://sh.rustup.rs -O /root/rustup-init.sh \
|
||||
&& sh /root/rustup-init.sh -y \
|
||||
&& export PATH=$PATH:/root/.cargo/bin \
|
||||
&& cp /tmp/config /root/.cargo/config.toml; \
|
||||
fi \
|
||||
&& pip wheel --wheel-dir=/tmp/wheel/ cryptography
|
||||
|
||||
RUN pip install --no-cache-dir --root-user-action=ignore --disable-pip-version-check build \
|
||||
&& pip wheel --wheel-dir=/tmp/wheel/ aiofiles aiohttp appdirs asn1crypto async_lru async-timeout bottle cffi chardet click colorama \
|
||||
dbus_next gpiod hidapi idna mako marshmallow more-itertools multidict netifaces packaging passlib pillow ply psutil pycparser \
|
||||
pyelftools pyghmi pygments pyparsing pyotp qrcode requests semantic-version setproctitle setuptools six spidev \
|
||||
tabulate urllib3 wrapt xlib yarl pyserial pyyaml zstandard supervisor
|
||||
|
||||
RUN git clone --depth=1 https://gh.xmly.dev/https://github.com/pikvm/ustreamer /tmp/ustreamer \
|
||||
#&& git clone --depth=1 https://github.com/pikvm/ustreamer /tmp/ustreamer \
|
||||
&& make -j WITH_PYTHON=1 -C /tmp/ustreamer \
|
||||
&& /tmp/ustreamer/ustreamer -v
|
||||
|
||||
RUN mkdir /tmp/lib \
|
||||
&& cp /lib/*-linux-*/libevent_core-*.so.7 /lib/*-linux-*/libbsd.so.0 /lib/*-linux-*/libevent_pthreads-*.so.7 \
|
||||
/lib/*-linux-*/libevent-*.so.7 /lib/*-linux-*/libjpeg.so.62 /tmp/lib/ \
|
||||
&& cp /tmp/ustreamer/python/dist/*.whl /tmp/wheel/
|
||||
|
||||
FROM python:3.12.0rc2-slim-bookworm
|
||||
|
||||
LABEL maintainer="mofeng654321@hotmail.com"
|
||||
|
||||
COPY --from=builder /tmp/lib/* /tmp/lib/
|
||||
COPY --from=builder /tmp/ustreamer/ustreamer /tmp/ustreamer/ustreamer-dump /usr/local/bin/
|
||||
COPY --from=builder /tmp/wheel/*.whl /tmp/wheel/
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
|
||||
RUN cp /tmp/lib/* /lib/*-linux-*/ \
|
||||
&& pip install --no-cache-dir --root-user-action=ignore --disable-pip-version-check /tmp/wheel/*.whl \
|
||||
&& rm -rf /tmp/lib /tmp/wheel
|
||||
|
||||
RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list.d/debian.sources \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends libxkbcommon-x11-0 nginx tesseract-ocr tesseract-ocr-eng tesseract-ocr-chi-sim iptables sudo \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN 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
|
||||
|
||||
COPY testenv/fakes/vcgencmd /usr/bin/
|
||||
COPY extras/ /usr/share/kvmd/extras/
|
||||
COPY web/ /usr/share/kvmd/web/
|
||||
COPY testenv/web.css /etc/kvmd/
|
||||
COPY build/platform scripts/kvmd-gencert /usr/share/kvmd/
|
||||
COPY contrib/keymaps /usr/share/kvmd/keymaps
|
||||
COPY kvmd/ /kvmd
|
||||
COPY configs/kvmd/*.yaml configs/kvmd/*passwd build/supervisord.conf /etc/kvmd/
|
||||
COPY configs/nginx/* /etc/kvmd/nginx/
|
||||
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
|
||||
|
||||
RUN touch /run/kvmd/ustreamer.sock /etc/kvmd/.docker_flag \
|
||||
&& touch /etc/kvmd/totp.secret \
|
||||
&& /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
|
||||
|
||||
#RUN supervisord -c /etc/kvmd/supervisord.conf
|
||||
|
||||
EXPOSE 4430
|
||||
CMD ["supervisord", "-c", "/etc/kvmd/supervisord.conf"]
|
||||
5
build/cargo_config
Normal file
5
build/cargo_config
Normal file
@ -0,0 +1,5 @@
|
||||
[source.crates-io]
|
||||
replace-with = 'ustc'
|
||||
|
||||
[source.ustc]
|
||||
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"
|
||||
3
build/platform
Normal file
3
build/platform
Normal file
@ -0,0 +1,3 @@
|
||||
PIKVM_MODEL=docker_model
|
||||
PIKVM_VIDEO=docker_video
|
||||
PIKVM_BOARD=docker_board
|
||||
58
build/supervisord.conf
Normal file
58
build/supervisord.conf
Normal file
@ -0,0 +1,58 @@
|
||||
[unix_http_server]
|
||||
file=/tmp/supervisor.sock
|
||||
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
user=root
|
||||
|
||||
[rpcinterface:supervisor]
|
||||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[inet_http_server]
|
||||
port=127.0.0.1:9001
|
||||
|
||||
[supervisorctl]
|
||||
serverurl=unix:///tmp/supervisor.sock
|
||||
|
||||
[program:kvmd]
|
||||
command=python -m kvmd.apps.kvmd --run
|
||||
directory=/
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=10
|
||||
stopasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes = 0
|
||||
redirect_stderr=true
|
||||
|
||||
[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
|
||||
|
||||
[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
|
||||
|
||||
[program:kvmd-nginx]
|
||||
command=nginx -c /etc/kvmd/nginx/nginx.conf -g 'daemon off;user root; error_log stderr;'
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=100
|
||||
stopasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes = 0
|
||||
redirect_stderr=true
|
||||
65
build/v2-hdmiusb-rpi4.override.yaml
Normal file
65
build/v2-hdmiusb-rpi4.override.yaml
Normal file
@ -0,0 +1,65 @@
|
||||
kvmd:
|
||||
server:
|
||||
unix_mode: 0666
|
||||
|
||||
atx:
|
||||
type: disabled
|
||||
|
||||
hid:
|
||||
type: ch9329
|
||||
device: /dev/kvmd-hid
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
cmd:
|
||||
- "/usr/local/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--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"
|
||||
|
||||
vnc:
|
||||
keymap: /usr/share/kvmd/keymaps/ru
|
||||
|
||||
auth:
|
||||
vncauth:
|
||||
enabled: true
|
||||
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: ""
|
||||
h264:
|
||||
sink: ""
|
||||
|
||||
otgnet:
|
||||
commands:
|
||||
post_start_cmd:
|
||||
- "/bin/true"
|
||||
pre_stop_cmd:
|
||||
- "/bin/true"
|
||||
|
||||
nginx:
|
||||
http:
|
||||
port: 8080
|
||||
https:
|
||||
port: 4430
|
||||
|
||||
janus:
|
||||
cmd:
|
||||
- "/bin/true"
|
||||
|
||||
languages:
|
||||
console: zh
|
||||
web: zh
|
||||
@ -1,81 +0,0 @@
|
||||
####################################################################
|
||||
# #
|
||||
# Override Pi-KVM system settings. This file uses the YAML syntax. #
|
||||
# #
|
||||
# https://github.com/pikvm/pikvm/blob/master/pages/config.md #
|
||||
# #
|
||||
# All overridden parameters will be applied AFTER other configs #
|
||||
# and "!include" directives and BEFORE validation. #
|
||||
# Not: Sections should be combined under shared keys. #
|
||||
# #
|
||||
####################################################################
|
||||
vnc:
|
||||
# See https://github.com/pikvm/pikvm/blob/master/pages/vnc.md
|
||||
keymap: /usr/share/kvmd/keymaps/ru # Set russian keymap
|
||||
auth:
|
||||
vncauth:
|
||||
enabled: true # Enable auth via /etc/kvmd/vncpasswd
|
||||
kvmd:
|
||||
hid:
|
||||
mouse_alt:
|
||||
device: /dev/kvmd-hid-mouse-alt # allow relative mouse mode
|
||||
msd:
|
||||
type: disabled
|
||||
atx:
|
||||
type: disabled
|
||||
gpio:
|
||||
drivers:
|
||||
wol_server1:
|
||||
type: wol
|
||||
mac: 2c:56:dc:db:7c:1e
|
||||
short_press:
|
||||
type: cmd
|
||||
cmd: [/usr/bin/sudo, onecloud_gpio.sh, short]
|
||||
long_press:
|
||||
type: cmd
|
||||
cmd: [/usr/bin/sudo, onecloud_gpio.sh, long]
|
||||
reset_press:
|
||||
type: cmd
|
||||
cmd: [/usr/bin/sudo, onecloud_gpio.sh, reset]
|
||||
scheme:
|
||||
wol_server1:
|
||||
driver: wol_server1
|
||||
pin: 0
|
||||
mode: output
|
||||
switch: false
|
||||
short_button:
|
||||
driver: short_press
|
||||
pin: 0
|
||||
mode: output
|
||||
switch: false
|
||||
long_button:
|
||||
driver: long_press
|
||||
pin: 0
|
||||
mode: output
|
||||
switch: false
|
||||
reset_button:
|
||||
driver: reset_press
|
||||
pin: 0
|
||||
mode: output
|
||||
switch: false
|
||||
view:
|
||||
header:
|
||||
title: 电源管理
|
||||
table:
|
||||
- ["#电源管理"]
|
||||
- []
|
||||
- ["#短按(开/关机):", short_button|按下]
|
||||
- ["#长按(强制关机):", long_button|按下]
|
||||
- ["#重启:", reset_button|按下]
|
||||
- []
|
||||
- ["#网络唤醒"]
|
||||
- ["#被控机设备", wol_server1|网络唤醒]
|
||||
streamer:
|
||||
#forever: true
|
||||
cmd_append: [--slowdown]
|
||||
resolution:
|
||||
default: 1280x720
|
||||
desired_fps:
|
||||
default: 30
|
||||
max: 60
|
||||
min: 0
|
||||
1
configs/hw_info/model
Normal file
1
configs/hw_info/model
Normal file
@ -0,0 +1 @@
|
||||
Docker
|
||||
1
configs/hw_info/serial-number
Normal file
1
configs/hw_info/serial-number
Normal file
@ -0,0 +1 @@
|
||||
docker1000000000
|
||||
18
configs/janus/janus.jcfg
Normal file
18
configs/janus/janus.jcfg
Normal file
@ -0,0 +1,18 @@
|
||||
general: {
|
||||
debug_level = 4
|
||||
}
|
||||
nat: {
|
||||
nice_debug = false
|
||||
ignore_mdns = true
|
||||
}
|
||||
media: {
|
||||
ipv6 = true
|
||||
ipv6_linklocal = true
|
||||
min_nack_queue = 2000
|
||||
rtp_port_range = "20000-40000"
|
||||
no_media_timer = 0
|
||||
slowlink_threshold = 10
|
||||
twcc_period = 100
|
||||
dtls_timeout = 1000
|
||||
nack_optimizations = true
|
||||
}
|
||||
7
configs/janus/janus.plugin.ustreamer.jcfg
Normal file
7
configs/janus/janus.plugin.ustreamer.jcfg
Normal file
@ -0,0 +1,7 @@
|
||||
video: {
|
||||
sink = "kvmd::ustreamer::h264"
|
||||
}
|
||||
audio: {
|
||||
device = "hw:0,0"
|
||||
tc358743 = "/dev/kvmd-video"
|
||||
}
|
||||
4
configs/janus/janus.transport.websockets.jcfg
Normal file
4
configs/janus/janus.transport.websockets.jcfg
Normal file
@ -0,0 +1,4 @@
|
||||
general: {
|
||||
ws = true
|
||||
ws_unix = "/run/kvmd/janus-ws.sock"
|
||||
}
|
||||
1
configs/kvmd/auth.yaml
Normal file
1
configs/kvmd/auth.yaml
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
16
configs/kvmd/edid/_1080p-by-default.hex
Normal file
16
configs/kvmd/edid/_1080p-by-default.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8717701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714FEE2C80A070381A403020
|
||||
3500404421000002000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D2056330A20202020012B
|
||||
020317314A049F13223E213D203C0167
|
||||
030C001000802DEE2C80A070381A4030
|
||||
203500404421000002011D007251D01E
|
||||
206E2835000F282100001E0000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
000000000000000000000000000000CD
|
||||
16
configs/kvmd/edid/_no-1920x1200.hex
Normal file
16
configs/kvmd/edid/_no-1920x1200.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8737701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F023A801871382D40582C
|
||||
45000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D20563420506C7573012D
|
||||
020320714B90041F13223E213D203C01
|
||||
67030C001000802D23097F0783010000
|
||||
023A801871382D40582C45000F282100
|
||||
001E011D007251D01E206E2855000F28
|
||||
2100001E023A80D072382D40102C4580
|
||||
0F282100001E00000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000042
|
||||
16
configs/kvmd/edid/v0.hex
Normal file
16
configs/kvmd/edid/v0.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8707701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F011D007251D01E206E28
|
||||
55000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D0A20202020202020018D
|
||||
020317314A841F13223E213D203C0167
|
||||
030C001000802D011D007251D01E206E
|
||||
2855000F282100001E00000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000015
|
||||
16
configs/kvmd/edid/v1.hex
Normal file
16
configs/kvmd/edid/v1.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8707701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F011D007251D01E206E28
|
||||
55000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D0A20202020202020018D
|
||||
020317314A841F13223E213D203C0167
|
||||
030C001000802D011D007251D01E206E
|
||||
2855000F282100001E00000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000015
|
||||
16
configs/kvmd/edid/v2.hex
Normal file
16
configs/kvmd/edid/v2.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8707701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F011D007251D01E206E28
|
||||
55000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D0A20202020202020018D
|
||||
020317314A841F13223E213D203C0167
|
||||
030C001000802D011D007251D01E206E
|
||||
2855000F282100001E00000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000015
|
||||
16
configs/kvmd/edid/v3.hex
Normal file
16
configs/kvmd/edid/v3.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8717701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F011D007251D01E206E28
|
||||
55000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D2056330A202020200143
|
||||
020317314A841F13223E213D203C0167
|
||||
030C001000802D011D007251D01E206E
|
||||
2855000F282100001E00000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000015
|
||||
16
configs/kvmd/edid/v4mini.hex
Normal file
16
configs/kvmd/edid/v4mini.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8727701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F023A801871382D40582C
|
||||
45000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D205634204D696E690145
|
||||
020320714B90041F13223E213D203C01
|
||||
67030C001000802D23097F0783010000
|
||||
023A801871382D40582C45000F282100
|
||||
001E011D007251D01E206E2855000F28
|
||||
2100001E023A80D072382D40102C4580
|
||||
0F282100001E283C80A070B023403020
|
||||
360006442100001A0000000000000000
|
||||
00000000000000000000000000000030
|
||||
16
configs/kvmd/edid/v4plus.hex
Normal file
16
configs/kvmd/edid/v4plus.hex
Normal file
@ -0,0 +1,16 @@
|
||||
00FFFFFFFFFFFF0031D8737701010101
|
||||
231A010380351E780E0565A756529C27
|
||||
0F50543FED00B300A9C0950090408180
|
||||
814081C0714F023A801871382D40582C
|
||||
45000F282100001E000000FF00434146
|
||||
45424142452020202020000000FD0032
|
||||
4B0F5211000A202020202020000000FC
|
||||
0050694B564D20563420506C7573012D
|
||||
020320714B90041F13223E213D203C01
|
||||
67030C001000802D23097F0783010000
|
||||
023A801871382D40582C45000F282100
|
||||
001E011D007251D01E206E2855000F28
|
||||
2100001E023A80D072382D40102C4580
|
||||
0F282100001E283C80A070B023403020
|
||||
360006442100001A0000000000000000
|
||||
00000000000000000000000000000030
|
||||
4
configs/kvmd/fan/v3-hdmi.ini
Normal file
4
configs/kvmd/fan/v3-hdmi.ini
Normal file
@ -0,0 +1,4 @@
|
||||
[server]
|
||||
unix = /run/kvmd/fan.sock
|
||||
unix_rm = 1
|
||||
unix_mode = 666
|
||||
12
configs/kvmd/fan/v4mini-hdmi.ini
Normal file
12
configs/kvmd/fan/v4mini-hdmi.ini
Normal file
@ -0,0 +1,12 @@
|
||||
[main]
|
||||
pwm_pin = 13
|
||||
hall_pin = 16
|
||||
|
||||
[speed]
|
||||
idle = 27
|
||||
low = 27
|
||||
|
||||
[server]
|
||||
unix = /run/kvmd/fan.sock
|
||||
unix_rm = 1
|
||||
unix_mode = 666
|
||||
12
configs/kvmd/fan/v4plus-hdmi.ini
Normal file
12
configs/kvmd/fan/v4plus-hdmi.ini
Normal file
@ -0,0 +1,12 @@
|
||||
[main]
|
||||
pwm_pin = 13
|
||||
hall_pin = 16
|
||||
|
||||
[speed]
|
||||
idle = 27
|
||||
low = 27
|
||||
|
||||
[server]
|
||||
unix = /run/kvmd/fan.sock
|
||||
unix_rm = 1
|
||||
unix_mode = 666
|
||||
1
configs/kvmd/htpasswd
Normal file
1
configs/kvmd/htpasswd
Normal file
@ -0,0 +1 @@
|
||||
admin:$apr1$.6mu9N8n$xOuGesr4JZZkdiZo/j318.
|
||||
14
configs/kvmd/ipmipasswd
Normal file
14
configs/kvmd/ipmipasswd
Normal file
@ -0,0 +1,14 @@
|
||||
# This file describes the credentials for IPMI users. The first pair separated by colon
|
||||
# is the login and password with which the user can access to IPMI. The second pair
|
||||
# is the name and password with which the user can access to KVMD API. The arrow is used
|
||||
# as a separator and shows the direction of user registration in the system.
|
||||
#
|
||||
# WARNING! IPMI protocol is completely unsafe by design. In short, the authentication
|
||||
# process for IPMI 2.0 mandates that the server send a salted SHA1 or MD5 hash of the
|
||||
# requested user's password to the client, prior to the client authenticating. Never use
|
||||
# the same passwords for KVMD and IPMI users. This default configuration is shown here
|
||||
# for example only.
|
||||
#
|
||||
# And even better not to use IPMI. Instead, you can directly use KVMD API via curl.
|
||||
|
||||
admin:admin -> admin:admin
|
||||
20
configs/kvmd/logging.yaml
Normal file
20
configs/kvmd/logging.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
version: 1
|
||||
disable_existing_loggers: false
|
||||
|
||||
formatters:
|
||||
console:
|
||||
(): logging.Formatter
|
||||
style: "{"
|
||||
format: "{name:30.30} {levelname:>7} --- {message}"
|
||||
|
||||
handlers:
|
||||
console:
|
||||
level: DEBUG
|
||||
class: logging.StreamHandler
|
||||
stream: ext://sys.stderr
|
||||
formatter: console
|
||||
|
||||
root:
|
||||
level: INFO
|
||||
handlers:
|
||||
- console
|
||||
39
configs/kvmd/main/v0-hdmi-rpi2.yaml
Normal file
39
configs/kvmd/main/v0-hdmi-rpi2.yaml
Normal file
@ -0,0 +1,39 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: serial
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
47
configs/kvmd/main/v0-hdmi-rpi3.yaml
Normal file
47
configs/kvmd/main/v0-hdmi-rpi3.yaml
Normal file
@ -0,0 +1,47 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: serial
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
55
configs/kvmd/main/v0-hdmi-zero2w.yaml
Normal file
55
configs/kvmd/main/v0-hdmi-zero2w.yaml
Normal file
@ -0,0 +1,55 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: serial
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
51
configs/kvmd/main/v0-hdmiusb-rpi2.yaml
Normal file
51
configs/kvmd/main/v0-hdmiusb-rpi2.yaml
Normal file
@ -0,0 +1,51 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: serial
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
59
configs/kvmd/main/v0-hdmiusb-rpi3.yaml
Normal file
59
configs/kvmd/main/v0-hdmiusb-rpi3.yaml
Normal file
@ -0,0 +1,59 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: serial
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
59
configs/kvmd/main/v0-hdmiusb-zero2w.yaml
Normal file
59
configs/kvmd/main/v0-hdmiusb-zero2w.yaml
Normal file
@ -0,0 +1,59 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: serial
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
48
configs/kvmd/main/v1-hdmi-rpi2.yaml
Normal file
48
configs/kvmd/main/v1-hdmi-rpi2.yaml
Normal file
@ -0,0 +1,48 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: spi
|
||||
chip: 0
|
||||
bus: 0
|
||||
sw_cs_pin: 7
|
||||
sw_cs_per_byte: true
|
||||
reset_pin: 25
|
||||
reset_inverted: true
|
||||
reset_self: true
|
||||
power_detect_pin: 16
|
||||
power_detect_pull_down: true
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
64
configs/kvmd/main/v1-hdmi-rpi3.yaml
Normal file
64
configs/kvmd/main/v1-hdmi-rpi3.yaml
Normal file
@ -0,0 +1,64 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: spi
|
||||
chip: 0
|
||||
bus: 0
|
||||
sw_cs_pin: 7
|
||||
sw_cs_per_byte: true
|
||||
reset_pin: 25
|
||||
reset_inverted: true
|
||||
reset_self: true
|
||||
power_detect_pin: 16
|
||||
power_detect_pull_down: true
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
64
configs/kvmd/main/v1-hdmi-zero2w.yaml
Normal file
64
configs/kvmd/main/v1-hdmi-zero2w.yaml
Normal file
@ -0,0 +1,64 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: spi
|
||||
chip: 0
|
||||
bus: 0
|
||||
sw_cs_pin: 7
|
||||
sw_cs_per_byte: true
|
||||
reset_pin: 25
|
||||
reset_inverted: true
|
||||
reset_self: true
|
||||
power_detect_pin: 16
|
||||
power_detect_pull_down: true
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
60
configs/kvmd/main/v1-hdmiusb-rpi2.yaml
Normal file
60
configs/kvmd/main/v1-hdmiusb-rpi2.yaml
Normal file
@ -0,0 +1,60 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: spi
|
||||
chip: 0
|
||||
bus: 0
|
||||
sw_cs_pin: 7
|
||||
sw_cs_per_byte: true
|
||||
reset_pin: 25
|
||||
reset_inverted: true
|
||||
reset_self: true
|
||||
power_detect_pin: 16
|
||||
power_detect_pull_down: true
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
68
configs/kvmd/main/v1-hdmiusb-rpi3.yaml
Normal file
68
configs/kvmd/main/v1-hdmiusb-rpi3.yaml
Normal file
@ -0,0 +1,68 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: spi
|
||||
chip: 0
|
||||
bus: 0
|
||||
sw_cs_pin: 7
|
||||
sw_cs_per_byte: true
|
||||
reset_pin: 25
|
||||
reset_inverted: true
|
||||
reset_self: true
|
||||
power_detect_pin: 16
|
||||
power_detect_pull_down: true
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
68
configs/kvmd/main/v1-hdmiusb-zero2w.yaml
Normal file
68
configs/kvmd/main/v1-hdmiusb-zero2w.yaml
Normal file
@ -0,0 +1,68 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: spi
|
||||
chip: 0
|
||||
bus: 0
|
||||
sw_cs_pin: 7
|
||||
sw_cs_per_byte: true
|
||||
reset_pin: 25
|
||||
reset_inverted: true
|
||||
reset_self: true
|
||||
power_detect_pin: 16
|
||||
power_detect_pull_down: true
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: disabled
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
55
configs/kvmd/main/v2-hdmi-rpi3.yaml
Normal file
55
configs/kvmd/main/v2-hdmi-rpi3.yaml
Normal file
@ -0,0 +1,55 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
56
configs/kvmd/main/v2-hdmi-rpi4.yaml
Normal file
56
configs/kvmd/main/v2-hdmi-rpi4.yaml
Normal file
@ -0,0 +1,56 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--buffers=6"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
55
configs/kvmd/main/v2-hdmi-zero2w.yaml
Normal file
55
configs/kvmd/main/v2-hdmi-zero2w.yaml
Normal file
@ -0,0 +1,55 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
@ -11,8 +11,6 @@ kvmd:
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
mouse_alt:
|
||||
device: /dev/kvmd-hid-mouse-alt
|
||||
|
||||
atx:
|
||||
type: disabled
|
||||
@ -23,7 +21,7 @@ kvmd:
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1280x720
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
@ -44,7 +42,6 @@ kvmd:
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--last-as-blank=0"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
@ -52,8 +49,8 @@ kvmd:
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--sink=kvmd::ustreamer::jpeg"
|
||||
- "--sink-mode=0660"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
59
configs/kvmd/main/v2-hdmiusb-rpi4.yaml
Normal file
59
configs/kvmd/main/v2-hdmiusb-rpi4.yaml
Normal file
@ -0,0 +1,59 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
quality: 0
|
||||
resolution:
|
||||
default: 1920x1080
|
||||
available:
|
||||
- 1920x1080
|
||||
- 1600x1200
|
||||
- 1360x768
|
||||
- 1280x1024
|
||||
- 1280x960
|
||||
- 1280x720
|
||||
- 1024x768
|
||||
- 800x600
|
||||
- 720x576
|
||||
- 720x480
|
||||
- 640x480
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--format=mjpeg"
|
||||
- "--resolution={resolution}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
68
configs/kvmd/main/v3-hdmi-rpi4.yaml
Normal file
68
configs/kvmd/main/v3-hdmi-rpi4.yaml
Normal file
@ -0,0 +1,68 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
info:
|
||||
fan:
|
||||
unix: /run/kvmd/fan.sock
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--buffers=6"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
gpio:
|
||||
scheme:
|
||||
__v3_usb_breaker__:
|
||||
pin: 5
|
||||
mode: output
|
||||
initial: true
|
||||
pulse: false
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
97
configs/kvmd/main/v4mini-hdmi-rpi4.yaml
Normal file
97
configs/kvmd/main/v4mini-hdmi-rpi4.yaml
Normal file
@ -0,0 +1,97 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
info:
|
||||
hw:
|
||||
ignore_past: true
|
||||
fan:
|
||||
unix: /run/kvmd/fan.sock
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
mouse_alt:
|
||||
device: /dev/kvmd-hid-mouse-alt
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
power_led_pin: 4
|
||||
hdd_led_pin: 5
|
||||
power_switch_pin: 23
|
||||
reset_switch_pin: 27
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--buffers=6"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
gpio:
|
||||
drivers:
|
||||
__v4_locator__:
|
||||
type: locator
|
||||
|
||||
scheme:
|
||||
__v3_usb_breaker__:
|
||||
pin: 22
|
||||
mode: output
|
||||
initial: true
|
||||
pulse: false
|
||||
|
||||
__v4_locator__:
|
||||
driver: __v4_locator__
|
||||
pin: 12
|
||||
mode: output
|
||||
pulse: false
|
||||
|
||||
__v4_const1__:
|
||||
pin: 6
|
||||
mode: output
|
||||
initial: false
|
||||
switch: false
|
||||
pulse: false
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
|
||||
|
||||
otg:
|
||||
remote_wakeup: true
|
||||
98
configs/kvmd/main/v4plus-hdmi-rpi4.yaml
Normal file
98
configs/kvmd/main/v4plus-hdmi-rpi4.yaml
Normal file
@ -0,0 +1,98 @@
|
||||
# Don't touch this file otherwise your device may stop working.
|
||||
# Use override.yaml to modify required settings.
|
||||
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
|
||||
|
||||
override: !include [override.d, override.yaml]
|
||||
|
||||
logging: !include logging.yaml
|
||||
|
||||
kvmd:
|
||||
auth: !include auth.yaml
|
||||
|
||||
info:
|
||||
hw:
|
||||
ignore_past: true
|
||||
fan:
|
||||
unix: /run/kvmd/fan.sock
|
||||
|
||||
hid:
|
||||
type: otg
|
||||
mouse_alt:
|
||||
device: /dev/kvmd-hid-mouse-alt
|
||||
|
||||
atx:
|
||||
type: gpio
|
||||
power_led_pin: 4
|
||||
hdd_led_pin: 5
|
||||
power_switch_pin: 23
|
||||
reset_switch_pin: 27
|
||||
|
||||
msd:
|
||||
type: otg
|
||||
|
||||
streamer:
|
||||
h264_bitrate:
|
||||
default: 5000
|
||||
cmd:
|
||||
- "/usr/bin/ustreamer"
|
||||
- "--device=/dev/kvmd-video"
|
||||
- "--persistent"
|
||||
- "--dv-timings"
|
||||
- "--format=uyvy"
|
||||
- "--format-swap-rgb"
|
||||
- "--buffers=8"
|
||||
- "--encoder=m2m-image"
|
||||
- "--workers=3"
|
||||
- "--quality={quality}"
|
||||
- "--desired-fps={desired_fps}"
|
||||
- "--drop-same-frames=30"
|
||||
- "--unix={unix}"
|
||||
- "--unix-rm"
|
||||
- "--unix-mode=0660"
|
||||
- "--exit-on-parent-death"
|
||||
- "--process-name-prefix={process_name_prefix}"
|
||||
- "--notify-parent"
|
||||
- "--no-log-colors"
|
||||
- "--jpeg-sink=kvmd::ustreamer::jpeg"
|
||||
- "--jpeg-sink-mode=0660"
|
||||
- "--h264-sink=kvmd::ustreamer::h264"
|
||||
- "--h264-sink-mode=0660"
|
||||
- "--h264-bitrate={h264_bitrate}"
|
||||
- "--h264-gop={h264_gop}"
|
||||
|
||||
gpio:
|
||||
drivers:
|
||||
__v4_locator__:
|
||||
type: locator
|
||||
|
||||
scheme:
|
||||
__v3_usb_breaker__:
|
||||
pin: 22
|
||||
mode: output
|
||||
initial: true
|
||||
pulse: false
|
||||
|
||||
__v4_locator__:
|
||||
driver: __v4_locator__
|
||||
pin: 12
|
||||
mode: output
|
||||
pulse: false
|
||||
|
||||
__v4_const1__:
|
||||
pin: 6
|
||||
mode: output
|
||||
initial: false
|
||||
switch: false
|
||||
pulse: false
|
||||
|
||||
|
||||
vnc:
|
||||
memsink:
|
||||
jpeg:
|
||||
sink: "kvmd::ustreamer::jpeg"
|
||||
h264:
|
||||
sink: "kvmd::ustreamer::h264"
|
||||
|
||||
|
||||
otg:
|
||||
remote_wakeup: true
|
||||
9
configs/kvmd/meta.yaml
Normal file
9
configs/kvmd/meta.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
# You can write down any information and it will be available
|
||||
# at the address /api/info (if you use default nginx config).
|
||||
# If server.host (str) will be defined then this value
|
||||
# will be displayed in the web interface.
|
||||
|
||||
server:
|
||||
host: localhost.localdomain
|
||||
|
||||
kvm: {}
|
||||
39
configs/kvmd/override.yaml
Normal file
39
configs/kvmd/override.yaml
Normal file
@ -0,0 +1,39 @@
|
||||
###############################################################################
|
||||
# #
|
||||
# Override KVMD settings. #
|
||||
# #
|
||||
# * https://docs.pikvm.org/first_steps/#structure-of-configuration-files #
|
||||
# #
|
||||
# This file uses YAML syntax. All overridden parameters will be applied #
|
||||
# AFTER other configs and "!include" directives, and BEFORE validation. #
|
||||
# Values should be combined under common sections. #
|
||||
# #
|
||||
###############################################################################
|
||||
#
|
||||
#########
|
||||
# Wrong #
|
||||
#########
|
||||
#kvmd:
|
||||
# gpio:
|
||||
# drivers: ...
|
||||
#kvmd:
|
||||
# gpio:
|
||||
# scheme: ...
|
||||
#
|
||||
###########
|
||||
# Correct #
|
||||
###########
|
||||
#kvmd:
|
||||
# gpio:
|
||||
# drivers: ...
|
||||
# scheme: ...
|
||||
#
|
||||
###########
|
||||
# Example #
|
||||
###########
|
||||
#vnc:
|
||||
# # See https://docs.pikvm.org/vnc
|
||||
# keymap: /usr/share/kvmd/keymaps/ru # Set russian keymap
|
||||
# auth:
|
||||
# vncauth:
|
||||
# enabled: true # Enable auth via /etc/kvmd/vncpasswd
|
||||
0
configs/kvmd/totp.secret
Normal file
0
configs/kvmd/totp.secret
Normal file
12
configs/kvmd/vncpasswd
Normal file
12
configs/kvmd/vncpasswd
Normal file
@ -0,0 +1,12 @@
|
||||
# This file describes the credentials for VNCAuth. The left part before arrow is a passphrase
|
||||
# for VNCAuth. The right part is username and password with which the user can access to KVMD API.
|
||||
# The arrow is used as a separator and shows the relationship of user registrations on the system.
|
||||
#
|
||||
# Never use the same passwords for VNC and IPMI users. This default configuration is shown here
|
||||
# for example only.
|
||||
#
|
||||
# If this file does not contain any entries, VNCAuth will be disabled and you will only be able
|
||||
# to login in using your KVMD username and password using VeNCrypt methods.
|
||||
|
||||
# pa$$phr@se -> admin:password
|
||||
admin -> admin:admin
|
||||
1
configs/kvmd/web.css
Normal file
1
configs/kvmd/web.css
Normal file
@ -0,0 +1 @@
|
||||
/* Here you can customize the Web UI */
|
||||
5
configs/nginx/certbot.ctx-server.conf
Normal file
5
configs/nginx/certbot.ctx-server.conf
Normal file
@ -0,0 +1,5 @@
|
||||
location /.well-known/acme-challenge {
|
||||
root /run/kvmd-certbot/webroot;
|
||||
include /etc/kvmd/nginx/loc-nocache.conf;
|
||||
auth_request off;
|
||||
}
|
||||
7
configs/nginx/kvmd.ctx-http.conf
Normal file
7
configs/nginx/kvmd.ctx-http.conf
Normal file
@ -0,0 +1,7 @@
|
||||
upstream kvmd {
|
||||
server unix:/run/kvmd/kvmd.sock fail_timeout=0s max_fails=0;
|
||||
}
|
||||
|
||||
upstream ustreamer {
|
||||
server unix:/run/kvmd/ustreamer.sock fail_timeout=0s max_fails=0;
|
||||
}
|
||||
131
configs/nginx/kvmd.ctx-server.conf
Normal file
131
configs/nginx/kvmd.ctx-server.conf
Normal file
@ -0,0 +1,131 @@
|
||||
absolute_redirect off;
|
||||
|
||||
index index.html;
|
||||
|
||||
auth_request /auth_check;
|
||||
|
||||
location = /auth_check {
|
||||
internal;
|
||||
proxy_pass http://kvmd/auth/check;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location / {
|
||||
root /usr/share/kvmd/web;
|
||||
include /etc/kvmd/nginx/loc-login.conf;
|
||||
include /etc/kvmd/nginx/loc-nocache.conf;
|
||||
}
|
||||
|
||||
location @login {
|
||||
return 302 /login;
|
||||
}
|
||||
|
||||
location /login {
|
||||
root /usr/share/kvmd/web;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /share {
|
||||
root /usr/share/kvmd/web;
|
||||
include /etc/kvmd/nginx/loc-nocache.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location = /share/css/user.css {
|
||||
alias /etc/kvmd/web.css;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location = /favicon.ico {
|
||||
alias /usr/share/kvmd/web/favicon.ico;
|
||||
include /etc/kvmd/nginx/loc-nocache.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location = /robots.txt {
|
||||
alias /usr/share/kvmd/web/robots.txt;
|
||||
include /etc/kvmd/nginx/loc-nocache.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api/ws {
|
||||
rewrite ^/api/ws$ /ws break;
|
||||
rewrite ^/api/ws\?(.*)$ /ws?$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-websocket.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api/hid/print {
|
||||
rewrite ^/api/hid/print$ /hid/print break;
|
||||
rewrite ^/api/hid/print\?(.*)$ /hid/print?$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-bigpost.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api/msd/read {
|
||||
rewrite ^/api/msd/read$ /msd/read break;
|
||||
rewrite ^/api/msd/read\?(.*)$ /msd/read?$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-nobuffering.conf;
|
||||
proxy_read_timeout 7d;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api/msd/write_remote {
|
||||
rewrite ^/api/msd/write_remote$ /msd/write_remote break;
|
||||
rewrite ^/api/msd/write_remote\?(.*)$ /msd/write_remote?$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-nobuffering.conf;
|
||||
proxy_read_timeout 7d;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api/msd/write {
|
||||
rewrite ^/api/msd/write$ /msd/write break;
|
||||
rewrite ^/api/msd/write\?(.*)$ /msd/write?$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-bigpost.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api/log {
|
||||
rewrite ^/api/log$ /log break;
|
||||
rewrite ^/api/log\?(.*)$ /log?$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-nobuffering.conf;
|
||||
proxy_read_timeout 7d;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /api {
|
||||
rewrite ^/api$ / break;
|
||||
rewrite ^/api/(.*)$ /$1 break;
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
auth_request off;
|
||||
}
|
||||
|
||||
location /streamer {
|
||||
rewrite ^/streamer$ / break;
|
||||
rewrite ^/streamer\?(.*)$ ?$1 break;
|
||||
rewrite ^/streamer/(.*)$ /$1 break;
|
||||
proxy_pass http://ustreamer;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
include /etc/kvmd/nginx/loc-nobuffering.conf;
|
||||
}
|
||||
|
||||
location /redfish {
|
||||
proxy_pass http://kvmd;
|
||||
include /etc/kvmd/nginx/loc-proxy.conf;
|
||||
auth_request off;
|
||||
}
|
||||
4
configs/nginx/loc-bigpost.conf
Normal file
4
configs/nginx/loc-bigpost.conf
Normal file
@ -0,0 +1,4 @@
|
||||
limit_rate 6250k;
|
||||
limit_rate_after 50k;
|
||||
client_max_body_size 0;
|
||||
proxy_request_buffering off;
|
||||
2
configs/nginx/loc-login.conf
Normal file
2
configs/nginx/loc-login.conf
Normal file
@ -0,0 +1,2 @@
|
||||
error_page 401 = @login;
|
||||
error_page 403 = @login;
|
||||
3
configs/nginx/loc-nobuffering.conf
Normal file
3
configs/nginx/loc-nobuffering.conf
Normal file
@ -0,0 +1,3 @@
|
||||
postpone_output 0;
|
||||
proxy_buffering off;
|
||||
proxy_ignore_headers X-Accel-Buffering;
|
||||
2
configs/nginx/loc-nocache.conf
Normal file
2
configs/nginx/loc-nocache.conf
Normal file
@ -0,0 +1,2 @@
|
||||
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, pre-check=0, post-check=0, max-age=0";
|
||||
expires -1;
|
||||
6
configs/nginx/loc-proxy.conf
Normal file
6
configs/nginx/loc-proxy.conf
Normal file
@ -0,0 +1,6 @@
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Scheme $scheme;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
5
configs/nginx/loc-websocket.conf
Normal file
5
configs/nginx/loc-websocket.conf
Normal file
@ -0,0 +1,5 @@
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_connect_timeout 7d;
|
||||
proxy_send_timeout 7d;
|
||||
proxy_read_timeout 7d;
|
||||
912
configs/nginx/mime-types.conf
Normal file
912
configs/nginx/mime-types.conf
Normal file
@ -0,0 +1,912 @@
|
||||
types {
|
||||
application/A2L a2l;
|
||||
application/AML aml;
|
||||
application/andrew-inset ez;
|
||||
application/ATF atf;
|
||||
application/ATFX atfx;
|
||||
application/ATXML atxml;
|
||||
application/atom+xml atom;
|
||||
application/atomcat+xml atomcat;
|
||||
application/atomdeleted+xml atomdeleted;
|
||||
application/atomsvc+xml atomsvc;
|
||||
application/auth-policy+xml apxml;
|
||||
application/bacnet-xdd+zip xdd;
|
||||
application/calendar+xml xcs;
|
||||
application/cbor cbor;
|
||||
application/cccex c3ex;
|
||||
application/ccmp+xml ccmp;
|
||||
application/ccxml+xml ccxml;
|
||||
application/CDFX+XML cdfx;
|
||||
application/cdmi-capability cdmia;
|
||||
application/cdmi-container cdmic;
|
||||
application/cdmi-domain cdmid;
|
||||
application/cdmi-object cdmio;
|
||||
application/cdmi-queue cdmiq;
|
||||
application/CEA cea;
|
||||
application/cellml+xml cellml cml;
|
||||
application/clue_info+xml clue;
|
||||
application/cms cmsc;
|
||||
application/cpl+xml cpl;
|
||||
application/csrattrs csrattrs;
|
||||
application/dash+xml mpd;
|
||||
application/dashdelta mpdd;
|
||||
application/davmount+xml davmount;
|
||||
application/DCD dcd;
|
||||
application/dicom dcm;
|
||||
application/DII dii;
|
||||
application/DIT dit;
|
||||
application/dskpp+xml xmls;
|
||||
application/dssc+der dssc;
|
||||
application/dssc+xml xdssc;
|
||||
application/dvcs dvc;
|
||||
application/ecmascript es;
|
||||
application/efi efi;
|
||||
application/emma+xml emma;
|
||||
application/emotionml+xml emotionml;
|
||||
application/epub+zip epub;
|
||||
application/exi exi;
|
||||
application/fastinfoset finf;
|
||||
application/fdt+xml fdt;
|
||||
application/font-tdpfr pfr;
|
||||
application/geo+json geojson;
|
||||
application/gml+xml gml;
|
||||
application/gzip gz tgz;
|
||||
application/hyperstudio stk;
|
||||
application/inkml+xml ink inkml;
|
||||
application/ipfix ipfix;
|
||||
application/its+xml its;
|
||||
application/javascript js;
|
||||
application/jrd+json jrd;
|
||||
application/json json;
|
||||
application/json-patch+json json-patch;
|
||||
application/ld+json jsonld;
|
||||
application/lgr+xml lgr;
|
||||
application/link-format wlnk;
|
||||
application/lost+xml lostxml;
|
||||
application/lostsync+xml lostsyncxml;
|
||||
application/LXF lxf;
|
||||
application/mac-binhex40 hqx;
|
||||
application/mads+xml mads;
|
||||
application/marc mrc;
|
||||
application/marcxml+xml mrcx;
|
||||
application/mathematica nb ma mb;
|
||||
application/mathml+xml mml;
|
||||
application/mbox mbox;
|
||||
application/metalink4+xml meta4;
|
||||
application/mets+xml mets;
|
||||
application/MF4 mf4;
|
||||
application/mmt-usd+xml musd;
|
||||
application/mods+xml mods;
|
||||
application/mp21 m21 mp21;
|
||||
application/msword doc;
|
||||
application/mxf mxf;
|
||||
application/n-quads nq;
|
||||
application/n-triples nt;
|
||||
application/ocsp-request orq;
|
||||
application/ocsp-response ors;
|
||||
application/octet-stream bin lha lzh exe class so dll img iso;
|
||||
application/oda oda;
|
||||
application/ODX odx;
|
||||
application/oebps-package+xml opf;
|
||||
application/ogg ogx;
|
||||
application/oxps oxps;
|
||||
application/p2p-overlay+xml relo;
|
||||
application/pdf pdf;
|
||||
application/PDX pdx;
|
||||
application/pgp-encrypted pgp;
|
||||
application/pgp-signature sig;
|
||||
application/pkcs10 p10;
|
||||
application/pkcs12 p12 pfx;
|
||||
application/pkcs7-mime p7m p7c;
|
||||
application/pkcs7-signature p7s;
|
||||
application/pkcs8 p8;
|
||||
application/pkix-cert cer;
|
||||
application/pkix-crl crl;
|
||||
application/pkix-pkipath pkipath;
|
||||
application/pkixcmp pki;
|
||||
application/pls+xml pls;
|
||||
application/postscript ps eps ai;
|
||||
application/provenance+xml provx;
|
||||
application/prs.cww cw cww;
|
||||
application/prs.hpub+zip hpub;
|
||||
application/prs.nprend rnd rct;
|
||||
application/prs.rdf-xml-crypt rdf-crypt;
|
||||
application/prs.xsf+xml xsf;
|
||||
application/pskc+xml pskcxml;
|
||||
application/rdf+xml rdf;
|
||||
application/route-apd+xml rapd;
|
||||
application/route-s-tsid+xml sls;
|
||||
application/route-usd+xml rusd;
|
||||
application/reginfo+xml rif;
|
||||
application/relax-ng-compact-syntax rnc;
|
||||
application/resource-lists-diff+xml rld;
|
||||
application/resource-lists+xml rl;
|
||||
application/rfc+xml rfcxml;
|
||||
application/rls-services+xml rs;
|
||||
application/rpki-ghostbusters gbr;
|
||||
application/rpki-manifest mft;
|
||||
application/rpki-roa roa;
|
||||
application/rtf rtf;
|
||||
application/scim+json scim;
|
||||
application/scvp-cv-request scq;
|
||||
application/scvp-cv-response scs;
|
||||
application/scvp-vp-request spq;
|
||||
application/scvp-vp-response spp;
|
||||
application/sdp sdp;
|
||||
application/sgml-open-catalog soc;
|
||||
application/shf+xml shf;
|
||||
application/sieve siv sieve;
|
||||
application/simple-filter+xml cl;
|
||||
application/smil+xml smil smi sml;
|
||||
application/sparql-query rq;
|
||||
application/sparql-results+xml srx;
|
||||
application/sql sql;
|
||||
application/srgs gram;
|
||||
application/srgs+xml grxml;
|
||||
application/sru+xml sru;
|
||||
application/ssml+xml ssml;
|
||||
application/tamp-apex-update tau;
|
||||
application/tamp-apex-update-confirm auc;
|
||||
application/tamp-community-update tcu;
|
||||
application/tamp-community-update-confirm cuc;
|
||||
application/tamp-error ter;
|
||||
application/tamp-sequence-adjust tsa;
|
||||
application/tamp-sequence-adjust-confirm sac;
|
||||
application/tamp-update tur;
|
||||
application/tamp-update-confirm tuc;
|
||||
application/tei+xml tei teiCorpus odd;
|
||||
application/thraud+xml tfi;
|
||||
application/timestamp-query tsq;
|
||||
application/timestamp-reply tsr;
|
||||
application/timestamped-data tsd;
|
||||
application/trig trig;
|
||||
application/ttml+xml ttml;
|
||||
application/urc-grpsheet+xml gsheet;
|
||||
application/urc-ressheet+xml rsheet;
|
||||
application/urc-targetdesc+xml td;
|
||||
application/urc-uisocketdesc+xml uis;
|
||||
application/vnd.1000minds.decision-model+xml 1km;
|
||||
application/vnd.3gpp.pic-bw-large plb;
|
||||
application/vnd.3gpp.pic-bw-small psb;
|
||||
application/vnd.3gpp.pic-bw-var pvb;
|
||||
application/vnd.3gpp2.sms sms;
|
||||
application/vnd.3gpp2.tcap tcap;
|
||||
application/vnd.3lightssoftware.imagescal imgcal;
|
||||
application/vnd.3M.Post-it-Notes pwn;
|
||||
application/vnd.accpac.simply.aso aso;
|
||||
application/vnd.accpac.simply.imp imp;
|
||||
application/vnd.acucobol acu;
|
||||
application/vnd.acucorp atc acutc;
|
||||
application/vnd.adobe.flash.movie swf;
|
||||
application/vnd.adobe.formscentral.fcdt fcdt;
|
||||
application/vnd.adobe.fxp fxp fxpl;
|
||||
application/vnd.adobe.xdp+xml xdp;
|
||||
application/vnd.adobe.xfdf xfdf;
|
||||
application/vnd.ahead.space ahead;
|
||||
application/vnd.airzip.filesecure.azf azf;
|
||||
application/vnd.airzip.filesecure.azs azs;
|
||||
application/vnd.amazon.mobi8-ebook azw3;
|
||||
application/vnd.americandynamics.acc acc;
|
||||
application/vnd.amiga.ami ami;
|
||||
application/vnd.anki apkg;
|
||||
application/vnd.anser-web-certificate-issue-initiation cii;
|
||||
application/vnd.anser-web-funds-transfer-initiation fti;
|
||||
application/vnd.apple.installer+xml dist distz pkg mpkg;
|
||||
application/vnd.apple.mpegurl m3u8;
|
||||
application/vnd.aristanetworks.swi swi;
|
||||
application/vnd.astraea-software.iota iota;
|
||||
application/vnd.audiograph aep;
|
||||
application/vnd.autopackage package;
|
||||
application/vnd.balsamiq.bmml+xml bmml;
|
||||
application/vnd.balsamiq.bmpr bmpr;
|
||||
application/vnd.blueice.multipass mpm;
|
||||
application/vnd.bluetooth.ep.oob ep;
|
||||
application/vnd.bluetooth.le.oob le;
|
||||
application/vnd.bmi bmi;
|
||||
application/vnd.businessobjects rep;
|
||||
application/vnd.cendio.thinlinc.clientconf tlclient;
|
||||
application/vnd.chemdraw+xml cdxml;
|
||||
application/vnd.chess-pgn pgn;
|
||||
application/vnd.chipnuts.karaoke-mmd mmd;
|
||||
application/vnd.cinderella cdy;
|
||||
application/vnd.citationstyles.style+xml csl;
|
||||
application/vnd.claymore cla;
|
||||
application/vnd.cloanto.rp9 rp9;
|
||||
application/vnd.clonk.c4group c4g c4d c4f c4p c4u;
|
||||
application/vnd.cluetrust.cartomobile-config c11amc;
|
||||
application/vnd.cluetrust.cartomobile-config-pkg c11amz;
|
||||
application/vnd.coffeescript coffee;
|
||||
application/vnd.comicbook+zip cbz;
|
||||
application/vnd.commerce-battelle ica icf icd ic0 ic1 ic2 ic3 ic4 ic5 ic6 ic7 ic8;
|
||||
application/vnd.commonspace csp cst;
|
||||
application/vnd.contact.cmsg cdbcmsg;
|
||||
application/vnd.coreos.ignition+json ign ignition;
|
||||
application/vnd.cosmocaller cmc;
|
||||
application/vnd.crick.clicker clkx;
|
||||
application/vnd.crick.clicker.keyboard clkk;
|
||||
application/vnd.crick.clicker.palette clkp;
|
||||
application/vnd.crick.clicker.template clkt;
|
||||
application/vnd.crick.clicker.wordbank clkw;
|
||||
application/vnd.criticaltools.wbs+xml wbs;
|
||||
application/vnd.ctc-posml pml;
|
||||
application/vnd.cups-ppd ppd;
|
||||
application/vnd.curl curl;
|
||||
application/vnd.dart dart;
|
||||
application/vnd.data-vision.rdz rdz;
|
||||
application/vnd.debian.binary-package deb udeb;
|
||||
application/vnd.dece.data uvf uvvf uvd uvvd;
|
||||
application/vnd.dece.ttml+xml uvt uvvt;
|
||||
application/vnd.dece.unspecified uvx uvvx;
|
||||
application/vnd.dece.zip uvz uvvz;
|
||||
application/vnd.denovo.fcselayout-link fe_launch;
|
||||
application/vnd.desmume.movie dsm;
|
||||
application/vnd.dna dna;
|
||||
application/vnd.document+json docjson;
|
||||
application/vnd.doremir.scorecloud-binary-document scld;
|
||||
application/vnd.dpgraph dpg mwc dpgraph;
|
||||
application/vnd.dreamfactory dfac;
|
||||
application/vnd.dtg.local.flash fla;
|
||||
application/vnd.dvb.ait ait;
|
||||
application/vnd.dvb.service svc;
|
||||
application/vnd.dynageo geo;
|
||||
application/vnd.dzr dzr;
|
||||
application/vnd.ecowin.chart mag;
|
||||
application/vnd.enliven nml;
|
||||
application/vnd.epson.esf esf;
|
||||
application/vnd.epson.msf msf;
|
||||
application/vnd.epson.quickanime qam;
|
||||
application/vnd.epson.salt slt;
|
||||
application/vnd.epson.ssf ssf;
|
||||
application/vnd.ericsson.quickcall qcall qca;
|
||||
application/vnd.espass-espass+zip espass;
|
||||
application/vnd.eszigno3+xml es3 et3;
|
||||
application/vnd.etsi.asic-e+zip asice sce;
|
||||
application/vnd.etsi.asic-s+zip asics;
|
||||
application/vnd.etsi.timestamp-token tst;
|
||||
application/vnd.evolv.ecig.profile ecigprofile;
|
||||
application/vnd.evolv.ecig.settings ecig;
|
||||
application/vnd.evolv.ecig.theme ecigtheme;
|
||||
application/vnd.ezpix-album ez2;
|
||||
application/vnd.ezpix-package ez3;
|
||||
application/vnd.fastcopy-disk-image dim;
|
||||
application/vnd.fdf fdf;
|
||||
application/vnd.fdsn.mseed msd mseed;
|
||||
application/vnd.fdsn.seed seed dataless;
|
||||
application/vnd.filmit.zfc zfc;
|
||||
application/vnd.FloGraphIt gph;
|
||||
application/vnd.fluxtime.clip ftc;
|
||||
application/vnd.font-fontforge-sfd sfd;
|
||||
application/vnd.framemaker fm;
|
||||
application/vnd.frogans.fnc fnc;
|
||||
application/vnd.frogans.ltf ltf;
|
||||
application/vnd.fsc.weblaunch fsc;
|
||||
application/vnd.fujitsu.oasys oas;
|
||||
application/vnd.fujitsu.oasys2 oa2;
|
||||
application/vnd.fujitsu.oasys3 oa3;
|
||||
application/vnd.fujitsu.oasysgp fg5;
|
||||
application/vnd.fujitsu.oasysprs bh2;
|
||||
application/vnd.fujixerox.ddd ddd;
|
||||
application/vnd.fujixerox.docuworks xdw;
|
||||
application/vnd.fujixerox.docuworks.binder xbd;
|
||||
application/vnd.fujixerox.docuworks.container xct;
|
||||
application/vnd.fuzzysheet fzs;
|
||||
application/vnd.genomatix.tuxedo txd;
|
||||
application/vnd.geocube+xml g3 g³;
|
||||
application/vnd.geogebra.file ggb;
|
||||
application/vnd.geogebra.tool ggt;
|
||||
application/vnd.geometry-explorer gex gre;
|
||||
application/vnd.geonext gxt;
|
||||
application/vnd.geoplan g2w;
|
||||
application/vnd.geospace g3w;
|
||||
application/vnd.gmx gmx;
|
||||
application/vnd.google-earth.kml+xml kml;
|
||||
application/vnd.google-earth.kmz kmz;
|
||||
application/vnd.grafeq gqf gqs;
|
||||
application/vnd.groove-account gac;
|
||||
application/vnd.groove-help ghf;
|
||||
application/vnd.groove-identity-message gim;
|
||||
application/vnd.groove-injector grv;
|
||||
application/vnd.groove-tool-message gtm;
|
||||
application/vnd.groove-tool-template tpl;
|
||||
application/vnd.groove-vcard vcg;
|
||||
application/vnd.hal+xml hal;
|
||||
application/vnd.HandHeld-Entertainment+xml zmm;
|
||||
application/vnd.hbci hbci hbc kom upa pkd bpd;
|
||||
application/vnd.hdt hdt;
|
||||
application/vnd.hhe.lesson-player les;
|
||||
application/vnd.hp-HPGL hpgl;
|
||||
application/vnd.hp-hpid hpi hpid;
|
||||
application/vnd.hp-hps hps;
|
||||
application/vnd.hp-jlyt jlt;
|
||||
application/vnd.hp-PCL pcl;
|
||||
application/vnd.hydrostatix.sof-data sfd-hdstx;
|
||||
application/vnd.hzn-3d-crossword x3d;
|
||||
application/vnd.ibm.electronic-media emm;
|
||||
application/vnd.ibm.MiniPay mpy;
|
||||
application/vnd.ibm.modcap list3820 listafp afp pseg3820;
|
||||
application/vnd.ibm.rights-management irm;
|
||||
application/vnd.ibm.secure-container sc;
|
||||
application/vnd.iccprofile icc icm;
|
||||
application/vnd.ieee.1905 1905.1;
|
||||
application/vnd.igloader igl;
|
||||
application/vnd.imagemeter.folder+zip imf;
|
||||
application/vnd.imagemeter.image+zip imi;
|
||||
application/vnd.immervision-ivp ivp;
|
||||
application/vnd.immervision-ivu ivu;
|
||||
application/vnd.ims.imsccv1p1 imscc;
|
||||
application/vnd.insors.igm igm;
|
||||
application/vnd.intercon.formnet xpw xpx;
|
||||
application/vnd.intergeo i2g;
|
||||
application/vnd.intu.qbo qbo;
|
||||
application/vnd.intu.qfx qfx;
|
||||
application/vnd.ipunplugged.rcprofile rcprofile;
|
||||
application/vnd.irepository.package+xml irp;
|
||||
application/vnd.is-xpr xpr;
|
||||
application/vnd.isac.fcs fcs;
|
||||
application/vnd.jam jam;
|
||||
application/vnd.jcp.javame.midlet-rms rms;
|
||||
application/vnd.jisp jisp;
|
||||
application/vnd.joost.joda-archive joda;
|
||||
application/vnd.kahootz ktz ktr;
|
||||
application/vnd.kde.karbon karbon;
|
||||
application/vnd.kde.kchart chrt;
|
||||
application/vnd.kde.kformula kfo;
|
||||
application/vnd.kde.kivio flw;
|
||||
application/vnd.kde.kontour kon;
|
||||
application/vnd.kde.kpresenter kpr kpt;
|
||||
application/vnd.kde.kspread ksp;
|
||||
application/vnd.kde.kword kwd kwt;
|
||||
application/vnd.kenameaapp htke;
|
||||
application/vnd.kidspiration kia;
|
||||
application/vnd.Kinar kne knp sdf;
|
||||
application/vnd.koan skp skd skm skt;
|
||||
application/vnd.kodak-descriptor sse;
|
||||
application/vnd.las.las+json lasjson;
|
||||
application/vnd.las.las+xml lasxml;
|
||||
application/vnd.llamagraphics.life-balance.desktop lbd;
|
||||
application/vnd.llamagraphics.life-balance.exchange+xml lbe;
|
||||
application/vnd.lotus-1-2-3 123 wk4 wk3 wk1;
|
||||
application/vnd.lotus-approach apr vew;
|
||||
application/vnd.lotus-freelance prz pre;
|
||||
application/vnd.lotus-notes nsf ntf ndl ns4 ns3 ns2 nsh nsg;
|
||||
application/vnd.lotus-organizer or3 or2 org;
|
||||
application/vnd.lotus-screencam scm;
|
||||
application/vnd.lotus-wordpro lwp sam;
|
||||
application/vnd.macports.portpkg portpkg;
|
||||
application/vnd.mapbox-vector-tile mvt;
|
||||
application/vnd.marlin.drm.mdcf mdc;
|
||||
application/vnd.maxmind.maxmind-db mmdb;
|
||||
application/vnd.mcd mcd;
|
||||
application/vnd.medcalcdata mc1;
|
||||
application/vnd.mediastation.cdkey cdkey;
|
||||
application/vnd.MFER mwf;
|
||||
application/vnd.mfmp mfm;
|
||||
application/vnd.micrografx.flo flo;
|
||||
application/vnd.micrografx.igx igx;
|
||||
application/vnd.mif mif;
|
||||
application/vnd.Mobius.DAF daf;
|
||||
application/vnd.Mobius.DIS dis;
|
||||
application/vnd.Mobius.MBK mbk;
|
||||
application/vnd.Mobius.MQY mqy;
|
||||
application/vnd.Mobius.MSL msl;
|
||||
application/vnd.Mobius.PLC plc;
|
||||
application/vnd.Mobius.TXF txf;
|
||||
application/vnd.mophun.application mpn;
|
||||
application/vnd.mophun.certificate mpc;
|
||||
application/vnd.mozilla.xul+xml xul;
|
||||
application/vnd.ms-3mfdocument 3mf;
|
||||
application/vnd.ms-artgalry cil;
|
||||
application/vnd.ms-asf asf;
|
||||
application/vnd.ms-cab-compressed cab;
|
||||
application/vnd.ms-excel xls xlm xla xlc xlt xlw;
|
||||
application/vnd.ms-excel.template.macroEnabled.12 xltm;
|
||||
application/vnd.ms-excel.addin.macroEnabled.12 xlam;
|
||||
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb;
|
||||
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm;
|
||||
application/vnd.ms-fontobject eot;
|
||||
application/vnd.ms-htmlhelp chm;
|
||||
application/vnd.ms-ims ims;
|
||||
application/vnd.ms-lrm lrm;
|
||||
application/vnd.ms-officetheme thmx;
|
||||
application/vnd.ms-powerpoint ppt pps pot;
|
||||
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam;
|
||||
application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm;
|
||||
application/vnd.ms-powerpoint.slide.macroEnabled.12 sldm;
|
||||
application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm;
|
||||
application/vnd.ms-powerpoint.template.macroEnabled.12 potm;
|
||||
application/vnd.ms-project mpp mpt;
|
||||
application/vnd.ms-tnef tnef tnf;
|
||||
application/vnd.ms-word.document.macroEnabled.12 docm;
|
||||
application/vnd.ms-word.template.macroEnabled.12 dotm;
|
||||
application/vnd.ms-works wcm wdb wks wps;
|
||||
application/vnd.ms-wpl wpl;
|
||||
application/vnd.ms-xpsdocument xps;
|
||||
application/vnd.msa-disk-image msa;
|
||||
application/vnd.mseq mseq;
|
||||
application/vnd.multiad.creator crtr;
|
||||
application/vnd.multiad.creator.cif cif;
|
||||
application/vnd.musician mus;
|
||||
application/vnd.muvee.style msty;
|
||||
application/vnd.mynfc taglet;
|
||||
application/vnd.nervana entity request bkm kcm;
|
||||
application/vnd.nitf nitf;
|
||||
application/vnd.neurolanguage.nlu nlu;
|
||||
application/vnd.nintendo.nitro.rom nds;
|
||||
application/vnd.nintendo.snes.rom sfc smc;
|
||||
application/vnd.noblenet-directory nnd;
|
||||
application/vnd.noblenet-sealer nns;
|
||||
application/vnd.noblenet-web nnw;
|
||||
application/vnd.nokia.n-gage.ac+xml ac;
|
||||
application/vnd.nokia.n-gage.data ngdat;
|
||||
application/vnd.nokia.n-gage.symbian.install n-gage;
|
||||
application/vnd.nokia.radio-preset rpst;
|
||||
application/vnd.nokia.radio-presets rpss;
|
||||
application/vnd.novadigm.EDM edm;
|
||||
application/vnd.novadigm.EDX edx;
|
||||
application/vnd.novadigm.EXT ext;
|
||||
application/vnd.oasis.opendocument.chart odc;
|
||||
application/vnd.oasis.opendocument.chart-template otc;
|
||||
application/vnd.oasis.opendocument.database odb;
|
||||
application/vnd.oasis.opendocument.formula odf;
|
||||
application/vnd.oasis.opendocument.graphics odg;
|
||||
application/vnd.oasis.opendocument.graphics-template otg;
|
||||
application/vnd.oasis.opendocument.image odi;
|
||||
application/vnd.oasis.opendocument.image-template oti;
|
||||
application/vnd.oasis.opendocument.presentation odp;
|
||||
application/vnd.oasis.opendocument.presentation-template otp;
|
||||
application/vnd.oasis.opendocument.spreadsheet ods;
|
||||
application/vnd.oasis.opendocument.spreadsheet-template ots;
|
||||
application/vnd.oasis.opendocument.text odt;
|
||||
application/vnd.oasis.opendocument.text-master odm;
|
||||
application/vnd.oasis.opendocument.text-template ott;
|
||||
application/vnd.oasis.opendocument.text-web oth;
|
||||
application/vnd.olpc-sugar xo;
|
||||
application/vnd.oma.dd2+xml dd2;
|
||||
application/vnd.onepager tam;
|
||||
application/vnd.onepagertamp tamp;
|
||||
application/vnd.onepagertamx tamx;
|
||||
application/vnd.onepagertat tat;
|
||||
application/vnd.onepagertatp tatp;
|
||||
application/vnd.onepagertatx tatx;
|
||||
application/vnd.openblox.game+xml obgx;
|
||||
application/vnd.openblox.game-binary obg;
|
||||
application/vnd.openeye.oeb oeb;
|
||||
application/vnd.openofficeorg.extension oxt;
|
||||
application/vnd.openstreetmap.data+xml osm;
|
||||
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
|
||||
application/vnd.openxmlformats-officedocument.presentationml.slide sldx;
|
||||
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx;
|
||||
application/vnd.openxmlformats-officedocument.presentationml.template potx;
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx;
|
||||
application/vnd.osa.netdeploy ndc;
|
||||
application/vnd.osgeo.mapguide.package mgp;
|
||||
application/vnd.osgi.dp dp;
|
||||
application/vnd.osgi.subsystem esa;
|
||||
application/vnd.oxli.countgraph oxlicg;
|
||||
application/vnd.palm prc pdb pqa oprc;
|
||||
application/vnd.panoply plp;
|
||||
application/vnd.pawaafile paw;
|
||||
application/vnd.pg.format str;
|
||||
application/vnd.pg.osasli ei6;
|
||||
application/vnd.piaccess.application-license pil;
|
||||
application/vnd.picsel efif;
|
||||
application/vnd.pmi.widget wg;
|
||||
application/vnd.pocketlearn plf;
|
||||
application/vnd.powerbuilder6 pbd;
|
||||
application/vnd.preminet preminet;
|
||||
application/vnd.previewsystems.box box vbox;
|
||||
application/vnd.proteus.magazine mgz;
|
||||
application/vnd.publishare-delta-tree qps;
|
||||
application/vnd.pvi.ptid1 ptid;
|
||||
application/vnd.qualcomm.brew-app-res bar;
|
||||
application/vnd.Quark.QuarkXPress qxd qxt qwd qwt qxl qxb;
|
||||
application/vnd.quobject-quoxdocument quox quiz;
|
||||
application/vnd.rainstor.data tree;
|
||||
application/vnd.rar rar;
|
||||
application/vnd.realvnc.bed bed;
|
||||
application/vnd.recordare.musicxml mxl;
|
||||
application/vnd.rig.cryptonote cryptonote;
|
||||
application/vnd.route66.link66+xml link66;
|
||||
application/vnd.sailingtracker.track st;
|
||||
application/vnd.scribus scd sla slaz;
|
||||
application/vnd.sealed.3df s3df;
|
||||
application/vnd.sealed.csf scsf;
|
||||
application/vnd.sealed.doc sdoc sdo s1w;
|
||||
application/vnd.sealed.eml seml sem;
|
||||
application/vnd.sealed.mht smht smh;
|
||||
application/vnd.sealed.ppt sppt s1p;
|
||||
application/vnd.sealed.tiff stif;
|
||||
application/vnd.sealed.xls sxls sxl s1e;
|
||||
application/vnd.sealedmedia.softseal.html stml s1h;
|
||||
application/vnd.sealedmedia.softseal.pdf spdf spd s1a;
|
||||
application/vnd.seemail see;
|
||||
application/vnd.sema sema;
|
||||
application/vnd.semd semd;
|
||||
application/vnd.semf semf;
|
||||
application/vnd.shana.informed.formdata ifm;
|
||||
application/vnd.shana.informed.formtemplate itp;
|
||||
application/vnd.shana.informed.interchange iif;
|
||||
application/vnd.shana.informed.package ipk;
|
||||
application/vnd.sigrok.session sr;
|
||||
application/vnd.SimTech-MindMapper twd twds;
|
||||
application/vnd.smaf mmf;
|
||||
application/vnd.smart.notebook notebook;
|
||||
application/vnd.smart.teacher teacher;
|
||||
application/vnd.software602.filler.form+xml fo;
|
||||
application/vnd.software602.filler.form-xml-zip zfo;
|
||||
application/vnd.solent.sdkm+xml sdkm sdkd;
|
||||
application/vnd.spotfire.dxp dxp;
|
||||
application/vnd.spotfire.sfs sfs;
|
||||
application/vnd.stepmania.package smzip;
|
||||
application/vnd.stepmania.stepchart sm;
|
||||
application/vnd.sun.wadl+xml wadl;
|
||||
application/vnd.sus-calendar sus susp;
|
||||
application/vnd.syncml+xml xsm;
|
||||
application/vnd.syncml.dm+wbxml bdm;
|
||||
application/vnd.syncml.dm+xml xdm;
|
||||
application/vnd.syncml.dmddf+xml ddf;
|
||||
application/vnd.tao.intent-module-archive tao;
|
||||
application/vnd.tcpdump.pcap pcap cap dmp;
|
||||
application/vnd.theqvd qvd;
|
||||
application/vnd.tml vfr viaframe;
|
||||
application/vnd.tmobile-livetv tmo;
|
||||
application/vnd.trid.tpt tpt;
|
||||
application/vnd.triscape.mxs mxs;
|
||||
application/vnd.trueapp tra;
|
||||
application/vnd.ufdl ufdl ufd frm;
|
||||
application/vnd.uiq.theme utz;
|
||||
application/vnd.umajin umj;
|
||||
application/vnd.unity unityweb;
|
||||
application/vnd.uoml+xml uoml uo;
|
||||
application/vnd.uri-map urim urimap;
|
||||
application/vnd.valve.source.material vmt;
|
||||
application/vnd.vcx vcx;
|
||||
application/vnd.vd-study mxi study-inter model-inter;
|
||||
application/vnd.vectorworks vwx;
|
||||
application/vnd.vidsoft.vidconference vsc;
|
||||
application/vnd.visio vsd vst vsw vss;
|
||||
application/vnd.visionary vis;
|
||||
application/vnd.vsf vsf;
|
||||
application/vnd.wap.sic sic;
|
||||
application/vnd.wap.slc slc;
|
||||
application/vnd.wap.wbxml wbxml;
|
||||
application/vnd.wap.wmlc wmlc;
|
||||
application/vnd.wap.wmlscriptc wmlsc;
|
||||
application/vnd.webturbo wtb;
|
||||
application/vnd.wfa.p2p p2p;
|
||||
application/vnd.wfa.wsc wsc;
|
||||
application/vnd.wmc wmc;
|
||||
application/vnd.wolfram.mathematica.package m;
|
||||
application/vnd.wolfram.player nbp;
|
||||
application/vnd.wordperfect wpd;
|
||||
application/vnd.wqd wqd;
|
||||
application/vnd.wt.stf stf;
|
||||
application/vnd.wv.csp+wbxml wv;
|
||||
application/vnd.xara xar;
|
||||
application/vnd.xfdl xfdl xfd;
|
||||
application/vnd.xmpie.cpkg cpkg;
|
||||
application/vnd.xmpie.dpkg dpkg;
|
||||
application/vnd.xmpie.ppkg ppkg;
|
||||
application/vnd.xmpie.xlim xlim;
|
||||
application/vnd.yamaha.hv-dic hvd;
|
||||
application/vnd.yamaha.hv-script hvs;
|
||||
application/vnd.yamaha.hv-voice hvp;
|
||||
application/vnd.yamaha.openscoreformat osf;
|
||||
application/vnd.yamaha.smaf-audio saf;
|
||||
application/vnd.yamaha.smaf-phrase spf;
|
||||
application/vnd.yaoweme yme;
|
||||
application/vnd.yellowriver-custom-menu cmp;
|
||||
application/vnd.zul zir zirz;
|
||||
application/vnd.zzazz.deck+xml zaz;
|
||||
application/voicexml+xml vxml;
|
||||
application/watcherinfo+xml wif;
|
||||
application/widget wgt;
|
||||
application/wsdl+xml wsdl;
|
||||
application/wspolicy+xml wspolicy;
|
||||
application/xcap-att+xml xav;
|
||||
application/xcap-caps+xml xca;
|
||||
application/xcap-diff+xml xdf;
|
||||
application/xcap-el+xml xel;
|
||||
application/xcap-error+xml xer;
|
||||
application/xcap-ns+xml xns;
|
||||
application/xhtml+xml xhtml xhtm xht;
|
||||
application/xml-dtd dtd;
|
||||
application/xop+xml xop;
|
||||
application/xslt+xml xsl xslt;
|
||||
application/xv+xml mxml xhvml xvml xvm;
|
||||
application/yang yang;
|
||||
application/yin+xml yin;
|
||||
application/zip zip;
|
||||
audio/32kadpcm 726;
|
||||
audio/ac3 ac3;
|
||||
audio/AMR amr;
|
||||
audio/AMR-WB awb;
|
||||
audio/asc acn;
|
||||
audio/ATRAC-ADVANCED-LOSSLESS aal;
|
||||
audio/ATRAC-X atx;
|
||||
audio/ATRAC3 at3 aa3 omg;
|
||||
audio/basic au snd;
|
||||
audio/dls dls;
|
||||
audio/EVRC evc;
|
||||
audio/EVRCB evb;
|
||||
audio/EVRCNW enw;
|
||||
audio/EVRCWB evw;
|
||||
audio/iLBC lbc;
|
||||
audio/L16 l16;
|
||||
audio/mobile-xmf mxmf;
|
||||
audio/mp4 m4a;
|
||||
audio/mpeg mp3 mpga mp1 mp2;
|
||||
audio/ogg oga ogg opus spx;
|
||||
audio/prs.sid sid psid;
|
||||
audio/qcelp qcp;
|
||||
audio/SMV smv;
|
||||
audio/vnd.audikoz koz;
|
||||
audio/vnd.dece.audio uva uvva;
|
||||
audio/vnd.digital-winds eol;
|
||||
audio/vnd.dolby.mlp mlp;
|
||||
audio/vnd.dts dts;
|
||||
audio/vnd.dts.hd dtshd;
|
||||
audio/vnd.everad.plj plj;
|
||||
audio/vnd.lucent.voice lvp;
|
||||
audio/vnd.ms-playready.media.pya pya;
|
||||
audio/vnd.nortel.vbk vbk;
|
||||
audio/vnd.nuera.ecelp4800 ecelp4800;
|
||||
audio/vnd.nuera.ecelp7470 ecelp7470;
|
||||
audio/vnd.nuera.ecelp9600 ecelp9600;
|
||||
audio/vnd.presonus.multitrack multitrack;
|
||||
audio/vnd.rip rip;
|
||||
audio/vnd.sealedmedia.softseal.mpeg smp3 smp s1m;
|
||||
font/collection ttc;
|
||||
font/otf otf;
|
||||
font/ttf ttf;
|
||||
font/woff woff;
|
||||
font/woff2 woff2;
|
||||
image/bmp bmp dib;
|
||||
image/cgm cgm;
|
||||
image/dicom-rle drle;
|
||||
image/emf emf;
|
||||
image/fits fits fit fts;
|
||||
image/gif gif;
|
||||
image/ief ief;
|
||||
image/jls jls;
|
||||
image/jp2 jp2 jpg2;
|
||||
image/jpeg jpg jpeg jpe jfif;
|
||||
image/jpm jpm jpgm;
|
||||
image/jpx jpx jpf;
|
||||
image/ktx ktx;
|
||||
image/png png;
|
||||
image/prs.btif btif btf;
|
||||
image/prs.pti pti;
|
||||
image/svg+xml svg svgz;
|
||||
image/t38 t38;
|
||||
image/tiff tiff tif;
|
||||
image/tiff-fx tfx;
|
||||
image/vnd.adobe.photoshop psd;
|
||||
image/vnd.airzip.accelerator.azv azv;
|
||||
image/vnd.dece.graphic uvi uvvi uvg uvvg;
|
||||
image/vnd.djvu djvu djv;
|
||||
image/vnd.dwg dwg;
|
||||
image/vnd.dxf dxf;
|
||||
image/vnd.fastbidsheet fbs;
|
||||
image/vnd.fpx fpx;
|
||||
image/vnd.fst fst;
|
||||
image/vnd.fujixerox.edmics-mmr mmr;
|
||||
image/vnd.fujixerox.edmics-rlc rlc;
|
||||
image/vnd.globalgraphics.pgb pgb;
|
||||
image/vnd.microsoft.icon ico;
|
||||
image/vnd.mozilla.apng apng;
|
||||
image/vnd.ms-modi mdi;
|
||||
image/vnd.radiance hdr rgbe xyze;
|
||||
image/vnd.sealed.png spng spn s1n;
|
||||
image/vnd.sealedmedia.softseal.gif sgif sgi s1g;
|
||||
image/vnd.sealedmedia.softseal.jpg sjpg sjp s1j;
|
||||
image/vnd.tencent.tap tap;
|
||||
image/vnd.valve.source.texture vtf;
|
||||
image/vnd.wap.wbmp wbmp;
|
||||
image/vnd.xiff xif;
|
||||
image/vnd.zbrush.pcx pcx;
|
||||
image/wmf wmf;
|
||||
message/global u8msg;
|
||||
message/global-delivery-status u8dsn;
|
||||
message/global-disposition-notification u8mdn;
|
||||
message/global-headers u8hdr;
|
||||
message/rfc822 eml mail art;
|
||||
model/gltf+json gltf;
|
||||
model/iges igs iges;
|
||||
model/mesh msh mesh silo;
|
||||
model/vnd.collada+xml dae;
|
||||
model/vnd.dwf dwf;
|
||||
model/vnd.gdl gdl gsm win dor lmp rsm msm ism;
|
||||
model/vnd.gtw gtw;
|
||||
model/vnd.moml+xml moml;
|
||||
model/vnd.mts mts;
|
||||
model/vnd.opengex ogex;
|
||||
model/vnd.parasolid.transmit.binary x_b xmt_bin;
|
||||
model/vnd.parasolid.transmit.text x_t xmt_txt;
|
||||
model/vnd.valve.source.compiled-map bsp;
|
||||
model/vnd.vtu vtu;
|
||||
model/vrml wrl vrml;
|
||||
model/x3d+xml x3db;
|
||||
model/x3d-vrml x3dv x3dvz;
|
||||
multipart/vnd.bint.med-plus bmed;
|
||||
multipart/voice-message vpm;
|
||||
text/cache-manifest appcache manifest;
|
||||
text/calendar ics ifb;
|
||||
text/css css;
|
||||
text/csv csv;
|
||||
text/csv-schema csvs;
|
||||
text/dns soa zone;
|
||||
text/html html htm;
|
||||
text/jcr-cnd cnd;
|
||||
text/markdown markdown md;
|
||||
text/mizar miz;
|
||||
text/n3 n3;
|
||||
text/plain txt asc text pm el c h cc hh cxx hxx f90 conf log;
|
||||
text/provenance-notation provn;
|
||||
text/prs.fallenstein.rst rst;
|
||||
text/prs.lines.tag tag dsc;
|
||||
text/richtext rtx;
|
||||
text/sgml sgml sgm;
|
||||
text/tab-separated-values tsv;
|
||||
text/troff t tr roff;
|
||||
text/turtle ttl;
|
||||
text/uri-list uris uri;
|
||||
text/vcard vcf vcard;
|
||||
text/vnd.a a;
|
||||
text/vnd.abc abc;
|
||||
text/vnd.ascii-art ascii;
|
||||
text/vnd.debian.copyright copyright;
|
||||
text/vnd.DMClientScript dms;
|
||||
text/vnd.dvb.subtitle sub;
|
||||
text/vnd.esmertec.theme-descriptor jtd;
|
||||
text/vnd.fly fly;
|
||||
text/vnd.fmi.flexstor flx;
|
||||
text/vnd.graphviz gv dot;
|
||||
text/vnd.in3d.3dml 3dml 3dm;
|
||||
text/vnd.in3d.spot spot spo;
|
||||
text/vnd.ms-mediapackage mpf;
|
||||
text/vnd.net2phone.commcenter.command ccc;
|
||||
text/vnd.si.uricatalogue uric;
|
||||
text/vnd.sun.j2me.app-descriptor jad;
|
||||
text/vnd.trolltech.linguist ts;
|
||||
text/vnd.wap.si si;
|
||||
text/vnd.wap.sl sl;
|
||||
text/vnd.wap.wml wml;
|
||||
text/vnd.wap.wmlscript wmls;
|
||||
text/xml xml xsd rng;
|
||||
text/xml-external-parsed-entity ent;
|
||||
video/3gpp 3gp 3gpp;
|
||||
video/3gpp2 3g2 3gpp2;
|
||||
video/iso.segment m4s;
|
||||
video/mj2 mj2 mjp2;
|
||||
video/mp4 mp4 mpg4 m4v;
|
||||
video/mpeg mpeg mpg mpe m1v m2v;
|
||||
video/ogg ogv;
|
||||
video/quicktime mov qt;
|
||||
video/vnd.dece.hd uvh uvvh;
|
||||
video/vnd.dece.mobile uvm uvvm;
|
||||
video/vnd.dece.mp4 uvu uvvu;
|
||||
video/vnd.dece.pd uvp uvvp;
|
||||
video/vnd.dece.sd uvs uvvs;
|
||||
video/vnd.dece.video uvv uvvv;
|
||||
video/vnd.dvb.file dvb;
|
||||
video/vnd.fvt fvt;
|
||||
video/vnd.mpegurl mxu m4u;
|
||||
video/vnd.ms-playready.media.pyv pyv;
|
||||
video/vnd.nokia.interleaved-multimedia nim;
|
||||
video/vnd.radgamettools.bink bik bk2;
|
||||
video/vnd.radgamettools.smacker smk;
|
||||
video/vnd.sealed.mpeg1 smpg s11;
|
||||
video/vnd.sealed.mpeg4 s14;
|
||||
video/vnd.sealed.swf sswf ssw;
|
||||
video/vnd.sealedmedia.softseal.mov smov smo s1q;
|
||||
video/vnd.vivo viv;
|
||||
application/mac-compactpro cpt;
|
||||
application/metalink+xml metalink;
|
||||
application/owl+xml owx;
|
||||
application/rss+xml rss;
|
||||
application/vnd.android.package-archive apk;
|
||||
application/vnd.oma.dd+xml dd;
|
||||
application/vnd.oma.drm.content dcf;
|
||||
application/vnd.oma.drm.dcf o4a o4v;
|
||||
application/vnd.oma.drm.message dm;
|
||||
application/vnd.oma.drm.rights+wbxml drc;
|
||||
application/vnd.oma.drm.rights+xml dr;
|
||||
application/vnd.sun.xml.calc sxc;
|
||||
application/vnd.sun.xml.calc.template stc;
|
||||
application/vnd.sun.xml.draw sxd;
|
||||
application/vnd.sun.xml.draw.template std;
|
||||
application/vnd.sun.xml.impress sxi;
|
||||
application/vnd.sun.xml.impress.template sti;
|
||||
application/vnd.sun.xml.math sxm;
|
||||
application/vnd.sun.xml.writer sxw;
|
||||
application/vnd.sun.xml.writer.global sxg;
|
||||
application/vnd.sun.xml.writer.template stw;
|
||||
application/vnd.symbian.install sis;
|
||||
application/vnd.wap.mms-message mms;
|
||||
application/x-annodex anx;
|
||||
application/x-bcpio bcpio;
|
||||
application/x-bittorrent torrent;
|
||||
application/x-bzip2 bz2;
|
||||
application/x-cdlink vcd;
|
||||
application/x-chrome-extension crx;
|
||||
application/x-cpio cpio;
|
||||
application/x-csh csh;
|
||||
application/x-director dcr dir dxr;
|
||||
application/x-dvi dvi;
|
||||
application/x-futuresplash spl;
|
||||
application/x-gtar gtar;
|
||||
application/x-hdf hdf;
|
||||
application/x-java-archive jar;
|
||||
application/x-java-jnlp-file jnlp;
|
||||
application/x-java-pack200 pack;
|
||||
application/x-killustrator kil;
|
||||
application/x-latex latex;
|
||||
application/x-netcdf nc cdf;
|
||||
application/x-perl pl;
|
||||
application/x-rpm rpm;
|
||||
application/x-sh sh;
|
||||
application/x-shar shar;
|
||||
application/x-stuffit sit;
|
||||
application/x-sv4cpio sv4cpio;
|
||||
application/x-sv4crc sv4crc;
|
||||
application/x-tar tar;
|
||||
application/x-tcl tcl;
|
||||
application/x-tex tex;
|
||||
application/x-texinfo texinfo texi;
|
||||
application/x-troff-man man 1 2 3 4 5 6 7 8;
|
||||
application/x-troff-me me;
|
||||
application/x-troff-ms ms;
|
||||
application/x-ustar ustar;
|
||||
application/x-wais-source src;
|
||||
application/x-xpinstall xpi;
|
||||
application/x-xspf+xml xspf;
|
||||
application/x-xz xz;
|
||||
audio/midi mid midi kar;
|
||||
audio/x-aiff aif aiff aifc;
|
||||
audio/x-annodex axa;
|
||||
audio/x-flac flac;
|
||||
audio/x-matroska mka;
|
||||
audio/x-mod mod ult uni m15 mtm 669 med;
|
||||
audio/x-mpegurl m3u;
|
||||
audio/x-ms-wax wax;
|
||||
audio/x-ms-wma wma;
|
||||
audio/x-pn-realaudio ram rm;
|
||||
audio/x-realaudio ra;
|
||||
audio/x-s3m s3m;
|
||||
audio/x-stm stm;
|
||||
audio/x-wav wav;
|
||||
chemical/x-xyz xyz;
|
||||
image/webp webp;
|
||||
image/x-cmu-raster ras;
|
||||
image/x-portable-anymap pnm;
|
||||
image/x-portable-bitmap pbm;
|
||||
image/x-portable-graymap pgm;
|
||||
image/x-portable-pixmap ppm;
|
||||
image/x-rgb rgb;
|
||||
image/x-targa tga;
|
||||
image/x-xbitmap xbm;
|
||||
image/x-xpixmap xpm;
|
||||
image/x-xwindowdump xwd;
|
||||
text/html-sandboxed sandboxed;
|
||||
text/x-pod pod;
|
||||
text/x-setext etx;
|
||||
video/webm webm;
|
||||
video/x-annodex axv;
|
||||
video/x-flv flv;
|
||||
video/x-javafx fxm;
|
||||
video/x-matroska mkv;
|
||||
video/x-matroska-3d mk3d;
|
||||
video/x-ms-asf asx;
|
||||
video/x-ms-wm wm;
|
||||
video/x-ms-wmv wmv;
|
||||
video/x-ms-wmx wmx;
|
||||
video/x-ms-wvx wvx;
|
||||
video/x-msvideo avi;
|
||||
video/x-sgi-movie movie;
|
||||
x-conference/x-cooltalk ice;
|
||||
x-epoc/x-sisx-app sisx;
|
||||
}
|
||||
79
configs/nginx/nginx.conf.mako
Normal file
79
configs/nginx/nginx.conf.mako
Normal file
@ -0,0 +1,79 @@
|
||||
worker_processes 4;
|
||||
|
||||
# error_log /tmp/kvmd-nginx.error.log;
|
||||
error_log stderr;
|
||||
|
||||
include /usr/share/kvmd/extras/*/nginx.ctx-main.conf;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
use epoll;
|
||||
multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
types_hash_max_size 4096;
|
||||
server_names_hash_bucket_size 128;
|
||||
|
||||
access_log off;
|
||||
|
||||
include /etc/kvmd/nginx/mime-types.conf;
|
||||
default_type application/octet-stream;
|
||||
charset utf-8;
|
||||
|
||||
sendfile on;
|
||||
tcp_nodelay on;
|
||||
tcp_nopush on;
|
||||
keepalive_timeout 10;
|
||||
client_max_body_size 4k;
|
||||
|
||||
client_body_temp_path /tmp/kvmd-nginx/client_body_temp;
|
||||
fastcgi_temp_path /tmp/kvmd-nginx/fastcgi_temp;
|
||||
proxy_temp_path /tmp/kvmd-nginx/proxy_temp;
|
||||
scgi_temp_path /tmp/kvmd-nginx/scgi_temp;
|
||||
uwsgi_temp_path /tmp/kvmd-nginx/uwsgi_temp;
|
||||
|
||||
include /etc/kvmd/nginx/kvmd.ctx-http.conf;
|
||||
include /usr/share/kvmd/extras/*/nginx.ctx-http.conf;
|
||||
|
||||
% if https_enabled:
|
||||
|
||||
server {
|
||||
listen ${http_port};
|
||||
% if ipv6_enabled:
|
||||
listen [::]:${http_port};
|
||||
% endif
|
||||
include /etc/kvmd/nginx/certbot.ctx-server.conf;
|
||||
location / {
|
||||
% if https_port == 443:
|
||||
return 301 https://$host$request_uri;
|
||||
% else:
|
||||
return 301 https://$host:${https_port}$request_uri;
|
||||
% endif
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen ${https_port} ssl http2;
|
||||
% if ipv6_enabled:
|
||||
listen [::]:${https_port} ssl http2;
|
||||
% endif
|
||||
include /etc/kvmd/nginx/ssl.conf;
|
||||
include /etc/kvmd/nginx/kvmd.ctx-server.conf;
|
||||
include /usr/share/kvmd/extras/*/nginx.ctx-server.conf;
|
||||
}
|
||||
|
||||
% else:
|
||||
|
||||
server {
|
||||
listen ${http_port};
|
||||
% if ipv6_enabled:
|
||||
listen [::]:${http_port};
|
||||
% endif
|
||||
include /etc/kvmd/nginx/certbot.ctx-server.conf;
|
||||
include /etc/kvmd/nginx/kvmd.ctx-server.conf;
|
||||
include /usr/share/kvmd/extras/*/nginx.ctx-server.conf;
|
||||
}
|
||||
|
||||
% endif
|
||||
}
|
||||
5
configs/nginx/ssl.conf
Normal file
5
configs/nginx/ssl.conf
Normal file
@ -0,0 +1,5 @@
|
||||
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
|
||||
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
|
||||
ssl_certificate /etc/kvmd/nginx/ssl/server.crt;
|
||||
ssl_certificate_key /etc/kvmd/nginx/ssl/server.key;
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
7
configs/os/boot-config/v0-hdmi-rpi2.txt
Normal file
7
configs/os/boot-config/v0-hdmi-rpi2.txt
Normal file
@ -0,0 +1,7 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743,i2c_pins_28_29=1
|
||||
8
configs/os/boot-config/v0-hdmi-rpi3.txt
Normal file
8
configs/os/boot-config/v0-hdmi-rpi3.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743
|
||||
dtoverlay=disable-bt
|
||||
8
configs/os/boot-config/v0-hdmi-zero2w.txt
Normal file
8
configs/os/boot-config/v0-hdmi-zero2w.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=96
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743,i2c_pins_28_29=1
|
||||
dtoverlay=disable-bt
|
||||
6
configs/os/boot-config/v0-hdmiusb-rpi2.txt
Normal file
6
configs/os/boot-config/v0-hdmiusb-rpi2.txt
Normal file
@ -0,0 +1,6 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
7
configs/os/boot-config/v0-hdmiusb-rpi3.txt
Normal file
7
configs/os/boot-config/v0-hdmiusb-rpi3.txt
Normal file
@ -0,0 +1,7 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
dtoverlay=disable-bt
|
||||
7
configs/os/boot-config/v0-hdmiusb-zero2w.txt
Normal file
7
configs/os/boot-config/v0-hdmiusb-zero2w.txt
Normal file
@ -0,0 +1,7 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
dtoverlay=disable-bt
|
||||
8
configs/os/boot-config/v1-hdmi-rpi2.txt
Normal file
8
configs/os/boot-config/v1-hdmi-rpi2.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743,i2c_pins_28_29=1
|
||||
dtoverlay=spi0-1cs
|
||||
9
configs/os/boot-config/v1-hdmi-rpi3.txt
Normal file
9
configs/os/boot-config/v1-hdmi-rpi3.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=spi0-1cs
|
||||
9
configs/os/boot-config/v1-hdmi-zero2w.txt
Normal file
9
configs/os/boot-config/v1-hdmi-zero2w.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=96
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743,i2c_pins_28_29=1
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=spi0-1cs
|
||||
7
configs/os/boot-config/v1-hdmiusb-rpi2.txt
Normal file
7
configs/os/boot-config/v1-hdmiusb-rpi2.txt
Normal file
@ -0,0 +1,7 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
dtoverlay=spi0-1cs
|
||||
8
configs/os/boot-config/v1-hdmiusb-rpi3.txt
Normal file
8
configs/os/boot-config/v1-hdmiusb-rpi3.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=spi0-1cs
|
||||
8
configs/os/boot-config/v1-hdmiusb-zero2w.txt
Normal file
8
configs/os/boot-config/v1-hdmiusb-zero2w.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=spi0-1cs
|
||||
9
configs/os/boot-config/v2-hdmi-rpi3.txt
Normal file
9
configs/os/boot-config/v2-hdmi-rpi3.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
9
configs/os/boot-config/v2-hdmi-rpi4.txt
Normal file
9
configs/os/boot-config/v2-hdmi-rpi4.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
9
configs/os/boot-config/v2-hdmi-zero2w.txt
Normal file
9
configs/os/boot-config/v2-hdmi-zero2w.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=96
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743,i2c_pins_28_29=1
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
8
configs/os/boot-config/v2-hdmiusb-rpi4.txt
Normal file
8
configs/os/boot-config/v2-hdmiusb-rpi4.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=16
|
||||
enable_uart=1
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
22
configs/os/boot-config/v3-hdmi-rpi4.txt
Normal file
22
configs/os/boot-config/v3-hdmi-rpi4.txt
Normal file
@ -0,0 +1,22 @@
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=tc358743
|
||||
dtoverlay=disable-bt
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
dtparam=act_led_gpio=13
|
||||
|
||||
# HDMI audio capture
|
||||
dtoverlay=tc358743-audio
|
||||
|
||||
# SPI (AUM)
|
||||
dtoverlay=spi0-1cs
|
||||
|
||||
# I2C (display)
|
||||
dtparam=i2c_arm=on
|
||||
|
||||
# Clock
|
||||
dtoverlay=i2c-rtc,pcf8563,wakeup-source
|
||||
21
configs/os/boot-config/v4mini-hdmi-rpi4.txt
Normal file
21
configs/os/boot-config/v4mini-hdmi-rpi4.txt
Normal file
@ -0,0 +1,21 @@
|
||||
# PiKVM
|
||||
# See /boot/overlays/README for all available options
|
||||
initramfs initramfs-linux.img followkernel
|
||||
|
||||
hdmi_force_hotplug=1
|
||||
gpu_mem=128
|
||||
enable_uart=1
|
||||
dtoverlay=disable-bt
|
||||
|
||||
# USB emulation
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
|
||||
# Video and audio
|
||||
dtoverlay=tc358743,4lane=1
|
||||
dtoverlay=tc358743-audio
|
||||
|
||||
# I2C (display)
|
||||
dtparam=i2c_arm=on
|
||||
|
||||
# Clock
|
||||
dtoverlay=i2c-rtc,pcf8563,wakeup-source
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user