move files, add installation guide and configs
20
README.md
@ -3,30 +3,32 @@ ffplayout-gui
|
|||||||
|
|
||||||
This is the dev version v2.0.0 from ffplayout GUI.
|
This is the dev version v2.0.0 from ffplayout GUI.
|
||||||
|
|
||||||
|
Check [install.md](docs/install.md) for installation
|
||||||
|
|
||||||
**This version is not ready to use!!**
|
**This version is not ready to use!!**
|
||||||
|
|
||||||
## concept previews:
|
## some impressions belows:
|
||||||
|
|
||||||
#### Login
|
#### Login
|
||||||
![login](/docs/login.png)
|
![login](/assets/login.png)
|
||||||
|
|
||||||
#### Landing Page
|
#### Landing Page
|
||||||
![landing-page](/docs/landing-page.png)
|
![landing-page](/assets/landing-page.png)
|
||||||
|
|
||||||
#### Control Page
|
#### Control Page
|
||||||
![control](/docs/control.png)
|
![control](/assets/control.png)
|
||||||
|
|
||||||
#### Media Page
|
#### Media Page
|
||||||
![media](/docs/media.png)
|
![media](/assets/media.png)
|
||||||
|
|
||||||
#### Media Page / Upload
|
#### Media Page / Upload
|
||||||
![media-upload](/docs/media-upload.png)
|
![media-upload](/assets/media-upload.png)
|
||||||
|
|
||||||
#### Message Page
|
#### Message Page
|
||||||
![message](/docs/message.png)
|
![message](/assets/message.png)
|
||||||
|
|
||||||
#### Logging Page
|
#### Logging Page
|
||||||
![logging](/docs/logging.png)
|
![logging](/assets/logging.png)
|
||||||
|
|
||||||
#### Configuration Page / GUI
|
#### Configuration Page / GUI
|
||||||
![config-gui](/docs/config-gui.png)
|
![config-gui](/assets/config-gui.png)
|
||||||
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 378 KiB After Width: | Height: | Size: 378 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
13
docs/ffplayout-api.service
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=ffplayout api daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
WorkingDirectory=/var/www/ffplayout/ffplayout
|
||||||
|
ExecStart=/var/www/ffplayout/venv/bin/gunicorn --workers 6 --timeout 300 --log-level=info --log-file=- --access-logfile=- --bind unix:/var/www/ffplayout/ffplayout/ffplayout.sock ffplayout.wsgi:application
|
||||||
|
KillMode=process
|
||||||
|
User=www-data
|
||||||
|
Group=www-data
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
63
docs/ffplayout.conf
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
map $sent_http_content_type $expires {
|
||||||
|
"text/html" 1h; # set this to your needs
|
||||||
|
"text/html; charset=utf-8" 1h; # set this to your needs
|
||||||
|
default 1d; # set this to your needs
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 127.0.1.4;
|
||||||
|
|
||||||
|
server_name ffplayout.local ffplayout;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_types text/plain application/xml text/css application/javascript;
|
||||||
|
gzip_min_length 1000;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
add_header X-Frame-Options SAMEORIGIN;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
if ($http_origin ~ '^https?://(localhost|ffplayout\.local|ffplayout)') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
|
||||||
|
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
||||||
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request_method = OPTIONS ) {
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /var/www/ffplayout/ffplayout/frontend/dist/;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/(api|admin) {
|
||||||
|
if ($http_origin ~ '^https?://(localhost|ffplayout\.local|ffplayout)') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
|
||||||
|
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
||||||
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
|
||||||
|
}
|
||||||
|
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_pass http://unix:/var/www/ffplayout/ffplayout/ffplayout.sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /static/ {
|
||||||
|
alias /var/www/ffplayout/ffplayout/static/;
|
||||||
|
}
|
||||||
|
|
||||||
|
access_log /var/log/nginx/ffplayout_access.log;
|
||||||
|
error_log /var/log/nginx/ffplayout_error.log warn;
|
||||||
|
}
|
46
docs/install.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# Manuel Installation Guide
|
||||||
|
|
||||||
|
**We are assuming that the system user `www-data` will run all processes!**
|
||||||
|
|
||||||
|
### API Setup
|
||||||
|
|
||||||
|
##### Preparation
|
||||||
|
- clone repo to `/var/www/ffplayout`
|
||||||
|
- cd in root folder from repo
|
||||||
|
- add virtual environment: `virtualenv -p python3 venv`
|
||||||
|
- run `source ./venv/bin/activate`
|
||||||
|
- install dependencies: `pip install -r requirements-base.txt`
|
||||||
|
- cd in `ffplayout`
|
||||||
|
- generate secret: `python manage.py shell -c 'from django.core.management import utils; print(utils.get_random_secret_key())'`
|
||||||
|
- open **ffplayout/settings.py**
|
||||||
|
- past secret key in variable `SECRET_KEY`
|
||||||
|
- change `DEBUG = True` to `DEBUG = False`
|
||||||
|
- set `ALLOWED_HOSTS` with correct URL
|
||||||
|
- set URL in `CORS_ORIGIN_WHITELIST`
|
||||||
|
- collect staticfiles: `python manage.py collectstatic`
|
||||||
|
|
||||||
|
##### System Setup
|
||||||
|
- copy **docs/ffplayout-api.service** from root folder to **/etc/systemd/system/**
|
||||||
|
- enable service and start it: `systemctl enable ffplayout-api.service && systemctl start ffplayout-api.service`
|
||||||
|
- install **nginx**
|
||||||
|
- edit **docs/ffplayout.conf**
|
||||||
|
- set correct IP and `server_name`
|
||||||
|
- add domain `http_origin` test value
|
||||||
|
- add https redirection and SSL if is necessary
|
||||||
|
- copy **docs/ffplayout.conf** to **/etc/nginx/sites-available/**
|
||||||
|
- symlink config: `ln -s /etc/nginx/sites-available/ffplayout.conf /etc/nginx/sites-enabled/`
|
||||||
|
- restart nginx
|
||||||
|
- run `visudo` and add:
|
||||||
|
```
|
||||||
|
www-data ALL = NOPASSWD: /bin/systemctl start ffplayout-engine.service, /bin/systemctl stop ffplayout-engine.service, /bin/systemctl reload ffplayout-engine.service, /bin/systemctl restart ffplayout-engine.service, /bin/systemctl status ffplayout-engine.service, /bin/systemctl is-active ffplayout-engine.service, /bin/journalctl -n 1000 -u ffplayout-engine.service
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
|
||||||
|
**We need a recent version of npm**
|
||||||
|
|
||||||
|
- go to folder **/var/www/ffplayout/ffplayout/frontend**
|
||||||
|
- install dependencies: `npm install`
|
||||||
|
- build app: `npm run build`
|
||||||
|
|
||||||
|
Your frontend should be now in **/var/www/ffplayout/ffplayout/frontend/dist** folder, which we are included already in the nginx config. You can service now the GUI under your domain URL.
|