diff --git a/conf/production.yaml b/conf/production.yaml index 2f55b18..c21d20f 100644 --- a/conf/production.yaml +++ b/conf/production.yaml @@ -69,9 +69,9 @@ smtp: email: body: - signature: "PeerTube" + signature: 'PeerTube' subject: - prefix: "[PeerTube]" + prefix: '[PeerTube]' # PeerTube client/interface configuration client: @@ -295,7 +295,7 @@ contact_form: signup: enabled: false limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited - minimum_age: 16 + minimum_age: 16 # Used to configure the signup form requires_email_verification: false filters: cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist @@ -336,6 +336,7 @@ transcoding: resolutions: # Only created if the original video has a higher resolution, uses more storage! 0p: false # audio-only (creates mp4 without video stream, always created when enabled) + 144p: false 240p: false 360p: false 480p: false @@ -382,6 +383,7 @@ live: # Your firewall should accept traffic from this port in TCP if you enable live rtmp: + enabled: true port: 1935 rtmps: @@ -403,6 +405,7 @@ live: profile: 'default' resolutions: + 144p: false 240p: false 360p: false 480p: false @@ -426,11 +429,11 @@ import: # Examples: # * https://api.github.com/repos/ytdl-org/youtube-dl/releases # * https://api.github.com/repos/yt-dlp/yt-dlp/releases - url: 'https://api.github.com/repos/yt-dlp/yt-dlp/releases' + url: 'https://yt-dl.org/downloads/latest/youtube-dl' # youtube-dl binary name # yt-dlp is also supported - name: 'yt-dlp' + name: 'youtube-dl' # IPv6 is very strongly rate-limited on most sites supported by youtube-dl force_ipv4: false diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..70f7a24 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser, using WebTorrent. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md new file mode 100644 index 0000000..6ec737f --- /dev/null +++ b/doc/DESCRIPTION_fr.md @@ -0,0 +1 @@ +Plateforme de streaming vidéo fédérée (ActivityPub) utilisant P2P (BitTorrent) directement dans le navigateur Web, en utilisant WebTorrent diff --git a/scripts/_common.sh b/scripts/_common.sh index f68b799..5e43880 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -20,45 +20,3 @@ NODEJS_VERSION=16 #================================================= # FUTURE OFFICIAL HELPERS #================================================= - -#================================================= -# REDIS HELPERS -#================================================= - -# get the first available redis database -# -# usage: ynh_redis_get_free_db -# | returns: the database number to use -ynh_redis_get_free_db() { - local result max db - result="$(redis-cli INFO keyspace)" - - # get the num - max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") - - db=0 - # default Debian setting is 15 databases - for i in $(seq 0 "$max") - do - if ! echo "$result" | grep -q "db$i" - then - db=$i - break 1 - fi - db=-1 - done - - test "$db" -eq -1 && ynh_die --message="No available Redis databases..." - - echo "$db" -} - -# Create a master password and set up global settings -# Please always call this script in install and restore scripts -# -# usage: ynh_redis_remove_db database -# | arg: database - the database to erase -ynh_redis_remove_db() { - local db=$1 - redis-cli -n "$db" flushall -} diff --git a/scripts/install b/scripts/install index 83fbd9b..873cf48 100644 --- a/scripts/install +++ b/scripts/install @@ -7,6 +7,7 @@ #================================================= source _common.sh +source ynh_redis source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers @@ -104,9 +105,10 @@ ynh_system_user_create --username=$app --home_dir=$final_path ynh_script_progression --message="Creating a PostgreSQL database..." db_name="peertube_${app}" -db_user=$app +db_user=$(ynh_sanitize_dbid --db_name=$app) db_pwd=$(ynh_string_random --length=30) ynh_app_setting_set --app=$app --key=db_name --value=$db_name +ynh_app_setting_set --app=$app --key=db_user --value=$db_user ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd ynh_psql_test_if_first_run ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd diff --git a/scripts/remove b/scripts/remove index ab0fd6a..fc5a63d 100644 --- a/scripts/remove +++ b/scripts/remove @@ -7,6 +7,7 @@ #================================================= source _common.sh +source ynh_redis source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers @@ -21,7 +22,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) port=$(ynh_app_setting_get --app=$app --key=port) rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$app +db_user=$(ynh_app_setting_get --app=$app --key=db_user) final_path=$(ynh_app_setting_get --app=$app --key=final_path) admin=$(ynh_app_setting_get --app=$app --key=admin) admin_email=$(ynh_user_get_info --username=$admin --key="mail") @@ -50,6 +51,14 @@ ynh_script_progression --message="Stopping and removing the systemd service..." # Remove the dedicated systemd config ynh_remove_systemd_config +#================================================= +# REMOVE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Removing logrotate configuration..." + +# Remove the app-specific logrotate config +ynh_remove_logrotate + #================================================= # REMOVE THE POSTGRESQL DATABASE #================================================= @@ -65,15 +74,6 @@ ynh_script_progression --message="Removing the redis database..." ynh_redis_remove_db "$redis_db" -#================================================= -# REMOVE DEPENDENCIES -#================================================= -ynh_script_progression --message="Removing dependencies..." - -# Remove metapackage and its dependencies -ynh_remove_nodejs -ynh_remove_app_dependencies - #================================================= # REMOVE APP MAIN DIR #================================================= @@ -102,12 +102,13 @@ ynh_script_progression --message="Removing NGINX web server configuration..." ynh_remove_nginx_config #================================================= -# REMOVE LOGROTATE CONFIGURATION +# REMOVE DEPENDENCIES #================================================= -ynh_script_progression --message="Removing logrotate configuration..." +ynh_script_progression --message="Removing dependencies..." -# Remove the app-specific logrotate config -ynh_remove_logrotate +# Remove metapackage and its dependencies +ynh_remove_nodejs +ynh_remove_app_dependencies #================================================= # CLOSE A PORT diff --git a/scripts/restore b/scripts/restore index e5e4756..a5050e3 100644 --- a/scripts/restore +++ b/scripts/restore @@ -33,7 +33,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) port=$(ynh_app_setting_get --app=$app --key=port) rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$app +db_user=$(ynh_app_setting_get --app=$app --key=db_user) db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) datadir=$(ynh_app_setting_get --app=$app --key=datadir) @@ -42,7 +42,8 @@ datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= ynh_script_progression --message="Validating restoration parameters..." -test ! -d $final_path || ynh_die --message="There is already a directory: $final_path " +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " #================================================= # STANDARD RESTORATION STEPS @@ -59,7 +60,7 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_script_progression --message="Recreating the dedicated system user..." # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" +ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # RESTORE THE APP MAIN DIR @@ -126,6 +127,13 @@ ynh_script_progression --message="Restoring the systemd configuration..." ynh_restore_file --origin_path="/etc/systemd/system/$app.service" systemctl enable $app.service --quiet +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." + +ynh_restore_file --origin_path="/etc/logrotate.d/$app" + #================================================= # INTEGRATE SERVICE IN YUNOHOST #================================================= @@ -140,13 +148,6 @@ ynh_script_progression --message="Starting a systemd service..." ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="HTTP server listening on localhost" -#================================================= -# RESTORE THE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the logrotate configuration..." - -ynh_restore_file --origin_path="/etc/logrotate.d/$app" - #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index fd10514..49f9f6c 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -7,6 +7,7 @@ #================================================= source _common.sh +source ynh_redis source /usr/share/yunohost/helpers #================================================= @@ -22,7 +23,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) port=$(ynh_app_setting_get --app=$app --key=port) rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$app +db_user=$(ynh_app_setting_get --app=$app --key=db_user) db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) datadir=$(ynh_app_setting_get --app=$app --key=datadir) admin=$(ynh_app_setting_get --app=$app --key=admin) @@ -74,6 +75,12 @@ if [ -z "$db_name" ]; then ynh_app_setting_set --app=$app --key=db_name --value=$db_name fi +# If db_user doesn't exist, create it +if [ -z "$db_user" ]; then + db_user=$app + ynh_app_setting_set --app=$app --key=db_user --value=$db_user +fi + # If db_pwd doesn't exist, create it if [ -z "$db_pwd" ]; then db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) @@ -253,6 +260,17 @@ pushd "$final_path" ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_CONFIG_DIR="$final_path/config" NODE_ENV=production $ynh_npm run plugin:install -- --npm-name peertube-plugin-auth-ldap popd +#================================================= +# PEERTUBE 4.0.0 UPGRADE MIGRATION SCRIPT +#================================================= + +if ynh_compare_current_package_version --comparison lt --version 4.0.0~ynh1; then + ynh_script_progression --message="Running Peertube 4.0.0 migration script..." + pushd "$final_path" + ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_CONFIG_DIR="$final_path/config" NODE_ENV=production node dist/scripts/migrations/peertube-4.0.js + popd +fi + #================================================= # SETUP SYSTEMD #================================================= @@ -292,18 +310,6 @@ ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload - -#================================================= -# PEERTUBE 4.0.0 UPGRADE MIGRATION SCRIPT -#================================================= - -if ynh_compare_current_package_version --comparison lt --version 4.0.0~ynh1; then - ynh_script_progression --message="Running Peertube 4.0.0 migration script..." - pushd "$final_path" - ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_CONFIG_DIR="$final_path/config" NODE_ENV=production node dist/scripts/migrations/peertube-4.0.js - popd -fi - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/ynh_redis b/scripts/ynh_redis new file mode 100644 index 0000000..9d6257d --- /dev/null +++ b/scripts/ynh_redis @@ -0,0 +1,39 @@ +#!/bin/bash + +# get the first available redis database +# +# usage: ynh_redis_get_free_db +# | returns: the database number to use +ynh_redis_get_free_db() { + local result max db + result=$(redis-cli INFO keyspace) + + # get the num + max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") + + db=0 + # default Debian setting is 15 databases + for i in $(seq 0 "$max") + do + if ! echo "$result" | grep -q "db$i" + then + db=$i + break 1 + fi + db=-1 + done + + test "$db" -eq -1 && ynh_die --message="No available Redis databases..." + + echo "$db" +} + +# Create a master password and set up global settings +# Please always call this script in install and restore scripts +# +# usage: ynh_redis_remove_db database +# | arg: database - the database to erase +ynh_redis_remove_db() { + local db=$1 + redis-cli -n "$db" flushall +}