Jellyfin Server Project

jellyfin dashboard

Objective:

The aim of this project was to demonstrate proficiency in setting up and managing virtual machines (VMs) within a Linux environment, with a specific focus on installing and configuring media streaming services. The project involved creating a dedicated VM for Jellyfin, an open-source media server, and ensuring that it was optimized for streaming media content.

Key Components:

XCP-ng Virtual Machine Setup:

  • VM Deployment: Deployed a virtual machine on the XCP-ng hypervisor, configuring the VM specifically for hosting a media server. The VM was allocated appropriate resources, including CPU, memory, and storage, to handle media transcoding and streaming tasks.

  • Operating System Installation: Installed Ubuntu Server 22.04 LTS on the VM to maximize performance and minimize resource usage. The choice of distribution was based on compatibility with Jellyfin and the need for a secure, stable environment.

  • Network Configuration: Configured the network interface to ensure smooth connectivity for both internal and external clients. Set up port forwarding and firewall rules to allow secure access to the Jellyfin server from remote devices.

Installing Services:

  • Jellyfin Installation: Installed Jellyfin from the official repositories, ensuring the latest stable version was used. Configured the server to manage and stream a large media library, including movies, TV shows, music, and photos. These files were stored on a file share hosted on the TrueNAS Scale server and were mapped to the Ubuntu Server at boot by adding an entry to the NFS share in the /etc/fstab file.

  • Automated Updates: Set up a system for automated updates and maintenance of Jellyfin and its dependencies, ensuring the server remained secure and up-to-date without manual intervention.

Service Configuration and Management:

  • User Management: Created multiple user profiles with customized access controls, allowing family members or colleagues to access different parts of the media library based on their preferences.

  • Remote Access: Configured Jellyfin for secure remote access, allowing users to stream content from the server on various devices outside the local network. Implemented SSL encryption to secure data transmission.

  • Backup and Restore: Established a backup routine for the media library and Jellyfin configuration files, ensuring that the system could be quickly restored in the event of data loss or corruption.

Monitoring and Logging:

  • Service Monitoring: Implemented monitoring tools to track the performance and uptime of the Jellyfin server. Monitored CPU, memory, and network usage to ensure that the VM was operating within optimal parameters.

  • Logging: Ensured that detailed logging was configured for Jellyfin and the underlying Linux system to capture any errors or unusual activity. Logs were stored securely and could be reviewed for troubleshooting or performance analysis.

Outcome:

This project successfully showcased my ability to deploy and manage a virtual machine in a Linux environment, install and optimize a media streaming service, and ensure secure and reliable operation of the server. The Jellyfin virtual server provided a robust platform for streaming media to various devices, demonstrating both my technical skills and my attention to detail in service configuration and management.