11#! /usr/bin/env bash
22set -e
33
4- PASSWORD= $( openssl rand -base64 48 | tr -dc ' A-Za-z0-9 ' | head -c 32 )
4+ PORT=39217
55
6- # --- pick a random free port ---
7- find_free_port () {
8- while true ; do
9- PORT=$( shuf -i 20000-65000 -n 1)
10- if ! ss -tuln | awk ' {print $5}' | grep -q " :$PORT \$ " ; then
11- echo " $PORT "
12- return
13- fi
14- done
15- }
16- PORT=$( find_free_port)
6+ if systemctl is-active --quiet code-server@root 2> /dev/null; then
7+ systemctl stop code-server@root
8+ fi
9+
10+ PASSWORD=$( openssl rand -base64 48 | tr -dc ' A-Za-z0-9' | head -c 32)
1711
18- # --- install only if not already installed ---
1912if command -v code-server > /dev/null 2>&1 ; then
2013 echo " [+] code-server is already installed, skipping installation."
2114else
@@ -31,7 +24,6 @@ password: $PASSWORD
3124cert: false
3225EOF
3326
34- # --- set default theme to Dark 2026 ---
3527mkdir -p /root/.local/share/code-server/User
3628cat > /root/.local/share/code-server/User/settings.json << EOF
3729{
@@ -40,7 +32,17 @@ cat >/root/.local/share/code-server/User/settings.json <<EOF
4032EOF
4133
4234systemctl daemon-reload
43- systemctl enable --now code-server@root
35+ systemctl enable code-server@root
36+ systemctl restart code-server@root
37+
38+ sleep 2
39+
40+ if ! ss -tuln | awk ' {print $5}' | grep -q " :$PORT \$ " ; then
41+ echo " [!] code-server failed to start on port $PORT ."
42+ echo " [!] Recent logs:"
43+ journalctl -u code-server@root -n 30 --no-pager
44+ exit 1
45+ fi
4446
4547IP=$( hostname -I | awk ' {print $1}' )
4648clear
@@ -83,7 +85,6 @@ confirm_stop() {
8385}
8486
8587trap confirm_stop SIGINT
86-
8788start_logs
8889
8990while [[ " $STOPPING " -eq 0 ]]; do
9293
9394echo
9495echo " [+] Stopping code-server (files will not be removed)..."
95-
9696systemctl stop code-server@root 2> /dev/null || true
9797systemctl disable code-server@root 2> /dev/null || true
98-
9998pkill -f " code-server" 2> /dev/null || true
10099sleep 1
101100pkill -9 -f " code-server" 2> /dev/null || true
102-
103101echo
104102echo " Done. code-server has been fully stopped (installation and files remain intact)."
0 commit comments