@@ -64,9 +64,124 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
6464 # && sudo apt-get install -y portaudio19-dev \
6565 # && uv tool install mysc[web]
6666
67- # Install ws-scrcpy
68- SHELL ["/bin/bash" , "-lic" ]
69- RUN fnm install --lts \
70- && cd $HOME && git clone https://github.com/axonasif/ws-scrcpy && cd ws-scrcpy \
71- && uv run npm install && npm run dist:prod
72- # && uv run bun install && uv run bun run dist:prod
67+ # # Install ws-scrcpy
68+ # SHELL ["/bin/bash", "-lic"]
69+ # RUN fnm install --lts \
70+ # && cd $HOME && git clone https://github.com/axonasif/ws-scrcpy && cd ws-scrcpy \
71+ # && uv run npm install && uv run npm run dist:prod
72+ # # && uv run bun install && uv run bun run dist:prod
73+
74+
75+
76+
77+ # Add VNC support from https://github.com/gitpod-samples/vnc
78+ USER root
79+
80+ RUN cd /tmp \
81+ && curl -LO https://github.com/kasmtech/KasmVNC/releases/download/v1.4.0/kasmvncserver_noble_1.4.0_amd64.deb \
82+ && apt-get update && apt-get install -yq ./kasm*.deb && rm kasm*.deb \
83+ && apt-get install -yq --no-install-recommends dbus dbus-x11 gnome-keyring xfce4 xfce4-terminal xdg-utils x11-xserver-utils
84+
85+ ENV DISPLAY=:1
86+ ARG USERNAME=vscode
87+ ARG HOMEPATH=/home/$USERNAME
88+
89+ RUN adduser $USERNAME ssl-cert
90+
91+ USER $USERNAME
92+ SHELL ["/bin/bash" , "-ic" ]
93+
94+ RUN <<SCRIPT
95+ set -eu
96+
97+ printf '%s\n ' 123456 123456 | vncpasswd -u $USER -ow
98+ cat > $HOME/.xinitrc << 'EOF'
99+ # !/bin/bash
100+
101+ : "${DISPLAY:=" $DISPLAY"}"
102+ export DISPLAY
103+
104+ exec dbus-launch --exit-with-session xfce4-session
105+ EOF
106+ chmod +x $HOME/.xinitrc
107+
108+ mkdir -p $HOME/.vnc
109+ ln -sf $HOME/.xinitrc $HOME/.vnc/xstartup
110+ touch $HOME/.vnc/.de-was-selected
111+
112+ cat > $HOME/.vnc/kasmvnc.yaml << 'EOF'
113+ logging:
114+ log_writer_name: all
115+ log_dest: logfile
116+ level: 100
117+
118+ network:
119+ protocol: http
120+ interface: 0.0.0.0
121+ websocket_port: 5901
122+ use_ipv4: true
123+ use_ipv6: false
124+ udp:
125+ public_ip: auto
126+ port: auto
127+ payload_size: auto
128+ stun_server: auto
129+ ssl:
130+ require_ssl: false
131+ EOF
132+
133+ sudo tee -a /usr/bin/vnc <<'BASH'
134+ # !/bin/bash
135+ set -eux
136+ sudo service dbus start
137+ cd $HOME
138+ vncserver -disableBasicAuth -alwaysshared
139+ BASH
140+ sudo chmod +x /usr/bin/vnc
141+
142+ SCRIPT
143+
144+
145+ # Optional: Install Browser (Chrome)
146+ # chrome and basic render font
147+ # misc deps for electron and puppeteer to run
148+ USER root
149+ RUN cd /tmp && glink="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" \
150+ && wget -q "$glink" \
151+ && apt-get install -yq --no-install-recommends libasound2-dev libgtk-3-dev libnss3-dev \
152+ fonts-noto fonts-noto-cjk ./"${glink##*/}" \
153+ \
154+ # OLD: && ln -srf /usr/bin/chromium /usr/bin/google-chrome
155+ # OLD: To make ungoogled_chromium discoverable by tools like flutter
156+ && ln -srf /usr/bin/google-chrome /usr/bin/chromium \
157+ \
158+ # Extra chrome tweaks
159+ # # Disables welcome screen
160+ && t="$HOMEPATH/.config/google-chrome/First Run" && sudo -u $USERNAME mkdir -p "${t%/*}" && sudo -u $USERNAME touch "$t" \
161+ # # Disables default browser prompt
162+ && t="/etc/opt/chrome/policies/managed/managed_policies.json" && mkdir -p "${t%/*}" && printf '{ "%s": %s }\n ' DefaultBrowserSettingEnabled false > "$t"
163+
164+ # For Qt WebEngine on docker
165+ ENV QTWEBENGINE_DISABLE_SANDBOX 1
166+
167+
168+ # Install android studio
169+
170+ USER $USERNAME
171+ ENV PATH="$HOMEPATH/android-studio/bin:$PATH"
172+ SHELL ["/bin/bash" , "-ic" ]
173+
174+ RUN <<SCRIPT
175+ set -eu
176+
177+ cd $HOME
178+ curl -L https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2025.2.1.7/android-studio-2025.2.1.7-linux.tar.gz -o /tmp/android-studio.tar.gz
179+ tar -xzf /tmp/android-studio.tar.gz
180+ rm /tmp/android-studio.tar.gz
181+ cd android-studio/bin
182+ vnc
183+ ./studio.sh
184+
185+ # Create desktop entry
186+ # cat > $HOME/.local/share/applications/android-studio.desktop
187+ SCRIPT
0 commit comments