This guide will walk you through setting up a server so you can have a multimedia center in your home, and you can also make backups of important files in the same place.
Multimedia:
- Movies
- TV
- Music
- Set this up on a laptop or computer that you don't regularly use, and can leave running all day.
- Install Debian without GUI, this will consume less resources and you won't need it.
- You only need 30GiB for the system, the rest will be for your files.
- Connect the laptop/PC via Ethernet, Wi-Fi can get slow or slow down your Wi-Fi for all other uses.
- Do not open ports, use WireGuard/Tailscale.
- Seed the files at least 1.0 ratio.
- debian/debian based distro
- your user with sudo
- git and curl (
sudo apt install git curl
) - docker and docker compose here.
- Static IP
Run the following command to uninstall all conflicting packages:
- Installation
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
- Verify that the Docker Engine installation is successful by running the hello-world image.
sudo docker run hello-world
Add your user to the docker group
sudo usermod -aG docker $USER
Log out and log back in.
Download this repo
git clone https://github.com/brockar/docker-media-server.git
Create the necessary folders.
Here is an example directory structure.
/home/user/
├── backup
├── data
│ ├── media
│ │ ├── movies
│ │ ├── music
│ │ └── tv
│ └── torrents
└── docker
├── file-b
├── homepage
├── jellyfin
├── jellyseerr
├── lidarr
├── prowlarr
└── sonarr
Use create_subfolders.sh
to auto create this paths.
Modify the Docker Compose file by specifying your paths in the volumes:
section of each container.
Or use.env.example
with your path.
Here we have all ready, now just
docker compose up -d
U can enter into apps from homepage or ip:port
.
I use Homepage to collect all the links to the pages. Homepage Wiki.
ip a
Look for the interface enXXX: inet
, for example eno1 o enp1s0: 192.168.100.X
.
Now, configure your IP to be static
sudo vim /etc/network/interfaces
from
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp1s0
iface enp1s0 inet dhcp
to
# The loopback network interface
auto lo
iface lo inet loopback
#The primary network interface
auto enp1s0
iface enp1s0 inet static
address 192.168.100.100 # Select your ip, i recommend .100, you can select from 2 to 255 but if is low, can fails.
netmask 255.255.255.0
gateway 192.168.100.1 # The same as your initial ip but with an 1 at the least
Configure Prowlarr (localhost:9696) to obtain the indexers (from where the torrents are obtained).
Add some (1337x, EZTV for example) and save them.
From this app, we are going to sync our trackers in Sonarr, Radarr, and Lidarr. You need to configure that.
Configure qBittorrent/ruTorrent as you want.
I recommend the "MaterialDesign" theme for ruTorrent and VueTorrent for qBittorrent.
Downloads > Default directory for downloads: data/torrents/
localhost:8080
Sonarr / (TV/Series) localhost:8989
Radarr / (Movies) localhost:7878
Set up both following the recommendations from TrashGuide.
Now you just have to add the series (Sonarr) you want to watch and the movies (Radarr) or music (Lidarr).
You can view the status of downloads in the applications themselves or in qBittorrent/ruTorrent.
at http://localhost:8096 or on your TV / Mobile.
Install samba
sudo apt install samba samba-common-bin
Modify the smb.conf
file to share the folder
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
sudo nano /etc/samba/smb.conf
At the end of the file add:
[share-name]
path = /home/user/backup
browseable = Yes
read only = No
wins support= Yes
Finally
sudo systemctl restart smbd
Finally, log in using your Linux user from Linux/Windows/Android/iOS.
Search for the content you want to download in its respective application.
Wait for it to download.
Watch it via Jellyfin.
To add the folder on Linux, just connect to smb://ip/share-name
.
Or can mount as a folder .
On Windows, in the explorer (This PC > ...
) you can:
- Connect to a media server
- Add a network location
- Map network drive
with \\ip\share-name
In the repository, there are several containers that might be useful to you.
I'll share their respective websites, and you can run them simply like this:
docker compose -f container.yml up -d
- filebrowser (a file browser)
- glances (resource viewer)
- pi-hole (ad-blocker dns)
- speedtest (auto speedtest)
resource.
A management tool for Docker.
First, create the volume that Portainer Server will use to store its database:
docker volume create portainer_data
Then, download and install the Portainer Server 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
By default, Portainer generates and uses a self-signed SSL certificate to secure port 9443
Portainer Server has now been installed. You can check to see whether the Portainer Server container has started by running docker ps
.
Now that the installation is complete, you can log into your Portainer Server instance by opening a web browser and going to:
https://localhost:9443
You can add this compose.yml
to App Template and deploy.
Done!.
If your server is a laptop, run the following commands:
apt install vbetool
to screen off
sudo vbetool dpms off
to screen on
sudo vbetool dpms on
to close screen and prevent the system from turning off.
sudo nano /etc/systemd/logind.conf
And change #HandleLidSwitch=suspend
to
HandleLidSwitch=ignore