Gabriel Cachadiña

Self-hosted media

· Gabriel Cachadiña

In my current server, I run a series of services to avoid directly depending on any provider that might change their terms and conditions, delete content I have purchased, and/or modify/censor content they consider inappropriate. That’s why I always opt for the direct purchase of the content I consume. However, using Blu-rays to watch movies, series, listen to music, and audiobooks loses many points compared to the convenience offered by streaming platforms, which allow you to watch content from any location and sync it across different devices. In this post, I will show all the services I run to gain independence from third parties and have the freedom to consume MY CONTENT whenever and wherever I wish.

Series/Movies/Music

For all these alternatives, I use Jellyfin, which has a web interface to view my content on my computer, a native Android app, and also supports an integration with Android Auto for listening to music anywhere. To run it on any server, you can use the following docker-compose:

 1---
 2services:
 3  jellyfin:
 4    image: lscr.io/linuxserver/jellyfin:latest
 5    container_name: jellyfin
 6    environment:
 7      - PUID=1000
 8      - PGID=1000
 9      - TZ=Europe/Madrid
10    volumes:
11      - ./Jellyfin/library:/config
12      - ../Media/tvseries:/data/tvshows
13      - ../Media/movies:/data/movies
14      - ../Media/Music:/data/music
15    ports:
16      - 8096:8096
17    restart: unless-stopped

To access it, you should use port 8096 on the local network. If you want to access it from an external network, you should use a VPN like WireGuard, open port 8096, or you could use a proxy through NGINX if you have a domain:

server {
    server_name website.com;
    location / {
        proxy_pass http://localhost:8096;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Audio-books

For my audio-books, I use the Audiobookshelf service, which, just like Jellyfin, has integrations for browsers, Android, and Android Auto. To run it, you can use the following docker-compose:

 1---
 2services:
 3  audiobookshelf:
 4    image: ghcr.io/advplyr/audiobookshelf:latest
 5    ports:
 6      - 13378:80
 7    volumes:
 8      - ../Media/Audiobooks:/audiobooks
 9      - ../Media/Podcasts:/podcasts
10      - ./Audiobookshelf:/config
11      - ./Audiobookshelf:/metadata
12    environment:
13      - TZ=Europe/Madrid
14    restart: unless-stopped

To access the service, you will use port 13378 or one of the alternatives described above.

Books/Manga/Comics

For my books, I use the Kavita program, which only has a native browser client. This client works very well on computers, but on touch systems, it leaves much to be desired. I searched for possible apps that could solve this issue but couldn’t find any. To run this service, you can use the following docker-compose:

 1---
 2services:
 3  kavita:
 4    image: lscr.io/linuxserver/kavita:latest
 5    container_name: kavita
 6    environment:
 7      - PUID=1000
 8      - PGID=1000
 9      - TZ=Europe/Madrid
10    volumes:
11      - ./Kavita:/config
12      - ../Media/books:/data
13    ports:
14      - 5000:5000
15    restart: unless-stopped

And to access the service, you will use port 5000 or one of the alternatives described above.

#gnu/linux #self-hosted

Reply to this post by email ↪