-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathentrypoint.sh
More file actions
141 lines (110 loc) · 3.52 KB
/
Copy pathentrypoint.sh
File metadata and controls
141 lines (110 loc) · 3.52 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/bash
set -e
if [[ -n "$TZ" ]]; then
echo "Setting timezone to $TZ..."
sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
echo $TZ | sudo tee /etc/timezone > /dev/null
fi
if [[ -n "$LOCALE" ]]; then
export LANG=$LOCALE
export LANGUAGE=${LOCALE%%_*}:${LOCALE%%.*}
export LC_ALL=$LOCALE
sudo update-locale LANG=$LOCALE
fi
echo "=========================================="
echo "Starting OBS Container by AlexanderWagnerDev"
echo "User: $(whoami) (UID: $(id -u))"
echo "Locale: $LANG"
echo "Timezone: $TZ"
echo "Keyboard: $KEYBOARD_LAYOUT"
echo "=========================================="
export XDG_RUNTIME_DIR=/tmp/runtime-$(id -u)
mkdir -p $XDG_RUNTIME_DIR
chmod 700 $XDG_RUNTIME_DIR
export DISPLAY=:99
export RESOLUTION=1920x1080x24
echo "Starting Xvfb..."
Xvfb $DISPLAY -screen 0 ${RESOLUTION} -ac +extension GLX +render -noreset > /tmp/xvfb.log 2>&1 &
XVFB_PID=$!
sleep 3
if ! ps -p $XVFB_PID > /dev/null; then
echo "ERROR: Xvfb failed to start"
cat /tmp/xvfb.log
exit 1
fi
echo "✓ Xvfb started successfully on display $DISPLAY"
KB_LAYOUT=${KEYBOARD_LAYOUT:-us}
echo "Setting keyboard layout to $KB_LAYOUT..."
setxkbmap $KB_LAYOUT 2>/dev/null || setxkbmap us 2>/dev/null || echo "WARNING: Could not set keyboard layout"
echo "Starting D-Bus session..."
eval $(dbus-launch --sh-syntax)
export DBUS_SESSION_BUS_ADDRESS
export DBUS_SESSION_BUS_PID
echo "Starting PulseAudio..."
pulseaudio --start --exit-idle-time=-1 > /tmp/pulseaudio.log 2>&1 &
sleep 2
if pgrep -u $(id -u) pulseaudio > /dev/null; then
echo "✓ PulseAudio started"
else
echo "WARNING: PulseAudio may not be running"
fi
echo "Starting Openbox window manager..."
openbox > /tmp/openbox.log 2>&1 &
OPENBOX_PID=$!
sleep 2
if ! ps -p $OPENBOX_PID > /dev/null; then
echo "WARNING: Openbox may have backgrounded"
fi
echo "✓ Openbox started"
echo "Starting LXQt..."
startlxqt > /tmp/lxqt.log 2>&1 &
LXQT_PID=$!
sleep 5
if ! ps -p $LXQT_PID > /dev/null; then
echo "WARNING: LXQt may have backgrounded, checking processes..."
fi
echo "✓ LXQt session started"
sleep 3
echo "Starting x11vnc with password protection and caching..."
x11vnc -display $DISPLAY -forever -shared -rfbport 5900 -passwd "$VNC_PASS" -xkb -ncache 10 -ncache_cr > /tmp/x11vnc.log 2>&1 &
X11VNC_PID=$!
sleep 3
if ! ps -p $X11VNC_PID > /dev/null; then
echo "ERROR: x11vnc failed to start"
cat /tmp/x11vnc.log
exit 1
fi
if ss -tuln | grep -q ':5900'; then
echo "✓ x11vnc started successfully on port 5900 (password protected, caching enabled)"
else
echo "WARNING: x11vnc not listening on port 5900"
cat /tmp/x11vnc.log
fi
if command -v /usr/share/novnc/utils/novnc_proxy >/dev/null 2>&1; then
echo "Starting noVNC..."
/usr/share/novnc/utils/novnc_proxy --web /usr/share/novnc --vnc localhost:5900 --listen 6080 > /tmp/novnc.log 2>&1 &
sleep 2
if ss -tuln | grep -q ':6080'; then
echo "✓ noVNC started on port 6080"
else
echo "ERROR: noVNC failed to bind to port 6080"
cat /tmp/novnc.log
fi
fi
echo ""
echo "=========================================="
echo "✓ Setup complete!"
echo "=========================================="
echo "OBS Docker by AlexanderWagnerDev"
echo "VNC Access: localhost:5900"
echo "VNC Password: *** (set via VNC_PASS)"
echo "Web Access: http://localhost:6080"
echo "Desktop: LXQt on X11 (via Xvfb)"
echo "Display: $DISPLAY"
echo "Resolution: $RESOLUTION"
echo "Locale: $LANG"
echo "Timezone: $TZ"
echo "Keyboard: $KEYBOARD_LAYOUT"
echo "=========================================="
echo ""
wait