HEADLESS LINUX INSTALLATION

Install entirely over SSH.

These commands install LessonCue on a 64-bit Ubuntu or Debian server with no desktop or GUI. Use a non-root SSH account with sudo.

Keep the server on your trusted local network. Do not forward LessonCue's HTTP port from the public internet; use its optional protected Cloudflare Tunnel integration or an administrator-managed VPN.
STEP 1

Connect to the server

ssh YOUR_USERNAME@SERVER_IP
STEP 2 · COPY THESE COMMANDS

Download and install the latest release

sudo apt-get update
sudo apt-get install -y curl ca-certificates
curl -fsSL https://raw.githubusercontent.com/nickhighland/lessoncue/main/installers/linux/install-latest.sh | bash

The installer waits for the service and prints LessonCue is ready with http://lessoncue.local and a numeric fallback.

STEP 3

Open the local interface

Open http://lessoncue.local from another computer on the same network. Create your local administrator account, then use the random pairing PIN shown on the Dashboard to pair a TV. Administrators can change the .local name and HTTP port in Settings.

STEP 4

Verify and find the local address

sudo systemctl status lessoncue --no-pager
curl -fsS http://127.0.0.1/health && echo
hostname -I | awk '{print "http://" $1}'

The complete browser interface, API, database, schedules, and media are served by this local machine. No hosted interface is used.

OPTIONAL REMOTE ACCESS

Connect your own Cloudflare hostname

Create a remotely managed tunnel and published application route in your Cloudflare account, point it to the origin shown in Settings → Optional remote access, protect it with Cloudflare Access, then paste the tunnel token into LessonCue. The token is write-only and the connector runs as a restricted local service.

CELLPHONE CONTROLLER

Run playback from the room

http://lessoncue.local/universalremote
http://SERVER-IP/universalremote

Set the universal controller PIN in Settings, or open a class and generate its room, lesson, or expiring temporary QR code. Sign in with a playback-capable LessonCue account. Use Safari's Add to Home Screen or the Android browser's Add to Home screen / Install app action to save it like an app.

LOGS AND RECOVERY

Useful SSH commands

sudo journalctl -u lessoncue -f
sudo systemctl restart lessoncue
sudo systemctl status lessoncue --no-pager

Press Ctrl+C to stop following logs. Disconnecting SSH does not stop LessonCue.

PASSWORD RECOVERY

Reset an administrator over SSH

sudo -u lessoncue env LESSONCUE_DATA_PATH=/var/lib/lessoncue /opt/lessoncue/LessonCue.Server --list-admins

sudo -u lessoncue env LESSONCUE_DATA_PATH=/var/lib/lessoncue /opt/lessoncue/LessonCue.Server --reset-password YOUR_USERNAME

The new password is entered invisibly at the prompt, stored as a secure hash, and existing sessions for that account are signed out.

ALTERNATIVES

Docker, Windows, and native TV apps

The full operator guide also covers Docker Compose, Windows services, Android TV, Fire TV, Apple TV, backups, updates, and clean uninstallation.

Open the full installation guide ↗