Connect to the server
ssh YOUR_USERNAME@SERVER_IP
HEADLESS LINUX INSTALLATION
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.
ssh YOUR_USERNAME@SERVER_IP
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.
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.
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.
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.
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.
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.
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.
The full operator guide also covers Docker Compose, Windows services, Android TV, Fire TV, Apple TV, backups, updates, and clean uninstallation.