File size: 2,217 Bytes
ccfca00 c265acc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive LANG=en_US.UTF-8
Install system packages including LXDE and XRDP
RUN apt update && apt upgrade -y &&
apt install -y
sudo
curl
wget
git
gnupg
openssh-client
neofetch
tmate
python3
python3-pip
ca-certificates
software-properties-common
build-essential
procps
xz-utils
net-tools
make
ffmpeg
nano
vim
htop
unzip
zip
iputils-ping
tree
lsof
netcat
tmux
locales
lxde
xrdp &&
locale-gen en_US.UTF-8 &&
apt clean && rm -rf /var/lib/apt/lists/*
Configure XRDP to use LXDE session
RUN sed -i 's|port=3389|port=3389|g' /etc/xrdp/xrdp.ini &&
echo "lxsession -s LXDE -e LXDE" > /etc/xrdp/startwm.sh &&
chmod +x /etc/xrdp/startwm.sh
Install Node.js v22 and npm
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - &&
apt update && apt install -y nodejs &&
npm install -g npm &&
apt clean && rm -rf /var/lib/apt/lists/*
Install speedtest-cli
RUN pip3 install --no-cache-dir speedtest-cli
Create user 'draco' with sudo rights and fixed UID
RUN useradd -m -s /bin/bash -u 1000 draco &&
echo "draco:draco" | chpasswd &&
usermod -aG sudo draco
Setup SSH keys for draco user
RUN mkdir -p /home/draco/.ssh &&
ssh-keygen -t rsa -f /home/draco/.ssh/id_rsa -N '' &&
chown -R draco:draco /home/draco/.ssh
USER draco WORKDIR /home/draco
Create tmate auto-reconnect launcher
RUN cat << 'EOF' > run_tmate.sh #!/bin/bash while true; do echo "[tmate-log] Launching new tmate session..." | tee tmate.txt tmate -S /tmp/tmate.sock new-session -d tmate -S /tmp/tmate.sock wait tmate-ready echo "[tmate-log] SSH: $(tmate -S /tmp/tmate.sock display -p "#{tmate_ssh}")" | tee -a tmate.txt echo "[tmate-log] Web: $(tmate -S /tmp/tmate.sock display -p "#{tmate_web}")" | tee -a tmate.txt echo "[tmate-log] Monitoring connection..." | tee -a tmate.txt while pgrep -f "tmate -S /tmp/tmate.sock" > /dev/null; do sleep 5; done echo "[tmate-log] ⚠️ Connection lost. Reconnecting in 5 seconds..." | tee -a tmate.txt sleep 5 done EOF RUN chmod +x run_tmate.sh
Expose RDP and Hugging Face web port
EXPOSE 3389 7890
Start tmate loop and simple HTTP server on port 7890
CMD ["bash", "-c", "./run_tmate.sh & python3 -m http.server 7890"]
|