1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/peertube_ynh.git synced 2024-09-03 19:56:29 +02:00

Merge pull request #126 from YunoHost-Apps/testing

Testing
This commit is contained in:
yalh76 2019-10-16 23:25:08 +02:00 committed by GitHub
commit ce8622f2ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 170 additions and 86 deletions

View file

@ -22,8 +22,24 @@ Servers are run independently by different people and organizations. They can ap
By watching a video, you help the hosting provider to broadcast it by becoming a broadcaster of the video yourself. Each instance doesnt need much money to broadcast the videos of its users. By watching a video, you help the hosting provider to broadcast it by becoming a broadcaster of the video yourself. Each instance doesnt need much money to broadcast the videos of its users.
**Shipped version:** 1.3.1 **Shipped version:** 1.4.1
## Important points to read before installing
1. Require **dedicated domain** like **peertube.domain.tld**.
1. **No LDAP** support (blocked until PeerTube core upstream implements it)
1. Admin username is : **root**.
1. **Admin password** will be sent to the email address given at the time of the installation.
1. URL can not be changed once selected. Choose the domain wisely.
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. **If you are hosted on OVH virtual machine or experiencing `gyp ERR! configure error`, please switch to [ovh_fix](https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix)**
## Screenshots ## Screenshots
![](https://framablog.org/wp-content/uploads/2018/03/Framatube-au-lancement.png) ![](https://framablog.org/wp-content/uploads/2018/03/Framatube-au-lancement.png)
@ -34,42 +50,6 @@ Want to see in action?
* [Here](http://peertube.cpy.re) are the list of instances ran by people around the world. Be a part of it. * [Here](http://peertube.cpy.re) are the list of instances ran by people around the world. Be a part of it.
## Installation
### 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. 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. **If you are hosted on OVH virtual machine or experiencing `gyp ERR! configure error`, please switch to [ovh_fix](https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix)**
### Installing guide
1. App can be installed by YunoHost **admin web-interface** or by **running 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**.
### Update Guide
1. App can be updated by YunoHost **admin web-interface** or with the **following command**:
$ sudo yunohost app upgrade peertube -u https://github.com/YunoHost-Apps/peertube_ynh
### Dependencies
* NodeJS, PostgreSQL.
* On Debian Jessie,backport is added for the ffmpeg package.
## Documentation ## Documentation
* Official documentation: https://docs.joinpeertube.org/ * Official documentation: https://docs.joinpeertube.org/
@ -94,7 +74,6 @@ Want to see in action?
Developers info Developers info
---------------- ----------------
**Only if you want to use a testing branch for coding, instead of merging directly into master.**
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/peertube_ynh/tree/testing). Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/peertube_ynh/tree/testing).
To try the testing branch, please proceed like that. To try the testing branch, please proceed like that.

View file

@ -17,7 +17,7 @@
setup_private=1 setup_private=1
setup_public=1 setup_public=1
upgrade=1 upgrade=1
upgrade=1 from_commit=b8d44ebd8b85128398d9811a05e221ba01703970 upgrade=1 from_commit=280ba0d4a9ebb9d8948e0db97200dbcb89b6c323
backup_restore=1 backup_restore=1
multi_instance=1 multi_instance=1
# This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version. # This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version.

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/Chocobozzz/PeerTube/releases/download/v1.3.1/peertube-v1.3.1.tar.xz SOURCE_URL=https://github.com/Chocobozzz/PeerTube/releases/download/v1.4.1/peertube-v1.4.1.tar.xz
SOURCE_SUM=57737960c07122207f0126488750d675c64403f325aea5f094408e0140e2061c SOURCE_SUM=49da83b9143ac4a6a486eff7b726830923022a97c6a692722bda20044fe6cd70
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.xz SOURCE_FORMAT=tar.xz
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -0,0 +1,2 @@
{
}

View file

@ -5,14 +5,22 @@ listen:
# Correspond to your reverse proxy server_name/listen configuration # Correspond to your reverse proxy server_name/listen configuration
webserver: webserver:
https: true https: true
hostname: '__domain__' hostname: '__DOMAIN__'
port: 443 port: 443
rates_limit: rates_limit:
api:
# 50 attempts in 10 seconds
window: 10 seconds
max: 50
login: login:
# 15 attempts in 5 min # 15 attempts in 5 min
window: 5 minutes window: 5 minutes
max: 15 max: 15
signup:
# 2 attempts in 5 min (only succeeded attempts are taken into account)
window: 5 minutes
max: 2
ask_send_email: ask_send_email:
# 3 attempts in 5 min # 3 attempts in 5 min
window: 5 minutes window: 5 minutes
@ -28,9 +36,9 @@ trust_proxy:
database: database:
hostname: 'localhost' hostname: 'localhost'
port: 5432 port: 5432
suffix: '___db_name__' suffix: '___DB_NAME__'
username: '__db_name__' username: '__DB_NAME__'
password: '__db_pwd__' password: '__DB_PWD__'
pool: pool:
max: 5 max: 5
@ -52,24 +60,33 @@ smtp:
tls: false # If you use StartTLS: false tls: false # If you use StartTLS: false
disable_starttls: true disable_starttls: true
ca_file: null # Used for self signed certificates ca_file: null # Used for self signed certificates
from_address: 'webmaster@__domain__' from_address: 'webmaster@__DOMAIN__'
email:
body:
signature: "PeerTube"
subject:
prefix: "[PeerTube]"
# From the project root directory # From the project root directory
storage: storage:
tmp: '/home/yunohost.app/__app__/storage/tmp/' # Used to download data (imports etc), store uploaded files before processing... tmp: '/home/yunohost.app/__APP__/storage/tmp/' # Use to download data (imports etc), store uploaded files before processing...
avatars: '/home/yunohost.app/__app__/storage/avatars/' avatars: '/home/yunohost.app/__APP__/storage/avatars/'
videos: '/home/yunohost.app/__app__/storage/videos/' videos: '/home/yunohost.app/__APP__/storage/videos/'
streaming_playlists: '/home/yunohost.app/__app__/storage/streaming-playlists/' streaming_playlists: '/home/yunohost.app/__APP__/storage/streaming-playlists/'
redundancy: '/home/yunohost.app/__app__/storage/videos/' redundancy: '/home/yunohost.app/__APP__/storage/videos/'
logs: '/home/yunohost.app/__app__/storage/logs/' logs: '/home/yunohost.app/__APP__/storage/logs/'
previews: '/home/yunohost.app/__app__/storage/previews/' previews: '/home/yunohost.app/__APP__/storage/previews/'
thumbnails: '/home/yunohost.app/__app__/storage/thumbnails/' thumbnails: '/home/yunohost.app/__APP__/storage/thumbnails/'
torrents: '/home/yunohost.app/__app__/storage/torrents/' torrents: '/home/yunohost.app/__APP__/storage/torrents/'
captions: '/home/yunohost.app/__app__/storage/captions/' captions: '/home/yunohost.app/__APP__/storage/captions/'
cache: '/home/yunohost.app/__app__/storage/cache/' cache: '/home/yunohost.app/__APP__/storage/cache/'
plugins: '/home/yunohost.app/__APP__/storage/plugins/'
log: log:
level: 'info' # debug/info/warning/error level: 'info' # debug/info/warning/error
rotation:
enabled : true # Enabled by default, if disabled make sure that 'storage.logs' is pointing to a folder handled by logrotate
search: search:
# Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance # Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance
@ -88,8 +105,8 @@ trending:
# Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following # Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following
redundancy: redundancy:
videos: videos:
check_interval: '6 hour' # How often you want to check new videos to cache check_interval: '1 hour' # How often you want to check new videos to cache
strategies: strategies: # Just uncomment strategies you want
# - # -
# size: '10GB' # size: '10GB'
# # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) # # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
@ -139,6 +156,14 @@ views:
remote: remote:
max_age: -1 max_age: -1
plugins:
# The website PeerTube will ask for available PeerTube plugins and themes
# This is an unmoderated plugin index, so only install plugins/themes you trust
index:
enabled: true
check_latest_versions_interval: '12 hours' # How often you want to check new plugins/themes versions
url: 'https://packages.joinpeertube.org'
############################################################################### ###############################################################################
# #
@ -161,7 +186,7 @@ cache:
admin: admin:
# Used to generate the root user at first startup # Used to generate the root user at first startup
# And to receive emails from the contact form # And to receive emails from the contact form
email: '__email__' email: '__EMAIL__'
contact_form: contact_form:
enabled: true enabled: true
@ -197,6 +222,7 @@ transcoding:
480p: false 480p: false
720p: false 720p: false
1080p: false 1080p: false
2160p: false
# /!\ EXPERIMENTAL /!\ # /!\ EXPERIMENTAL /!\
# /!\ Requires ffmpeg >= 4 # /!\ Requires ffmpeg >= 4
# Generate HLS playlists and fragmented MP4 files. Better playback than with WebTorrent: # Generate HLS playlists and fragmented MP4 files. Better playback than with WebTorrent:
@ -225,9 +251,62 @@ auto_blacklist:
instance: instance:
name: 'YunoHost PeerTube' name: 'YunoHost PeerTube'
short_description: 'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.' short_description: 'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.'
description: '' # Support markdown description: 'Welcome to this PeerTube instance!' # Support markdown
terms: '' # Support markdown terms: 'No terms for now.' # Support markdown
code_of_conduct: '' # Supports markdown
# Who moderates the instance? What is the policy regarding NSFW videos? Political videos? etc
moderation_information: '' # Supports markdown
# Why did you create this instance?
creation_reason: ''
# Who is behind the instance? A single person? A non profit?
administrator: ''
# How long do you plan to maintain this instance?
maintenance_lifetime: ''
# How will you pay the PeerTube instance server? With you own funds? With users donations? Advertising?
business_model: ''
# If you want to explain on what type of hardware your PeerTube instance runs
# Example: "2 vCore, 2GB RAM..."
hardware_information: '' # Supports Markdown
# What are the main languages of your instance? To interact with your users for example
# Uncomment or add the languages you want
# List of supported languages: https://peertube.cpy.re/api/v1/videos/languages
languages:
# - en
# - es
# - fr
# You can specify the main categories of your instance (dedicated to music, gaming or politics etc)
# Uncomment or add the category ids you want
# List of supported categories: https://peertube.cpy.re/api/v1/videos/categories
categories:
# - 1 # Music
# - 2 # Films
# - 3 # Vehicles
# - 4 # Art
# - 5 # Sports
# - 6 # Travels
# - 7 # Gaming
# - 8 # People
# - 9 # Comedy
# - 10 # Entertainment
# - 11 # News & Politics
# - 12 # How To
# - 13 # Education
# - 14 # Activism
# - 15 # Science & Technology
# - 16 # Animals
# - 17 # Kids
# - 18 # Food
default_client_route: '/videos/trending' default_client_route: '/videos/trending'
# Whether or not the instance is dedicated to NSFW content # Whether or not the instance is dedicated to NSFW content
# Enabling it will allow other administrators to know that you are mainly federating sensitive content # Enabling it will allow other administrators to know that you are mainly federating sensitive content
# Moreover, the NSFW checkbox on video upload will be automatically checked by default # Moreover, the NSFW checkbox on video upload will be automatically checked by default
@ -235,6 +314,7 @@ instance:
# By default, "do_not_list" or "blur" or "display" NSFW videos # By default, "do_not_list" or "blur" or "display" NSFW videos
# Could be overridden per user with a setting # Could be overridden per user with a setting
default_nsfw_policy: 'do_not_list' default_nsfw_policy: 'do_not_list'
customizations: customizations:
javascript: '' # Directly your JavaScript code (without <script> tags). Will be eval at runtime javascript: '' # Directly your JavaScript code (without <script> tags). Will be eval at runtime
css: '' # Directly your CSS code (without <style> tags). Will be injected at runtime css: '' # Directly your CSS code (without <style> tags). Will be injected at runtime
@ -247,14 +327,12 @@ instance:
"# 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:" "# 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: services:
# You can provide a reporting endpoint for Content Security Policy violations
csp-logger:
# Cards configuration to format video in Twitter # Cards configuration to format video in Twitter
twitter: twitter:
username: '@yunohost' # Indicates the Twitter account for the website or platform on which the content was published username: '@yunohost' # Indicates the Twitter account for the website or platform on which the content was published
# If true, a video player will be embedded in the Twitter feed on PeerTube video share # If true, a video player will be embedded in the Twitter feed on PeerTube video share
# If false, we use an image link card that will redirect on your PeerTube instance # If false, we use an image link card that will redirect on your PeerTube instance
# Test on https://cards-dev.twitter.com/validator to see if you are whitelisted # Change it to "true", and then test on https://cards-dev.twitter.com/validator to see if you are whitelisted
whitelisted: false whitelisted: false
followers: followers:
@ -263,3 +341,21 @@ followers:
enabled: true enabled: true
# Whether or not an administrator must manually validate a new follower # Whether or not an administrator must manually validate a new follower
manual_approval: false manual_approval: false
followings:
instance:
# If you want to automatically follow back new instance followers
# If this option is enabled, use the mute feature instead of deleting followings
# /!\ Don't enable this if you don't have a reactive moderation team /!\
auto_follow_back:
enabled: false
# If you want to automatically follow instances of the public index
# If this option is enabled, use the mute feature instead of deleting followings
# /!\ Don't enable this if you don't have a reactive moderation team /!\
auto_follow_index:
enabled: false
index_url: 'https://instances.joinpeertube.org'
theme:
default: 'default'

View file

@ -6,7 +6,7 @@
"en": "Video streaming platform using P2P directly in the web browser, connected to a federated network", "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é" "fr": "Plateforme de diffusion vidéo par P2P directement dans le navigateur, et connectée à un réseau fédéralisé"
}, },
"version": "1.3.1~ynh1", "version": "1.4.1~ynh1",
"url": "https://github.com/Chocobozzz/PeerTube", "url": "https://github.com/Chocobozzz/PeerTube",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"maintainer": [ "maintainer": [

View file

@ -5,7 +5,7 @@
#================================================= #=================================================
# dependencies used by the app # dependencies used by the app
pkg_dependencies="postgresql postgresql-contrib openssl g++ redis-server redis-tools mailutils apt-transport-https" pkg_dependencies="ffmpeg postgresql postgresql-contrib openssl g++ redis-server redis-tools mailutils apt-transport-https"
#================================================= #=================================================
# PERSONAL HELPERS # PERSONAL HELPERS

View file

@ -71,7 +71,7 @@ ynh_app_setting_set --app=$app --key=port --value=$port
ynh_print_info --message="Installing dependencies..." ynh_print_info --message="Installing dependencies..."
# Install nodejs # Install nodejs
ynh_install_nodejs --nodejs_version=8 ynh_install_nodejs --nodejs_version=10
# Install dependencies # Install dependencies
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
@ -148,15 +148,15 @@ chown -R "$app":"$app" "$datadir"
#================================================= #=================================================
cp ../conf/production.yaml "$final_path/config/production.yaml" cp ../conf/production.yaml "$final_path/config/production.yaml"
ynh_replace_string --match_string="__domain__" --replace_string="$domain" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__db_name__" --replace_string="$app" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__DB_NAME__" --replace_string="$app" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__app__" --replace_string="$app" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__db_pwd__" --replace_string="$db_pwd" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__email__" --replace_string="$admin_email" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__EMAIL__" --replace_string="$admin_email" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/config/production.yaml"
#Create the admin settings file #Create the admin settings file
touch "$final_path/config/local-production.json" cp ../conf/local-production.json "$final_path/config/local-production.json"
#================================================= #=================================================
# FIX NGINX DOMAIN CONFIGURATION # FIX NGINX DOMAIN CONFIGURATION

View file

@ -86,7 +86,7 @@ chown -R "$app":"$app" "/home/yunohost.app/${app}/storage"
ynh_print_info --message="Reinstalling dependencies..." ynh_print_info --message="Reinstalling dependencies..."
# Install nodejs # Install nodejs
ynh_install_nodejs --nodejs_version=8 ynh_install_nodejs --nodejs_version=10
# Install dependencies # Install dependencies
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies

View file

@ -111,9 +111,15 @@ then
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" ynh_setup_source --dest_dir="$final_path"
#Copy the admin saved settings from tmp directory to final path #Copy the admin saved settings from tmp directory to final path
cp -a "$tmpdir/local-production.json" "$final_path/config/local-production.json" cp -a "$tmpdir/production.yaml" "$final_path/config/production.yaml"
cp -a "$tmpdir/production.yaml" "$final_path/config/production.yaml"
if [ -s "$tmpdir/local-production.json" ]
then
cp -a "$tmpdir/local-production.json" "$final_path/config/local-production.json"
else
cp ../conf/local-production.json "$final_path/config/local-production.json"
fi
# Remove the tmp directory securely # Remove the tmp directory securely
ynh_secure_remove --file="$tmpdir" ynh_secure_remove --file="$tmpdir"
@ -133,7 +139,8 @@ ynh_add_nginx_config
ynh_print_info --message="Upgrading dependencies..." ynh_print_info --message="Upgrading dependencies..."
# Install nodejs # Install nodejs
ynh_install_nodejs --nodejs_version=8 ynh_remove_nodejs --nodejs_version=8
ynh_install_nodejs --nodejs_version=10
# Install dependencies # Install dependencies
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
@ -166,16 +173,16 @@ ynh_backup_if_checksum_is_different --file="$final_path/config/local-production.
ynh_backup_if_checksum_is_different --file="$final_path/config/production.yaml" ynh_backup_if_checksum_is_different --file="$final_path/config/production.yaml"
cp ../conf/production.yaml "$final_path/config/production.yaml" cp ../conf/production.yaml "$final_path/config/production.yaml"
ynh_replace_string --match_string="__domain__" --replace_string="$domain" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__db_name__" --replace_string="$app" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__DB_NAME__" --replace_string="$app" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__app__" --replace_string="$app" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__db_pwd__" --replace_string="$db_pwd" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__email__" --replace_string="$admin_email" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__EMAIL__" --replace_string="$admin_email" --target_file="$final_path/config/production.yaml"
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/config/production.yaml" ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/config/production.yaml"
# Recalculate and store the checksum of the file for the next upgrade. # Recalculate and store the checksum of the file for the next upgrade.
ynh_store_file_checksum "$final_path/config/local-production.json" ynh_store_file_checksum --file="$final_path/config/local-production.json"
ynh_store_file_checksum "$final_path/config/production.yaml" ynh_store_file_checksum --file="$final_path/config/production.yaml"
#================================================= #=================================================
# FIX NGINX DOMAIN CONFIGURATION # FIX NGINX DOMAIN CONFIGURATION