Namespace
m1k1o
Image / Tag
neko:opera
Content Digest
sha256:3b8ca22d0a69f9f01b2ee50049c4bed5157becba9bb52614c1db4fdfb6b432fd
Details
Created

2025-11-17 03:14:15 UTC

Size

679 MB

Content Digest
Labels
  • net.m1k1o.neko.api-version
    3
  • org.opencontainers.image.created
    2025-11-17T03:13:12.712Z
  • org.opencontainers.image.description
    A self hosted virtual browser that runs in docker and uses WebRTC.
  • org.opencontainers.image.licenses
    Apache-2.0
  • org.opencontainers.image.revision
    552e6225cff08fb2b3d7d6f237f74e51fc3ac7e6
  • org.opencontainers.image.source
    https://github.com/m1k1o/neko
  • org.opencontainers.image.title
    neko
  • org.opencontainers.image.url
    https://github.com/m1k1o/neko
  • org.opencontainers.image.version
    opera

Environment
DEBIAN_FRONTEND

noninteractive

DISPLAY

:99.0

NEKO_PLUGINS_DIR

/etc/neko/plugins/

NEKO_PLUGINS_ENABLED

true

NEKO_SERVER_BIND

:8080

PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PULSE_SERVER

unix:/tmp/pulseaudio.socket

USER

neko

XDG_RUNTIME_DIR

/tmp/runtime-neko


Layers

[#000] sha256:cf5f39ef3fca9730ed04aee5f10040ea152a9793dec0d626f4205eeac5ec3fc0 - 4.25% (28.9 MB)

[#001] sha256:e8673970cb3eadbeea276b8b4ae27156ea00c043a067de2b1944af5d2e1c9467 - 46.98% (319 MB)

[#002] sha256:aa0fb254c0ae9ae524c2096e51e1abb85f21980ba0aa13d0651e3b017d3a360f - 0.0% (182 Bytes)

[#003] sha256:e5c7cf81afea356dca4d925ccd108740f0def22d907ac5597bfefe0b35bd525d - 0.0% (271 Bytes)

[#004] sha256:6bfa178b69f9558595bb24c7aa5665ba327077691ad7a65b1256c3b66e774b6c - 0.0% (512 Bytes)

[#005] sha256:739496b6486260e4d2923d9621a73012bb5819faffbf352457fa9e6ab47da0ef - 0.0% (673 Bytes)

[#006] sha256:c7d17e4606334a0d487b3b39cc7f762dfc78d42461be4fba9507b18e73571c8a - 0.0% (321 Bytes)

[#007] sha256:cc8c3234d3b41b007ec0e3adc34fee1507f1588f515ab5f53746c701520b94e6 - 0.0% (1.76 KB)

[#008] sha256:9b17a22637b610948372cbeec993306e8507b444073c8d372e0400b76aba2d43 - 0.0% (191 Bytes)

[#009] sha256:22411b094d4fa4a1ba75ef84b14adcc2d1e22efe46d454ca9a28003aec1c634d - 0.0% (692 Bytes)

[#010] sha256:170a415f0066366949a28d23cec38799eaa1b0af97086844cbfbc9ddde9bade0 - 0.0% (195 Bytes)

[#011] sha256:d9cf9acb56c865f54194acb3b38aea1cbcffd887640b1e60e520055a649790db - 0.0% (138 Bytes)

[#012] sha256:600ab83e2ed45007ea90ce188237a5511fe920b5b7840b4423a62876d49fc6bf - 1.43% (9.7 MB)

[#013] sha256:1d6bbdf7fca5e00c2869af94b2df006b67926eb5f0b7837fce6b34088cfd1b3d - 0.79% (5.33 MB)

[#014] sha256:c006ac41cea556395cf1260068993094da0965b6ace1fc2b2702f4c16b8f688c - 0.01% (65.4 KB)

[#015] sha256:4e4c116974b5afb40853fbed29967f921967e0b1b615cb891d3cefb22077b064 - 0.0% (25.1 KB)

[#016] sha256:c190bab289931e0496095f4e3248fa77583ad5e4f7a2db7435b0da112cd6015a - 0.0% (361 Bytes)

[#017] sha256:9af4937b9a69613db88190b314a7d66b5bdb8417bcaedd752bf88767db492000 - 46.54% (316 MB)

[#018] sha256:c06c17331b73828516ba0b1334f7b5b7b6c9ec53222b5c0b364ed3dcda175b77 - 0.0% (472 Bytes)

[#019] sha256:1d94bcf36143811d73bff7b7da582e640fc60529988be1c4fbec38b6c4a64a51 - 0.0% (5.49 KB)


History
2025-11-03 20:44:10 UTC (debuerreotype 0.16)

# debian.sh --arch 'amd64' out/ 'bullseye' '@1762202650'

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ARG USERNAME=neko

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ARG USER_UID=1000

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ARG USER_GID=1000

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV DEBIAN_FRONTEND=noninteractive

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

RUN |3 USERNAME=neko USER_UID=1000 USER_GID=1000 /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends wget ca-certificates python2 supervisor pulseaudio dbus-x11 xserver-xorg-video-dummy libcairo2 libxcb1 libxrandr2 libxv1 libopus0 libvpx6 zip curl xdotool xclip libgtk-3-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-pulseaudio gstreamer1.0-omx; ARCH=$(dpkg --print-architecture); wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_${ARCH}.deb; apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_${ARCH}.deb; rm ./libxcvt0_0.1.2-1_${ARCH}.deb; groupadd --gid $USER_GID $USERNAME; useradd --uid $USER_UID --gid $USERNAME --shell /bin/bash --create-home $USERNAME; adduser $USERNAME audio; adduser $USERNAME video; adduser $USERNAME pulse; mkdir /tmp/.X11-unix; chmod 1777 /tmp/.X11-unix; chown $USERNAME /tmp/.X11-unix/; mkdir -p /etc/neko /var/www /var/log/neko /tmp/runtime-$USERNAME /home/$USERNAME/.config/pulse /home/$USERNAME/.local/share/xorg; chmod 1777 /var/log/neko; chown $USERNAME /var/log/neko/ /tmp/runtime-$USERNAME; chown -R $USERNAME:$USERNAME /home/$USERNAME; apt-get install -y --no-install-recommends fonts-noto-color-emoji fonts-arphic-ukai fonts-arphic-uming fonts-wqy-zenhei xfonts-intl-chinese xfonts-wqy fonts-ipafont-mincho fonts-ipafont-gothic fonts-takao-mincho fonts-unfonts-core fonts-wqy-microhei fonts-indic; apt-get clean -y; rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY --chown=neko:neko runtime/.Xresources /home/neko/.Xresources # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/dbus /usr/bin/dbus # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/default.pa /etc/pulse/default.pa # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/supervisord.conf /etc/neko/supervisord.conf # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/supervisord.dbus.conf /etc/neko/supervisord.dbus.conf # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/xorg.conf /etc/neko/xorg.conf # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY --chown=neko:neko runtime/icon-theme /home/neko/.icons/default # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/fontconfig/* /etc/fonts/conf.d/ # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

COPY runtime/fonts /usr/local/share/fonts # buildkit

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV USER=neko

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV DISPLAY=:99.0

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV PULSE_SERVER=unix:/tmp/pulseaudio.socket

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV XDG_RUNTIME_DIR=/tmp/runtime-neko

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV NEKO_SERVER_BIND=:8080

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV NEKO_PLUGINS_ENABLED=true

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

ENV NEKO_PLUGINS_DIR=/etc/neko/plugins/

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

HEALTHCHECK &{["CMD-SHELL" "wget -O - http://localhost:${NEKO_SERVER_BIND#*:}/health || wget --no-check-certificate -O - https://localhost:${NEKO_SERVER_BIND#*:}/health || exit 1"] "10s" "5s" "0s" "0s" '\b'}

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

CMD ["/usr/bin/supervisord" "-c" "/etc/neko/supervisord.conf"]

2025-11-17 03:09:31 UTC (buildkit.dockerfile.v0)

LABEL net.m1k1o.neko.api-version=3

2025-11-17 03:10:03 UTC (buildkit.dockerfile.v0)

COPY /src/bin/plugins/ /etc/neko/plugins/ # buildkit

2025-11-17 03:10:03 UTC (buildkit.dockerfile.v0)

COPY /src/bin/neko /usr/bin/neko # buildkit

2025-11-17 03:10:06 UTC (buildkit.dockerfile.v0)

COPY /src/dist/ /var/www # buildkit

2025-11-17 03:10:06 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/xorg/modules/drivers/dummy_drv.so /usr/lib/xorg/modules/drivers/dummy_drv.so # buildkit

2025-11-17 03:10:06 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/xorg/modules/input/neko_drv.so /usr/lib/xorg/modules/input/neko_drv.so # buildkit

2025-11-17 03:10:06 UTC (buildkit.dockerfile.v0)

COPY config.yml /etc/neko/neko.yaml # buildkit

2025-11-17 03:14:15 UTC (buildkit.dockerfile.v0)

ARG API_URL=https://download5.operacdn.com/pub/opera/desktop/

2025-11-17 03:14:15 UTC (buildkit.dockerfile.v0)

ARG LIBFFMPEG_API_URL=https://api.github.com/repos/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/latest

2025-11-17 03:14:15 UTC (buildkit.dockerfile.v0)

RUN |2 API_URL=https://download5.operacdn.com/pub/opera/desktop/ LIBFFMPEG_API_URL=https://api.github.com/repos/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/latest /bin/sh -c set -eux; apt-get update; VERSIONS="$(wget -O - "${API_URL}" 2>/dev/null | sed -n 's/.*href="\([^"/]*\).*/\1/p' | sort --version-sort -r | head -n 10)"; VERSION=""; for v in $VERSIONS; do if wget --spider "${API_URL}${v}/linux/opera-stable_${v}_amd64.deb" 2>/dev/null; then VERSION="$v"; break; fi; done; if [ -z "$VERSION" ]; then echo "No Opera version with Linux package found"; exit 1; fi; echo "Using Opera version: $VERSION"; wget -O /tmp/opera.deb "${API_URL}${VERSION}/linux/opera-stable_${VERSION}_amd64.deb"; apt-get install -y --no-install-recommends openbox jq unzip /tmp/opera.deb; LIBFFMPEG_URL="$(wget -O - "${LIBFFMPEG_API_URL}" 2>/dev/null | jq -r "[.assets[] | select(.browser_download_url | contains(\"linux-x64.zip\"))][-1] | .browser_download_url")"; wget -O /tmp/libffmpeg.zip $LIBFFMPEG_URL; unzip -o /tmp/libffmpeg.zip libffmpeg.so -d /usr/lib/x86_64-linux-gnu/opera/lib_extra; echo '[]' > /usr/lib/x86_64-linux-gnu/opera/resources/ffmpeg_preload_config.json; apt-get --purge autoremove -y unzip jq; apt-get clean -y; rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit

2025-11-17 03:14:15 UTC (buildkit.dockerfile.v0)

COPY supervisord.conf /etc/neko/supervisord/opera.conf # buildkit

2025-11-17 03:14:15 UTC (buildkit.dockerfile.v0)

COPY openbox.xml /etc/neko/openbox.xml # buildkit

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete