diff --git a/README.md b/README.md index 80a456b..87a9f1c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ [![Install Peertube with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=peertube)

======= -Shipped Version: **1.2.1** +Shipped Version: **1.0.0-beta.13** + ## What is Peertube ? PeerTube is a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser, using WebTorrent. @@ -34,28 +35,28 @@ Want to see in action? ### Guidelines - 1. Require **dedicated domain** like **peertube.domain.tld**. - 1. **No LDAP** support (blocked until Peertube core upstream implements it) - 1. URL can not be changed once selected. Choose the domain wisely. + 1. Require dedicated domain like **peertube.domain.tld**. + 1. No LDAP support (blocked until upstream implements it) + 1. URL can not be changed once selected. 1. You need more then **1GB** of ram. If you don't have it, please create a **swap memory**. $ dd if=/dev/zero of=/swapfile bs=1024 count=1048576 $ mkswap /swapfile $ swapon /swapfile $ echo "/swapfile swap swap defaults 0 0" >> /etc/fstab - 1. This app is **multi-instance** (you can have more then one Peertube instance running on a YunoHost server) + 1. This app is multi-instance (you can have more then one Peertube instance running on a YunoHost server) -### Installing guide +### Install - 1. App can be installed by YunoHost **admin web-interface** or by **running following command**: + 1. **App can be installed by YunoHost admin interface or by the following command:** $ sudo yunohost app install https://github.com/YunoHost-Apps/peertube_ynh - 1. Admin username is : **root**. - 1. **Admin password** will be sent to the email address given at the time of the installation. - 1. **TLS** and **starttls** are disabled for the outgoing mails. If you intent to use email address not hosted on your local server,it's advised to have a proper SMTP configured with tls and starttls settings by editing **/var/www/peertube/config/production.yml**. + 1. **root** is the admin username. + 1. **root Password** will be sent to the email address given at the time of the installation. + 1. **TLS** and **starttls** are disabled for the outgoing mails. If you intent to use email address not hosted on your local server,it's advised to have a proper SMTP configured with tls and starttls settings by editing **/var/www/peertube/config/porduction.yml**. - ### Update Guide - 1. App can be updated by YunoHost **admin web-interface** or with the following command**: + ### Updation + 1. **App can be updated by YunoHost admin interface or with the following command:** $ sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/peertube_ynh peertube diff --git a/conf/app.src b/conf/app.src index e463f7a..f5aea93 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/Chocobozzz/PeerTube/releases/download/v1.2.1/peertube-v1.2.1.tar.xz -SOURCE_SUM=77517c06133704e36b755bdae4f68838221e657ca70a1a40d5c8652655978ed5 +SOURCE_URL=https://github.com/Chocobozzz/PeerTube/releases/download/v1.0.0-beta.13/peertube-v1.0.0-beta.13.tar.xz +SOURCE_SUM=d23ebad3d1348a8fdf6ccaff81c16849045574578656ab7e676d4580c2da7383 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.xz SOURCE_IN_SUBDIR=true diff --git a/conf/nginx.conf b/conf/nginx.conf index 71e59d3..18bcbec 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,10 +1,9 @@ - # Bypass PeerTube for performance reasons. Could be removed location ~ ^/client/(.*\.(js|css|woff2|otf|ttf|woff|eot))$ { add_header Cache-Control "public, max-age=31536000, immutable"; alias __FINALPATH__/client/dist/$1; } - # Bypass PeerTube for performance reasons. Could be removed + location ~ ^/static/(thumbnails|avatars)/ { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; @@ -37,17 +36,8 @@ proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # This is the maximum upload size, which roughly matches the maximum size of a video file - # you can send via the API or the web interface. By default this is 8GB, but administrators - # can increase or decrease the limit. Currently there's no way to communicate this limit - # to users automatically, so you may want to leave a note in your instance 'about' page if - # you change this. - # - # Note that temporary space is needed equal to the total size of all concurrent uploads. - # This data gets stored in /var/lib/nginx by default, so you may want to put this directory - # on a dedicated filesystem. - # + + # Hard limit, PeerTube does not support videos > 8GB client_max_body_size 8G; proxy_connect_timeout 600; proxy_send_timeout 600; @@ -55,8 +45,8 @@ send_timeout 600; } - # Bypass PeerTube for performance reasons. Could be removed - location ~ ^/static/(webseed|redundancy)/ { + # Bypass PeerTube webseed route for better performances + location /static/webseed { # Clients usually have 4 simultaneous webseed connections, so the real limit is 3MB/s per client limit_rate 800k; @@ -79,14 +69,7 @@ access_log off; } - root /home/yunohost.app/__NAME__/storage; - - rewrite ^/static/webseed/(.*)$ /videos/$1 break; - rewrite ^/static/redundancy/(.*)$ /redundancy/$1 break; - - try_files $uri /; - - + alias /home/yunohost.app/__NAME__/storage/videos; } # Websocket tracker @@ -101,18 +84,3 @@ proxy_set_header Host $host; proxy_pass http://localhost:__PORT__; } - -location /socket.io { - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host; - - proxy_pass http://localhost:__PORT__; - - # enable WebSockets - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - - - diff --git a/conf/production.yaml b/conf/production.yaml index 0454369..3e051ca 100644 --- a/conf/production.yaml +++ b/conf/production.yaml @@ -2,7 +2,7 @@ listen: hostname: 'localhost' port: __PORT__ -# Correspond to your reverse proxy server_name/listen configuration +# Correspond to your reverse proxy "listen" configuration webserver: https: true hostname: '__domain__' @@ -47,10 +47,8 @@ smtp: # From the project root directory storage: - tmp: '/home/yunohost.app/__app__/storage/tmp/' # Used to download data (imports etc), store uploaded files before processing... avatars: '/home/yunohost.app/__app__/storage/avatars/' videos: '/home/yunohost.app/__app__/storage/videos/' - redundancy: '/home/yunohost.app/__app__/storage/videos/' logs: '/home/yunohost.app/__app__/storage/logs/' previews: '/home/yunohost.app/__app__/storage/previews/' thumbnails: '/home/yunohost.app/__app__/storage/thumbnails/' @@ -62,36 +60,14 @@ log: level: 'info' # debug/info/warning/error search: -# Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance -# If enabled, the associated group will be able to "escape" from the instance follows -# That means they will be able to follow channels, watch videos, list videos of non followed instances - remote_uri: + remote_uri: # Add ability to search remote videos/actors by URI, that may not be federated with your instance users: true anonymous: false trending: videos: interval_days: 7 # Compute trending videos for the last x days - -# Cache remote videos on your server, to help other instances to broadcast the video -# You can define multiple caches using different sizes/strategies -# Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following -#redundancy: -# videos: -# check_interval: '6 hour' # How often you want to check new videos to cache -# strategies: -# - -# size: '10GB' -# strategy: 'most-views' # Cache videos that have the most views -# - -# size: '10GB' -# strategy: 'trending' # Cache trending videos -# - -# size: '1GB' -# # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) -# min_lifetime: '48 hours' -# strategy: 'recently-added' # Cache recently added videos -# min_views: 10 # Having at least x views + ############################################################################### # @@ -113,17 +89,11 @@ cache: admin: - # Used to generate the root user at first startup - # And to receive emails from the contact form email: '__email__' -contact_form: - enabled: true - signup: enabled: false limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited - requires_email_verification: false filters: cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist whitelist: [] @@ -140,8 +110,6 @@ user: # Please, do not disable transcoding since many uploaded videos will not work transcoding: enabled: true - # Allow your users to upload .mkv, .mov, .avi, .flv videos - allow_additional_extensions: true threads: 1 resolutions: # Only created if the original video has a higher resolution, uses more storage! 240p: false @@ -174,14 +142,12 @@ instance: # Robot.txt rules. To disallow robots to crawl your instance and disallow indexation of your site, add '/' to "Disallow:' robots: | User-agent: * - Disallow: + Disallow: '' # Security.txt rules. To discourage researchers from testing your instance and disable security.txt integration, set this to an empty string. securitytxt: "# If you would like to report a security issue\n# you may report it to:\nContact: https://github.com/Chocobozzz/PeerTube/blob/develop/SECURITY.md\nContact: mailto:" services: - # You can provide a reporting endpoint for Content Security Policy violations - csp-logger: # Cards configuration to format video in Twitter twitter: username: '@yunohost' # Indicates the Twitter account for the website or platform on which the content was published diff --git a/conf/systemd.service b/conf/systemd.service index 85dd1b8..0fc291b 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -8,32 +8,12 @@ Environment=NODE_ENV=production Environment=NODE_CONFIG_DIR=__FINALPATH__/config User=__APP__ Group=__APP__ -Environment="PATH=__ENV_PATH__" -ExecStart=/bin/sh -c ' npm start' +ExecStart=/bin/sh -c 'PATH=/opt/node_n/bin:$PATH exec npm start' WorkingDirectory=__FINALPATH__/ StandardOutput=syslog StandardError=syslog SyslogIdentifier=__APP__ Restart=always -; Some security directives. -; Use private /tmp and /var/tmp folders inside a new file system namespace, -; which are discarded after the process stops. -PrivateTmp=true -; Mount /usr, /boot, and /etc as read-only for processes invoked by this service. -ProtectSystem=full -; Sets up a new /dev mount for the process and only adds API pseudo devices -; like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled -; by default because it may not work on devices like the Raspberry Pi. -PrivateDevices=false -; Ensures that the service process and all its children can never gain new -; privileges through execve(). -NoNewPrivileges=true -; This makes /home, /root, and /run/user inaccessible and empty for processes invoked -; by this unit. Make sure that you do not depend on data inside these folders. -ProtectHome=false -; Drops the sys admin capability from the daemon. -CapabilityBoundingSet=~CAP_SYS_ADMIN - [Install] WantedBy=multi-user.target diff --git a/manifest.json b/manifest.json index bfddcab..359a850 100644 --- a/manifest.json +++ b/manifest.json @@ -3,10 +3,9 @@ "id": "peertube", "packaging_format": 1, "description": { - "en": "Video streaming platform using P2P directly in the web browser, connected to a federated network", - "fr": "Plateforme de diffusion vidéo par P2P directement dans le navigateur, et connectée à un réseau fédéralisé" + "en": "Video streaming platform using P2P directly in the web browser, connected to a federated network" }, - "version": "1.2.1", + "version": "1.0.0-beta.13", "url": "https://github.com/Chocobozzz/PeerTube", "license": "AGPL-3.0-only", "maintainer": { diff --git a/scripts/install b/scripts/install index 44a5d11..d611476 100644 --- a/scripts/install +++ b/scripts/install @@ -22,7 +22,7 @@ ynh_abort_if_errors #================================================= domain=$YNH_APP_ARG_DOMAIN -path_url="/peertube" +path_url="/" admin_email=$YNH_APP_ARG_EMAIL admin_pass=$(ynh_string_random 24) is_public=$YNH_APP_ARG_IS_PUBLIC @@ -56,10 +56,10 @@ ynh_webpath_register "$app" "$domain" "$path_url" # STORE SETTINGS FROM MANIFEST #================================================= -ynh_app_setting_set "$app" domain "$domain" +ynh_app_setting_set "$app" domain "$domain" ynh_app_setting_set "$app" admin_email "$admin_email" -ynh_app_setting_set "$app" admin_pass "$admin_pass" -ynh_app_setting_set "$app" is_public "$is_public" +ynh_app_setting_set "$app" admin_pass "$admin_pass" +ynh_app_setting_set "$app" is_public "$is_public" #================================================= # STANDARD MODIFICATIONS @@ -69,6 +69,9 @@ ynh_app_setting_set "$app" is_public "$is_public" # Find a free port port=$(ynh_find_port 9000) + +# Open this port +yunohost firewall allow Both "$port" 2>&1 ynh_app_setting_set "$app" port "$port" #================================================= @@ -87,18 +90,18 @@ mkdir -p "$datadir" # install nodejs ynh_install_nodejs 8 -# Add backports for Debian Jessie (required to install ffmpeg) +# add backports for Debian Jessie (required to install ffmpeg) if [ "$(lsb_release --codename --short)" == "jessie" ]; then echo "deb http://httpredir.debian.org/debian jessie-backports main" | tee /etc/apt/sources.list.d/jessie-backports.list fi -# Add yarn repo for Debian +# add yarn repo for Debian curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list ynh_package_update -# install dependencies -ynh_install_app_dependencies postgresql postgresql-contrib openssl g++ ffmpeg redis-server redis-tools mailutils yarn apt-transport-https +# install postgresql, ffmpeg, redis +ynh_install_app_dependencies postgresql ffmpeg redis-server redis-tools mailutils yarn #================================================= # DATABASE SETUP @@ -140,7 +143,7 @@ touch "$final_path/config/local-production.json" ( cd "$final_path" - yarn install --production --pure-lockfile + yarn install --pure-lockfile ) #================================================= @@ -148,11 +151,11 @@ touch "$final_path/config/local-production.json" #================================================= # Create a dedicated nginx config -mkdir -p "/etc/nginx/conf.d/${domain}.d" # ( I don't remember why this is here, I think can be removed) +mkdir -p "/etc/nginx/conf.d/${domain}.d" ynh_add_nginx_config -# Set right permissions for the app +# Set right permissions for curl install chown -R "$app":"$app" "$datadir" # Reload Nginx @@ -211,13 +214,10 @@ chown -R "$app":"$app" "$final_path" "$datadir" systemctl reload nginx - - #================================================= # SETUP SYSTEMD #================================================= -ynh_replace_string "__ENV_PATH__" "$PATH" "../conf/systemd.service" # Create a dedicated systemd config ynh_add_systemd_config systemctl enable "$app" @@ -231,7 +231,7 @@ systemctl start "$app" ( cd "$final_path" sleep 30 - echo $admin_pass | NODE_CONFIG_DIR="$final_path/config" NODE_ENV=production npm run reset-password -- -u root + echo $admin_pass | NODE_CONFIG_DIR="$final_path/config" NODE_ENV=production PATH="/opt/node_n/bin:$PATH" npm run reset-password -- -u root ) #================================================= @@ -240,11 +240,11 @@ systemctl start "$app" message=" $app was successfully installed :) -Please open your $app domain: https://$domain$path_url +Please open https://$domain$path_url The admin username is: root -The admin password is: $admin_pass +Here is the admin password: $admin_pass -If you are facing any problem or want to improve this app, please open a new issue here: https://github.com/YunoHost-Apps/peertube_ynh" +If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/peertube_ynh" ynh_send_readme_to_admin "$message" diff --git a/scripts/remove b/scripts/remove index 7b1b909..734a5d9 100644 --- a/scripts/remove +++ b/scripts/remove @@ -109,8 +109,7 @@ message="$app was successfully removed :) $app was successfully removed. The domain https://$domain$path_url is free for other apps to be installed on it. -But a futher action is required from your side to completely remove the $app data folder. If you have backup and plan to restore this app in the future DON'T RUN THIS COMMAND. -And if you are going to migrate to othe server you will have to move /home/yunohost.app/$app to your new server. +But a futher action is required from your side to completely remove the $app data folder. If you are planing to restore the app in the future don't run the command given below. And if you are going to switch to othe server you will have to move /home/yunohost.app/$app to your new server. You need to run this command to remove the data (warning all your videos will be removed) : @@ -118,6 +117,6 @@ You need to run this command to remove the data (warning all your videos will be rm -R /home/yunohost.app/$app -f -If you facing any problem or want to improve this app, please open a new issue here: https://github.com/YunoHost-Apps/peertube_ynh" +If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/peertube_ynh" ynh_send_readme_to_admin "$message" diff --git a/scripts/restore b/scripts/restore index 1512bc2..fe319b0 100644 --- a/scripts/restore +++ b/scripts/restore @@ -62,6 +62,9 @@ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file "$final_path" +# Open this port +yunohost firewall allow Both "$port" 2>&1 + #================================================= # RECREATE THE DEDICATED USER #================================================= @@ -74,9 +77,6 @@ ynh_system_user_create "$app" #================================================= # Set right permissions -if [ ! -d "/home/yunohost.app/$app" ]; then - mkdir -p "/home/yunohost.app/${app}/storage" -fi chown -R "$app":"$app" "/home/yunohost.app/${app}/storage" #================================================= @@ -99,7 +99,7 @@ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.lis ynh_package_update # install postgresql, ffmpeg, redis -ynh_install_app_dependencies postgresql postgresql-contrib openssl g++ ffmpeg redis-server redis-tools mailutils yarn apt-transport-https +ynh_install_app_dependencies postgresql ffmpeg redis-server redis-tools mailutils yarn #================================================= # RESTORE THE PostgreSQL DATABASE @@ -130,7 +130,7 @@ ynh_restore_file "/etc/logrotate.d/$app" ( cd "$final_path" - yarn install --production --pure-lockfile --silent --cache-folder /var/cache/yarn/ + yarn install --pure-lockfile --silent --cache-folder /var/cache/yarn/ ) # Set right permissions diff --git a/scripts/upgrade b/scripts/upgrade index 6f1e313..5b373a3 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -77,15 +77,8 @@ datadir="/home/yunohost.app/${app}/storage" # Create app folders mkdir -p "$datadir" -#================================================= -# CLOSE A PORT -#================================================= - -if yunohost firewall list | grep -q "\- $port$" -then - echo "Close port $port" - yunohost firewall disallow Both "$port" 2>&1 -fi +# Open this port +yunohost firewall allow Both "$port" 2>&1 #================================================= # CREATE DEDICATED USER @@ -112,7 +105,7 @@ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.lis ynh_package_update # install postgresql, ffmpeg, redis -ynh_install_app_dependencies postgresql postgresql-contrib openssl g++ ffmpeg redis-server redis-tools mailutils yarn apt-transport-https +ynh_install_app_dependencies postgresql ffmpeg redis-server redis-tools mailutils yarn #================================================= # CHECK THE PATH @@ -137,7 +130,7 @@ ynh_secure_remove "$tmpdir" ( cd "$final_path" - yarn install --production --pure-lockfile + yarn install --pure-lockfile --silent --cache-folder /var/cache/yarn/ ) @@ -179,7 +172,7 @@ ynh_use_logrotate --non-append #================================================= # SETUP SYSTEMD #================================================= -ynh_replace_string "__ENV_PATH__" "$PATH" "../conf/systemd.service" + # Create a dedicated systemd config ynh_add_systemd_config