# currently where is no own frontend, so we have to take NanoKVM UI FROM node:20-alpine as frontend ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME/bin:$PATH" RUN corepack enable RUN apk add --update python3 make g++ git && rm -rf /var/cache/apk/* COPY ./NanoKVM/web /web RUN cd /web && pnpm install && pnpm build RUN mv /web/dist /static #RUN git clone -b rkkvm https://github.com/argakon/nanokvm #RUN cd nanokvm/web && pnpm install && pnpm build #RUN mv nanokvm/web/dist /static FROM golang:alpine as backend RUN apk add --no-cache git COPY . /app WORKDIR /app RUN go mod download RUN go build -o ./bin/ ./cmd/... # we would use ffmpeg-rockchip from nyanmisaka with rockchip's mpp support FROM alpine as ffmpeg RUN apk add --no-cache \ autoconf \ automake \ g++ \ make \ gcc \ libc-dev \ libtool \ pkgconfig \ texinfo \ zlib-dev \ yasm \ coreutils \ nasm \ bash \ cmake \ git \ libdrm-dev ninja-build meson v4l-utils-dev wget build-base bsd-compat-headers musl-dev alsa-lib-dev libopusenc-dev \ libevent-dev libbsd-dev libjpeg-turbo-dev RUN mkdir -p ~/dev && cd ~/dev && \ #git clone -b jellyfin-mpp --depth=1 https://github.com/nyanmisaka/mpp.git rkmpp && \ git clone --depth=1 https://github.com/rockchip-linux/mpp.git rkmpp && \ cd rkmpp && mkdir rkmpp_build && cd rkmpp_build && \ sed -i '/#include /a #include ' ~/dev/rkmpp/mpp/vproc/vdpp/test/hwpq_test.cpp && \ cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TEST=OFF \ -DVDPP_TEST=OFF \ .. && \ make -j $(nproc) && \ make install RUN mkdir -p ~/dev && cd ~/dev && \ git clone -b jellyfin-rga --depth=1 https://github.com/nyanmisaka/rk-mirrors.git rkrga && \ sed -i '/#include "im2d_api\/im2d.h"/a #define mmap64 mmap' rkrga/core/RockchipRga.cpp && \ meson setup rkrga rkrga_build \ --prefix=/usr \ --libdir=lib \ --buildtype=release \ --default-library=shared \ -Dcpp_args=-fpermissive \ -Dlibdrm=false \ -Dlibrga_demo=false && \ meson configure rkrga_build && \ ninja -C rkrga_build install RUN mkdir -p ~/dev && cd ~/dev && \ git clone --depth=1 https://github.com/nyanmisaka/ffmpeg-rockchip.git ffmpeg && cd ffmpeg && \ ./configure --prefix=/usr --enable-indev=v4l2 --enable-gpl --enable-version3 --enable-libdrm --enable-rkmpp --enable-rkrga --enable-alsa --enable-libopus \ && \ make -j $(nproc) && make install ADD ./ustreamer /root/ustreamer RUN cd /root/ustreamer && \ sed -i '/#include /a #include ' src/ustreamer/s2drm.h && \ export WITH_PTHREAD_NP=0 && \ make && cp ustreamer / #RUN mkdir -p ~/dev && cd ~/dev && \ # git clone https://github.com/datrixs/datrix-ustreamer ustreamer && \ # sed -i '/#include /a #include ' ustreamer/src/ustreamer/s2drm.h && \ # export WITH_PTHREAD_NP=0 && \ # cd ustreamer && make && cp ustreamer / FROM alpine RUN apk add --no-cache portaudio alsa-utils \ libevent libjpeg-turbo libgpiod libbsd v4l-utils libdrm libopusenc COPY --from=frontend /static /app/static COPY --from=backend /app/bin/kvm /app/kvm COPY --from=ffmpeg /ustreamer /app/ustreamer COPY --from=ffmpeg /usr/lib/librga.* /usr/lib COPY --from=ffmpeg /usr/lib/librockchip_mpp.* /usr/lib COPY --from=ffmpeg /usr/bin/ffmpeg /app/ffmpeg COPY --from=ffmpeg /ustreamer /app/ustreamer COPY ./edid.hex /edid.hex #COPY ./edid-audio.hex /edid.hex #COPY ./edid-test.hex /edid.hex #COPY ./edid-dell.hex /edid.hex NV24 COPY ./entry.sh /entry.sh COPY ./hid.sh /hid.sh RUN chmod +x /entry.sh && chmod +x /hid.sh EXPOSE 8080 ENTRYPOINT ["/entry.sh"]