Skip to content

Commit fa43332

Browse files
committed
Document some previous github issues and their workarounds
1 parent 9e9d6dc commit fa43332

File tree

4 files changed

+128
-3
lines changed

4 files changed

+128
-3
lines changed

FEATURES.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
Clapshot is a self-hosted video/media review and annotation platform designed for collaborative content review workflows. This feature listing provides end-users and system administrators with an overview of Clapshot's capabilities.
44

5+
## Platform Support
6+
7+
**Recommended Environment:**
8+
- **Desktop browsers:** Chrome/Chromium recommended for full compatibility
9+
- **Operating systems:** Works on Windows, macOS, Linux
10+
11+
**Mobile Browser Limitations:**
12+
- ⚠️ **Limited mobile support:** Clapshot is a desktop-first application
13+
- **iOS/iPad issues:** Double-tap doesn't open videos/folders, video player controls may not function properly
14+
- **Touch interface:** Drawing annotation submission fails on mobile browsers
15+
- **Recommendation:** Use desktop browsers for production work; mobile browsers for viewing only
16+
17+
For details, see [GitHub issue #68](https://github.com/elonen/clapshot/issues/68).
18+
519
## Web Client UX
620

721
### **Video Player**

README.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ Clapshot is an open-source, self-hosted tool for collaborative video/media revie
2525

2626
*For a comprehensive feature list, see [FEATURES.md](FEATURES.md).*
2727

28+
![Video listing screenshot](doc/video-list.webp)
29+
2830
### When not to use Clapshot
2931

3032
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.
3133

32-
![Video listing screenshot](doc/video-list.webp)
33-
3434
## Demo
3535

3636
**Quick Start with Docker:**
@@ -56,6 +56,22 @@ The multi-user demo uses [PHP htadmin](https://github.com/soster/htadmin) for us
5656
> **Note:** Chrome/Chromium works best. If accessing from a different machine, configure the `CLAPSHOT_SERVER__URL_BASE` environment variable (or legacy `CLAPSHOT_URL_BASE`). See the [Quick Start Reference](doc/quick-start-reference.md) for common deployment scenarios.
5757
5858

59+
### Known Limitations
60+
61+
**Browser Compatibility:**
62+
- **Desktop-first design:** Chrome/Chromium recommended for best compatibility
63+
- **Mobile browsers:** Limited support - double-tap to open doesn't work on iOS/iPad, video player controls may not function properly, drawing annotations fail. Use desktop browsers for full functionality.
64+
65+
**Reverse Proxy Considerations:**
66+
- **IIS:** Hard 2GB file upload limit (use monitored folder ingestion for larger files)
67+
- **Cloudflare free tier:** ~100 second upload timeout can interrupt large file uploads
68+
69+
For large file uploads with these proxies, use the [monitored folder ingestion](doc/sysadmin-guide.md#monitored-folder-ingestion) feature with SFTP/SMB instead of HTTP uploads.
70+
71+
**Authentication:**
72+
- **PHP htadmin:** The included htadmin example is simplistic and limited for user management and security. For production deployments, consider integrating with a modern identity provider (OAuth, LDAP, Kerberos, SAML, etc.) via reverse proxy. See [Advanced Authentication](doc/sysadmin-guide.md#advanced-authentication).
73+
74+
5975
## Simple Small-business Production Deployments
6076

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

doc/connection-troubleshooting.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,79 @@ CAUTION: Using '*' in production could expose your users' data to malicious acto
182182
docker run ... -e CLAPSHOT_CORS="https://yourdomain.com" ...
183183
```
184184

185+
### 5. Large File Upload Failures
186+
187+
**Symptoms:**
188+
- Uploads fail at ~1.5-2GB or after ~100 seconds
189+
- Error in logs: `Upload failed: error reading a body from connection: end of file before message length reached`
190+
- Upload progress stops and times out
191+
192+
#### A. IIS Reverse Proxy Limitations
193+
194+
**Problem:** Microsoft IIS has a hard-coded 2GB upload limit that cannot be easily bypassed.
195+
196+
**Solutions:**
197+
198+
1. **Switch to a different reverse proxy** (Recommended)
199+
- Use Nginx, Apache, or Caddy instead of IIS
200+
- These proxies support larger file uploads with proper configuration
201+
202+
2. **Use monitored folder ingestion** (Workaround)
203+
204+
Edit `/etc/clapshot-server.conf`:
205+
```ini
206+
[general]
207+
ingest-username-from = folder-name
208+
```
209+
210+
If using Docker instead:
211+
```bash
212+
docker run ... -e CLAPSHOT_SERVER__INGEST_USERNAME_FROM=folder-name ...
213+
```
214+
215+
- Set up SFTP/SMB access to the `incoming/` directory
216+
- Create subdirectories named after usernames: `incoming/alice/`, `incoming/bob/`
217+
- Users upload files to their directories (via SFTP/FTP/SMB)
218+
- Clapshot automatically detects and processes files based on folder name
219+
- See [Monitored Folder Ingestion](sysadmin-guide.md#monitored-folder-ingestion) for details
220+
221+
**Important:** File permissions must allow `www-data` (or Clapshot server user) to move files during processing.
222+
223+
#### B. Cloudflare Limitations
224+
225+
**Problem:** Cloudflare free tier enforces a ~100 second upload timeout that can interrupt large file uploads.
226+
227+
**Warning from README:**
228+
> Cloudflare – at least in the free plan – apparently limits HTTP upload times and/or sizes, so double check their offerings if you are planning to use this option for a production deployment.
229+
230+
**Solutions:**
231+
232+
1. **Use Cloudflare paid plans** with higher limits
233+
2. **Use monitored folder ingestion** (same configuration as above)
234+
3. **Use a different tunnel/proxy solution** for large file uploads
235+
4. **Split your setup:**
236+
- Cloudflare for web UI access
237+
- Direct connection or VPN for file uploads
238+
239+
#### C. Other Reverse Proxy Considerations
240+
241+
Ensure your reverse proxy is configured for large uploads:
242+
243+
**Nginx:**
244+
```nginx
245+
client_max_body_size 50G;
246+
client_body_buffer_size 256K;
247+
proxy_request_buffering off;
248+
proxy_read_timeout 3600s;
249+
proxy_send_timeout 3600s;
250+
```
251+
252+
**Apache:**
253+
```apache
254+
LimitRequestBody 53687091200 # 50GB in bytes
255+
ProxyTimeout 3600
256+
```
257+
185258
## Step-by-Step Troubleshooting
186259

187260
### Step 1: Check Server Status

llms.txt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@ When helping Clapshot users:
2323
5. **Environment variables vs config files** - Docker uses `CLAPSHOT_SERVER__*` environment variables; Debian uses `/etc/clapshot-server.conf`. Both achieve the same result. Legacy variable names like `CLAPSHOT_URL_BASE` still work but `CLAPSHOT_SERVER__URL_BASE` is preferred.
2424

2525
6. **Known limitations** - Currently optimized for desktop browsers (Chrome/Chromium recommended). Mobile browser support is incomplete (touch events, video playback). This is a known limitation documented in issue #68.
26+
- **Mobile browsers:** Double-tap doesn't open videos/folders on iOS/iPad, video player controls may not work properly, drawing submit fails. This is a desktop-first application.
27+
- **Cloudflare free tier:** ~100 second upload timeout can cause large file uploads to fail
28+
- **IIS reverse proxy:** 2GB upload limit cannot be easily bypassed; use monitored folder ingestion instead
2629

2730
7. **Customization options** - While Clapshot doesn't support extensive CSS theming (Tailwind-based UI), you CAN customize:
2831
- **Branding:** Application title and logo via `CLAPSHOT_APP_TITLE` and `CLAPSHOT_LOGO_URL` environment variables
29-
- **Media processing:** Transcoding and thumbnailing are handled by bash scripts that can be customized or replaced. Edit `/etc/clapshot-transcode.conf` to override ffmpeg settings (hardware acceleration, codecs, bitrates) or provide custom scripts via `--transcode-script` and `--thumbnail-script` arguments. See doc/transcoding.md for details.
32+
- **Media processing:** Transcoding and thumbnailing are handled by bash scripts that can be customized or replaced. Edit `/etc/clapshot-transcode.conf` to override ffmpeg settings (hardware acceleration via Intel QSV, NVIDIA NVENC, VA-API, Apple VideoToolbox, or custom codecs/bitrates) or provide custom scripts via `--transcode-script` and `--thumbnail-script` arguments. See doc/transcoding.md for details.
33+
- **Upload permissions:** Control per-user upload permissions via `X-Remote-User-Can-Upload` HTTP header from reverse proxy. See doc/sysadmin-guide.md#upload-permission-control
3034

3135
## What is Clapshot?
3236

@@ -48,6 +52,17 @@ Clapshot provides professional video review capabilities similar to cloud servic
4852

4953
## Getting Started and User Support
5054

55+
### Default Demo Credentials
56+
57+
**For htadmin-based demo images** (`latest-demo-htadmin`):
58+
- `admin:admin` - Admin user (can edit all videos, manage users)
59+
- `demo:demo` - Standard user with full permissions
60+
- `alice:alice123` - Standard user with full permissions
61+
- `bob:bob123` - User with **no upload permissions** (demonstrates upload restrictions)
62+
- `htadmin:admin` - User management interface at `/htadmin/`
63+
64+
⚠️ **Security Warning:** Change all default passwords before production use!
65+
5166
### Essential Troubleshooting Documentation
5267

5368
**READ THESE FIRST when users report problems:**
@@ -86,6 +101,13 @@ Clapshot provides professional video review capabilities similar to cloud servic
86101
- Docker bindings: `0.0.0.0:8080:80` not `127.0.0.1:8080:80`
87102
- Check firewall allows ports 8080 and 8095
88103

104+
**Large file uploads (>2GB) fail:**
105+
- IIS reverse proxy has a hard 2GB upload limit
106+
- Cloudflare free tier has ~100 second timeout that can interrupt large uploads
107+
- Workaround: Use monitored folder ingestion with `--ingest-username-from=folder-name` mode
108+
- Drop files into `incoming/username/` directories (via SFTP/SMB) for automatic processing
109+
- See doc/sysadmin-guide.md#monitored-folder-ingestion
110+
89111
### Features and Capabilities
90112

91113
[FEATURES.md](FEATURES.md): Comprehensive feature listing organized by category - Web Client UX, Media Processing, Organizer Plugin System, Administration/Security, and Development tools

0 commit comments

Comments
 (0)