HaveAGitGat / Tdarr

Tdarr - Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking (Windows, macOS, Linux & Docker)
2.72k stars 89 forks source link

Unraid VM Script for Ubuntu Upgrade from 22 to 23 with install of Drivers for Intel Arc A380 #965

Open martinkeat opened 3 months ago

martinkeat commented 3 months ago

Not really a bug or a feature request, but instead a shell script for unraid users to install intel arc a380 on a new ubuntu 22 VM with upgrade to ubuntu 22, includes install of tdarr with 2 separate nodes for the user.

Assumes the person is running a new install Ubuntu 22.04 Server and and logged in via SSH. May be of use but would recommend someone more experienced giving it the once over.


#!/bin/bash

# Set variable for media directory
media_directory=media   # Modify this to your specific directory

# Update package lists and upgrade installed packages
sudo apt update && sudo apt upgrade -y

# Check if nano is installed and install if not
sudo apt install nano -y

# Modify SSH configuration
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# Create mount point for media directory and mount it
sudo mkdir -p /mnt/$media_directory
sudo mount -t virtiofs $media_directory /mnt/$media_directory

# Modify fstab to auto-mount media directory on boot
echo "$media_directory  /mnt/$media_directory  virtiofs  defaults  0  0" | sudo tee -a /etc/fstab > /dev/null

# Install unzip if not already installed
sudo apt install unzip -y

# Add Intel GPU repositories and install necessary packages
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list
sudo apt update
sudo apt install -y \
  intel-opencl-icd intel-level-zero-gpu level-zero \
  intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \
  libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
  libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
  mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y \
  udev mesa-va-drivers:i386 mesa-common-dev:i386 mesa-vulkan-drivers:i386 \
  libd3dadapter9-mesa-dev:i386 libegl1-mesa:i386 libegl1-mesa-dev:i386 \
  libgbm-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev:i386 \
  libgles2-mesa:i386 libgles2-mesa-dev:i386 libosmesa6:i386 \
  libosmesa6-dev:i386 libwayland-egl1-mesa:i386 libxatracker2:i386 \
  libxatracker-dev:i386 mesa-vdpau-drivers:i386 libva-x11-2:i386
sudo apt install -y \
  libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev

# Install necessary multimedia tools
sudo apt install mkvtoolnix libtesseract-dev handbrake-cli ffmpeg -y

# Upgrade system and prepare for release upgrade
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt install update-manager-core -y
sudo sed -i 's/Prompt=lts/Prompt=normal/' /etc/update-manager/release-upgrades
sudo do-release-upgrade -y

# Set up Tdarr server and nodes
mkdir -p /home/$USER/Tdarr_Server/
cd /home/$USER/Tdarr_Server/
wget https://f000.backblazeb2.com/file/tdarrs/versions/2.17.01/linux_x64/Tdarr_Updater.zip
unzip /home/$USER/Tdarr_Server/Tdarr_Updater.zip
sudo ./Tdarr_Updater
mkdir -p /home/$USER/Tdarr_Node_One && mv /home/$USER/Tdarr_Server/Tdarr_Node /home/$USER/Tdarr_Server/configs /home/$USER/Tdarr_Node_One
mkdir -p /home/$USER/Tdarr_Node_Two && cp -r /home/$USER/Tdarr_Server/Tdarr_Node /home/$USER/Tdarr_Server/configs /home/$USER/Tdarr_Node_Two

# Create and configure systemd service files for Tdarr Server and Nodes
cat <<EOF | sudo tee /etc/systemd/system/Tdarr_Server.service > /dev/null
[Unit]
Description=Tdarr Server
After=network.target

[Service]
User=$USER
WorkingDirectory=/home/$USER/Tdarr_Server/
ExecStart=/home/$USER/Tdarr_Server/Tdarr_Updater
Restart=always

[Install]
WantedBy=multi-user.target
EOF

cat <<EOF | sudo tee /etc/systemd/system/Tdarr_Node_One.service > /dev/null
[Unit]
Description=Tdarr Node One
After=network.target

[Service]
User=$USER
WorkingDirectory=/home/$USER/Tdarr_Node_One/
ExecStart=/home/$USER/Tdarr_Node_One/Tdarr_Node
Restart=always

[Install]
WantedBy=multi-user.target
EOF

cat <<EOF | sudo tee /etc/systemd/system/Tdarr_Node_Two.service > /dev/null
[Unit]
Description=Tdarr Node Two
After=network.target

[Service]
User=$USER
WorkingDirectory=/home/$USER/Tdarr_Node_Two/
ExecStart=/home/$USER/Tdarr_Node_Two/Tdarr_Node
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# Reload systemd daemon
sudo systemctl daemon-reload

# Enable and start Tdarr services
sudo systemctl enable Tdarr_Server.service
sudo systemctl enable Tdarr_Node_One.service
sudo systemctl enable Tdarr_Node_Two.service

# Reboot the machine
sudo reboot
HaveAGitGat commented 3 months ago

Thanks for this