Download src/server.sh from Fred808/MDS: direct link, hf CLI and curl.
- Browser
- Download file 3.16 kB
-
https://huggingface.co/spaces/Fred808/MDS/resolve/main/src/server.sh
- Command line
-
hf download hf://spaces/Fred808/MDS/src/server.sh
-
curl -L -o server.sh https://huggingface.co/spaces/Fred808/MDS/resolve/main/src/server.sh
3.16 kB
| set -Eeuo pipefail | |
| : "${VNC_PORT:="5900"}" # VNC port | |
| : "${MON_PORT:="7100"}" # Monitor port | |
| : "${WEB_PORT:="8006"}" # Webserver port | |
| : "${WSD_PORT:="8004"}" # Websockets port | |
| : "${WSS_PORT:="5700"}" # Websockets port | |
| if (( VNC_PORT < 5900 )); then | |
| warn "VNC port cannot be set lower than 5900, ignoring value $VNC_PORT." | |
| VNC_PORT="5900" | |
| fi | |
| cp -r /var/www/* /run/shm | |
| rm -f /var/run/websocketd.pid | |
| html "Starting $APP for $ENGINE..." | |
| if [[ "${WEB:-}" != [Nn]* ]]; then | |
| mkdir -p /etc/nginx/sites-enabled | |
| cp /etc/nginx/default.conf /etc/nginx/sites-enabled/web.conf | |
| user="admin" | |
| [ -n "${USER:-}" ] && user="${USER:-}" | |
| if [ -n "${PASS:-}" ]; then | |
| # Set password | |
| echo "$user:{PLAIN}${PASS:-}" > /etc/nginx/.htpasswd | |
| sed -i "s/auth_basic off/auth_basic \"NoVNC\"/g" /etc/nginx/sites-enabled/web.conf | |
| fi | |
| sed -i "s/listen 8006 default_server;/listen $WEB_PORT default_server;/g" /etc/nginx/sites-enabled/web.conf | |
| sed -i "s/proxy_pass http:\/\/127.0.0.1:5700\/;/proxy_pass http:\/\/127.0.0.1:$WSS_PORT\/;/g" /etc/nginx/sites-enabled/web.conf | |
| sed -i "s/proxy_pass http:\/\/127.0.0.1:8004\/;/proxy_pass http:\/\/127.0.0.1:$WSD_PORT\/;/g" /etc/nginx/sites-enabled/web.conf | |
| # shellcheck disable=SC2143 | |
| if [ -f /proc/net/if_inet6 ] && [ -n "$(ifconfig -a | grep inet6)" ]; then | |
| sed -i "s/listen $WEB_PORT default_server;/listen [::]:$WEB_PORT default_server ipv6only=off;/g" /etc/nginx/sites-enabled/web.conf | |
| fi | |
| # Start webserver | |
| # Prefer using pid directive from /etc/nginx/nginx.conf if present to avoid | |
| # duplicate-pid errors when passing -g. Otherwise fall back to passing -g. | |
| mkdir -p /run /run/shm | |
| CONF_PID=$(sed -n 's/^[[:space:]]*pid[[:space:]]\+\([^;]*\);.*/\1/p' /etc/nginx/nginx.conf 2>/dev/null | tr -d '"' | head -n1 || true) | |
| if [ -n "$CONF_PID" ]; then | |
| PID_FILE="$CONF_PID" | |
| mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true | |
| touch "$PID_FILE" 2>/dev/null || true | |
| if [ -w "$PID_FILE" ] 2>/dev/null; then | |
| info "Starting nginx (using pid from config): $PID_FILE" | |
| nginx -e stderr | |
| else | |
| # If we can't write the config-specified pid, try to create a fallback | |
| PID_FILE="/run/shm/nginx.pid" | |
| mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true | |
| touch "$PID_FILE" 2>/dev/null || true | |
| info "Config pid $CONF_PID not writable, starting nginx with fallback pid: $PID_FILE" | |
| nginx -g "pid $PID_FILE;" -e stderr | |
| fi | |
| else | |
| # No pid directive in config: use runtime-chosen pid file | |
| PID_FILE="/run/nginx.pid" | |
| if ! touch "$PID_FILE" 2>/dev/null || [ ! -w "$PID_FILE" ] 2>/dev/null; then | |
| PID_FILE="/run/shm/nginx.pid" | |
| mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true | |
| touch "$PID_FILE" 2>/dev/null || true | |
| fi | |
| info "Starting nginx with pid file: $PID_FILE" | |
| nginx -g "pid $PID_FILE;" -e stderr | |
| fi | |
| # Start websocket server — write logs to /run/shm (writable in non-root mode) | |
| mkdir -p /run/shm | |
| websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/run/shm/websocketd.log 2>&1 & | |
| echo "$!" > /run/websocketd.pid | |
| fi | |
| return 0 | |