华为云征文|部署私有云和文档管理系统 Kodcloud
- 一、Flexus云服务器X实例介绍
- 1.1 云服务器介绍
- 1.2 应用场景
- 1.3 对比普通ECS
- 二、Flexus云服务器X实例配置
- 2.1 重置密码
- 2.2 服务器连接
- 2.3 安全组配置
- 三、部署 Kodcloud
- 3.1 Jellyfin 介绍
- 3.2 Docker 环境搭建
- 3.3 Jellyfin 部署
- 3.4 Jellyfin 使用
- 四、总结
一、Flexus云服务器X实例介绍
1.1 云服务器介绍
云服务器的重要意义主要体现在灵活性、弹性和成本效益。它们提供了根据需求即时调整计算资源的能力,节省了长期硬件采购和维护的成本,同时保障业务的稳定运行。通过云服务器,企业可以更高效地部署、扩展和管理应用程序,适应快速变化的市场需求,推动数字化转型,加速业务创新。
华为云下一代云服务器Flexus X实例焕新上线,新产品具备柔性算力,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景,从而帮您快速上云!
Flexus X实例通过和其他服务组合,具备计算、镜像安装、网络、存储、安全等能力,您可根据业务需要灵活配置各资源。
本次测评使用的规格是:4核12G-100G-3M规格
的Flexus X实例基础模式
1.2 应用场景
Flexus云服务器X实例打造的柔性算力云服务器,可智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。
电商直播
:基于Flexus X实例搭建电商交易平台,可以从容面对电商市场瞬息万变对的业务压力变化。企业建站
:面向博客、论坛,和企业门户等业务场景,帮助企业传播价值信息,促进信息共享和交流,支撑用户建设多功能的传播和交互平台。个人开发测试
:开发者在开发、测试过程中需要的环境资源,可以选择从云上提供。基于Flexus云服务器X实例搭建开发测试环境,更加便利,成本更优。游戏服务器
:适用于搭建游戏后台服务器,强大算力轻松应对千人同时在线,同时平滑扩容可快速应对服务器玩家数量上涨诉求,超强的网络加速能力提升用户体验。
1.3 对比普通ECS
项目 | Flexus应用服务器L实例 | Flexus云服务器X实例 | ECS |
---|---|---|---|
适用对象 | 适用于业务负载要求相对较低,且期望即开即用、超快部署的中小企业和开发者。 | 适用于中负载业务,且期望资源灵活选配的中小企业和开发者。 | 适用于网站应用、企业电商、图形渲染、数据分析、高性能计算等高负载、全业务应用场景。 |
实例特点 | 内置丰富的解决方案与镜像,零门槛快速搭建业务环境,轻松启动和管理业务 | 灵活自定义规格、性能稳定强劲、按需灵活计费。 | 支持灵活地选择所需的内存、CPU、带宽等配置,帮助您打造可靠、安全、灵活、高效的应用环境。 |
二、Flexus云服务器X实例配置
2.1 重置密码
购买完成后,会短信通过你的云服务器信息,重点是公网IP地址和用户名。首先我们需要打开你的服务器控制台,完成重置密码
勾选自动重启,点击确定即可。
2.2 服务器连接
-
方式一:使用控制台提供的VNC方式登录
-
方式二:使用Putty、Xshell等工具登录Linux弹性云服务器,
a) 下载安装登录工具,例如Putty。
b) 输入弹性公网IP。
c) 输入用户名:root、密码,单击“确定”。 -
方式三:使用Linux/Mac OS系统主机登录Linux弹性云服务器。
a) 执行连接命令。
ssh 弹性公网IP
例如:ssh 123.xxx.xxx.456
b) 输入用户名:root、密码,登录服务器。
我个人习惯使用 MobaXterm
这款软件,添加SSH连接,输出公网IP
、用户名和端口(默认22),连接即可。
2.3 安全组配置
安全组是一个逻辑上的分组,为同一个VPC内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。
系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组。
主要需要填写优先级(默认填1即可)、协议端口信息(一般选择你项目需要暴露的端口即可),其他默认点击确定即可。安全组配置主要是暴露端口可以给外网访问。
如果还不清楚可以参考文档:安全组配置示例
三、部署 Kodcloud
3.1 Jellyfin 介绍
Jellyfin是一个自由软件媒体系统,让您控制管理和流媒体。它是专有Emby和Plex的替代方案,通过多个应用程序将媒体从专用服务器提供给最终用户设备。Jellyfin是Emby的3.5.2版本的派生版本,并移植到.NET Core框架,以支持完全的跨平台支持。
Jellyfin 使你能够收集、管理和串流你的媒体。在你的系统上运行 Jellyfin 服务器,就可以访问领先的免费软件娱乐系统,包括各种铃声和口哨声。
-
电影:轻松浏览您收藏的全部电影,并欣赏精美的艺术作品。
-
节目:观看您最喜爱的节目,这些节目按季节自动分类,随时可供狂欢。
-
音乐:在家或外出时都能聆听音乐、艺术家和播放列表。
-
实时电视和 DVR:观看电视并设置自动录制,扩展你的资料库。
-
书籍:阅读书籍、漫画和杂志。
-
照片:整理照片,与亲朋好友分享美好回忆。
-
同步播放:远程共享电影之夜从未如此简单。
Jellyfin 的设计也很简约,无广告,在观影过程中不会有其他视频类应用的的开屏广告、暂停广告、弹框广告等。基于固定的带宽,无人为的限速,播放不卡顿,高清播放,不用VIP即可倍速播放。真正的可以建立个人专属的影音视频库,可以记录观影信息。如果视频文件包含meta信息,可以自动获取对应的影视信息。
- 官网:https://jellyfin.org/
- Github:https://github.com/jellyfin/jellyfin
3.2 Docker 环境搭建
本次服务器环境是ubuntu系统镜像,需要自己安装docker环境
服务器类别 | 系统镜像 | 内网IP地址 | Docker版本 | 操作系统版本 |
---|---|---|---|---|
云耀云服务器L实例 | Ubuntu | 192.168.0.168 | 20.10.24 | Ubuntu 22.04.1 LTS |
使用snap
命令安装docker
root@hcss-ecs-f632:~# snap install docker
docker 20.10.24 from Canonical✓ installed
测试docker
安装是否成功
root@hcss-ecs-f632:~# docker -v
Docker version 20.10.24, build 297e128
检查docker
服务状态
root@hcss-ecs-f632:~# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2023-09-14 14:25:21 CST; 2 days ago
TriggeredBy: ● docker.socketDocs: https://docs.docker.comMain PID: 30672 (dockerd)Tasks: 73Memory: 137.0MCPU: 2min 37.906sCGroup: /system.slice/docker.service
检查docker compose
版本
root@hcss-ecs-f632:~# docker compose version
Docker Compose version v2.17.2
3.3 Jellyfin 部署
- 下载镜像
从 docker hub 拉取 Jellyfin 镜像,地址:https://hub.docker.com/r/jellyfin/jellyfin
root@hcss-ecs-f632:~# docker pull jellyfin/jellyfin
Using default tag: latest
latest: Pulling from jellyfin/jellyfin
7dbc1adf280e: Already exists
fe8f721fbd98: Pull complete
72d8918d1ff1: Pull complete
7c27c084bf78: Pull complete
Digest: sha256:d39f8826c0e48b08770b735ab0342c9cb9fc08c59777f41080c76549526fd667
Status: Downloaded newer image for jellyfin/jellyfin:latest
docker.io/jellyfin/jellyfin:latest
- 配置安全组
在华为云云耀云服务器L实例的安全组管理页面,添加入方向规则,接下来我们启动服务需要监听8096端口,所以添加安全组为TCP:8096
协议端口。
- 启动服务
使用docker-compose
方式启动,先创建文件docker-compose.yml
version: '3.5'
services:jellyfin:image: jellyfin/jellyfincontainer_name: jellyfinvolumes:- ./config:/config- ./cache:/cache- ./media:/media- ./media2:/media2:rorestart: unless-stoppedports:- "8096:8096"
- volumes:映射容器内部文件路径到本地
- ports:配置访问端口
如果将上述代码片段保存在名为 docker-compose.yml 的文件中,则只需从同一文件夹中运行 docker compose up -d
即可自动拉取 jellyfin 映像,并创建并启动一个容器。 up
表示启动服务,-d
表示在后台执行。docker-compose down
命令用于停止和清理由 docker-compose up
启动的服务。
root@hcss-ecs-f632:~/jellyfin# docker-compose up -d
Creating network "jellyfin_default" with the default driver
Creating jellyfin... done
- 检查容器状态
检查 jellyfin 容器状态,确保容器正常启动
root@hcss-ecs-f632:~/jellyfin# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d2425b7b0be jellyfin/jellyfin "/jellyfin/jellyfin" 2 hours ago Up 9 minutes (healthy) 0.0.0.0:8096->8096/tcp, :::8096->8096/tcp jellyfin
- 访问地址
内网:http://localhost:8096
外网:http://公网IP:8096
- 访问结果
若出现此页面,则部署 jellyfin server 成功。
3.4 Jellyfin 使用
设置首选语言为汉语(简化字)
设置用户名和密码,作为管理员账户
设置你的媒体库,暂不设置
首选元数据语言,将语言设置为Chinese
设置远程访问,保持默认
完成 Jellyfin 初始化
登录:输入前面创建的用户名和密码
点击创建,添加媒体库
添加媒体库:选择内容类型,如电影;添加文件夹:下拉列表查看对应docker-compose
中配置的数据卷对应的文件夹,可以继续创建子目录,如在media
目录下创建movie
目录:mkdir movie
,其他配置保持默认
保存成功后,就会显示添加的电影
媒体库
回到首页,也会在我的媒体中显示电影
媒体库
添加电影:把对应的电影文件放在这个媒体库指定的文件夹下,如media/movie
,jellyfin 会自动扫描所有媒体库,在名称正确的情况下,会自动获取到封面和演员等简介信息。
点击扫描到的电影,查看详情页,有播放、已看、收藏和更多功能入口。当前导入的视频信息扫描到的较少,或许和视频本身有关未存储相关信息,当然我们可以手动为其添加一些展示信息
点击播放按钮,进入视频播放页面,进度条、快进后退、音量、播放速度、质量、长宽比、全屏、小窗等功能
我们来查看下 jellyfin 的映射文件路径下的结构
root@hcss-ecs-f632:~/jellyfin/media/movie# ls_AUXOUT_当我们回顾2019.mp4 _AUXOUT_牵起我的手.mp4 '[IKITA]关于我的加州梦 California Dreamin.mp4' '[IKITA]自由是一场坠入_坠入城市边缘_坠入无尽的梦中.mp4'
movie
即为电影视频文件目录
我们可以侧边栏的元数据
中查看媒体资料管理器
,查看文件路径下的文件信息
Jellyfin 作为影音媒体系统的个人使用就是上面的这些了,更多的功能和配置就需要自行探索了。
四、总结
云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。
而且云耀云服务器L实例使用门槛较低,如果您是正在了解云计算服务的入门用户,或是需要在服务器中部署简单应用的个人开发者、中小企业,比如部署一些轻量级的有趣的项目,那么推荐您选择云耀云服务器L实例
。
Jellyfin 作为在线影音媒体系统,目前只有在自动扫描添加的文件时会出现服务器卡顿现象,扫描完成后,浏览信息和播放视频均很流畅,当前的华为云云耀云服务器L实例
选配配置较低,此项目需要大的运行内存,所以需要适当增加配置,尤其是带宽,否则会出现无法访问的情况。
如果项目具有高访问量或需要传输大量数据(如图像、视频、文件下载等),将占用更多带宽。如果项目需要频繁地从服务器向客户端传输数据,例如实时更新或推送通知,可能会占用更多带宽。