diff --git a/.m1k1o/build b/.m1k1o/build index c342a7f..5243d78 100755 --- a/.m1k1o/build +++ b/.m1k1o/build @@ -25,11 +25,21 @@ build_chromium() { docker build -t m1k1o/neko:chromium -f chromium/Dockerfile chromium/ } +build_xfce() { + docker build -t m1k1o/neko:xfce -f xfce/Dockerfile xfce/ +} + +build_vlc() { + docker build -t m1k1o/neko:vlc -f vlc/Dockerfile vlc/ +} + case $1 in client) build_client;; serve) build_server;; base) build_base;; firefox) build_firefox;; chromium) build_chromium;; + xfce) build_xfce;; + vlc) build_vlc;; *) echo "Unknown $1";; esac diff --git a/.m1k1o/vlc/Dockerfile b/.m1k1o/vlc/Dockerfile new file mode 100644 index 0000000..c9dccb1 --- /dev/null +++ b/.m1k1o/vlc/Dockerfile @@ -0,0 +1,17 @@ +FROM m1k1o/neko:base + +# +# install vlc +RUN set -eux; apt-get update; \ + apt-get install -y --no-install-recommends openbox vlc; \ + # + # clean up + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +ENV VLC_MEDIA="/media" + +# +# copy configuation files +COPY supervisord.conf /etc/neko/supervisord/vlc.conf +COPY openbox.xml /etc/neko/openbox.xml diff --git a/.m1k1o/vlc/openbox.xml b/.m1k1o/vlc/openbox.xml new file mode 100644 index 0000000..6b0339c --- /dev/null +++ b/.m1k1o/vlc/openbox.xml @@ -0,0 +1,763 @@ + + + + + + + + 10 + 20 + + + + + + no + true + yes + normal + + + + + yes + + no + + yes + + no + + 200 + + no + + + + + Smart + +
yes
+ + Primary + + 1 + +
+ + + Clearlooks + NLIMC + + yes + yes + + sans + 8 + + bold + + normal + + + + sans + 8 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + sans + 9 + + bold + + normal + + + + + + + 1 + 1 + + + + 875 + + + + + yes + Nonpixel + + Center + + + + + 10 + + 10 + + + + + + + 0 + 0 + 0 + 0 + + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + + C-g + + + + leftno + + + rightno + + + upno + + + downno + + + leftno + + + rightno + + + upno + + + downno + + + 1 + + + 2 + + + 3 + + + 4 + + + + + + + + + + + + + + + + + + + + scrot -s + + + + + + + + + + + + + + + + + + + + + + + + yesyes + + + + + + + + + + + + right + + + + + left + + + + + up + + + + + down + + + + + + + + true + Konqueror + + kfmclient openProfile filemanagement + + + + + scrot + + + + + 1 + + 500 + + 400 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + left + + + + + + right + + + + + + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertical + + + horizontal + + + + + + + + + + + + + + + + + previous + + + next + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + yes + + yes + + + + + + + +
diff --git a/.m1k1o/vlc/supervisord.conf b/.m1k1o/vlc/supervisord.conf new file mode 100644 index 0000000..f219e95 --- /dev/null +++ b/.m1k1o/vlc/supervisord.conf @@ -0,0 +1,21 @@ +[program:vlc] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/vlc --x11-display=%(ENV_DISPLAY)s --no-qt-privacy-ask %(ENV_VLC_MEDIA)s +autorestart=true +priority=800 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/vlc.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:openbox] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/openbox --config-file /etc/neko/openbox.xml +autorestart=true +priority=300 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/openbox.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true diff --git a/.m1k1o/xfce/Dockerfile b/.m1k1o/xfce/Dockerfile new file mode 100644 index 0000000..6c7da06 --- /dev/null +++ b/.m1k1o/xfce/Dockerfile @@ -0,0 +1,19 @@ +FROM m1k1o/neko:base + +# +# install xfce +RUN set -eux; apt-get update; \ + apt-get install -y --no-install-recommends xfce4 xfce4-terminal sudo; \ + # + # add user to sudoers + usermod -aG sudo neko; \ + echo "neko:neko" | chpasswd; \ + echo "%sudo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ + # clean up + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +# +# copy configuation files +COPY supervisord.conf /etc/neko/supervisord/xfce.conf + diff --git a/.m1k1o/xfce/supervisord.conf b/.m1k1o/xfce/supervisord.conf new file mode 100644 index 0000000..c7664aa --- /dev/null +++ b/.m1k1o/xfce/supervisord.conf @@ -0,0 +1,11 @@ +[program:xfce] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/startxfce4 +autorestart=true +priority=500 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/xfce.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + diff --git a/README.md b/README.md index 13d762a..35dcfa3 100644 --- a/README.md +++ b/README.md @@ -58,12 +58,17 @@ For n.eko room management software visit https://github.com/m1k1o/neko-rooms. - Added `m1k1o/neko:vncviewer` tag, use `NEKO_VNC_URL` to specify VNC target and use n.eko as a bridge. - Abiltiy to include neko as a component in another Vue.Js project (by @gbrian). - Added HEALTHCHECK to Dockerfile. +- Added `m1k1o/neko:vlc` tag, use VLC to watch local files together (by @mbattista). +- Added `m1k1o/neko:xfce` tag, as an non video related showcase (by @mbattista). # Getting started & FAQ Use following docker images: - `m1k1o/neko:latest` - for Firefox. - `m1k1o/neko:chromium` - for Chromium Ungoogled (needs `--cap-add=SYS_ADMIN`). +- `m1k1o/neko:vncviewer` - for simple VNC viewer (specify `NEKO_VNC_URL` to your VNC target). +- `m1k1o/neko:vlc` - for VLC Video player (needs volume mounted to `/media` with local video files, or setting `VLC_MEDIA=/media` path). +- `m1k1o/neko:xfce` - for an shared desktop / installing shared software. - `m1k1o/neko:base` - for custom base. Networking: @@ -138,8 +143,90 @@ services: NEKO_NAT1TO1: ``` +## VLC + +```yaml +version: "3.4" +services: + neko: + image: "m1k1o/neko:vlc" + restart: "unless-stopped" + shm_size: "2gb" + volumes: + - ":/video" + ports: + - "8080:8080" + - "52000-52100:52000-52100/udp" + cap_add: + - SYS_ADMIN + environment: + NEKO_SCREEN: '1920x1080@30' + NEKO_PASSWORD: neko + NEKO_PASSWORD_ADMIN: admin + NEKO_EPR: 52000-52100 + NEKO_NAT1TO1: +``` + ## Mobile support Neko is now working on iOS and Android! Also, the UI screens have been fixed for small screens. ![mobile-screens](https://i.imgur.com/K9gfscU.png) + +## Docker-Compose Enviroment Options + +```code +NEKO_SCREEN: + - Resolution after startup. Only Admins can change this later. + - e.g. '1920x1080@30' +NEKO_PASSWORD: + - Password for the user login + - e.g. 'user_password' +NEKO_PASSWORD_ADMIN + - Password for the admin login + - e.g. 'admin_password' +NEKO_EPR: + - For WebRTC needed range of ports + - e.g. 52000-52100 +NEKO_VP8: + - If vp8 should be used as video encoder for the stream (default encoder) + - e.g. 'true' +NEKO_VP9: + - If vp9 should be used as video encoder for the stream (Parameter not optimized yet) + - e.g. 'false' +NEKO_H264: + - If h264 should be used as video encoder for the stream (second best option) + - e.g. 'false' +NEKO_VIDEO_BITRATE: + - Bitrate of the video stream in kb/s + - e.g. 3500 +NEKO_VIDEO: + - Makes it possible to create custom gstreamer pipelines. With this you could find the best quality for your CPU + - Installed are gstreamer1.0-plugins-base / gstreamer1.0-plugins-good / gstreamer1.0-plugins-bad / gstreamer1.0-plugins-ugly + - e.g. ' ximagesrc display-name=%s show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! video/x-raw,format=NV12 ! x264enc threads=4 bitrate=3500 key-int-max=60 vbv-buf-capacity=4000 byte-stream=true tune=zerolatency speed-preset=veryfast ! video/x-h264,stream-format=byte-stream ' +NEKO_MAX_FPS: + - The resulting stream frames per seconds should be capped (0 for uncapped) + - e.g. 0 +NEKO_OPUS: + - If opus should be used as audio encoder for the stream (default encoder) + - e.g. 'true' +NEKO_G722: + - If g722 should be used as audio encoder for the stream + - e.g. 'false' +NEKO_PCMU: + - If pcmu should be used as audio encoder for the stream + - e.g. 'false' +NEKO_PCMA: + - If pcma should be used as audio encoder for the stream + - e.g. 'false' +NEKO_AUDIO_BITRATE: + - Bitrate of the audio stream in kb/s + - e.g. 196 +NEKO_CERT: + - Path to the SSL-Certificate + - e.g. '/certs/cert.pem' +NEKO_KEY: + - Path to the SSL-Certificate private key + - e.g. '/certs/key.pem' + +```