This week we're honoring the Academy Awards by discussing movie cocktails and in-home media servers!
We start with 007's favorite drink (shaken, not stirred) and talk hardware and software options for how to have your very own media server inside your house.
From there we bring in Scarface's Cuba Libre to assist us in actually building a media server out of an old machine that we bring back to life with Linux.
Interested in doing something similar at home? Here's how we did it!
Follow along with the video to see the step by step instructions, but here's a lot of the commands for you to paste into your CLI. Be sure to read them prior to pasting to confirm there isn't a specific variable or detail you need to change for your machine.
To see your new IP address:
ip addr show
To run updates:
sudo apt update
sudo apt upgrade -y
Go to another computer in your home and ssh into the Linux box for the rest of this.
To SSH:
ssh username@ipaddress (change these variables accordingly)
Install Docker Pre-reqs:
sudo apt install -y ca-certificates curl gnupg lsb-release
Add Docker's GPG Key:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Set up Repository (There should be a Angled Bracket [Shift + .] after docker.list):
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list (angled bracket, see above) /dev/null
Install Docker:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Add user to docker group:
sudo usermod -aG docker $USER
Verify Docker:
docker --version
Create home for Plex:
mkdir -p ~/docker/plex/config
mkdir -p ~/media/movies
mkdir -p ~/media/tv
Create YAML File:
nano ~/docker/plex/docker-compose.yml
YAML File:
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC # Change to your timezone, e.g., America/New_York
- VERSION=docker
volumes:
- ~/docker/plex/config:/config
- ~/media/tv:/tv
- ~/media/movies:/movies
restart: unless-stopped
Launch Server:
cd ~/docker/plex
docker compose up -d
Claim Server in Web Browser:
http://IPAddress:32400/web
Set permissions:
sudo chown -R $USER:$USER ~/media
Install Cockpit:
sudo apt update
sudo apt install -y cockpit
Enable Cockpit:
sudo systemctl enable --now cockpit.socket
Confirm Cockpit access in Web Browser:
https://IPAddress:9090
Keep PC from Going to sleep:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Create Volume for Portainer:
docker volume create portainer_dataRun Container:docker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Access Portainer via Web Browser:
https://IPAddress:9443
Add Tailscale VPN:
curl -fsSL https://tailscale.com/install.sh | sh
Bring Tailscale Connection Up:
sudo tailscale up
Find Tailscale IP address:
tailscale ip -4
Install Samba on Linux server:
sudo apt update
sudo apt install samba -y
Create Samba User:
sudo smbpasswd -a (insert user name here)
Setup Plex Group Permissions:
sudo groupadd plex
sudo usermod -aG plex (Insert username here)
sudo chown -R (insert username here):plex ~/media/movies
sudo chmod -R 775 ~/media/movies
Configure Share:
sudo nano /etc/samba/smb.conf
Paste block into bottom:
[Movies]
path = /home/joseph/media/movies
read only = no
browsable = yes
guest ok = no
Start Service:
sudo systemctl restart smbd
And there you go! Map your drive to your PC, move your digital files over, and go watch them on Plex!