This guide is a compilation of instructions and resources for configuring a Linux workstation with some of the tools you might want as an NCSA employee. Most of the examples are Debian/Ubuntu-based but often require only minor modifications to work for RedHat-based systems.

Email and Calendar

Microsoft Outlook Exchange Email

The default Thunderbird email application included with Ubuntu supports the university email system. Use the following account settings:

IMAP Mail Server (incoming):
User Name: {username}@illinois.edu
Server Name: outlook.office365.com
Server Port: 993
Connection security: SSL/TLS
Authentication method: OAuth2

SMTP Mail Server (outgoing):
User Name: {username}@illinois.edu
Server Name: outlook.office365.com
Server Port: 587
Connection security: STARTTLS
Authentication method: OAuth2

Microsoft Outlook Exchange Calendar

The Thunderbird email application typically bundled with popular Linux distributions has addons that provide support for Microsoft Outlook calendar integration. Install the following addons:

Use the TbSync settings to add your university Office 365 account. It will open a modal dialog for remote authentication via the UofI single sign-on system.

Networking

IllinoisNet Wifi

From https://answers.uillinois.edu/illinois/page.php?id=49095 :

Go to Settings > Wi-fi settings > Select IllinoisNet

When prompted for information fill in the following:

  • Network SSID = IllinoisNet
  • Security = Enterprise 802.1x
  • EAP method = PEAP or TTLS
  • Phase 2 authentication = MSCHAPv2
  • Identity = Your NetID
  • Wireless password = Your NetID password
  • Show password = [leave unchecked]
  • Check Advanced Options
  • Proxy = None
  • IP Settings = DHCP
  • CA Certificate: none
  • Domain (if listed) = wireless.illinois.edu
  • Anonymous identity = [leave blank]

NCSAnet VPN

Install the Cisco Anyconnect compatible openconnect package and open the network settings.

    sudo apt-get install network-manager-openconnect-gnome 

Add a new VPN with gateway sslvpn.ncsa.illinois.edu and protocol "Cisco AnyConnect". The defaults for the rest are fine.


(2024/03/16 update) Enable the VPN and choose the group "1-ncsa-cilogon-default".

Authenticate using the standard web-based method that should load within the VPN window.


Telephony and Videoconferencing

Zoom

Zoom is a Videoconferencing application with Linux desktop clients available. On a fresh Ubuntu 22.04 LTS installation, you may be lacking some dependencies. Use

  apt install zoom_amd64.deb  

to install the dependencies along with the Debian package. Otherwise, if you use dpkg  you will likely need to run the following to install dependencies:

  apt install libgl1-mesa-glx libegl1-mesa libxcb-xtest0 libxcb-xinerama0 
dpkg -i zoom_amd64.deb

After installing the client, select single-sign-on (SSO) and use address illinois.zoom.us. You do need to grant access to the app to access your basic profile info. You do not need to grant access to your entire mailbox in a subsequent dialog.

Occasionally you may experience an issue (as of version 5.2) where the interface font size and controls are sometimes way too big. You can fix this by setting the autoScale=false in the $HOME/.config/zoomus.conf config file.

Skype for Business

There is no Skype for Business desktop client for Linux. See https://docs.microsoft.com/en-us/office365/servicedescriptions/skype-for-business-online-service-description/skype-for-business-online-features.

Backups

The official backup solution is CrashPlan. After downloading the installation file and extracting the contents, run ./install.sh to install for your user account after installing prerequisites as shown below. There is typically no need to run this as root unless you have specific needs to backup file outside your home folder.

# Needed after fresh install of Ubuntu 22.04 : 
sudo apt-get install libgconf-2-4
./install.sh -u $USER -x $HOME/.local/bin/crashplan
# Running as user means the installer cannot increase file system watchers on its own:
echo 'fs.inotify.max_user_watches=1048576' > /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
  

Add an automatic startup script when you login by using the graphical Startup Applications tool or by creating the autostart file on the command line like so:

$ cat ~/.config/autostart/service.sh.desktop 
[Desktop Entry]
Type=Application
Exec=$HOME/.local/bin/crashplan/bin/service.sh start
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=CrashPlan
Name=CrashPlan
Comment[en_US]=CrashPlan service
Comment=CrashPlan service

Copy the desktop file to your applications folder to enable convenient launch of the desktop app. You may need to restart the desktop after creating this file by pressing ALT+F2 and executing the command "restart".

$ cat ~/.local/share/applications/code42.desktop 
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Code42
Categories=Utility;
Comment=Code42 Desktop
Comment[en_CA]=Code42 Desktop
Exec=$HOME/.local/bin/crashplan/bin/desktop.sh
Icon=$HOME/.local/bin/crashplan/bin/icon_app.png
Hidden=false
Terminal=false
Type=Application

File sharing and sync

Unfortunately there are no official desktop sync clients available for Linux for any of the standard UofI cloud file storage options such as Box and Microsoft OneDrive.

NCSA File Server

There is a standard SMB file server (a.k.a. Windows file sharing) hosted by NCSA for employees. You can mount it in Nautilus by simply entering the URL smb://fileserver.ncsa.illinois.edu/ in the location bar and entering your NCSA username and password, using the workgroup "UOFI".

Google Drive

The Gnome desktop that ships by default with Debian and Ubuntu includes some native support for Google Drive. Open the Online Account settings panel and add your Google account. If you enable Files integration, you can access your Google Drive files in the default Nautilus file browser.

Syncthing

Syncthing is an amazing tool that magically syncs selected folders with other devices without a need for external servers or accounts. It is completely decentralized, free and open source. Read the Getting Started Guide to learn how to get started. The installation instructions below were tested in Ubuntu 18.04, 19.10, and 20.04.

Option A: apt package manager

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing

Create a startup application. Make it graphically by launching the Startup Application app or create the shortcut file:

  
cat <<EOF > $HOME/.config/autostart/syncthing.desktop
[Desktop Entry]
Type=Application
Exec=/usr/bin/syncthing -no-browser -home="$HOME/.config/syncthing"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Syncthing
Name=Syncthing
Comment[en_US]=Syncthing launcher
Comment=Syncthing launcher
EOF

Option B: manual method

Download the latest release (for Linux/amd64) from https://github.com/syncthing/syncthing/releases/ and follow the instructions below (replace v1.3.1 with whatever version you download).

  # Download using curl
curl -L https://github.com/syncthing/syncthing/releases/download/v1.3.1/syncthing-linux-amd64-v1.3.1.tar.gz -O
# Extract into download folder
tar -xf syncthing-linux-amd64-v1.3.1.tar.gz

Install the syncthing binary and create the systemd service that will auto-start Syncthing for your user account:

  # Copy binary
sudo cp syncthing-linux-amd64-v1.3.1/syncthing /usr/bin/syncthing
# Copy systemd service definition
sudo cp syncthing-linux-amd64-v1.3.1/etc/linux-systemd/system/syncthing@.service /etc/systemd/system/
# Enable the service and start it
sudo systemctl daemon-reload
sudo systemctl enable syncthing@$USER.service
sudo systemctl start syncthing@$USER.service

Open http://localhost:8384 to access the Syncthing GUI so you can view its status and configure shares.

Docking stations

Toshiba "dynadock" 

The Toshiba "dynadock" is a USB 3.0 based docking station that works with Ubuntu with the installation of an additional DisplayLink driver package. This package is easily installed by extracting the downloaded files and running a single command. It supports two external monitors as well as a keyboard, mouse, and additional peripherals. To uninstall, run sudo displaylink-installer uninstall .

Warning: On some laptops, you may find that enabling NumLock via the external keyboard interferes with the functionality of the laptop keyboard, even when the dock is disconnected.

Warning: On some laptops, you may find that the sound does not work properly.

Warning: On Ubuntu 19.10 you might find that the OS crashes when the dock is disconnected. You can use the command below to kill the DisplayLink process prior to disconnecting the dock to prevent this. # Execute in bash sudo kill $(ps ax | grep /opt/displaylink/DisplayLinkManager | head -n 1 | cut -f1 -d' ')

Dell WD19 TB dock

If you have problems with the audio output and microphone input changing to the dock devices you do not want when you plug in, follow the instructions in this helpful repo.

README.md

  # DellDockAudio
Forces pulseaudio sound device switch via script when docking station detected. Tested on Ubuntu 20.04 only.
## Why? I have a Dell WD19 dock and a Latitude 5580 runing Ubuntu 20.04. When I plug my dock in to my laptop, it switches sound output to the dock's headphone jack rather than the dock's line-out jack. If I change the sound output device in settings, it will work fine until I unplug the dock. It "forgets" my choice when I plug it back in. ## Info needed for this script to work If you have the same issue as I described above, there's some info you'll need in order to customize the included files to work with your hardware. Example output below is cleaned up to only show the relevant needed info... 1. Your Username and UID: ``` echo $USER johnsmith echo $UID 9999 ``` 2. Sound Device names (Set the desired sound devices in the GUI before running this command): ``` pacmd stat Default sink name: alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock_1__sink Default source name: alsa_input.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock__source ``` 3. Hardware ID of the docking unit: ``` lsusb Bus 002 Device 005: ID 0bda:0487 Realtek Semiconductor Corp. Dell dock ``` If your dock isn't as easy to find as the example above, run the command with and without the dock plugged in and compare the devices listed to determine the correct device. ## Customizing the rules file In step 3 above, the example device listed has a vendor ID of "0bda", and a product ID of "0487". Use the values of your dock ID and replace these values in the `docksound.rules` file. ## Customizing the script file Edit `docksound.sh` with the info you gathered in steps 1 and 2, replacing the values **within the quotes** of the following variables: ``` SINK_NAME corresponds to "Default sink name" SOURCE_NAME corresponds to "Default source name" USERNAME corresponds to "$USER" USERID corresponds to "$UID" ``` ## Putting the files in the right place You will need root access to put the files where they need to go. The script will be run as root. You may need to `chmod +x docksound.sh` to make it executable. Place `docksound.rules` in `/etc/udev/rules.d/` Place `docksound.sh` in `/root/`. If you want to put `docksound.sh` somewhere else, you'll have to change the path in `docksound.rules` to point th the right location. ## Misc You can `tail -f /tmp/DockPlugEvent.log` to watch detection happen. When I plug my dock in it gets detected multiple times, which is why the script checks if the desired sound devices are already active before switching. Each detection fires an instance of the script...

docksound.rules

    ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="0487", ACTION=="add", RUN+="/root/docksound.sh"

docksound.sh

#!/bin/bash
# Define Variables
SINK_NAME='alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock_1__sink'
SOURCE_NAME='alsa_input.pci-0000_00_1f.3.analog-stereo'
USERNAME=andrew
USERID=1000
PID=$(echo $$)

# Log dock detection
echo "$(date) - PID:$PID Dock detected" >> /tmp/DockPlugEvent.log

# Terminate script if an instance is already running
#echo $PID
ps aux | grep 'docksound.sh' | grep -v -e 'grep' -e "$PID"
if [[ $? -gt 0 ]]
then
echo "$(date) - PID:$PID No other instance detected, proceeding" >> /tmp/DockPlugEvent.log
else
echo "$(date) - PID:$PID Another instance detected, exiting." >> /tmp/DockPlugEvent.log
exit 0
fi

export PULSE_RUNTIME_PATH="/run/user/$USERID/pulse/"

# Wait for things to settle after dock is plugged in
sleep 2

# Check to see if desired sound devices are already set, and EXIT without changing IF TRUE
sudo -u $USERNAME -E pacmd stat | grep $SINK_NAME &&
sudo -u $USERNAME -E pacmd stat | grep $SOURCE_NAME &&
echo "$(date) - PID:$PID Desired Sound device already active, exiting" >> /tmp/DockPlugEvent.log &&
exit 0

# Change sound Source and Sink to the Docking Station sound device if NOT already set
echo "$(date) - PID:$PID Firing Sound device switch" >> /tmp/DockPlugEvent.log
sudo -u $USERNAME -E pacmd set-default-source "$SOURCE_NAME"
sudo -u $USERNAME -E pacmd set-default-sink "$SINK_NAME"
echo "$(date) - PID:$PID Fired Sound device switch" >> /tmp/DockPlugEvent.log

Development environment and apps

OpenLens

Slightly adapted this article about how to compile OpenLens from source code:

## Install NVM
sudo apt-get install -y curl g++ make tar
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

## Download Lens Desktop Core ("OpenLens")
curl -sL -o openlens.tgz https://github.com/lensapp/lens/archive/refs/tags/v6.5.2.tar.gz
tar xf ./openlens.tgz
mv ./lens-6.5.2 ./lens
cd lens/

## Update NPM and then use v16
nvm install-latest-npm
nvm install 16 && nvm use 16 && npm install -g yarn

## Install dependencies and build the app
npm install
npm run build:app

## Install the app
sudo apt install open-lens/dist/OpenLens-6.5.2.amd64.deb

Install the OpenLens Node/Pod Menu Extension using the File → Extensions menu.

Printing

The method for adding a network printer is regrettably still not straightforward as of Ubuntu 22.04. The steps below illustrate how I added a networked Ricoh MP 4055 printer:

  1. Find the IP address of the printer by navigating through its menu system. This path is roughly User Tools > System Settings > Interface Settings > Machine IP Address (press button to see actual address)
  2. Open Printers in the Ubuntu (or equivalent Gnome desktop) system settings. Press the Additional Printer Settings. DO NOT press the Add a Printer button!
  3. In the small dialog that appears press Add.
  4. Select LPD network printer as shown, entering the IP address of the printer.
  5. Choose the make and model, then continue the dialogs until the printer is ready.
  6. Print a test page.
  • No labels