elonen / clapshot

Self hosted web based collaborative video review tool
GNU General Public License v2.0
97 stars 6 forks source link
annotation annotation-tool collaboration linux-server review review-tools video webapp

Clapshot: Self-Hosted Video/Media Review Tool

[Release]() Build and test

Overview

Clapshot is an open-source, self-hosted tool for collaborative video/media review and annotation. It features a Rust-based API server and a Svelte-based web UI. This tool is ideal for scenarios requiring local hosting of videos due to:

  1. Policy constraints (enterprise users), or
  2. Cost-benefit concerns against paid cloud services (very small businesses)

Review UI screenshot

Key Features

When not to use Clapshot

If you don't require local hosting, or are not adept in networking and Linux, consider commercial cloud services which may offer more user-friendly interfaces and additional features out of the box.

Video listing screenshot

Demo

Quick Start with Docker:

docker run --rm -it -p 0.0.0.0:8080:80 -v clapshot-demo:/mnt/clapshot-data/data elonen/clapshot:latest-demo
docker run --rm -it -p 0.0.0.0:8080:80 -v clapshot-demo-htadmin:/mnt/clapshot-data/data elonen/clapshot:latest-demo-htadmin

After the Docker image starts, access the web UI at http://127.0.0.1:8080.

The basic auth multi-user demo uses PHP htadmin for user management. Default credentials are shown in the terminal.

Simple Small-business Production Deployments

Here are two alternative ways to deploy Clapshot + PHP Htadmin into a light production use:

1. Local Linux VM

If you have a virtualization platform (e.g. Proxmox) or a spare computer, here's how to install and configure a Debian 12 host for Clapshot:

  1. Prepare a Debian 12 with a mounted block device (or just directory) at /mnt/clapshot-data.
  2. Download Clapshot Debian Bookworm Deployment Script
  3. Run the script as root to install and auto-configure Clapshot.
  4. !! Change the default admin and htadmin passwords, and delete example users in Htadmin !!

If you want to expose this to the Internet, you'll probably want to get HTTPS certificates with Let's Encrypt and use some reverse proxy to encrypt Clapshot traffic.

2. Docker + Cloudflare (make public on the Web)

In this option, you'll run Clapshot + Htadmin in a Docker container (binding a local directory for Clapshot data), and then start Cloudflared in another container to expose Clapshot to the Internet over an HTTPS tunnel.

  1. Download and read test/run-cloudflare.sh, then run it
  2. Once satisfied about operation, get a static domain on Cloudflare and modify the above script accordingly - or perhaps make a custom Docker Compose file
  3. !! Change the default admin and htadmin passwords, and delete example users in Htadmin !!

The same process can be adapted to any other HTTPS-Proxy-as-a-Service besides Cloudflare. You'll probably need to pay them something.

Configuration and Operation

See the Sysadmin Guide for information on:

See Upgrading Guide for instructions on installing a new release over an old one.

Architecture Overview

Main components:

Production deployments also depend on:

See sequence diagram for details on how these interact when a user opens the main page.

Organizer Plugin System (New in 0.6.0):

Clapshot now includes an extensible Organizer Plugin system. Organizer can implement custom UIs, virtual folders, enforce access control based on your business logic, and integrate with existing systems (LDAP, project management databases, etc).

Organizers use gRPC to communicate with the Clapshot Server, and can be implemented in any language.

The provided default/example organizer, called “basic_folders” (in Python), implements:

Work In Progress

The Organizer API is still evolving, so you are invited to provide feedback and discuss future development. However, please do not expect backward compatibility for now.

Development Setup

The development setup guide covers setting up the server and client development environments, and running local builds and tests.

Contributions

Contributions are welcome, especially for features and improvements that benefit the wider user base. Please add your copyright notice for significant contributions.

Licensing

Copyright 2022 – 2024 by Jarno Elonen

This split licensing allows you to implement proprietary UIs and workflows through custom Organizer plugins without releasing them to the public.