diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4194e8e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM tiryoh/ros-desktop-vnc:noetic + +ENV DEBCONF_NOWARNINGS=yes +ENV DEBIAN_FRONTEND noninteractive +ENV ROS_PYTHON_VERSION 3 +SHELL ["/bin/bash", "-c"] + +RUN sed -i 's@archive.ubuntu.com@ftp.jaist.ac.jp/pub/Linux@g' /etc/apt/sources.list && \ + apt-get update && \ + apt-get upgrade -y && \ + apt-get install --no-install-recommends -y \ + build-essential \ + dkms wget git \ + python3-dev python3-pip libglib2.0-dev \ + libbluetooth-* \ + libsdl1.2-dev \ + libsdl-image1.2-dev \ + libsdl-mixer1.2-dev \ + libsdl-ttf2.0-dev \ + libsdl-gfx1.2-dev \ + bluez* blueman \ + openssh-server && \ + apt-get autoremove -y && \ + apt-get -y clean && \ + rm -rf /var/lib/apt/lists/* && \ + mkdir -p /var/run/sshd && \ + echo 'root:kobaken' | chpasswd && \ + sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \ + sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd && \ + cd /home/ubuntu && \ + git clone https://github.com/wiiuse/wiiuse.git && \ + pip3 install bluepy datetime && \ + cd /home/ubuntu/wiiuse && \ + mkdir build && \ + cd build && \ + cmake .. && \ + make + +EXPOSE 22 + +COPY ./startup.sh /startup.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..ce81f6d --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +docker build --rm -t wiiuse . diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..5d5ffd7 --- /dev/null +++ b/run.sh @@ -0,0 +1 @@ +docker run --net=host --rm -p 6080:80 -p 2222:22 --shm-size=512m -e HOME=/home/ubuntu -e SHELL=/bin/bash --entrypoint '/startup.sh' wiiuse diff --git a/startup.sh b/startup.sh new file mode 100755 index 0000000..7e42289 --- /dev/null +++ b/startup.sh @@ -0,0 +1,71 @@ +#!/bin/bash +sudo /usr/sbin/sshd -D & +if [ -n "$VNC_PASSWORD" ]; then + echo -n "$VNC_PASSWORD" > /.password1 + x11vnc -storepasswd $(cat /.password1) /.password2 + chmod 400 /.password* + sed -i 's/^command=x11vnc.*/& -rfbauth \/.password2/' /etc/supervisor/conf.d/supervisord.conf + export VNC_PASSWORD= +fi + +if [ -n "$X11VNC_ARGS" ]; then + sed -i "s/^command=x11vnc.*/& ${X11VNC_ARGS}/" /etc/supervisor/conf.d/supervisord.conf +fi + +if [ -n "$OPENBOX_ARGS" ]; then + sed -i "s#^command=/usr/bin/openbox.*#& ${OPENBOX_ARGS}#" /etc/supervisor/conf.d/supervisord.conf +fi + +if [ -n "$RESOLUTION" ]; then + sed -i "s/1024x768/$RESOLUTION/" /usr/local/bin/xvfb.sh +fi + +USER=${USER:-root} +HOME=/root +if [ "$USER" != "root" ]; then + echo "* enable custom user: $USER" + useradd --create-home --shell /bin/bash --user-group --groups adm,sudo $USER + if [ -z "$PASSWORD" ]; then + echo " set default password to \"ubuntu\"" + PASSWORD=ubuntu + fi + HOME=/home/$USER + echo "$USER:$PASSWORD" | chpasswd + cp -r /root/{.gtkrc-2.0,.asoundrc} ${HOME} + [ -d "/dev/snd" ] && chgrp -R adm /dev/snd +fi +sed -i -e "s|%USER%|$USER|" -e "s|%HOME%|$HOME|" /etc/supervisor/conf.d/supervisord.conf + +# home folder +mkdir -p $HOME/.config/pcmanfm/LXDE/ +ln -sf /usr/local/share/doro-lxde-wallpapers/desktop-items-0.conf $HOME/.config/pcmanfm/LXDE/ +chown -R $USER:$USER $HOME + +# nginx workers +sed -i 's|worker_processes .*|worker_processes 1;|' /etc/nginx/nginx.conf + +# nginx ssl +if [ -n "$SSL_PORT" ] && [ -e "/etc/nginx/ssl/nginx.key" ]; then + echo "* enable SSL" + sed -i 's|#_SSL_PORT_#\(.*\)443\(.*\)|\1'$SSL_PORT'\2|' /etc/nginx/sites-enabled/default + sed -i 's|#_SSL_PORT_#||' /etc/nginx/sites-enabled/default +fi + +# nginx http base authentication +if [ -n "$HTTP_PASSWORD" ]; then + echo "* enable HTTP base authentication" + htpasswd -bc /etc/nginx/.htpasswd $USER $HTTP_PASSWORD + sed -i 's|#_HTTP_PASSWORD_#||' /etc/nginx/sites-enabled/default +fi + +# dynamic prefix path renaming +if [ -n "$RELATIVE_URL_ROOT" ]; then + echo "* enable RELATIVE_URL_ROOT: $RELATIVE_URL_ROOT" + sed -i 's|#_RELATIVE_URL_ROOT_||' /etc/nginx/sites-enabled/default + sed -i 's|_RELATIVE_URL_ROOT_|'$RELATIVE_URL_ROOT'|' /etc/nginx/sites-enabled/default +fi +# clearup +PASSWORD= +HTTP_PASSWORD= + +exec /bin/tini -- /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf