Skip to content

olerapx/webm-tv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Webm TV

A video player made out of shitposts.

Demo

Features

  • Supported websites:
  • Modern Youtube-like player based on https://plyr.io/
  • Video duplication prevention based on hash and filename check
  • Full-fledged playlist with thumbnails
  • Download and share video URL
  • Mobile-friendly UI
  • Hotkeys
  • Closed boards support (initial stage)

Hosted At

https://webm-tv.com/

Inspired By

Planned Features

  • Personal view history based duplication prevention
  • More websites to come

Self-host

Set up host machine

  • Install docker with docker compose.
  • Install make.
  • Install git.
  • Install nginx.
  • Create a non-root user, add it to www-data and docker groups.
  • Clone the project
  • Set up .env file (see .env variables reference and .env.example file).
  • Set up .rr.yaml file (see .rr.yaml.example file).

Set up NGINX

  • Install certificates into /etc/ssl.
server {
    listen 80;
    server_name {your external web host};
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name {your external web host};

    ssl_certificate /etc/ssl/{cert}.crt;
    ssl_certificate_key /etc/ssl/{cert}.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    location / {
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:{your APP_PORT value here};
    }
}

Boot up the project

  • su to the non-root user previously created
  • cd into project directory
  • git fetch --tags --force && git pull && git checkout tags/{TAG}
  • make up

To stop, execute make down. To stop forcibly, execute make kill.

.env variables reference

Variable Description Example Dev Value Example Prod Value
APP_NAME The name of the Laravel App Webm TV Webm TV
APP_ENV Laravel App Mode local prod
APP_KEY Laravel Encryption Key autogenerated autogenerated
APP_DEBUG Enables detailed error messages true false
APP_URL External URL the app is available on http://localhost:8080 https://example.com
APP_PORT The external port of app container. Your host's NGINX should proxy pass to that port. The port must be closed for external requests. 8080 8080
XDEBUG_MODE Enables Xdebug debug off
LOG_CHANNEL Laravel Log Channel stack stack
LOG_LEVEL Laravel Log Level debug debug
DB_CONNECTION DBMS mysql mysql
DB_HOST Host of the MySQL Docker container mysql mysql
DB_PORT Port of the MySQL Docker container 3306 3306
DB_DATABASE Database name webm webm
DB_USERNAME Database user user user
DB_PASSWORD Database password hunter2 hunter2
CACHE_DRIVER Where to store cache redis redis
SESSION_DRIVER Where to store sessions redis redis
SESSION_LIFETIME In minutes 120 120
REDIS_HOST Host of the Redis Docker container redis redis
REDIS_PORT Port of the Redis Docker container 6379 6379
SCOUT_DRIVER Fulltext search provider meilisearch meilisearch
MEILISEARCH_HOST Host + port of Meilisearch Docker container http://meilisearch:7700 http://meilisearch:7700
MEILISEARCH_NO_ANALYTICS Disables sending analytics to Meili false false
OCTANE_SERVER Laravel Octane provider roadrunner roadrunner
OCTANE_HOST Host RoadRunner listens to 0.0.0.0 0.0.0.0
OCTANE_PORT Port RoadRunner listens to 8000 8000
OCTANE_MAX_EXECUTION_TIME Max execution time of RoadRunner worker 0 30
OCTANE_HTTPS Informs to return https:// urls false true