51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【好玩儿的Docker项目】用腾讯云轻量应用服务器10分钟搭建一个轻量的视频分享网站——Fireshare

前言 {#前言}

2d5fd03eadd0984a8456f20a78773d3c.png

因为这个项目的作者自己喜欢打游戏,然后录制了很多精彩的游戏片段,想要和小伙伴们~~分享~~炫耀。

但是他又嫌弃上传到YouTube太慢了(YouTube后台会有一个转码的过程,咕咕有一次不小心录制了一个4K的视频,上传之后,YouTube大概花了5个小时才转码完成高清版本 = =)所以想着有没有一种简单的方法和朋友~~分享~~炫耀这些游戏视频,于是诞生了Fireshare。

Fireshare的目标是提供一个非常简单的方法,让你可以通过一个独特的链接分享你的任何视频。

我们所要做的就是把视频放在一个文件夹里,而Fireshare会处理剩下的事情。

  1. 介绍 {#1-介绍}

094ed285176637e93ca19f67004af324.png

什么是 Fireshare?

Fireshare 可以通过独特的链接分享你的游戏剪辑、视频或其他媒体。你要做的就是把你的视频上传到一个文件夹里,Fireshare 会处理剩下的事情。

官方提供了演示站点:https://v.fireshare.net/#/feed

1.1 相关地址 {#11-相关地址}

官方Demo:https://v.fireshare.net/#/feed

文档地址:https://github.com/ShaneIsrael/fireshare/wiki/Fireshare-Configurables

GitHub地址:https://github.com/ShaneIsrael/fireshare (204 Star)

Docker仓库地址:https://github.com/searxng/searxng-docker

  1. 项目展示 {#2-项目展示}

2.1 仪表板 {#21-仪表板}

在这里,你可以看到你所有的视频,并编辑它们的细节,如标题、描述以及你是否想让它们显示在公共频道上。

4d4b6bad822e0ac95aad8a00730f6ffb.png

也许卡片式视图不是你的风格,Fireshare也支持列表式视图。

b691ad59d49797f1484a95cde6dfbcfc.png

2.2 折叠式排序 {#22-折叠式排序}

可以给视频分类,排序展示。

dac2801550649dcf64539559effd729e.png

2.3 上传视频 {#23-上传视频}

可以开放上传,也可以限制只有管理员才能上传。

5c9adfd43a87d44ebc8d38be778bfc36.png

2.4 编辑视频细节 {#24-编辑视频细节}

通过点击 "铅笔 "图标,可以进入编辑视频标题和描述。

068244c29f7692a3c580ec5c32b4003e.png

2.5 视频预览模式 {#25-视频预览模式}

在公共频道或管理仪表板上打开的视频会在一个模式中显示出来。

这个模式为我们提供直链和带时间戳的链接分享按钮,以及随机播放到另一个视频的功能。

作为管理员,我们也可以从这个模态中编辑视频的细节。

de823e13d5f0465870876f0d9c151b0c.png

2.6 观看页面 {#26-观看页面}

这是小伙伴们在得到一个Fireshare链接时将看到的内容。

4d41ef787ae8079ca89f0841d68b61a0.png

2.7 移动支持 {#27-移动支持}

更喜欢在移动设备上浏览?

没问题,Fireshare完美适配了移动端。

1231d29c5650bbea66e9c7a3a54f979e.png

2.8 显示预览链接 {#28-显示预览链接}

如下图,粘贴链接之后,支持在帖子中显示标题、描述和视频缩略图。

3f9d2403a4a32f4146fd213b5294b498.png

  1. 搭建环境 {#3-搭建环境}

  • 服务器:~~腾讯香港轻量应用服务器24元/月VPS一台~~ 本期搭建用的是腾讯轻量购买链接的服务器,(最好是选非大陆(香港)的服务器 )如果是小白刚开始玩的话,还可以购买Racknerd的服务器,最低一年不到100块(不过搭建Docker还是建议选择1G内存以上的机器)(Racknerd服务器介绍:点击查看
  • 系统:Debian 10(DD脚本 非必需DD用原来的系统也OK,之后教程都是用Debian或者Ubuntu搭建~)
  • 安装好Docker、Docker-compose(相关脚本
  • 【非必需但建议】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 【非必需】提前安装好宝塔面板海外版本aapanel,并安装好Nginx(安装地址
  • 【非必需本教程选用】安装好Nginx Proxy Manager(相关教程

服务器要求:不是非常高,能搭建Docker即可,建议1G以上。

  1. 搭建视频 {#4-搭建视频}

YouTube:https://youtu.be/isocgoLqKos

哔哩哔哩【高清版本可以点击去吐槽到B站观看】:

  1. 搭建方式 {#5-搭建方式}

安装系统(腾讯云轻量应用服务器) {#安装系统腾讯云轻量应用服务器}

e59713fba8726d3cb55ae11bca83fe3c.png

腾讯云轻量服务器最大的特点就是"轻量",相比CVM,更适合小白上手,这边我们之间选择Docker基础镜像,就可以省去后面安装Docker的步骤(如果你非要用国内的服务器,这边装的Docker镜像还会帮你配置好国内镜像源,让你加速访问docker镜像资源)。

登陆(腾讯云轻量应用服务器) {#登陆腾讯云轻量应用服务器}

2722040ee311eb4a9ebf2a4945bf38f4.png

c0b5d360053746c4095d592967ee401f.png

e0ba858f021b846ad0abc27acf5008c2.png

5.1 服务器前期配置 {#51-服务器前期配置}

服务器初始设置,参考:

新买了一台服务器"必须"要做的6件小事

保护好你的小鸡!保姆级服务器安全教程!

这边由于我们用的是腾讯云轻量应用服务器,系统默认就帮我们创建了名字是lighthouse的用户,系统后台也有防火墙(默认就开了几个常用的端口)

对小白用户来说,可以不用再去管繁琐的服务器安全的配置,大大降低了服务器防护的门槛。

【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!

sudo -i # 切换到root用户

apt update -y  # 升级packages

`apt install wget curl sudo vim git -y  # Debian系统比较干净,安装常用的软件
`

注意:VPS的内存如果过小,建议设置一下SWAP,一般为内存的1-1.5倍即可,可以让系统运行更流畅!

设置SWAP可以用脚本:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

image-20220528185512488

选择18,然后输入你想要扩容的数值即可。 image-20220528185604586

使用腾讯云轻量应用服务器的小伙伴可以直接跳到5.2.4

5.2 安装Docker(使用腾讯云轻量应用服务器可跳过这一部分) {#52-安装docker使用腾讯云轻量应用服务器可跳过这一部分}

5.2.1 非大陆服务器Docker安装 {#521-非大陆服务器docker安装}

wget -qO- get.docker.com | bash
docker -v  #查看docker版本
systemctl enable docker  # 设置开机自动启动

修改Docker配置(可选)(来自烧饼博客

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

然后重启 Docker 服务:

systemctl restart docker

5.2.2 非大陆服务器Docker-compose安装 {#522-非大陆服务器docker-compose安装}

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version  #查看docker-compose版本

5.2.3 国内服务器安装docker {#523-国内服务器安装docker}

curl -sSL https://get.daocloud.io/docker | sh
docker -v  #查看docker版本
systemctl enable docker  # 设置开机自动启动

修改Docker配置(可选)(来自烧饼博客

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

然后重启 Docker 服务:

systemctl restart docker

5.2.4 国内服务器安装docker-compose {#524-国内服务器安装docker-compose}

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

`docker-compose --version  #查看docker-compose版本
`

5.3 安装NginxProxyManager {#53-安装nginxproxymanager}

参考这边的内容:https://blog.laoda.de/archives/nginxproxymanager

5.4 创建安装目录及docker-compose文件 {#54-创建安装目录及docker-compose文件}

创建一下安装的目录:


sudo -i

mkdir -p /root/data/docker_data/fireshare


cd /root/data/docker_data/fireshare

`vim docker-compose.yaml
`

输入i,然后写入下面的文件:

8020cae65dd0cf85762475a9aea7c5bf.png

version: '3.7'
services:
  fireshare:
    container_name: fireshare
    image: shaneisrael/fireshare:latest    # latest表示最新版本
    ports:
      - "8080:80"        # 冒号左边的端口可以自己修改成服务器未占用的端口,冒号右边不要改!
    volumes:
      - ./data:/data         # 冒号左边的路径可以自己修改(./代表当前目录下),冒号右边不要改!
      - ./processed:/processed # 同上
      - ./videos:/videos  # 同上
    environment:
    - ADMIN_USERNAME=admin    # 自己设置一个用户名
    - ADMIN_PASSWORD=admin    # 自己修改一个密码

Fireshare需要3个卷挂载。

/data - fireshare用来保存其内部数据库的目录
/processed - 用来保存由fireshare创建的与你的视频有关的元数据的目录(海报,元数据信息)。
/videos - fireshare将观察和扫描任何视频的目录。
如果你有你所有的游戏片段存储在一个文件夹my_game_clips中,那么在你的docker compose文件(或docker运行命令)中,你将需要把该文件夹卷装到fireshare观看的/videos文件夹。

输入:wq保存退出。

# 新建文件夹 fireshare 和 子目录
mkdir -p /root/data/docker_data/fireshare/{data,processed,videos}

进入目录
====



cd /root/data/docker_data/fireshare


ls -al


确保 docker-compose.yml 在当前目录下
============================



8fa7912536dc5c31ad072ac5fdb1afd7.png

5.5 打开服务器防火墙并访问网页 {#55-打开服务器防火墙并访问网页}

打开防火墙的端口8080

腾讯云打开方法如下:

image-20220630215240864

image-20220630220546335

这边我们填8080 确定即可(如果你在dockercompose文件里换了8081,这边就需要填8081,以此类推)

cafbde32934457a4fa98b65aa09d4489.png

查看端口是否被占用(以8080为例),输入:

lsof -i:8080  #查看8080端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现:

3653370825d7984db0a666c30cff3f4e.png

表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成8081,注意dockercompose和防火墙都要改),我们接着可以运行:

cd /root/data/docker_data/fireshare
`docker-compose up -d`
`
`

17d7b69871963e1b943ee85b6baf0b91.png

耐心等待,等出现:

724285de7cbd28b1bc7382cd3868c919.png

我们就可以输入http://ip:8080访问了。

注意:

1、不知道服务器IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的IP。

2、遇到访问不了的情况,请再次检查在宝塔面板的防火墙和服务商的后台防火墙是否打开对应了端口。

708cdb63bc979d18440c3a0c9fa26210.png

因为我们后续想要分享给别人,IP+端口太不优雅了,咕咕建议大家还是搞一个域名,容易记,看起来也更正规一点。这样可以做https,会让网页更安全。(非要IP+端口访问的,可以直接跳到5.6,并且跳过6. 反向代理部分)

而且namesilo上面xyz后缀的域名一年就7块钱,可以年抛。

如果想要长期使用,还是建议买com后缀的域名,更加正规一些,可以输入laodade来获得1美元的优惠(不知道现在还有没有)

namesilo自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些~~丑~~古老 = =)

【域名购买】Namesilo优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

5.6 更新 {#56-更新}

cp -r /root/data/docker_data/fireshare /root/data/docker_data/fireshare.archive  # 万事先备份,以防万一

cd /root/data/docker_data/fireshare  # 进入docker-compose所在的文件夹


docker-compose pull    # 拉取最新的镜像

`docker-compose up -d   # 重新更新当前镜像
`

利用Docker-compose搭建的应用,更新非常容易~

5.7 卸载 {#57-卸载}

cd /root/data/docker_data/fireshare  # 进入docker-compose所在的文件夹

docker-compose down    # 停止容器,此时不会删除映射到本地的数据

`rm -rf /root/data/docker_data/fireshare  # 完全删除映射到本地的数据
`

可以卸载地很干净。

  1. 反向代理 {#6-反向代理}

6.1 利用Nginx Proxy Manager {#61-利用nginx-proxy-manager}

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程

054215cf70ff4b544dfbf48638da380c.png

之后,登陆Nginx Proxy Manager(不会的看这个:安装Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称NPM)会用到80443端口,所以本机不能占用(比如原来就有Nginx)

直接丢几张图: image-20220502123517401 041c6dacbfe151437ab1decb101aa154.png 注意填写对应的域名IP端口,按文章来的话,应该是8080

IP填写:

如果Nginx Proxy Manager和Fireshare在同一台服务器上,可以在终端输入:

ip addr show docker0

查看对应的Docker容器内部IP。

否则直接填cryptgeon所在的服务器IP就行。 image-20220403104353185

再次打开,勾选这些: image-20220728212042482

然后就可以用域名来安装访问了。

4dc09acf521df22bc05e6d7938278cc2.png

  1. 使用教程 {#7-使用教程}

7.1 安装和配置 {#71-安装和配置}

见咕咕的视频。

login 出现登录界面

默认用户:admin,密码为 ADMIN_PASSWORD 设置的值:

56ff1c66b74021b96f69019301c90e66.png

登录成功之后会看到多了Scan Library按钮

b36c13a2c95d239eb74624d4f4ef5cff.png

上传视频试试,这边我们利用filebrowser来上传视频。

具体操作是:

mkdir -p /root/data/docker_data/filebrowser
`docker run -d -v /root/data/docker_data/fireshare/videos:/srv -v /root/data/docker_data/filebrowser/filebrowserconfig.json:/etc/config.json -v /root/data/docker_data/filebrowser/database.db:/etc/database.db --name fireshare_browser -p 8002:80 filebrowser/filebrowser
`

通过浏览器访问,默认账号密码:admin

同样记得在腾讯云后台打开8002端口

上传视频:

1fc58a1bcd6abf0b94fe66c7aad99bf6.png

接下来就可以通过 Scan Library 扫描视频了

第一次会有个初始化的过程

6ccdce731e52bda51ffce486cc7e04f8.png

扫描完成后就能看到了

2746cb16b7f315cf85372364192b24d4.png

如果看不到可以刷新一下页面,还可以切换视图:

2a862344360a595de796a04a250fa685.png

点击开始播放

69614caeff544808098baca68f38d916.png

视频播放界面暂停,然后按 ESC 键可以回到主界面

点复制链接按钮,可以获取本视频的地址,类似这样:https://v.gugu.ge/w/0f148672afa6fa5ac56341ef4a676b95

所以如果你要分享给别人,需要先通过反代,实现域名访问才行:

image-20220816220910285

加入了 Public feed 的视频,不需要登录就能看到。

image-20220816220834454

  1. Q&A {#8-qa}

8.1 播放问题 {#81-播放问题}

如果你遇到了播放问题,可能有很多原因造成的,以下这些是最常见的原因。

文件大小 {#文件大小}

建议压缩视频,可以提升观看者的浏览体验。

上传速度 {#上传速度}

服务器的上传速度很重要,如果上传速度慢,可以考虑压缩一下视频。

浏览器 {#浏览器}

在测试中,注意到Firefox在播放非常大的文件时很吃力,然而Chome和Edge似乎没有同样的问题。

不支持的文件类型 {#不支持的文件类型}

目前,Fireshare只支持MP4,MOV和WEBM文件。

建议在可能的情况下使用MP4,而MOV是支持的,测试发现,一些MOV文件播放没有问题,一些会不支持。如果你的MOV文件不能播放,请考虑用Handbrake等工具将其转码为MP4文件。

上传问题 {#上传问题}

上传问题通常是由把fireshare放在某种反向代理(如nginx)后面引起的。在默认情况下,nginx对你的上传大小有限制。如果你使用nginx,你可能需要添加这两行:

client_max_body_size 0;
proxy_read_timeout 999999s;

这些设置只在Nginx上有效。将client_max_body_size设置为0,就默认允许任何大小的上传。

image-20220816221604726

我们还增加了超时限制,这样连接就不会超时了。如果你没有使用nginx,请自行搜索方法。

  1. 结尾 {#9-结尾}

祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量!

参考资料 {#参考资料}

https://github.com/ShaneIsrael/fireshare
https://laosu.ml/2022/07/22/%E9%80%82%E5%90%88%E7%9F%AD%E8%A7%86%E9%A2%91%E5%88%86%E4%BA%AB%E7%9A%84Fireshare/

赞(0)
未经允许不得转载:工具盒子 » 【好玩儿的Docker项目】用腾讯云轻量应用服务器10分钟搭建一个轻量的视频分享网站——Fireshare