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
+
+
+
+
+
+
+
+
+
+
+
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'
+
+```