Merge remote-tracking branch 'origin/dev'

This commit is contained in:
mofeng-git 2024-09-06 18:29:52 +08:00
commit 6d1002a80b
689 changed files with 81560 additions and 10886 deletions

19
.bumpversion.cfg Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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/

View File

@ -1,15 +0,0 @@
更新日志
- V0.61对于用户KVMD主程序从3.198升级至3.291Ustreamer升级至6.12Linux内核升级至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.1PiKVM在玩客云上初步运行。

16
LICENSE
View File

@ -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
<<<<<<< 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
View 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
View 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

View File

@ -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/adminhttps://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历史**
[![Star 历史](https://api.star-history.com/svg?repos=mofeng-git/One-KVM&type=Date)](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

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

1
babel.cfg Normal file
View File

@ -0,0 +1 @@
[python: kvmd/**.py]

96
build/Dockerfile Normal file
View 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
View 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
View File

@ -0,0 +1,3 @@
PIKVM_MODEL=docker_model
PIKVM_VIDEO=docker_video
PIKVM_BOARD=docker_board

58
build/supervisord.conf Normal file
View 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

View 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

View File

@ -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
View File

@ -0,0 +1 @@
Docker

View File

@ -0,0 +1 @@
docker1000000000

18
configs/janus/janus.jcfg Normal file
View 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
}

View File

@ -0,0 +1,7 @@
video: {
sink = "kvmd::ustreamer::h264"
}
audio: {
device = "hw:0,0"
tc358743 = "/dev/kvmd-video"
}

View File

@ -0,0 +1,4 @@
general: {
ws = true
ws_unix = "/run/kvmd/janus-ws.sock"
}

1
configs/kvmd/auth.yaml Normal file
View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,16 @@
00FFFFFFFFFFFF0031D8717701010101
231A010380351E780E0565A756529C27
0F50543FED00B300A9C0950090408180
814081C0714FEE2C80A070381A403020
3500404421000002000000FF00434146
45424142452020202020000000FD0032
4B0F5211000A202020202020000000FC
0050694B564D2056330A20202020012B
020317314A049F13223E213D203C0167
030C001000802DEE2C80A070381A4030
203500404421000002011D007251D01E
206E2835000F282100001E0000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
000000000000000000000000000000CD

View 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
View 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
View 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
View 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
View File

@ -0,0 +1,16 @@
00FFFFFFFFFFFF0031D8717701010101
231A010380351E780E0565A756529C27
0F50543FED00B300A9C0950090408180
814081C0714F011D007251D01E206E28
55000F282100001E000000FF00434146
45424142452020202020000000FD0032
4B0F5211000A202020202020000000FC
0050694B564D2056330A202020200143
020317314A841F13223E213D203C0167
030C001000802D011D007251D01E206E
2855000F282100001E00000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000015

View File

@ -0,0 +1,16 @@
00FFFFFFFFFFFF0031D8727701010101
231A010380351E780E0565A756529C27
0F50543FED00B300A9C0950090408180
814081C0714F023A801871382D40582C
45000F282100001E000000FF00434146
45424142452020202020000000FD0032
4B0F5211000A202020202020000000FC
0050694B564D205634204D696E690145
020320714B90041F13223E213D203C01
67030C001000802D23097F0783010000
023A801871382D40582C45000F282100
001E011D007251D01E206E2855000F28
2100001E023A80D072382D40102C4580
0F282100001E283C80A070B023403020
360006442100001A0000000000000000
00000000000000000000000000000030

View File

@ -0,0 +1,16 @@
00FFFFFFFFFFFF0031D8737701010101
231A010380351E780E0565A756529C27
0F50543FED00B300A9C0950090408180
814081C0714F023A801871382D40582C
45000F282100001E000000FF00434146
45424142452020202020000000FD0032
4B0F5211000A202020202020000000FC
0050694B564D20563420506C7573012D
020320714B90041F13223E213D203C01
67030C001000802D23097F0783010000
023A801871382D40582C45000F282100
001E011D007251D01E206E2855000F28
2100001E023A80D072382D40102C4580
0F282100001E283C80A070B023403020
360006442100001A0000000000000000
00000000000000000000000000000030

View File

@ -0,0 +1,4 @@
[server]
unix = /run/kvmd/fan.sock
unix_rm = 1
unix_mode = 666

View 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

View 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
View File

@ -0,0 +1 @@
admin:$apr1$.6mu9N8n$xOuGesr4JZZkdiZo/j318.

14
configs/kvmd/ipmipasswd Normal file
View 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
View 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

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View 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"

View File

@ -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:

View 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"

View 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"

View 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

View 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
View 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: {}

View 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
View File

12
configs/kvmd/vncpasswd Normal file
View 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
View File

@ -0,0 +1 @@
/* Here you can customize the Web UI */

View 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;
}

View 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;
}

View 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;
}

View File

@ -0,0 +1,4 @@
limit_rate 6250k;
limit_rate_after 50k;
client_max_body_size 0;
proxy_request_buffering off;

View File

@ -0,0 +1,2 @@
error_page 401 = @login;
error_page 403 = @login;

View File

@ -0,0 +1,3 @@
postpone_output 0;
proxy_buffering off;
proxy_ignore_headers X-Accel-Buffering;

View 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;

View 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;

View 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;

View 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;
}

View 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
View 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;

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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