Monitor Everything, Own Your Data
Glances is an open-source system monitoring tool written in Python that gives you a real-time view of CPU, memory, disk, network, processes, and more – all from a clean web interface or terminal. Self-hosting it means your server metrics never leave your infrastructure, and you get a persistent dashboard without paying for a SaaS monitoring subscription.

What You Need Before You Start
This guide assumes you have a Linux server or VPS running Ubuntu 22.04 or Debian 12, though most steps will work on other distributions with minor adjustments. You’ll need root or sudo access, Python 3.8 or higher installed, and pip available. Docker is optional but makes the setup significantly faster if you’re already running containers on the same machine.
Glances can run in several modes: standalone terminal, web server mode, and as a client-server pair where one Glances instance reports to another. For a self-hosted dashboard you can access from a browser, web server mode is what you want. It exposes a built-in web UI on port 61208 by default, served through a lightweight internal HTTP server called Bottle.
Before installing, decide whether you want Glances to run as a system service that starts on boot, or as a Docker container managed alongside other self-hosted tools. Both approaches are covered below. If you’re already managing a stack of self-hosted applications – similar to how you might run Netbox for network infrastructure management – the Docker route keeps everything consistent and easier to maintain long-term.
Make sure port 61208 is not already in use on your server. You can check with sudo ss -tlnp | grep 61208. If something is already listening there, you’ll reassign the port during configuration. Also confirm your firewall allows inbound traffic on whatever port you choose, using sudo ufw allow 61208/tcp if you’re running UFW.

Installing and Configuring Glances
The fastest path to a running Glances instance is through pip. Start by updating your package list with sudo apt update, then install the dependencies: sudo apt install python3-pip python3-dev -y. Once that completes, install Glances with its web server support enabled by running pip3 install glances[web]. The [web] flag pulls in the Bottle web framework and other dependencies needed for browser access. Without it, Glances still runs fine in a terminal but won’t serve the web UI.
To launch Glances in web server mode immediately and test the setup, run glances -w. Open a browser and navigate to http://your-server-ip:61208. You should see the Glances web dashboard showing live CPU usage, memory consumption, load averages, running processes, disk I/O, and network throughput. The interface updates automatically every few seconds without a page refresh.
For persistent configuration, create the Glances config file at ~/.config/glances/glances.conf. This file controls refresh intervals, display thresholds, plugin behavior, and password protection for the web UI. To add password authentication – strongly recommended if your server is internet-facing – add the following block to your config file:
- Under [passwords], set login_password = yourpassword
- Start Glances with the –password flag: glances -w –password
- Glances will hash the password and store it securely in the config
To run Glances as a systemd service so it starts automatically on reboot, create a service file at /etc/systemd/system/glances.service. Paste in a standard unit file with the following structure: set Description to “Glances System Monitor”, set ExecStart to the full path of the Glances binary followed by -w -C /path/to/glances.conf, and set Restart=on-failure under the Service section. After saving the file, run sudo systemctl daemon-reload, then sudo systemctl enable –now glances. Check that the service is active with sudo systemctl status glances.
If you prefer Docker, the official Glances image handles everything in one command: docker run -d –restart=”always” -p 61208:61208 -e GLANCES_OPT=”-w” -v /var/run/docker.sock:/var/run/docker.sock:ro –pid host nicolargo/glances. The –pid host flag gives Glances access to the host process table, which is necessary to display real process data rather than just the container’s own processes. Mounting the Docker socket lets Glances show container stats alongside host metrics in the same view.
Securing and Accessing the Dashboard
Running Glances directly on port 61208 without TLS is fine for a local network, but for remote access you should put it behind a reverse proxy like Nginx or Caddy. Configure Nginx to proxy requests from a subdomain – something like monitor.yourdomain.com – to localhost:61208, then use Certbot to issue a free Let’s Encrypt certificate for that subdomain. This gives you HTTPS access to the dashboard from anywhere without exposing the raw port to the public internet. Set proxy_read_timeout 120s in your Nginx config to prevent the connection from dropping during the dashboard’s continuous polling.

One practical detail worth knowing: Glances supports exporting metrics to external systems including InfluxDB, Prometheus, and Elasticsearch. If you eventually want to build historical graphs or set up alerting rules, you can enable the export plugins in your config file without changing how the web dashboard behaves. The web UI remains a live snapshot, but the exported data gives you a time-series record to query later. That separation – live view versus historical storage – is something most SaaS monitoring tools bundle together, often at considerable cost.





