No Web Terminal icon? (even as a user)

Hello friends,

This is my 2nd production box and I am not able to give a web terminal to the developers.

Ubuntu 24.04 LTS on AWS. Super minimal setup no firewall/iptables on the machine.

Nginx only with PHP-FPM. Everything works great except this terminal icon is not appearing next to the file system icon like everyone says.

I tried accessing https://publicIP:8083 as well as https://hostnameofthesrvr.com:8083
Also tried with a user who owns a domain and also the admin.

ubuntu@yarrak:~$ sudo systemctl status hestia-web-terminal
● hestia-web-terminal.service - HestiaCP Web Terminal
     Loaded: loaded (/etc/systemd/system/hestia-web-terminal.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-11-03 22:25:03 UTC; 51min ago
       Docs: https://hestiacp.com/docs/
   Main PID: 573 (node)
      Tasks: 11 (limit: 9204)
     Memory: 55.7M (peak: 60.2M)
        CPU: 299ms
     CGroup: /system.slice/hestia-web-terminal.service
             └─573 node /usr/local/hestia/web-terminal/server.js
ubuntu@yarrak:~$ sudo lsof -Pn +c0 -i:8085 -sTCP:LISTEN
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    573 root   18u  IPv6   8632      0t0  TCP *:8085 (LISTEN)
Linux ***** 6.14.0-1015-aws #15~24.04.1-Ubuntu SMP Tue Sep 23 22:44:48 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@yarrak:~$ ls -l /etc/apt/sources.list.d
cat /etc/apt/sources.list.d/nodejs.list
total 24
-rw-r--r-- 1 root root  103 Nov  3 22:21 hestia.list
-rw-r--r-- 1 root root  139 Nov  3 22:21 mariadb.list
-rw-r--r-- 1 root root  121 Nov  3 22:21 nginx.list
-rw-r--r-- 1 root root  109 Nov  3 22:21 nodejs.list
-rw-r--r-- 1 root root 1786 Nov  3 22:21 ondrej-ubuntu-php-noble.sources
-rw-r--r-- 1 root root 3006 Nov  3 22:21 ubuntu.sources
namei -mo /usr/local/hestia/web/css/themes/default.min.css
namei -mo /usr/local/hestia/web/js/dist/main.min.js
ls -la /usr/local/hestia/web/
tail -n63 /usr/local/hestia/nginx/conf/nginx.conf
f: /usr/local/hestia/web/css/themes/default.min.css
 drwxr-xr-x root root /
 drwxr-xr-x root root usr
 drwxr-xr-x root root local
 drwxr-xr-x root root hestia
 drwxr-xr-x root root web
 drwxr-xr-x root root css
 drwxr-xr-x root root themes
 -rw-r--r-- root root default.min.css
f: /usr/local/hestia/web/js/dist/main.min.js
 drwxr-xr-x root root /
 drwxr-xr-x root root usr
 drwxr-xr-x root root local
 drwxr-xr-x root root hestia
 drwxr-xr-x root root web
 drwxr-xr-x root root js
 drwxr-xr-x root root dist
 -rw-r--r-- root root main.min.js
total 148
drwxr-xr-x 34 root root 4096 Nov  3 22:23 .
drwxr-xr-x 12 root root 4096 Nov  3 22:22 ..
drwxr-xr-x 14 root root 4096 Nov  3 22:22 add
drwxr-xr-x  2 root root 4096 Nov  3 22:22 api
drwxr-xr-x 15 root root 4096 Nov  3 22:22 bulk
drwxr-xr-x  3 root root 4096 Nov  3 22:22 copy
drwxr-xr-x  4 root root 4096 Nov  3 22:22 css
drwxr-xr-x 16 root root 4096 Nov  3 22:22 delete
drwxr-xr-x  6 root root 4096 Nov  3 22:22 download
drwxr-xr-x 13 root root 4096 Nov  3 22:22 edit
drwxr-xr-x  2 root root 4096 Nov  3 22:22 error
-rw-r--r--  1 root root 1150 Jul 21 08:45 favicon.ico
drwxr-xr-x  8 root root 4096 Nov  3 22:23 fm
drwxr-xr-x  3 root root 4096 Nov  3 22:22 generate
drwxr-xr-x  2 root root 4096 Nov  3 22:22 images
drwxr-xr-x  4 root root 4096 Nov  3 22:22 inc
-rw-r--r--  1 root root  105 Jul 21 08:45 index.php
drwxr-xr-x  5 root root 4096 Nov  3 22:22 js
drwxr-xr-x 22 root root 4096 Nov  3 22:22 list
drwxr-xr-x 42 root root 4096 Nov  3 22:22 locale
drwxr-xr-x  2 root root 4096 Nov  3 22:22 login
drwxr-xr-x  2 root root 4096 Nov  3 22:22 logout
drwxr-xr-x  3 root root 4096 Nov  3 22:22 reset
drwxr-xr-x  2 root root 4096 Nov  3 22:22 reset2fa
drwxr-xr-x  4 root root 4096 Nov  3 22:22 restart
-rw-r--r--  1 root root   26 Jul 21 08:45 robots.txt
drwxr-xr-x  8 root root 4096 Nov  3 22:23 rrd
drwxr-xr-x  4 root root 4096 Nov  3 22:22 schedule
drwxr-xr-x  2 root root 4096 Nov  3 22:22 search
drwxr-xr-x  4 root root 4096 Nov  3 22:22 src
drwxr-xr-x  3 root root 4096 Nov  3 22:22 start
drwxr-xr-x  3 root root 4096 Nov  3 22:22 stop
drwxr-xr-x  9 root root 4096 Nov  3 22:22 suspend
drwxr-xr-x  4 root root 4096 Nov  3 22:22 templates
drwxr-xr-x  9 root root 4096 Nov  3 22:22 unsuspend
drwxr-xr-x  3 root root 4096 Nov  3 22:22 update
drwxr-xr-x  2 root root 4096 Nov  3 22:22 webfonts
		error_page          404 /error/404.html;
		error_page          410 /error/410.html;
		error_page          500 501 502 503 504 505 /error/50x.html;

		ssl_certificate     /usr/local/hestia/ssl/certificate.crt;
		ssl_certificate_key /usr/local/hestia/ssl/certificate.key;

		# TLS 1.3 0-RTT anti-replay
		if ($anti_replay = 307) { return 307 https://$host:$server_port$request_uri; }
		if ($anti_replay = 425) { return 425; }

		location / {
			expires off;
			index index.php;
		}

		location /error/ {
			expires off;
			internal;
		}

		location /rrd/ {
			expires off;
			internal;
		}

		location /backup/ {
			root /;
			internal;
		}

		location /fm/ {
			alias /usr/local/hestia/web/fm/dist/;
			index index.php;

			location ~ /([^/]+\.php)$ {
				try_files     /$1 =404;
				include       fastcgi_params;
				fastcgi_param HTTP_EARLY_DATA $rfc_early_data if_not_empty;
				fastcgi_param SCRIPT_FILENAME /usr/local/hestia/web/fm/dist/index.php;
				fastcgi_pass  unix:/run/hestia-php.sock;
				fastcgi_index index.php;
			}
		}

		location /_shell/ {
			proxy_pass http://localhost:8085;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "Upgrade";
			proxy_set_header X-Real-IP $remote_addr;
		}

		location ~ \.php$ {
			include                  fastcgi_params;
			fastcgi_param            HTTP_EARLY_DATA $rfc_early_data if_not_empty;
			fastcgi_param            SCRIPT_FILENAME /usr/local/hestia/web/$fastcgi_script_name;
			fastcgi_pass             unix:/run/hestia-php.sock;
			fastcgi_intercept_errors on;
			break;
		}
	}
}
sudo namei -mo /usr/local/hestia/data/sessions/
sudo lsof -Pn +c0 -i:8083 -sTCP:LISTEN
sudo ls -l /run/hestia-php.sock
sudo /usr/local/hestia/nginx/sbin/hestia-nginx -T | grep '^user'
f: /usr/local/hestia/data/sessions/
 drwxr-xr-x root      root      /
 drwxr-xr-x root      root      usr
 drwxr-xr-x root      root      local
 drwxr-xr-x root      root      hestia
 drwxr-xr-x root      root      data
 drwxrwx--- hestiaweb hestiaweb sessions
COMMAND       PID      USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
hestia-nginx 2668      root    6u  IPv4  11958      0t0  TCP *:8083 (LISTEN)
hestia-nginx 2669 hestiaweb    6u  IPv4  11958      0t0  TCP *:8083 (LISTEN)
srw-rw---- 1 hestiaweb hestiaweb 0 Nov  3 22:25 /run/hestia-php.sock
nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/usr/local/hestia/ssl/certificate.crt"
nginx: the configuration file /usr/local/hestia/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/hestia/nginx/conf/nginx.conf test is successful
user                 hestiaweb;

Hi @TheTruckerAL,

You must assign a shell to the users. Instead of nologin assign bash.

1 Like