如何在 Ubuntu 上安装 Jellyfin 媒体服务器

news2024/11/22 4:15:10

Jellyfin 是一个开源的媒体服务器软件,让你可以整理、管理和流式传输你的个人媒体收藏,比如电影、音乐、电视节目和照片,而且完全免费,没有订阅费用或数据收集的担忧。

简介

  • 媒体管理:Jellyfin 整理媒体库,自动获取元数据,提供丰富的细节,比如封面、描述和演员表。
  • 多平台访问:服务器可以在各种设备上访问,包括智能电视、手机(通过 Android/iOS 应用)、网页浏览器和流媒体设备。
  • 直播电视和 DVR:借助电视调谐器,你可以观看直播电视,甚至录制内容。
  • 注重隐私:Jellyfin 不收集用户数据,不需要在线账户,提供完全的隐私控制。
  • 开源:Jellyfin 完全开源,遵循 GPLv3 许可,没有付费墙后的特殊功能。

流行用例

  • 家庭媒体中心:创建一个媒体中心,可以访问电影、电视节目和音乐,并且可以从任何连接的设备上访问。
  • 远程访问:通过网页浏览器或支持的应用,从任何地方访问你的媒体。
  • 家庭档案:创建多个用户档案,每个都有自己的媒体偏好和家长控制。

Jellyfin 是那些想要一个完全免费且自托管的媒体流解决方案,而不牺牲隐私的用户的首选。

必要前提

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一个指向服务器 IP 的域名(可选)。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。本文将以雨云为例进行演示。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。

注册链接: https://rainyun.ivwv.site/

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

点击 云产品云服务器立即购买

image

选择距离你较近的区域,以保证低延迟。

image

选择配置。

image

选择 Ubuntu 22.04 版本。

image

最后点击 立即购买,并按照提示进行购买。购买后等待机器部署完毕,点击购买的服务器,进入管理面板,找到远程连接相关信息。

image

image

使用 PowerShell 进行远程连接。

image

输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

image

到此为止,我们的云服务器就创建好了。

开始安装

1.安装所需包

更新你的系统并安装必要的包:

apt install apt-transport-https ca-certificates gnupg curl -y

创建 keyrings 目录并添加 Jellyfin GPG 密钥:

mkdir -p /etc/apt/keyrings
curl -fsSL <https://repo.jellyfin.org/jellyfin_team.gpg.key> | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg

2.添加 Jellyfin 仓库

创建一个 Jellyfin 仓库文件:

cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: <https://repo.jellyfin.org/$>( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )
Suites: $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )
Components: main
Architectures: $( dpkg --print-architecture )
Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOF

更新包列表:

apt update

3.安装 Jellyfin

使用以下命令安装 Jellyfin:

apt install jellyfin -y

4.验证 Jellyfin 服务

检查 Jellyfin 服务的状态:

systemctl is-enabled jellyfin
systemctl status jellyfin

5.管理 Jellyfin 服务

使用以下命令管理 Jellyfin 服务:

  • 启动 Jellyfin
systemctl start jellyfin
  • 停止 Jellyfin
systemctl stop jellyfin
  • 重启 Jellyfin
systemctl restart jellyfin

6.配置防火墙

安装 UFW 并配置它以允许必要的服务(也可以直接在云服务器Web面板中开启对应的端口):

apt install ufw -y
ufw allow OpenSSH
ufw enable
ufw allow "WWW Full"
ufw status

7.安装 Apache 和 Certbot

安装 Apache 和 Certbot 用于 SSL 配置:

apt install apache2 certbot python3-certbot-apache -y

检查 Apache 状态:

systemctl is-enabled apache2
systemctl status apache2

启用所需的 Apache 模块:

sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers
systemctl restart apache2

8.设置 Apache 作为反向代理

创建 Jellyfin 的 web 根目录并设置权限:

mkdir -p /var/www/html/jellyfin/public_html
chown -R www-data:www-data /var/www/html/jellyfin/public_html

使用 Certbot 为你的域名获取 SSL 证书:

certbot certonly --agree-tos --email you_email@gmail.com --no-eff-email --webroot -w /var/www/html -d your_domain

9.配置 Apache 虚拟主机

创建一个新的 Apache 虚拟主机配置:

nano /etc/apache2/sites-available/jellyfin.conf

插入以下配置,根据需要更改域名(your_domain)、SSL 证书路径和服务器 IP 地址:

<VirtualHost *:80>
    ServerName your_domain

    # Comment to prevent HTTP to HTTPS redirect
    Redirect permanent / https://your_domain/

    ErrorLog /var/log/apache2/your_domain-error.log
    CustomLog /var/log/apache2/your_domain-access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName your_domain
    DocumentRoot /var/www/html/jellyfin/public_html

    ProxyPreserveHost On

    ProxyPass "/.well-known/" "!"
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"

    ProxyPass "/socket" "ws://0.0.0.0:8096/socket"
    ProxyPassReverse "/socket" "ws://0.0.0.0:8096/socket"

    ProxyPass "/" "http://0.0.0.0:8096/"
    ProxyPassReverse "/" "http://0.0.0.0:8096/"

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
    Protocols h2 http/1.1

    SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
    SSLHonorCipherOrder on

    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

    ErrorLog /var/log/apache2/your_domain-error.log
    CustomLog /var/log/apache2/your_domain-access.log combined
</VirtualHost>
</IfModule>

10.启用 Jellyfin 站点并重启 Apache

启用 Jellyfin 站点配置:

a2ensite jellyfin.conf
apachectl configtest
systemctl restart apache2

11.访问 Jellyfin Web 界面

打开你的网页浏览器,访问你的 Jellyfin 安装的域名,比如 https://your-domain.com/。如果配置成功,你应该可以看到 Jellyfin 安装向导,然后可以继续设置你的媒体服务器。

首先,选择你的 Jellyfin 安装的默认语言,然后点击 Next

image.png

现在,为你的 Jellyfin 安装创建一个新的管理员用户。输入你的用户名和密码,然后点击 Next

image.png

对于媒体库,你可以稍后配置。点击 Next 继续。

image.png

选择你的首选语言,然后点击 Next

image.png

检查允许远程连接的选项以启用对你的 jellyfin 媒体服务器的远程访问。此外,你可以通过检查选项来启用端口映射。然后,点击 Next

image.png

如果你的配置成功,你应该得到 You’re Done! 的消息。点击 Finish 完成 jellyfin 安装。

image.png

现在,你应该被重定向到 Jellyfin 登录页面。输入你的管理员用户名和密码,然后点击 Sign In

image.png

如果一切顺利,你应该得到像这样的 Jellyfin 管理仪表板:

image.png

最后,点击 Administration 部分的 Dashboard 菜单。你应该可以看到关于你的 Jellyfin 媒体服务器安装的详细信息:

image.png

Jellyfin 现在已经成功安装在你的服务器上。通过配置 Apache 作为反向代理,你可以通过 HTTPS 安全地访问 Jellyfin。

相关链接
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog
面试鸭:https://mianshiya.com/?shareCode=sq29yv
我的博客:https://blog.ivwv.site

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android集成FCM(Firebace Cloud Messaging )

集成FCM官方文档 Firebace主页面 将 Firebase 添加到您的 Android 应用 1、进入Firebace页面&#xff0c;创建自己的项目 2、点击自己创建好的项目&#xff0c;在右侧选择Cloud Messaging 3、点击Android去创建 google-services.json 4、将下载的 google-services.json 文件…

实时直播平台如何实现美颜功能?第三方美颜API与美颜SDK的技术

通过实时美颜技术&#xff0c;主播可以轻松实现肤色优化、五官调整以及滤镜效果&#xff0c;极大提升观众的观看体验。本篇文章&#xff0c;小编将深入讲解实时直播平台如何通过第三方美颜API与美颜SDK实现美颜功能&#xff0c;以及其中的技术实现与关键要点。 一、实时美颜的…

使用GDB或Delve对已经运行起来的Go程序进行远程调试

同步发布在我的博客&#xff0c;欢迎来点赞。 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 背景 Java 程序可以很方便地通过 jdwp 参数指定一个对外端口进行远程调试&#xff0c;如 java \ -agentlib…

Ubuntu问题 -- 设置ubuntu的IP为静态IP (图形化界面设置) 小白友好

目的 为了将ubuntu服务器IP固定, 方便ssh连接人在服务器前使用图形化界面设置 设置 找到自己的网卡名称, 我的是 eno1, 并进入设置界面 查看当前的IP, 网关, 掩码和DNS (注意对应eno1) nmcli dev show掩码可以通过以下命令查看完整的 (注意对应eno1) , 我这里是255.255.255.…

实现一个string的indexof方法,给出时空复杂度估计

文心快码(BaiduComate)是基于百度文心大模型&#xff0c;在研发全流程全场景下为开发者提供辅助建议的智能代码助手。结合百度积累多年的编程现场大数据、外部优秀开源数据&#xff0c;可为开发者生成更符合实际研发场景的优秀代码&#xff0c;提升编码效率&#xff0c;释放“十…

ESP8266 STA模式TCP客户端 电脑手机网络调试助手

1.STA模式TCP客户端和电脑网络调试助手 2.STA模式TCP客户端和手机网络调试助手

【lamafactory BLEU ROUGLE L评测】

1、BLEU/ROUGLE评测界面 2、这个是用BLEU 和ROUGL来评测 目录&#xff1a;saves/Qwen2-7B-Chat/lora/eval_2024-11-14-16-28-19/ 在saves文件夹 生成的文件如下 all_results.json文件 说明模型在这个测试集上是不好的 3、可以查看预测结果的文件 predict_result.json

Ros Noetic 20.04 跑通mpc_ros包保姆级教程

前言: 本文将简述mpc_ros包在noetic20.04中的安装,mpc是 一种跟踪、MPC_ROS 是一个基于ROS(Robot Operating System)的模型预测控制(Model Predictive Control,MPC)库。该项目旨在为机器人控制提供一个灵活且高效的MPC实现,使得开发者能够在ROS环境中轻松集成和使用MPC…

游戏+AI的发展历程,AI技术在游戏行业的应用有哪些?

人工智能&#xff08;AI&#xff09;与游戏的结合&#xff0c;不仅是技术进步的体现&#xff0c;更是人类智慧的延伸。从最初的简单规则到如今的复杂决策系统&#xff0c;AI在游戏领域的发展历史可谓波澜壮阔。 早在2001年&#xff0c;就有研究指出游戏人工智能领域&#xff0…

HarmonyOs DevEco Studio小技巧31--卡片的生命周期与卡片的开发

Form Kit简介 Form Kit&#xff08;卡片开发服务&#xff09;提供一种界面展示形式&#xff0c;可以将应用的重要信息或操作前置到服务卡片&#xff08;以下简称“卡片”&#xff09;&#xff0c;以达到服务直达、减少跳转层级的体验效果。卡片常用于嵌入到其他应用&#xff0…

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性 过期删除策略内存淘汰机制怎么保证redis双写的一致性?更新策略先删除缓存后更新数据库先更新数据库后删除缓存如何选择&#xff1f;如何保证先更新数据库后删除缓存的线程安全问题&#xff1f; 过期删除策略 为了…

单元测试框架gtest学习(三)—— 事件机制

前言 上节我们学习了gtest的各种宏断言 单元测试框架gtest学习&#xff08;二&#xff09;—— 认识断言-CSDN博客 本节我们介绍gtets的事件机制 虽然 Google Test 的核心是用来编写单元测试和断言的&#xff0c;但它也允许在测试执行过程中进行事件的钩取和自定义&#xf…

Unity Inspector窗口可编辑的脚本变量

Inspector可编辑的脚本变量 默认会显示的变量 在Unity中&#xff0c;为了方便我们进行一些属性的设置及调试&#xff0c;我们所写的公有基础数据类型会显示在Inspector之中&#xff0c;我们可以对他进行设置来更改它的取值。 显示私有变量 在有些情况下&#xff0c;设计代码…

力扣 LeetCode 110. 平衡二叉树(Day8:二叉树)

解题思路&#xff1a; 等于 -1 时&#xff0c;直接 return -1 class Solution {public boolean isBalanced(TreeNode root) {return getHeight(root) ! -1;}public int getHeight(TreeNode root) {if (root null) return 0;int leftDepth getHeight(root.left);if (leftDep…

unity3d————基础篇小项目(设置界面)

代码示例&#xff1a; 设置界面 using System.Collections; using System.Collections.Generic; using UnityEngine;public class SettingPanel : BasePanel<SettingPanel> {public UIButton btnClose;public UISlider sliderMusic;public UISlider sliderSound;public…

商用密码产品认证名录说明

《商用密码产品认证目录》是为贯彻落实《中华人民共和国密码法》&#xff0c;进一步健全完善商用密码产品认证体系&#xff0c;更好满足商用密码产业发展需要&#xff0c;根据《国家密码管理局 市场监管总局关于调整商用密码产品管理方式的公告》《市场监管总局 国家密码管理局…

从零做一个遥控玩具,需要学什么

遥控玩具编程是一个充满乐趣和挑战的领域&#xff0c;它完美地结合了硬件控制和软件编程。记得小时候拿着遥控器操控玩具汽车&#xff0c;总觉得神奇。如今站在程序员的视角&#xff0c;终于明白这背后是怎样的技术在支撑。 这些有趣的遥控玩具&#xff0c;其核心都是基于单片…

java的web项目如何连接数据库

mysql-connector.jar 是一个Java库文件&#xff0c;它提供了Java应用程序与MySQL数据库进行交互的接口 首先准备好这个文件&#xff0c;没有的话在网上搜索 将它放在这个位置&#xff0c;MySQL连接配置就好了&#xff0c; 如果拖不进去&#xff0c;右击项目名称&#xff0c;…

视频修复技术和实时在线处理

什么是视频修复&#xff1f; 视频修复技术的目标是填补视频中的缺失部分&#xff0c;使视频内容连贯合理。这项技术在对象移除、视频修复和视频补全等领域有着广泛的应用。传统方法通常需要处理整个视频&#xff0c;导致处理速度慢&#xff0c;难以满足实时处理的需求。 技术发…

OpenTelemetry 赋能DevOps流程的可观测性革命

原作者&#xff1a;天颇 原出处&#xff1a;微信公众号 乘云数字DATABUFF 原文地址&#xff1a;https://mp.weixin.qq.com/s/D_f31EBtLu7Rr0gahuF-bw 引言 在当今快节奏的软件开发和运维环境中&#xff0c;DevOps 已经成为主流&#xff0c;它通过整合开发和运维流程&#xff0…