A video player made out of shitposts.
- 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)
- Personal view history based duplication prevention
- More websites to come
- Install
docker
withdocker compose
. - Install
make
. - Install
git
. - Install
nginx
. - Create a non-root user, add it to
www-data
anddocker
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).
- 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};
}
}
su
to the non-root user previously createdcd
into project directorygit fetch --tags --force && git pull && git checkout tags/{TAG}
make up
To stop, execute make down
. To stop forcibly, execute make kill
.
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 |