computer-guest/Dockerfile

70 lines
2.5 KiB
Docker

FROM public.ecr.aws/docker/library/ubuntu:24.04
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive
ARG MICROAGENT_TEST_AUTHORIZED_KEY=""
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
dbus-x11 \
eza \
fonts-dejavu-core \
git \
iproute2 \
jitterentropy-rngd \
net-tools \
ncurses-bin \
novnc \
openbox \
openssh-server \
sudo \
zsh \
zsh-autosuggestions \
zsh-syntax-highlighting \
websockify \
x11-utils \
x11-xserver-utils \
x11vnc \
xauth \
xterm \
xvfb \
&& rm -rf /var/lib/apt/lists/*
RUN useradd --create-home --shell /bin/bash node \
&& passwd -d node \
&& mkdir -p /home/node/.ssh \
&& chown -R node:node /home/node \
&& usermod -aG sudo node \
&& printf 'node ALL=(ALL) NOPASSWD:ALL\n' >/etc/sudoers.d/node \
&& chmod 440 /etc/sudoers.d/node \
&& install -d -m 0755 /etc/microagent
COPY docker/guest/sshd_config /etc/ssh/sshd_config
COPY docker/guest/microagent-init.sh /usr/local/bin/microagent-init
COPY docker/guest/microagent-desktop-session.sh /usr/local/bin/microagent-desktop-session
COPY docker/guest/microagent-network-up.sh /usr/local/bin/microagent-network-up
COPY docker/guest/defaults/.zshrc /home/node/.zshrc
COPY docker/guest/defaults/.bashrc /home/node/.bashrc
COPY docker/guest/defaults/.profile /home/node/.profile
COPY docker/guest/terminfo/xterm-ghostty.terminfo /tmp/xterm-ghostty.terminfo
COPY docker/guest/terminfo/xterm-kitty.terminfo /tmp/xterm-kitty.terminfo
RUN chmod 755 /usr/local/bin/microagent-init /usr/local/bin/microagent-desktop-session /usr/local/bin/microagent-network-up \
&& chown node:node /home/node/.zshrc /home/node/.bashrc /home/node/.profile \
&& usermod -s /usr/bin/zsh node \
&& install -d /opt/zsh/pure \
&& ln -sf /usr/local/bin/microagent-init /sbin/init \
&& curl -fsSL https://raw.githubusercontent.com/sindresorhus/pure/v1.27.0/pure.zsh -o /opt/zsh/pure/pure.zsh \
&& curl -fsSL https://raw.githubusercontent.com/sindresorhus/pure/v1.27.0/async.zsh -o /opt/zsh/pure/async.zsh \
&& tic -x -o /usr/share/terminfo /tmp/xterm-ghostty.terminfo \
&& tic -x -o /usr/share/terminfo /tmp/xterm-kitty.terminfo \
&& rm -f /tmp/xterm-ghostty.terminfo /tmp/xterm-kitty.terminfo
RUN if [ -n "$MICROAGENT_TEST_AUTHORIZED_KEY" ]; then \
printf '%s\n' "$MICROAGENT_TEST_AUTHORIZED_KEY" >/etc/microagent/authorized_keys; \
chmod 600 /etc/microagent/authorized_keys; \
fi
CMD ["/usr/local/bin/microagent-init"]