이 소스는 읽기 전용 시스템 계층을 데스크톱 배포판으로 바꾸려 하기보다 ZimaOS를 어플라이언스 호스트로 사용하는 좋은 예입니다. ZimaOS에는 일반적인 apt 환경이나 내장 X.Org 데스크톱을 사용하는 대신, 작성자는 전체 키오스크 스택을 Docker 내부에 구축했습니다. 디스플레이용 Debian + X.Org + Chromium과 로컬 대시보드용 소형 nginx 컨테이너를 함께 사용합니다.
그 결과 ZimaBoard 2 1664에 연결된 작동하는 22인치 터치스크린 키오스크가 완성되었습니다. 이는 IceWhale이 지원하는 데스크톱 모드가 아니라 커뮤니티 고급 빌드입니다. 호스트 네트워킹, 직접 그래픽/입력 액세스, 권한이 있는 키오스크 컨테이너를 사용하므로, 사용자는 이를 그대로 복사하기 전에 보안 및 장치 액세스의 장단점을 이해해야 합니다.
키오스크는 Docker 내부에서 데스크톱 스택을 실행합니다
소스 Dockerfile은 Debian Bookworm Slim을 기반으로 하며 X.Org, libinput, Openbox, Chromium, X11 유틸리티, 글꼴, Mesa를 설치합니다. 호스트는 ZimaOS로 유지되고 그래픽 사용자 공간은 컨테이너 내부에 존재합니다.
이는 ZimaOS 어플라이언스 모델이 권장하도록 설계된 워크로드 격리의 전형적인 사례입니다.
Intel GPU는 키오스크 컨테이너에 노출됩니다
이 가이드에서는 X.Org의 modesetting 드라이버를 사용하고 Intel DRM 장치를 컨테이너에 전달합니다. 작성자는 ZimaBoard 2에 사용된 N100 그래픽 스택에 필요한 Mesa 지원을 받으려면 Bookworm 백포트가 필요하다는 점을 확인했습니다.
현재 ZimaBoard 2 하드웨어는 Intel N150을 사용하므로, 이 가이드를 재현하는 사용자는 과거의 N100 세부 사항이 동일하다고 가정하지 말고 현재 Mesa/X.Org 지원을 검증해야 합니다.
터치 입력은 호스트 입력/Udev 계층을 통해 전달됩니다
디스플레이 신호에는 HDMI/miniDP를 사용하고 터치스크린 컨트롤러는 USB로 연결했습니다. 이 가이드에서는 /proc/bus/input/devicesX.Org에서 올바른 이벤트 장치를 매핑하고 /run/udev 컨테이너가 입력 하드웨어를 식별할 수 있도록 합니다.
별도의 nginx 컨테이너가 대시보드를 제공합니다
소스는 실행됩니다 nginx:alpine ZimaOS에서 사용하지 않는 포트(예시에서는 8888)로 연결하고 대시보드 파일을 읽기 전용으로 마운트합니다. Chromium은 키오스크 모드에서 해당 로컬 URL을 엽니다.
별도의 웹 컨테이너를 사용하면 그래픽 컨테이너를 다시 빌드하지 않고도 대시보드 파일을 쉽게 업데이트할 수 있습니다.
대시보드에 ZimaOS 포트 80을 재사용하지 마세요
가이드에는 ZimaOS가 이미 대시보드에 포트 80을 사용한다고 명시되어 있습니다. Chromium이 잘못된 페이지를 열면 사용자 지정 대시보드의 포트와 다음 항목을 확인하세요. KIOSK_URL ZimaOS를 예기치 않게 변경하는 대신 값을 사용합니다.
작성자는 터치 탭을 위한 포인터 이벤트 해결 방법을 추가했습니다
소스 대시보드에서는 손가락이 조금만 움직여도 Chromium이 기존 방식의 클릭 이벤트를 발생시키지 않을 수 있었습니다. onclick 핸들러. 작성자는 다음과 같이 클릭 처리를 대체했습니다. pointerup 움직임 임계값도 함께 사용합니다.
해당 JavaScript는 애플리케이션에만 해당합니다. 터치용으로 설계된 최신 웹 인터페이스에서는 인라인 코드를 전역적으로 실행하는 대신 포인터/터치 친화적인 컨트롤을 사용해야 합니다. onclick 문자열.
권한 모드는 가장 큰 보안상의 절충점입니다
소스는 키오스크 컨테이너를 다음 설정으로 실행합니다. --privileged이 설정은 광범위한 장치 및 호스트 커널 액세스를 제공하므로 일반적인 대시보드 컨테이너보다 훨씬 더 허용적입니다.
빌드를 재현한다면 먼저 명시적인 설정이 필요한지 테스트하세요. /dev/dri입력 장치 및 udev 마운트와 범위를 좁힌 기능만으로 충분합니다. 대시보드는 신뢰할 수 있는 LAN에서 운영하세요.
소스는 자동 복구를 위해 unless-stopped를 사용합니다
nginx 컨테이너와 키오스크 컨테이너 모두 다음을 사용합니다. restart: unless-stopped ZimaOS 재부팅 후 디스플레이가 다시 표시되도록 동작을 구성합니다. Dockerfile, X.Org 구성, 엔트리포인트 및 대시보드를 영구 스토리지 아래에 저장하세요. /DATA 스토리지.
현재 ZimaOS에서는 Compose를 사용해 더 재현성 있게 패키징할 수 있습니다
현재 ZimaOS는 표준 Docker Compose/YAML 가져오기를 지원합니다. 여러 개의 긴 구성을 유지하는 대신 docker run 고급 사용자는 검토된 하나의 Compose 파일에서 두 서비스, 재시작 정책, 장치, 볼륨 및 네트워킹을 모두 지정할 수 있습니다.
현재 ZimaOS Compose 모델을 사용하세요.
터치스크린 키오스크 FAQ
ZimaOS를 사용하려면 호스트에 apt나 데스크톱 환경을 설치해야 하나요?
아니요. 소스는 의도적으로 X.Org, Openbox, Mesa, Chromium을 Docker 내부에 유지합니다.
이것은 공식 ZimaOS 데스크톱 모드인가요?
아니요. IceWhale이 출처를 밝히고 공유할 수 있도록 허가를 요청한 커뮤니티 빌드입니다.
키오스크 컨테이너가 일반 앱에 비해 위험도가 높은 이유는 무엇인가요?
소스는 여기에 권한 모드와 그래픽/입력 장치에 대한 직접 액세스를 부여하므로 Docker 격리 수준이 낮아집니다.
