#-------------------------------------------------------------------------------- # HP Elitebook BIOS upgrade HP Elitebook 2570p (i7 3520M) 2x8GB RAM BIOS v66 2 TB SSD, 2 TB 2nd HP Elitebook 2560p (i7 2620M) x2 2x8GB RAM BIOS v69 2 TB SSD, 2 TB 2nd (x2; on each) spare: 5x4 GB RAM, 150 GB Win8 disk, 2 TB spare https://h30434.www3.hp.com/t5/Notebook-Hardware-and-Upgrade-Questions/Latest-BIOS-for-HP-EliteBook-2560p/td-p/8149281 but requires windows running on the machine to upgrade. https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe 2560p v66 # Likely last ever; from 2018 https://ftp.hp.com/pub/softpaq/sp85001-85500/sp85500.exe 2570p v69 # Likely last ever; from 2018 Never could get to work using windows-B or other mechanisms; restored to using Win8 disk and running Windows utility #-------------------------------------------------------------------------------- # Install Ubuntu Desktop on Elitebook Install Ubuntu from USB Stick on Legacy Boot; then change to UEFI w/out CRM to boot off new disk 2570 needs to add custom boot order ahead of hardisk: \EFI\Ubuntu\shimx64.efi (or remove EFI/BOOT/fbx64.efi ) (see https://askubuntu.com/questions/1417217/reset-system-boot-loop-after-installing-ubuntu-22-04-lts-on-hp-probook) #-------------------------------------------------------------------------------- # Remove SNAPD and all its apps lsblk To remove SNAP and /dev/loop* ent ries: sudo systemctl disable snapd.service sudo systemctl disable snapd.socket sudo systemctl disable snapd.seeded.service sudo systemctl mask snapd.service # creates symlink /etc/systemd/system/snapd.service -> /dev/null sudo apt purge snapd sudo apt autoremove sudo rm -rf /etc/systemd/system/snapd* /etc/systemd/system/snap-* var-snap-firefox*mount # all the /dev/loop mount scripts sudo umount /var/snap/firefox/common/host-hunspell # One mount seemingly left over sudo rm -rf /var/snap # Only happens when umounts done sudo apt-mark hold snapd # https://askubuntu.com/a/1345401/1744185 sync ; sync ; reboot # To get SNAPD back: sudo rm -f /etc/systemd/system/snapd # The symlink created earlier sudo apt install snapd # Turns off the hold #-------------------------------------------------------------------------------- # Add Google Chrome cd /usr/local sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb # rm -f google-chrome-stable_current_amd64.deb #-------------------------------------------------------------------------------- # Add second H # https://askubuntu.com/questions/125257/how-do-i-add-an-additional-hard-drive sudo cgdisk /dev/sdb # if not yet partitioned) sudo mkfs -t ext4 /dev/sdb1 # if not yet formatted) Capture UUID there or ... sudo blkid /dev/sdb1 # To get UUID for partition sudo vi /etc/fstab UUID=5d6c8f68-dcc8-4a91-a510-9bca2aa71521 /backup ext4 defaults 0 0 # Used to be /dev/sdb1 instead of UUID sudo mkdir /backup sudo mount /backup #-------------------------------------------------------------------------------- # Add ssh server # https://www.cyberciti.biz/faq/how-to-install-ssh-on-ubuntu-linux-using-apt-get/ sudo apt install openssh-server sudo systemctl enable ssh sudo ufw allow ssh # If needed later: sudo systemctl start ssh ; stop ssh ; restart ssh # Add ssh client (if needed) sudo apt install openssh-client ssh user@server scp file user@server:/path ssh user@server who # To run commands on remote server without creating a terminal connection #-------------------------------------------------------------------------------- # Add static IP reservation goto 10.1.10.1, advanced setup, .... add reservation, select laptop currently on, shoose 16-18 for WebServ1-3 Apply ; reboot router #-------------------------------------------------------------------------------- # To prevent laptop from sleeping when closing lid or over set period of time sudo add-apt-repository universe sudo apt install gnome-tweaks start tweaks and disable "suspent on lid close" sudo vi /etc/systemd/logind.conf Uncomment and set: HandleLidSwitch=ignore HandleLidSwitchExtendPower=ignore LidSwitchIgnoreInhibited=no GUI settings: power: auto-suspend turned off #-------------------------------------------------------------------------------- # Turn off Wifi when cable connected sudo apt install tlp sudo vi /etc/tlp.conf Uncomment and possibly change value as shown: WIFI_PWR_ON=off WOL_DISABLE=N DEVICES_TO_DISABLE_ON_STARTUP=( ) # Remove wifi DEVICES_TO_ENABLE_ON_STARTUP=( wifi ) # simply uncomment DEVICES_TO_DISABLE_ON_SHUTDOWN=( ) # simply uncomment DEVICES_TO_ENABLE_ON_AC=( wifi ) # simply uncomment DEVICES_TO_DISABLE_ON_BAT=( ) # Remove wifi DEVICES_TO_DISABLE_ON_LAN_CONNECT=( ) # Add wifi DEVICES_TO_ENABLE_ON_LAN_DISCONNECT=( wifi ) # Add wifi #-------------------------------------------------------------------------------- # Disable MOTD via SSH sudo vi /etc/pam.d/sshd comment out two lines w/ motd: session optional pam.motd .... # Install LXC/LXD container software (vs Docker) # https://ubuntu.com/server/docs/containers-lxc #-------------------------------------------------------------------------------- sudo apt install net-tools -y # to get ifconfig sudo apt install cifs-utils -y # to get SMB mount capability #-------------------------------------------------------------------------------- # Install Docker https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update # Install docker engine sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin #-------------------------------------------------------------------------------- # Install Jellyfin version (see https://jellyfin.org/docs/general/installation/container#docker) (not tried) #-------------------------------------------------------------------------------- # Install Jellyfin apt version sudo apt install jellyfin-server # sudo apt update ; sudo apt upgrade # for jellyfin-web jellyfin-server #-------------------------------------------------------------------------------- # Install Jellyfin (manual automatic; not docker) (see https://jellyfin.org/docs/general/installation/linux#repository-automatic) wget -O - https://repo.jellyfin.org/install-debuntu.sh | sudo bash sudo systemctl status jellyfin.service or sudo service jellyfin status (vs start, stop) # Have to locally mount any media repositories that the Jellyfin server relies on ; gives local path for setup sudo mkdir /media/cd_dvd ; sudo mkdir /media/family sudo cat >> /etc/fstab <<EOF //Media.local/cd_dvd /media/cd_dvd cifs credentials=/opt/jellyfin/.smbcredentials,iocharset=utf8 0 0 //Media.local/family /media/family cifs credentials=/opt/jellyfin/.smbcredentials,iocharset=utf8 0 0 EOF sudo vi /opt/jellyfin/.smbcredentials username jellyfin password xxyyzzz (see KeePass) sudo mount -a On another machine, web access the Jellyfin setup panel: http://10.1.10.16:8096/ ( account: admin, pass: xxxxxxxxx ) Add libraries Add users (admin2 w/ db keyword and admin priv, randy, christina, roshan, beth; max 3 login attempts; max 1 user session except 3 for beth; hide only admin2 from panel) Add TV Tuners (use SchedulesDirect, user: SurplusGadgets, pass: 3MAZXfTPtq2k3tn ; source is Antennae (at very bottom of list)) Add DVR Add custom css in user Display (only works on web access; not in apps) # https://www.reddit.com/r/jellyfin/comments/iomrc5/comment/jmq3jpa/?utm_source=reddit&utm_medium=web2x&context=3 @media all { .homePage .emby-scroller { margin-right: 0; } .homePage .emby-scrollbuttons { display: none; } .homePage .itemsContainer { flex-wrap: wrap; } } Reorder libraries (user settings, home) Movies, TVShows, Music, LiveTV, Family Photos, Family Music, Family Videos And home sections (My Media-small, LiveTV, Continue Watching, Active, Continue listening, Active Recording, None, None) Remove Home * groups from Latest Media, etc. # Add Subtitle feature (see https://gofoss.net/media-streaming/#subtitles) load / enable "Open Subtitles" plugin Opensubtitles.org account (RandyHa, Hz6DYhbyQBhMnPHl9wX4$) # Due to a change to ffpmeg7 from ffmpeg5, needed to switch to aptitude to update jellyfin (https://askubuntu.com/a/510161): sudo apt-get install aptitude -y sudo aptitude safe-upgrade # Required after software update (?) # (debugging where service stops due to failed exit status=143; # ( /opt/jellyfin/log/<latest log>/log shows -- ReadOnly: SQLitePCL.pretty.SQLiteException: attempt to write a readonly database) ln -s /usr/share/jellyfin/web/ /usr/lib/jellyfin/bin/jellyfin-web # found /opt/jellyfin/config/migrations.ml and some other files owned by root; rest owned by randy. Changed all to owned by Randy # Log when trying to restart (sudo service jellyfin start) lists read-only DB error. [2024-02-11 20:29:54.309 -05:00] [FTL] [1] Main: Error while starting server. ReadOnly: SQLitePCL.pretty.SQLiteException: attempt to write a readonly database # not clear what DB file has lock. See /opt/jellyfin/data/data/{jellyfin,library}.db and /var/lib/jellyfin/data/{jellyfin,library}/db for possible) sudo apt-get install sqlite3 sqlite3 dbname.db pragma locking_mode # see https://www.sqlite.org/pragma.html#pragma_locking_mode # Noticed that /opt/jellyfin/data/data/*db files owned by root; but all above owned by Randy. So changed all to owned by Randy. # Rerun sudo /opt/jellyfin/jellyfin.sh (which is what /etc/systemd/services/jellyfin.services runs) (when halts; ctrl-z then bg) ******* Noticed only accesible via internetIP:8096 and not from local 10.1.10.16:8096 . And then back to original setup screen to set admin password, etc. -- anybody on internet could do. ******* # To uninstall when installed via apt-get: rm -rf /var/lib/jellyfin /etc/jellyfin /opt/jellyfin # see https://www.reddit.com/r/jellyfin/comments/xhgn2l/how_do_i_fully_reinstall_jellyfin/ sudo apt-get remove jellyfin-web jellyfin-server # Not listed due to RHEL question but needed on other Debian instead of dnf command given # But how to leave config settings and data folders to be reused if reinstalling? # Admin account locked out # https://jellyfin.org/docs/general/administration/troubleshooting/#unlock-locked-user-account http://104.185.79.219:8096/ or 10.1.10.16:8096 sudo service jellyfin stop/status/start *** IMPORTANT -- use /opt/jellyfin/config/system.xml and not /etc/jellyfin/system.xml to get to system reinitialize screen cd /opt/jellyfin/data/data sqlite3 jellyfin.db UPDATE Users SET InvalidLoginAttemptCount = 0 WHERE Username = 'admin3'; UPDATE Permissions SET Value = 0 WHERE Kind = 2 AND UserId IN (SELECT Id FROM Users WHERE Username = 'admin3'); # https://github.com/jellyfin/jellyfin/blob/master/Jellyfin.Data/Enums/PermissionKind.cs