support.cs.wm.edu
Welcome to the official support page for the Department of Computer Science at William and Mary. You can use this website to see hardware specifications of nodes on our network. We have also compiled a list of helpful tips for getting started in a Linux environment. If you have any questions or concerns, you can reach us at cs-support@wm.edu or submit a CS Support ticket with the button below.
  • Home Page
  • Server and Lab Machine Specifications
    • How to SSH into a CS Machine
    • How to get Visual Display in a SSH Terminal?
    • Basic Linux Commands
    • How to Copy Files Between Machines
    • C/C++/Python/Java Hello World Programs in Linux
    • How to Increase Disk Quota
    • How to Use Anaconda
    • How to Install PyTorch
    • Hello World Program with CUDA
    • How to Create a Personal Computer Science Webpage
  • FAQ Tutorials

Software Installation

What is the certbot command?

To issue an SSL certificate using Sectigo's ACME Enterprise endpoint with Certbot, use the following command:

certbot certonly --standalone \
  --non-interactive \
  --agree-tos \
  --email This email address is being protected from spambots. You need JavaScript enabled to view it. \
  --server https://acme.enterprise.sectigo.com \
  --eab-kid 6c93efa8a02e4d8f7cec139c5ed2affd \
  --eab-hmac-key K3cTajrdnFYp0c3TdX5Te5UjB3NfA8IEMQAdLNP83nGmkeke3hkcMwcEhv6i7GXEG5oQ2gu2IBcQhbYttZdpbz7w \
  --domain example.wm.edu \
  [--domain additional-domain.wm.edu]

 

Explanation of flags:

  • --certonly: Tells Certbot to only obtain the certificate without modifying web server configs.

  • --standalone: Runs its own temporary web server for domain validation (requires port 80).

  • --non-interactive: Prevents prompts; all options must be provided up front.

  • --agree-tos: Automatically agree to the Terms of Service.

  • --email: Email address for urgent expiration notices.

  • --server: Specifies the Sectigo ACME server endpoint.

  • --eab-kid: Your External Account Binding Key ID provided by Sectigo.

  • --eab-hmac-key: Your EAB HMAC key also provided by Sectigo.

  • --domain: One or more domains to secure. Add --domain multiple times if needed.


Be sure to replace:

  • This email address is being protected from spambots. You need JavaScript enabled to view it. with your admin email.

  • example.wm.edu with your actual domain(s).

This command is used in environments where automatic integration with Sectigo is set up via EAB credentials, such as institutional or enterprise systems.

How to install Prometheus Node Exporter

Option 1: Install via Ubuntu 22.04 package repo (Jammy Jellyfish)

If you're running Ubuntu 22.04 or later, the easiest method is through the APT package manager:

root@data1:~# apt install prometheus-node-exporter

This will install and configure the Node Exporter as a service automatically.


Option 2: Manually install from binary (if not using APT)

If you need a custom setup or are on a system without package access, you can manually install the Node Exporter from a tarball.

Step 1: Download the latest release from GitHub

root@data1:~# wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz

You can replace the asterisks with the actual version number, such as v1.7.0.

Step 2: Extract the tarball

root@data1:~# tar xvfz node_exporter-*.*-amd64.tar.gz  

Step 3: Navigate to the extracted folder

root@data1:~# cd node_exporter-*.*-amd64

Step 4: Start the Node Exporter

root@data1:~/node_exporter-*.*-amd64# ./node_exporter

You should now see logs similar to this, confirming that the exporter is up and running on port 9100:

INFO[0000] Starting node_exporter (version=0.16.0, branch=HEAD, revision=d42bd70...)  source="node_exporter.go:82"
INFO[0000] Listening on :9100                            source="node_exporter.go:111"

Verifying Node Exporter Metrics

To make sure the exporter is serving metrics correctly, open a new terminal tab or background the previous command and run:

root@data1:~# curl http://localhost:9100/metrics

If successful, you'll get a list of Prometheus metrics, like so:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 3.8996e-05
...

To filter for system-specific metrics (prefixed with node_):

root@data1:~# curl http://localhost:9100/metrics | grep "node_"

Success! Node Exporter is now running and exposing system-level metrics that Prometheus can scrape on port 9100.

Let me know when you’re ready for the next article.

How to install non-snap Firefox

1. Remove existing Firefox installs

Start by removing any pre-installed versions of Firefox from both APT and Snap:

root@th121-1:/root# apt purge firefox  
root@th121-1:/root# apt autopurge  
root@th121-1:/root# snap remove --purge firefox
 

2. Move the Firefox archive into /opt

Assuming you already have the Firefox .tar.bz2 archive saved in /systems/software/, copy it to /opt and navigate there:

root@th121-1:/root# cp /systems/software/firefox-122.0.tar.bz2 /opt  
root@th121-1:/root# cd /opt

3. Extract and link Firefox

Extract the archive and create a symbolic link so the firefox command works globally:

root@th121-1:/opt# tar -xvf firefox-122.0.tar.bz2  
root@th121-1:/opt# ln -s /opt/firefox/firefox /usr/bin/firefox

4. Set up the application launcher

Now create a desktop entry so Firefox shows up in your system’s applications menu:

root@th121-1:/opt# vi /usr/share/applications/firefox.desktop

 

Paste the following content inside:

[Desktop Entry]  
Name=Firefox  
Comment=Browse the World Wide Web  
Exec=/opt/firefox/firefox %u  
Icon=/opt/firefox/browser/chrome/icons/default/default128.png  
Terminal=false  
Type=Application  
Categories=Network;WebBrowser;  
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;  
StartupNotify=true

 

5. Refresh application listings and exit

Run the desktop database updater and log out to finalize changes:

root@th121-1:/opt# update-desktop-database  
root@th121-1:/opt# logout

You should now be able to find and launch Firefox from your desktop environment.