【Docker项目实战】使用Docker部署GhostHub媒体服务器
一、GhostHub介绍
1.1 GhostHub 简介
GhostHub
是一个无需设置、移动优先的媒体服务器,支持一键分享和滑动浏览,用户可轻松通过互联网与他人共享图片和视频内容。无需账户或配置,操作简单直观,适合临时分享、个人媒体库或轻量级团队使用。
1.2 主要特点
📁 自定义文件夹管理:轻松添加并浏览你自己的媒体文件夹。
🎞️ TikTok风格滑动导航:像刷短视频一样滑动查看图片和视频。
🔁 主机同步模式:开启同步后所有人看到相同的媒体,按自己的节奏观看。
🔐 密码保护与管理员控制:可设置同步密码,并由管理员掌控播放与互动权限。
🧑🤝🧑 实时用户状态:显示当前在线人数及新用户加入通知。
💬 匿名实时聊天:内置临时聊天功能,便于观众互动交流。
⌨️ 快捷斜线命令:支持如 /myview
和 /help
等命令提升操作效率。
📱 响应式界面设计:全面优化移动端与桌面端浏览体验。
🌐 Cloudflare Tunnel 公开分享:可通过 Cloudflare Tunnel 安全地对外公开链接。
🖥️ 便携式运行:提供无需安装的 .exe
版本,即开即用。
🐳 Docker 支持:支持 Docker 部署,包括 ARM64 架构设备。
💾 外部配置持久化:通过 media_categories.json
文件保存文件夹结构,实现配置持久化。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为Ubuntu 22.04.1。
hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 |
---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | GhostHub |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署GhostHub媒体服务器。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven01:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-07-02 14:16:57 UTC; 21h ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 878 (dockerd)
Tasks: 28
Memory: 1.2G
CPU: 1min 50.356s
CGroup: /system.slice/docker.service
├─ 878 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3.2 检查Docker版本
检查Docker版本
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven01:~# docker compose version
Docker Compose version v2.19.1
四、拉取GhostHub镜像
拉取GhostHub容器镜像,如下所示:
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/ghosthub:latest
五、部署GhostHub服务
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/ghosthub/{instance,media} && cd /data/ghosthub/
5.2 编辑部署文件
在部署目录下,创建docker-compose.yaml文件,如下所示:
vim docker-compose.yaml
services:
ghosthub:
image: registry.cn-hangzhou.aliyuncs.com/jeson/ghosthub:latest
container_name: ghosthub
restart: unless-stopped
ports:
- "5000:5000"
volumes:
- ./instance:/app/instance
- ./media:/media
environment:
- PORT=5000
- FLASK_CONFIG=production
- DOCKER_ENV=true
5.3 创建GhostHub容器
执行以下命令,创建GhostHub容器。
docker compose up -d
5.4 查看GhostHub容器状态
检查GhostHub容器运行状态,确保GhostHub容器正常启动。
root@jeven01:/data/ghosthub# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ghosthub registry.cn-hangzhou.aliyuncs.com/jeson/ghosthub:latest "/bin/sh -c 'python …" ghosthub 3 minutes ago Up 3 minutes 0.0.0.0:5000->5000/tcp, [::]:5000->5000/tcp
5.5 查看GhostHub容器日志
检查GhostHub容器运行日志,确保GhostHub服务正常运行。
docker compose logs
六、访问GhostHub服务
浏览器地址:
http://<个人的服务器IP>:8000
,访问GhostHub的初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。
七、GhostHub基本使用
7.1 上传视频文件
在media目录下创建videos和pictures子目录,如下所示:
mkdir -p /data/ghosthub/media/{videos,pictures}
root@jeven01:/data/ghosthub/media/videos# pwd
/data/ghosthub/media/videos
root@jeven01:/data/ghosthub/media/videos# ll
total 3336
drwxr-xr-x 2 root root 4096 Jul 9 07:14 ./
drwxr-xr-x 4 root root 4096 Jul 9 07:13 ../
-rw-r--r-- 1 root root 3406789 Jul 9 07:14 test.mp4
7.2 添加分类
点击 “Add Category”(添加分类)进入新增分类界面,填写文件路径
/media/videos
,确认添加后返回首页刷新页面,即可看到刚刚上传的视频内容。
八、总结
通过本次实践,我们成功使用 Docker 部署了 GhostHub 媒体服务器,不仅快速搭建了运行环境,还充分发挥了 Docker 容器化部署轻量、便捷的优势。整个过程涵盖了环境准备、镜像拉取、配置文件编辑、容器创建与服务访问等关键步骤,为后续的媒体内容管理与展示打下了良好基础。GhostHub 凭借其简洁的界面和实用的功能,非常适合个人或小型团队用于搭建私有化的视频分享平台。在今后的使用中,还可以结合反向代理、持久化存储、自动备份等策略进一步提升服务的稳定性和安全性。此次实战不仅加深了对 Docker 应用部署的理解,也为实际业务场景中的媒体服务搭建提供了可行方案。
- 点赞
- 收藏
- 关注作者
评论(0)