自托管视频共享平台Clipable

什么是 Clipable ?

Clipable 是一个自托管视频共享平台,为个人和组织提供了一种简单高效的方式来托管、共享和管理他们的视频内容。受 StreamableYouTube 等流行平台的启发,Clipable 提供了一个简单直观的用户界面,使任何人都可以轻松上传、共享和观看视频。Clipable 专注于隐私和安全,为那些寻求更受控制和自力更生的视频托管解决方案的人提供了另一种选择。无论您是内容创作者、企业主,还是只是想与朋友和家人分享视频的人,Clipable 都能提供您自信地管理视频内容所需的所有功能。

官方提供了演示站点:https://clipable.net/

镜像下载

官方的镜像发布在 ghcr.io
地址:https://github.com/clipable/clipable/pkgs/container/clipable

SSH 客户端登录到群晖后,执行下面的命令

1
2
# 拉取镜像,目前只发布了一个版本
docker pull ghcr.io/clipable/clipable:latest

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

1
2
3
4
5
6
7
8
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/clipable/clipable:latest

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/clipable/clipable:latest ghcr.io/clipable/clipable:latest

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/clipable/clipable:latest

下载完成后,可以在 映像 中找到

安装容器

docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
version: '2.1'

services:
postgres:
image: postgres:14
container_name: clipable-db
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- ./pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 1s
timeout: 5s
retries: 5

minio:
image: minio/minio
container_name: clipable-minio
volumes:
- ./minio_data:/data
# ports:
# - 9001:9001
environment:
# - "MINIO_ACCESS_KEY=minio"
# - "MINIO_SECRET_KEY=myminiokeythatishouldchange123"
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=myminiokeythatishouldchange123
command: server /data --console-address ":9001"

createbuckets:
image: minio/mc
container_name: clipable-mc
depends_on:
- minio
entrypoint: >
/bin/sh -c "
/usr/bin/mc alias set clipable http://minio:9000 minio myminiokeythatishouldchange123;
/usr/bin/mc mb clipable/clips;
exit 0;
"
clipable:
image: ghcr.io/clipable/clipable:latest
container_name: clipable-web
# All of these environment variables are documented here: https://github.com/clipable/clipable/wiki/Environment-Variables
environment:
#DEBUG: "true"
MAX_UPLOAD_SIZE: 5GB
ALLOW_REGISTRATION: "true"
FFMPEG_CONCURRENCY: 1
FFMPEG_THREADS: 0
FFMPEG_PRESET: medium
FFMPEG_TUNE: film
DB_HOST: postgres
DB_PORT: 5432
DB_USER: postgres
DB_PASSWORD: postgres
DB_NAME: postgres
DB_IDHASHKEY: mydbidkeythatishouldchange123
COOKIE_KEY: mycookiekey12345
COOKIE_DOMAIN: 192.168.0.197
S3_BUCKET: clips
S3_ACCESS: minio
S3_SECRET: myminiokeythatishouldchange123
S3_ADDRESS: minio:9000
S3_SECURE: "false"
ports:
- 8190:80
depends_on:
postgres:
condition: service_healthy

参数比较多,就不一一说明了,有兴趣可以去看官方文档:https://github.com/clipable/clipable/wiki/Environment-Variables

上面的参数必须要修改的只有 COOKIE_DOMAIN

  • 如果你是在局域网使用,请修改为群晖主机的 IP
  • 如果你反代后使用,请修改为域名,即便你没有备案,也不要带端口,例如:实际访问时使用的是 https://clipable.laosu.ml:444,这里就填 clipable.laosu.ml

COOKIE_DOMAIN 设置不正确的现象是,点login 按钮登录之后又回到 login

其他的参数比如密码,如果局域网使用,改不改无所谓,毕竟数据库 postgres和存储 minio 都没有把接口暴露出来,鉴于数据库采用的方式,务必不要添加端口

现在开始依次执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 clipable 和 子目录
mkdir -p /volume2/docker/clipable/{minio_data,pg_data}

# 进入 clipable 目录
cd /volume2/docker/clipable

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

需要注意的是,在启动完成后, 容器clipable-mc 是会停止的

在它的日志中,你会看到已经成功创建了 bucket,所以不用理会

运行程序

在浏览器中输入 http://群晖IP:8190 就能看到主界面

注册一个用户

注册成功后会多出 upload 按钮

上传一个视频

有个转码的过程

完成后就可以播放了

回到首界面

参考文档

clipable/clipable: A simple, self-hosted, alternative to Streamable
地址:https://github.com/clipable/clipable

Clipable - A self-hosted Streamable alternative : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/11qj12a/clipable_a_selfhosted_streamable_alternative/