Skip to content

olerapx/webm-tv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

129 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 from either .rr.yaml.prod.example or .rr.yaml.dev.example.

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
  • If this is the first launch, execute make down, make keygen, 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