Add install-steam-lxc.sh
This commit is contained in:
parent
4a7b0dfe56
commit
9e72db49cc
1 changed files with 97 additions and 0 deletions
97
install-steam-lxc.sh
Normal file
97
install-steam-lxc.sh
Normal file
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Script to install Steam in an unprivileged LXC container with GPU passthrough
|
||||
# This script should be run as root
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print status messages
|
||||
print_status() {
|
||||
echo -e "${GREEN}[*] $1${NC}"
|
||||
}
|
||||
|
||||
# Function to print error messages
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR] $1${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Check if running as root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
print_error "Please run this script as root"
|
||||
fi
|
||||
|
||||
# Get username for the new user
|
||||
read -p "Enter the desired username: " USERNAME
|
||||
if [ -z "$USERNAME" ]; then
|
||||
print_error "Username cannot be empty"
|
||||
fi
|
||||
|
||||
print_status "Starting installation process..."
|
||||
|
||||
# 1. Update and upgrade packages
|
||||
print_status "Updating and upgrading packages..."
|
||||
apt update || print_error "Failed to update package list"
|
||||
apt upgrade -y || print_error "Failed to upgrade packages"
|
||||
|
||||
# 2. Install required packages
|
||||
print_status "Installing required packages..."
|
||||
apt install -y sudo wget || print_error "Failed to install basic packages"
|
||||
|
||||
# 3. Create new user and add to required groups
|
||||
print_status "Creating new user: $USERNAME"
|
||||
adduser "$USERNAME" || print_error "Failed to create user"
|
||||
usermod -aG render "$USERNAME" || print_error "Failed to add user to render group"
|
||||
usermod -aG sudo "$USERNAME" || print_error "Failed to add user to sudo group"
|
||||
usermod -aG ssl-cert "$USERNAME" || print_error "Failed to add user to ssl-cert group"
|
||||
|
||||
# 4. Install MATE desktop environment
|
||||
print_status "Installing MATE desktop environment..."
|
||||
apt install -y mate-desktop-environment || print_error "Failed to install MATE desktop"
|
||||
|
||||
# 5. Install KasmVNC
|
||||
print_status "Installing KasmVNC..."
|
||||
cd /tmp || print_error "Failed to change to /tmp directory"
|
||||
wget https://github.com/kasmtech/KasmVNC/releases/download/v1.2.0/kasmvncserver_bookworm_1.2.0_amd64.deb || print_error "Failed to download KasmVNC"
|
||||
apt install -y ./kasmvncserver_*.deb || print_error "Failed to install KasmVNC"
|
||||
|
||||
# 6. Install Steam and dependencies
|
||||
print_status "Installing Steam and dependencies..."
|
||||
dpkg --add-architecture i386 || print_error "Failed to add i386 architecture"
|
||||
apt update || print_error "Failed to update package list"
|
||||
|
||||
cd /tmp || print_error "Failed to change to /tmp directory"
|
||||
wget https://cdn.akamai.steamstatic.com/client/installer/steam.deb || print_error "Failed to download Steam"
|
||||
|
||||
# Install Steam and its dependencies
|
||||
apt install -y ./steam.deb || print_error "Failed to install Steam"
|
||||
apt install -y \
|
||||
libc6-i386 \
|
||||
libgl1:i386 \
|
||||
libdrm2:i386 \
|
||||
libc6:amd64 \
|
||||
libc6:i386 \
|
||||
libegl1:amd64 \
|
||||
libegl1:i386 \
|
||||
libgbm1:amd64 \
|
||||
libgbm1:i386 \
|
||||
libgl1-mesa-dri:amd64 \
|
||||
libgl1-mesa-dri:i386 \
|
||||
libgl1:amd64 \
|
||||
libgl1:i386 \
|
||||
steam-libs-amd64:amd64 \
|
||||
steam-libs-i386:i386 || print_error "Failed to install Steam dependencies"
|
||||
|
||||
# Clean up downloaded files
|
||||
rm -f /tmp/steam.deb /tmp/kasmvncserver_*.deb
|
||||
|
||||
print_status "Installation completed successfully!"
|
||||
print_status "Please switch to user '$USERNAME' and run: vncserver -hw3d -drinode /dev/dri/renderD128"
|
||||
print_status "Note: Always use the above command to start KasmVNC to ensure GPU passthrough is enabled"
|
||||
print_status "Important: It's recommended to disable desktop compositing for better performance"
|
||||
print_status "You can start Steam by running the 'steam' command or using the desktop shortcut"
|
Loading…
Reference in a new issue