mirror of
https://github.com/YunoHost-Apps/peertube_ynh.git
synced 2024-09-03 19:56:29 +02:00
Merge pull request #304 from YunoHost-Apps/ovh_fix_testing
Ovh fix upgrade
This commit is contained in:
commit
c4c31e4ce6
19 changed files with 515 additions and 210 deletions
143
README.md
143
README.md
|
@ -1,76 +1,81 @@
|
||||||
# ovh_fix branch for peertube_ynh
|
<!--
|
||||||
|
N.B.: This README was automatically generated by https://github.com/YunoHost/apps/tree/master/tools/README-generator
|
||||||
|
It shall NOT be edited by hand.
|
||||||
|
-->
|
||||||
|
|
||||||
If installing on an ovh virtual machine or having `gyp ERR! configure error` please follow the steps below
|
# PeerTube for YunoHost
|
||||||
|
|
||||||
## Steps for installing
|
[![Integration level](https://dash.yunohost.org/integration/peertube.svg)](https://dash.yunohost.org/appci/app/peertube) ![](https://ci-apps.yunohost.org/ci/badges/peertube.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/peertube.maintain.svg)
|
||||||
|
[![Install PeerTube with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=peertube)
|
||||||
|
|
||||||
1. Install nodejs
|
*[Lire ce readme en français.](./README_fr.md)*
|
||||||
|
|
||||||
|
> *This package allows you to install PeerTube quickly and simply on a YunoHost server.
|
||||||
|
If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.*
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser, using <a href="https://github.com/feross/webtorrent">WebTorrent</a>.
|
||||||
|
|
||||||
|
|
||||||
|
**Shipped version:** 4.0.0~ynh2
|
||||||
|
|
||||||
|
**Demo:** http://peertube.cpy.re
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
![](./doc/screenshots/screenshot1.png)
|
||||||
|
|
||||||
|
## Disclaimers / important information
|
||||||
|
|
||||||
|
### Why PeerTube?
|
||||||
|
|
||||||
|
We can't build a FOSS video streaming alternatives to YouTube, Dailymotion, Vimeo... with a centralized software. One organization alone cannot have enough money to pay bandwidth and video storage of its server.
|
||||||
|
|
||||||
|
So we need to have a decentralized network of servers seeding videos (as [Hubzilla YunoHost](https://github.com/YunoHost-Apps/hubzilla_ynh), [Friendica YunoHost](https://github.com/YunoHost-Apps/friendica_ynh),[Mastodon YunoHost](https://github.com/YunoHost-Apps/mastodon_ynh)), [Diaspora](https://github.com/diaspora/diaspora) ([Diaspora YunoHost](https://github.com/YunoHost-Apps/diaspora_ynh)),[Funkwhale](https://funkwhale.audio) ([Funkwhale YunoHost](https://github.com/YunoHost-Apps/funkwhale_ynh)).
|
||||||
|
But it's not enough because one video could become famous and overload the server.
|
||||||
|
It's the reason why we need to use a P2P protocol to limit the server load.
|
||||||
|
Thanks to [WebTorrent](https://github.com/feross/webtorrent), we can make P2P (thus BitTorrent) inside the web browser, as of today.
|
||||||
|
|
||||||
|
### Why is that cool?
|
||||||
|
Servers are run independently by different people and organizations. They can apply wildly different moderation policies, so you can find or make one that fits your taste perfectly.
|
||||||
|
|
||||||
|
By watching a video, you help the hosting provider to broadcast it by becoming a broadcaster of the video yourself. Each instance doesn't need much money to broadcast the videos of its users.
|
||||||
|
|
||||||
|
* Any known limitations, constrains or stuff not working, such as (but not limited to):
|
||||||
|
* Require **dedicated domain** like **peertube.domain.tld**.
|
||||||
|
* Admin username is: **root**.
|
||||||
|
* **Admin password and LDAP configuration** will be sent to the email address given at the time of the installation.
|
||||||
|
* URL can not be changed once selected. Choose the domain wisely.
|
||||||
|
* You need more then **1 GB** 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
|
||||||
|
|
||||||
|
* This app is **multi-instance** (you can have more then one PeerTube instance running on a YunoHost server)
|
||||||
|
* **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)**
|
||||||
|
* LDAP auth is supported, LDAP configuration will be sent to the email address given at the time of the installation.
|
||||||
|
* HTTP auth is not supported
|
||||||
|
|
||||||
|
## Documentation and resources
|
||||||
|
|
||||||
|
* Official app website: https://joinpeertube.org/fr/
|
||||||
|
* Official admin documentation: https://docs.joinpeertube.org/
|
||||||
|
* Upstream app code repository: https://github.com/Chocobozzz/PeerTube/
|
||||||
|
* YunoHost documentation for this app: https://yunohost.org/app_peertube
|
||||||
|
* Report a bug: https://github.com/YunoHost-Apps/peertube_ynh/issues
|
||||||
|
|
||||||
|
## Developer info
|
||||||
|
|
||||||
|
Please send 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.
|
||||||
```
|
```
|
||||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
sudo yunohost app install https://github.com/YunoHost-Apps/peertube_ynh/tree/testing --debug
|
||||||
$ sudo apt-get install -y nodejs
|
or
|
||||||
|
sudo yunohost app upgrade peertube -u https://github.com/YunoHost-Apps/peertube_ynh/tree/testing --debug
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Install the peertube with **OVH fix** branch.
|
**More info regarding app packaging:** https://yunohost.org/packaging_apps
|
||||||
|
|
||||||
```
|
|
||||||
$ yunohost app install https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix --debug
|
|
||||||
```
|
|
||||||
|
|
||||||
3. After installation is complete run **yarn install**.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ cd /var/www/peertube && yarn install --production --pure-lockfile
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Give proper **permissions** to peertube
|
|
||||||
|
|
||||||
```
|
|
||||||
$ chown -R peertube:peertube /var/www/peertube
|
|
||||||
```
|
|
||||||
|
|
||||||
5. **Restart peertube** and check if there is any error message.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ service peertube restart
|
|
||||||
$ journalctl -feu peertube
|
|
||||||
```
|
|
||||||
|
|
||||||
6. If there is no **error in red** in the last lines of log. Press **ctrl+c** to stop the logs.
|
|
||||||
|
|
||||||
7. Go to your **domain** to check if peertube is running and everthing is ok.
|
|
||||||
|
|
||||||
8. Change your **root password** by this command:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ cd /var/www/peertube && NODE_CONFIG_DIR="/var/www/peertube/config/" NODE_ENV=production npm run reset-password -- -u root
|
|
||||||
```
|
|
||||||
|
|
||||||
Username: **root**
|
|
||||||
password: **created in above step**
|
|
||||||
|
|
||||||
## Steps for upgrading
|
|
||||||
|
|
||||||
1. Upgrade peertube with **OVH fix** branch.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ yunohost app upgrade peertube -u https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix --debug
|
|
||||||
```
|
|
||||||
|
|
||||||
2. After upgrade is complete run **yarn install**.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ cd /var/www/peertube && sudo yarn install --production --pure-lockfile
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Give proper **permissions** to peertube
|
|
||||||
|
|
||||||
```
|
|
||||||
$ chown -R peertube:peertube /var/www/peertube
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Restart peertube** and check if there is any error message.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ service peertube restart
|
|
||||||
```
|
|
87
README_fr.md
Normal file
87
README_fr.md
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# PeerTube pour YunoHost
|
||||||
|
|
||||||
|
[![Niveau d'intégration](https://dash.yunohost.org/integration/peertube.svg)](https://dash.yunohost.org/appci/app/peertube) ![](https://ci-apps.yunohost.org/ci/badges/peertube.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/peertube.maintain.svg)
|
||||||
|
[![Installer PeerTube avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=peertube)
|
||||||
|
|
||||||
|
*[Read this readme in english.](./README.md)*
|
||||||
|
*[Lire ce readme en français.](./README_fr.md)*
|
||||||
|
|
||||||
|
> *Ce package vous permet d'installer PeerTube rapidement et simplement sur un serveur YunoHost.
|
||||||
|
Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.*
|
||||||
|
|
||||||
|
## Vue d'ensemble
|
||||||
|
|
||||||
|
Plateforme de streaming vidéo fédérée (ActivityPub) utilisant P2P (BitTorrent) directement dans le navigateur Web, en utilisant <a href="https://github.com/feross/webtorrent"> WebTorrent </a>
|
||||||
|
|
||||||
|
|
||||||
|
**Version incluse :** 4.0.0~ynh2
|
||||||
|
|
||||||
|
**Démo :** http://peertube.cpy.re
|
||||||
|
|
||||||
|
## Captures d'écran
|
||||||
|
|
||||||
|
![](./doc/screenshots/screenshot1.png)
|
||||||
|
|
||||||
|
## Avertissements / informations importantes
|
||||||
|
|
||||||
|
## Vue d'ensemble
|
||||||
|
|
||||||
|
### Qu'est-ce que PeerTube ?
|
||||||
|
PeerTube est une plateforme de streaming vidéo fédérée (ActivityPub) utilisant P2P (BitTorrent) directement dans le navigateur Web, en utilisant <a href="https://github.com/feross/webtorrent"> WebTorrent </a>.
|
||||||
|
|
||||||
|
### Pourquoi PeerTube?
|
||||||
|
|
||||||
|
Nous ne pouvons pas créer d'alternatives de streaming vidéo FOSS à YouTube, Dailymotion, Vimeo... avec un logiciel centralisé. Une organisation seule ne peut pas avoir assez d'argent pour payer la bande passante et le stockage vidéo de son serveur.
|
||||||
|
Nous avons donc besoin d'un réseau décentralisé de serveurs « semant » des vidéos (comme [Hubzilla YunoHost](https://github.com/YunoHost-Apps/hubzilla_ynh), [Friendica YunoHost](https://github.com/YunoHost-Apps/friendica_ynh), [Mastodon YunoHost](https://github.com/YunoHost-Apps/mastodon_ynh)), [Diaspora](https://github.com/diaspora/diaspora) ([Diaspora YunoHost](https://github.com/YunoHost-Apps/diaspora_ynh)),[Funkwhale](https://funkwhale.audio) ([Funkwhale YunoHost](https://github.com/YunoHost-Apps/funkwhale_ynh)).
|
||||||
|
Mais ce n'est pas suffisant car une vidéo pourrait devenir célèbre et surcharger le serveur. C'est la raison pour laquelle nous devons utiliser un protocole P2P pour limiter la charge du serveur. Grâce à [WebTorrent](https://github.com/feross/webtorrent), nous pouvons faire du P2P (donc BitTorrent) dans le navigateur Web, dès aujourd'hui.
|
||||||
|
|
||||||
|
### Pourquoi est-ce cool ?
|
||||||
|
|
||||||
|
Les serveurs sont gérés indépendamment par différentes personnes et organisations. Ils peuvent appliquer des politiques de modération extrêmement différentes, afin que vous puissiez en trouver ou en créer une qui correspond parfaitement à vos goûts.
|
||||||
|
|
||||||
|
En regardant une vidéo, vous aidez l'hébergeur à la diffuser en devenant vous-même un diffuseur de la vidéo. Chaque instance n'a pas besoin de beaucoup d'argent pour diffuser les vidéos de ses utilisateurs.
|
||||||
|
|
||||||
|
## Points importants à lire avant l'installation
|
||||||
|
|
||||||
|
1. Nécessite un **domaine dédié** comme **peertube.domain.tld**.
|
||||||
|
1. Le nom d'utilisateur de l'administrateur est: **root**.
|
||||||
|
1. **Le mot de passe administrateur et la configuration LDAP** seront envoyés à l'adresse email indiquée au moment de l'installation.
|
||||||
|
1. L'URL ne peut pas être modifiée une fois sélectionnée. Choisissez judicieusement le domaine.
|
||||||
|
1. Vous avez besoin de plus de **1 Go** de RAM. Si vous ne l'avez pas, veuillez créer une **mémoire swap**.
|
||||||
|
|
||||||
|
|
||||||
|
$ dd if=/dev/zero of=/swapfile bs=1024 count=1048576
|
||||||
|
$ mkswap /swapfile
|
||||||
|
$ swapon /swapfile
|
||||||
|
$ echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
|
||||||
|
|
||||||
|
1. Cette application est **multi-instance** (vous pouvez avoir plus d'une instance PeerTube en cours d'exécution sur un serveur YunoHost)
|
||||||
|
1. **Si vous êtes hébergé sur une machine virtuelle OVH ou rencontrez `gyp ERR! configure error`, veuillez passer à [ovh_fix](https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix)**
|
||||||
|
|
||||||
|
## Caractéristiques spécifiques YunoHost
|
||||||
|
|
||||||
|
#### Support multi-utilisateur
|
||||||
|
|
||||||
|
* L'authentification LDAP est prise en charge, les instructions de configuration sont envoyées à l'adresse email indiquée au moment de l'installation
|
||||||
|
* L'authentification HTTP n'est pas prise en charge
|
||||||
|
|
||||||
|
## Documentations et ressources
|
||||||
|
|
||||||
|
* Site officiel de l'app : https://joinpeertube.org/fr/
|
||||||
|
* Documentation officielle de l'admin : https://docs.joinpeertube.org/
|
||||||
|
* Dépôt de code officiel de l'app : https://github.com/Chocobozzz/PeerTube/
|
||||||
|
* Documentation YunoHost pour cette app : https://yunohost.org/app_peertube
|
||||||
|
* Signaler un bug : https://github.com/YunoHost-Apps/peertube_ynh/issues
|
||||||
|
|
||||||
|
## Informations pour les développeurs
|
||||||
|
|
||||||
|
Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/peertube_ynh/tree/testing).
|
||||||
|
|
||||||
|
Pour essayer la branche testing, procédez comme suit.
|
||||||
|
```
|
||||||
|
sudo yunohost app install https://github.com/YunoHost-Apps/peertube_ynh/tree/testing --debug
|
||||||
|
ou
|
||||||
|
sudo yunohost app upgrade peertube -u https://github.com/YunoHost-Apps/peertube_ynh/tree/testing --debug
|
||||||
|
```
|
||||||
|
|
||||||
|
**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps
|
|
@ -22,6 +22,8 @@
|
||||||
upgrade=1 from_commit=ed59a268e93910f8b35b0f87399f91b8cad9ede0
|
upgrade=1 from_commit=ed59a268e93910f8b35b0f87399f91b8cad9ede0
|
||||||
# 3.4.0~ynh1
|
# 3.4.0~ynh1
|
||||||
upgrade=1 from_commit=83a06ca4c96ccd941b49647b3698db2c6b771b79
|
upgrade=1 from_commit=83a06ca4c96ccd941b49647b3698db2c6b771b79
|
||||||
|
# 4.0.0~ynh1
|
||||||
|
upgrade=1 from_commit=7c2bb0bb6a91b6b957b734f684aa3d64da892f4c
|
||||||
backup_restore=1
|
backup_restore=1
|
||||||
multi_instance=0
|
multi_instance=0
|
||||||
port_already_use=0
|
port_already_use=0
|
||||||
|
@ -40,3 +42,5 @@ Notification=yes
|
||||||
name=3.3.0~ynh3
|
name=3.3.0~ynh3
|
||||||
; commit=83a06ca4c96ccd941b49647b3698db2c6b771b79
|
; commit=83a06ca4c96ccd941b49647b3698db2c6b771b79
|
||||||
name=3.4.0~ynh1
|
name=3.4.0~ynh1
|
||||||
|
; commit=7c2bb0bb6a91b6b957b734f684aa3d64da892f4c
|
||||||
|
name=4.0.0~ynh1
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
SOURCE_URL=https://github.com/Chocobozzz/PeerTube/releases/download/v3.4.1/peertube-v3.4.1.tar.xz
|
SOURCE_URL=https://github.com/Chocobozzz/PeerTube/releases/download/v4.0.0/peertube-v4.0.0.tar.xz
|
||||||
SOURCE_SUM=dd7357529826beb071a86e6f76bc2eb99b0d6481a71566db1cb2f6cf8a4a6305
|
SOURCE_SUM=afbc6ef1f950cb80fc1b61ef83e27ab25d2c7ec8f605e17bc59f8635848862da
|
||||||
SOURCE_SUM_PRG=sha256sum
|
SOURCE_SUM_PRG=sha256sum
|
||||||
SOURCE_FORMAT=tar.xz
|
SOURCE_FORMAT=tar.xz
|
||||||
SOURCE_IN_SUBDIR=true
|
SOURCE_IN_SUBDIR=true
|
||||||
SOURCE_FILENAME=
|
|
||||||
SOURCE_EXTRACT=true
|
SOURCE_EXTRACT=true
|
||||||
|
|
|
@ -26,9 +26,6 @@ location = /api/v1/videos/upload-resumable {
|
||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
if ($scheme = http) {
|
|
||||||
rewrite ^ https://$server_name$request_uri? permanent;
|
|
||||||
}
|
|
||||||
|
|
||||||
try_files /dev/null @api;
|
try_files /dev/null @api;
|
||||||
|
|
||||||
|
@ -122,7 +119,7 @@ tcp_nodelay on; # don't buffer data sent, good for small data burs
|
||||||
|
|
||||||
# Bypass PeerTube for performance reasons. Optional.
|
# Bypass PeerTube for performance reasons. Optional.
|
||||||
# Should be consistent with client-overrides assets list in /server/controllers/client.ts
|
# Should be consistent with client-overrides assets list in /server/controllers/client.ts
|
||||||
location ~ ^/client/(assets/images/(icons/icon-36x36\.png|icons/icon-48x48\.png|icons/icon-72x72\.png|icons/icon-96x96\.png|icons/icon-144x144\.png|icons/icon-192x192\.png|icons/icon-512x512\.png|logo\.svg|favicon\.png))$ {
|
location ~ ^/client/(assets/images/(icons/icon-36x36\.png|icons/icon-48x48\.png|icons/icon-72x72\.png|icons/icon-96x96\.png|icons/icon-144x144\.png|icons/icon-192x192\.png|icons/icon-512x512\.png|logo\.svg|favicon\.png|default-playlist\.jpg|default-avatar-account\.png|default-avatar-video-channel\.png))$ {
|
||||||
more_set_headers "Cache-Control : public, max-age=31536000, immutable"; # Cache 1 year
|
more_set_headers "Cache-Control : public, max-age=31536000, immutable"; # Cache 1 year
|
||||||
|
|
||||||
try_files __DATADIR__/client-overrides/$1 __FINALPATH__/client/dist/$1 @api;
|
try_files __DATADIR__/client-overrides/$1 __FINALPATH__/client/dist/$1 @api;
|
||||||
|
@ -201,12 +198,6 @@ location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {
|
||||||
sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process. should be > 800k.
|
sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process. should be > 800k.
|
||||||
aio threads;
|
aio threads;
|
||||||
|
|
||||||
# Use this in tandem with fuse-mounting i.e. https://docs.joinpeertube.org/admin-remote-storage
|
|
||||||
# to serve files directly from a public bucket without proxying.
|
|
||||||
# Assumes you have buckets named after the storage subdirectories, i.e. 'videos', 'redundancy', etc.
|
|
||||||
#set $cdn <your S3-compatiable bucket public url mounted via fuse>;
|
|
||||||
#rewrite ^/static/webseed/(.*)$ $cdn/videos/$1 redirect;
|
|
||||||
#rewrite ^/static/(.*)$ $cdn/$1 redirect;
|
|
||||||
rewrite ^/static/webseed/(.*)$ /videos/$1 break;
|
rewrite ^/static/webseed/(.*)$ /videos/$1 break;
|
||||||
rewrite ^/static/(.*)$ /$1 break;
|
rewrite ^/static/(.*)$ /$1 break;
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ rates_limit:
|
||||||
trust_proxy:
|
trust_proxy:
|
||||||
- 'loopback'
|
- 'loopback'
|
||||||
|
|
||||||
# Your database name will be database.name OR "peertube"+database.suffix
|
# Your database name will be database.name OR 'peertube'+database.suffix
|
||||||
database:
|
database:
|
||||||
hostname: 'localhost'
|
hostname: 'localhost'
|
||||||
port: 5432
|
port: 5432
|
||||||
|
@ -50,7 +50,7 @@ redis:
|
||||||
hostname: 'localhost'
|
hostname: 'localhost'
|
||||||
port: 6379
|
port: 6379
|
||||||
auth: null
|
auth: null
|
||||||
db: 0
|
db: __REDIS_DB__
|
||||||
|
|
||||||
# SMTP server to send emails
|
# SMTP server to send emails
|
||||||
smtp:
|
smtp:
|
||||||
|
@ -69,13 +69,21 @@ smtp:
|
||||||
|
|
||||||
email:
|
email:
|
||||||
body:
|
body:
|
||||||
signature: "PeerTube"
|
signature: 'PeerTube'
|
||||||
subject:
|
subject:
|
||||||
prefix: "[PeerTube]"
|
prefix: '[PeerTube]'
|
||||||
|
|
||||||
|
# PeerTube client/interface configuration
|
||||||
|
client:
|
||||||
|
videos:
|
||||||
|
miniature:
|
||||||
|
# By default PeerTube client displays author username
|
||||||
|
prefer_author_display_name: false
|
||||||
|
|
||||||
# From the project root directory
|
# From the project root directory
|
||||||
storage:
|
storage:
|
||||||
tmp: '__DATADIR__/tmp/' # Use to download data (imports etc), store uploaded files before processing...
|
tmp: '__DATADIR__/tmp/' # Use to download data (imports etc), store uploaded files before processing...
|
||||||
|
bin: '__DATADIR__/bin/'
|
||||||
avatars: '__DATADIR__/avatars/'
|
avatars: '__DATADIR__/avatars/'
|
||||||
videos: '__DATADIR__/videos/'
|
videos: '__DATADIR__/videos/'
|
||||||
streaming_playlists: '__DATADIR__/streaming-playlists/'
|
streaming_playlists: '__DATADIR__/streaming-playlists/'
|
||||||
|
@ -87,19 +95,58 @@ storage:
|
||||||
captions: '__DATADIR__/captions/'
|
captions: '__DATADIR__/captions/'
|
||||||
cache: '__DATADIR__/cache/'
|
cache: '__DATADIR__/cache/'
|
||||||
plugins: '__DATADIR__/plugins/'
|
plugins: '__DATADIR__/plugins/'
|
||||||
# Overridable client files : logo.svg, favicon.png and icons/*.png (PWA) in client/dist/assets/images
|
# Overridable client files in client/dist/assets/images:
|
||||||
|
# - logo.svg
|
||||||
|
# - favicon.png
|
||||||
|
# - default-playlist.jpg
|
||||||
|
# - default-avatar-account.png
|
||||||
|
# - default-avatar-video-channel.png
|
||||||
|
# - and icons/*.png (PWA)
|
||||||
# Could contain for example assets/images/favicon.png
|
# Could contain for example assets/images/favicon.png
|
||||||
# If the file exists, peertube will serve it
|
# If the file exists, peertube will serve it
|
||||||
# If not, peertube will fallback to the default fil
|
# If not, peertube will fallback to the default file
|
||||||
client_overrides: '__DATADIR__/client-overrides/'
|
client_overrides: '__DATADIR__/client-overrides/'
|
||||||
|
|
||||||
|
object_storage:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# Without protocol, will default to HTTPS
|
||||||
|
endpoint: '' # 's3.amazonaws.com' or 's3.fr-par.scw.cloud' for example
|
||||||
|
|
||||||
|
region: 'us-east-1'
|
||||||
|
|
||||||
|
credentials:
|
||||||
|
# You can also use AWS_ACCESS_KEY_ID env variable
|
||||||
|
access_key_id: ''
|
||||||
|
# You can also use AWS_SECRET_ACCESS_KEY env variable
|
||||||
|
secret_access_key: ''
|
||||||
|
|
||||||
|
# Maximum amount to upload in one request to object storage
|
||||||
|
max_upload_part: 2GB
|
||||||
|
|
||||||
|
streaming_playlists:
|
||||||
|
bucket_name: 'streaming-playlists'
|
||||||
|
|
||||||
|
# Allows setting all buckets to the same value but with a different prefix
|
||||||
|
prefix: '' # Example: 'streaming-playlists:'
|
||||||
|
|
||||||
|
# Base url for object URL generation, scheme and host will be replaced by this URL
|
||||||
|
# Useful when you want to use a CDN/external proxy
|
||||||
|
base_url: '' # Example: 'https://mirror.example.com'
|
||||||
|
|
||||||
|
# Same settings but for webtorrent videos
|
||||||
|
videos:
|
||||||
|
bucket_name: 'videos'
|
||||||
|
prefix: ''
|
||||||
|
base_url: ''
|
||||||
|
|
||||||
log:
|
log:
|
||||||
level: 'info' # debug/info/warning/error
|
level: 'info' # 'debug' | 'info' | 'warn' | 'error'
|
||||||
rotation:
|
rotation:
|
||||||
enabled : true # Enabled by default, if disabled make sure that 'storage.logs' is pointing to a folder handled by logrotate
|
enabled : true # Enabled by default, if disabled make sure that 'storage.logs' is pointing to a folder handled by logrotate
|
||||||
maxFileSize: 12MB
|
max_file_size: 12MB
|
||||||
maxFiles: 20
|
max_files: 20
|
||||||
anonymizeIP: false
|
anonymize_ip: false
|
||||||
log_ping_requests: true
|
log_ping_requests: true
|
||||||
prettify_sql: false
|
prettify_sql: false
|
||||||
|
|
||||||
|
@ -151,11 +198,16 @@ csp:
|
||||||
report_only: true # CSP directives are still being tested, so disable the report only mode at your own risk!
|
report_only: true # CSP directives are still being tested, so disable the report only mode at your own risk!
|
||||||
report_uri:
|
report_uri:
|
||||||
|
|
||||||
|
security:
|
||||||
|
# Set the X-Frame-Options header to help to mitigate clickjacking attacks
|
||||||
|
frameguard:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
tracker:
|
tracker:
|
||||||
# If you disable the tracker, you disable the P2P aspect of PeerTube
|
# If you disable the tracker, you disable the P2P aspect of PeerTube
|
||||||
enabled: true
|
enabled: true
|
||||||
# Only handle requests on your videos.
|
# Only handle requests on your videos
|
||||||
# If you set this to false it means you have a public tracker.
|
# If you set this to false it means you have a public tracker
|
||||||
# Then, it is possible that clients overload your instance with external torrents
|
# Then, it is possible that clients overload your instance with external torrents
|
||||||
private: true
|
private: true
|
||||||
# Reject peers that do a lot of announces (could improve privacy of TCP/UDP peers)
|
# Reject peers that do a lot of announces (could improve privacy of TCP/UDP peers)
|
||||||
|
@ -178,6 +230,11 @@ views:
|
||||||
remote:
|
remote:
|
||||||
max_age: '30 days'
|
max_age: '30 days'
|
||||||
|
|
||||||
|
# PeerTube buffers local video views before updating and federating the video
|
||||||
|
local_buffer_update_interval: '30 minutes'
|
||||||
|
|
||||||
|
ip_view_expiration: '1 hour'
|
||||||
|
|
||||||
plugins:
|
plugins:
|
||||||
# The website PeerTube will ask for available PeerTube plugins and themes
|
# The website PeerTube will ask for available PeerTube plugins and themes
|
||||||
# This is an unmoderated plugin index, so only install plugins/themes you trust
|
# This is an unmoderated plugin index, so only install plugins/themes you trust
|
||||||
|
@ -192,20 +249,30 @@ federation:
|
||||||
|
|
||||||
# Add a weekly job that cleans up remote AP interactions on local videos (shares, rates and comments)
|
# Add a weekly job that cleans up remote AP interactions on local videos (shares, rates and comments)
|
||||||
# It removes objects that do not exist anymore, and potentially fix their URLs
|
# It removes objects that do not exist anymore, and potentially fix their URLs
|
||||||
# This setting is opt-in because due to an old bug in PeerTube, remote rates sent by instance before PeerTube 3.0 will be deleted
|
cleanup_remote_interactions: true
|
||||||
# We still suggest you to enable this setting even if your users will loose most of their video's likes/dislikes
|
|
||||||
cleanup_remote_interactions: false
|
|
||||||
|
|
||||||
|
peertube:
|
||||||
|
check_latest_version:
|
||||||
|
# Check and notify admins of new PeerTube versions
|
||||||
|
enabled: false
|
||||||
|
# You can use a custom URL if your want, that respect the format behind https://joinpeertube.org/api/v1/versions.json
|
||||||
|
url: 'https://joinpeertube.org/api/v1/versions.json'
|
||||||
|
|
||||||
|
webadmin:
|
||||||
|
configuration:
|
||||||
|
edition:
|
||||||
|
# Set this to false if you don't want to allow config edition in the web interface by instance admins
|
||||||
|
allowed: true
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# From this point, all the following keys can be overridden by the web interface
|
# From this point, all the following keys can be overridden by the web interface
|
||||||
# (local-production.json file). If you need to change some values, prefer to
|
# (local-production.json file). If you need to change some values, prefer to
|
||||||
# use the web interface because the configuration will be automatically
|
# use the web interface because the configuration will be automatically
|
||||||
# reloaded without any need to restart PeerTube.
|
# reloaded without any need to restart PeerTube
|
||||||
#
|
#
|
||||||
# /!\ If you already have a local-production.json file, the modification of the
|
# /!\ If you already have a local-production.json file, the modification of the
|
||||||
# following keys will have no effect /!\.
|
# following keys will have no effect /!\
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
@ -228,6 +295,7 @@ contact_form:
|
||||||
signup:
|
signup:
|
||||||
enabled: false
|
enabled: false
|
||||||
limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited
|
limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited
|
||||||
|
minimum_age: 16 # Used to configure the signup form
|
||||||
requires_email_verification: false
|
requires_email_verification: false
|
||||||
filters:
|
filters:
|
||||||
cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist
|
cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist
|
||||||
|
@ -235,13 +303,17 @@ signup:
|
||||||
blacklist: []
|
blacklist: []
|
||||||
|
|
||||||
user:
|
user:
|
||||||
# Default value of maximum video BYTES the user can upload (does not take into account transcoded files).
|
# Default value of maximum video bytes the user can upload (does not take into account transcoded files)
|
||||||
|
# Byte format is supported ("1GB" etc)
|
||||||
# -1 == unlimited
|
# -1 == unlimited
|
||||||
video_quota: -1
|
video_quota: -1
|
||||||
video_quota_daily: -1
|
video_quota_daily: -1
|
||||||
|
|
||||||
# If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag
|
video_channels:
|
||||||
# In addition, if some resolutions are enabled the mp4 video file will be transcoded to these new resolutions.
|
max_per_user: 20 # Allows each user to create up to 20 video channels.
|
||||||
|
|
||||||
|
# If enabled, the video will be transcoded to mp4 (x264) with `faststart` flag
|
||||||
|
# In addition, if some resolutions are enabled the mp4 video file will be transcoded to these new resolutions
|
||||||
# Please, do not disable transcoding since many uploaded videos will not work
|
# Please, do not disable transcoding since many uploaded videos will not work
|
||||||
transcoding:
|
transcoding:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
@ -264,6 +336,7 @@ transcoding:
|
||||||
|
|
||||||
resolutions: # Only created if the original video has a higher resolution, uses more storage!
|
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)
|
0p: false # audio-only (creates mp4 without video stream, always created when enabled)
|
||||||
|
144p: false
|
||||||
240p: false
|
240p: false
|
||||||
360p: false
|
360p: false
|
||||||
480p: false
|
480p: false
|
||||||
|
@ -310,8 +383,17 @@ live:
|
||||||
|
|
||||||
# Your firewall should accept traffic from this port in TCP if you enable live
|
# Your firewall should accept traffic from this port in TCP if you enable live
|
||||||
rtmp:
|
rtmp:
|
||||||
|
enabled: true
|
||||||
port: 1935
|
port: 1935
|
||||||
|
|
||||||
|
rtmps:
|
||||||
|
enabled: false
|
||||||
|
port: 1936
|
||||||
|
# Absolute path
|
||||||
|
key_file: ''
|
||||||
|
# Absolute path
|
||||||
|
cert_file: ''
|
||||||
|
|
||||||
# Allow to transcode the live streaming in multiple live resolutions
|
# Allow to transcode the live streaming in multiple live resolutions
|
||||||
transcoding:
|
transcoding:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
@ -323,6 +405,7 @@ live:
|
||||||
profile: 'default'
|
profile: 'default'
|
||||||
|
|
||||||
resolutions:
|
resolutions:
|
||||||
|
144p: false
|
||||||
240p: false
|
240p: false
|
||||||
360p: false
|
360p: false
|
||||||
480p: false
|
480p: false
|
||||||
|
@ -340,13 +423,23 @@ import:
|
||||||
http: # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
|
http: # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
|
youtube_dl_release:
|
||||||
|
# Direct download URL to youtube-dl binary
|
||||||
|
# Github releases API is also supported
|
||||||
|
# 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'
|
||||||
|
|
||||||
|
# youtube-dl binary name
|
||||||
|
# yt-dlp is also supported
|
||||||
|
name: 'yt-dlp'
|
||||||
|
# Path to the python binary to execute for youtube-dl or yt-dlp
|
||||||
|
python_path: '/usr/bin/python3'
|
||||||
|
|
||||||
# IPv6 is very strongly rate-limited on most sites supported by youtube-dl
|
# IPv6 is very strongly rate-limited on most sites supported by youtube-dl
|
||||||
force_ipv4: false
|
force_ipv4: false
|
||||||
|
|
||||||
# You can use an HTTP/HTTPS/SOCKS proxy with youtube-dl
|
|
||||||
proxy:
|
|
||||||
enabled: false
|
|
||||||
url: ""
|
|
||||||
torrent: # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
|
torrent: # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
|
@ -380,7 +473,7 @@ instance:
|
||||||
business_model: '' # Supports Markdown
|
business_model: '' # Supports Markdown
|
||||||
|
|
||||||
# If you want to explain on what type of hardware your PeerTube instance runs
|
# If you want to explain on what type of hardware your PeerTube instance runs
|
||||||
# Example: "2 vCore, 2GB RAM..."
|
# Example: '2 vCore, 2GB RAM...'
|
||||||
hardware_information: '' # Supports Markdown
|
hardware_information: '' # Supports Markdown
|
||||||
|
|
||||||
# What are the main languages of your instance? To interact with your users for example
|
# What are the main languages of your instance? To interact with your users for example
|
||||||
|
@ -420,20 +513,20 @@ instance:
|
||||||
# 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
|
||||||
is_nsfw: false
|
is_nsfw: false
|
||||||
# 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
|
||||||
# Robot.txt rules. To disallow robots to crawl your instance and disallow indexation of your site, add '/' to "Disallow:'
|
# Robot.txt rules. To disallow robots to crawl your instance and disallow indexation of your site, add `/` to `Disallow:`
|
||||||
robots: |
|
robots: |
|
||||||
User-agent: *
|
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.
|
# Security.txt rules. To discourage researchers from testing your instance and disable security.txt integration, set this to an empty string
|
||||||
securitytxt:
|
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:"
|
'# 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:
|
||||||
# Cards configuration to format video in Twitter
|
# Cards configuration to format video in Twitter
|
||||||
|
@ -441,7 +534,7 @@ services:
|
||||||
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
|
||||||
# Change it to "true", and then 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:
|
||||||
|
|
|
@ -16,24 +16,36 @@ StandardError=syslog
|
||||||
SyslogIdentifier=__APP__
|
SyslogIdentifier=__APP__
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
; Some security directives.
|
# Sandboxing options to harden security
|
||||||
; Use private /tmp and /var/tmp folders inside a new file system namespace,
|
# Depending on specificities of your service/app, you may need to tweak these
|
||||||
; which are discarded after the process stops.
|
# .. but this should be a good baseline
|
||||||
PrivateTmp=true
|
# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
||||||
; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
|
NoNewPrivileges=yes
|
||||||
|
PrivateTmp=yes
|
||||||
|
#PrivateDevices=yes
|
||||||
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||||
|
RestrictNamespaces=yes
|
||||||
|
RestrictRealtime=yes
|
||||||
|
DevicePolicy=closed
|
||||||
|
DeviceAllow=/dev/dri/renderD128
|
||||||
ProtectSystem=full
|
ProtectSystem=full
|
||||||
; Sets up a new /dev mount for the process and only adds API pseudo devices
|
ProtectControlGroups=yes
|
||||||
; like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled
|
ProtectKernelModules=yes
|
||||||
; by default because it may not work on devices like the Raspberry Pi.
|
ProtectKernelTunables=yes
|
||||||
PrivateDevices=false
|
LockPersonality=yes
|
||||||
; Ensures that the service process and all its children can never gain new
|
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
|
||||||
; privileges through execve().
|
|
||||||
NoNewPrivileges=true
|
# Denying access to capabilities that should not be relevant for webapps
|
||||||
; This makes /home, /root, and /run/user inaccessible and empty for processes invoked
|
# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html
|
||||||
; by this unit. Make sure that you do not depend on data inside these folders.
|
CapabilityBoundingSet=~CAP_RAWIO CAP_MKNOD
|
||||||
ProtectHome=false
|
CapabilityBoundingSet=~CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE
|
||||||
; Drops the sys admin capability from the daemon.
|
CapabilityBoundingSet=~CAP_SYS_BOOT CAP_SYS_TIME CAP_SYS_MODULE CAP_SYS_PACCT
|
||||||
CapabilityBoundingSet=~CAP_SYS_ADMIN
|
CapabilityBoundingSet=~CAP_LEASE CAP_LINUX_IMMUTABLE CAP_IPC_LOCK
|
||||||
|
CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_WAKE_ALARM
|
||||||
|
CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG
|
||||||
|
CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE
|
||||||
|
CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
|
||||||
|
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|
1
doc/DESCRIPTION.md
Normal file
1
doc/DESCRIPTION.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser, using <a href="https://github.com/feross/webtorrent">WebTorrent</a>.
|
1
doc/DESCRIPTION_fr.md
Normal file
1
doc/DESCRIPTION_fr.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Plateforme de streaming vidéo fédérée (ActivityPub) utilisant P2P (BitTorrent) directement dans le navigateur Web, en utilisant <a href="https://github.com/feross/webtorrent"> WebTorrent </a>
|
|
@ -10,7 +10,7 @@ Thanks to [WebTorrent](https://github.com/feross/webtorrent), we can make P2P (t
|
||||||
### Why is that cool?
|
### Why is that cool?
|
||||||
Servers are run independently by different people and organizations. They can apply wildly different moderation policies, so you can find or make one that fits your taste perfectly.
|
Servers are run independently by different people and organizations. They can apply wildly different moderation policies, so you can find or make one that fits your taste perfectly.
|
||||||
|
|
||||||
By watching a video, you help the hosting provider to broadcast it by becoming a broadcaster of the video yourself. Each instance doesn’t 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 doesn't need much money to broadcast the videos of its users.
|
||||||
|
|
||||||
* Any known limitations, constrains or stuff not working, such as (but not limited to):
|
* Any known limitations, constrains or stuff not working, such as (but not limited to):
|
||||||
* Require **dedicated domain** like **peertube.domain.tld**.
|
* Require **dedicated domain** like **peertube.domain.tld**.
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
## Vue d'ensemble
|
## Vue d'ensemble
|
||||||
|
|
||||||
### Qu'est-ce que PeerTube ?
|
### Qu'est-ce que PeerTube ?
|
||||||
PeerTube est une plateforme de streaming vidéo fédérée (ActivityPub) utilisant P2P (BitTorrent) directement dans le navigateur Web, en utilisant <a href="https://github.com/feross/webtorrent"> WebTorrent </a>.
|
PeerTube est une plateforme de streaming vidéo fédérée (ActivityPub) utilisant P2P (BitTorrent) directement dans le navigateur Web, en utilisant <a href="https://github.com/feross/webtorrent"> WebTorrent </a>.
|
||||||
|
|
||||||
### Pourquoi PeerTube?
|
### Pourquoi PeerTube?
|
||||||
|
|
||||||
Nous ne pouvons pas créer d'alternatives de streaming vidéo FOSS à YouTube, Dailymotion, Vimeo... avec un logiciel centralisé. Une organisation seule ne peut pas avoir assez d'argent pour payer la bande passante et le stockage vidéo de son serveur.
|
Nous ne pouvons pas créer d'alternatives de streaming vidéo FOSS à YouTube, Dailymotion, Vimeo... avec un logiciel centralisé. Une organisation seule ne peut pas avoir assez d'argent pour payer la bande passante et le stockage vidéo de son serveur.
|
||||||
Nous avons donc besoin d'un réseau décentralisé de serveurs « semant » des vidéos (comme [Hubzilla YunoHost](https://github.com/YunoHost-Apps/hubzilla_ynh), [Friendica YunoHost](https://github.com/YunoHost-Apps/friendica_ynh), [Mastodon YunoHost](https://github.com/YunoHost-Apps/mastodon_ynh)), [Diaspora](https://github.com/diaspora/diaspora) ([Diaspora YunoHost](https://github.com/YunoHost-Apps/diaspora_ynh)),[Funkwhale](https://funkwhale.audio) ([Funkwhale YunoHost](https://github.com/YunoHost-Apps/funkwhale_ynh)).
|
Nous avons donc besoin d'un réseau décentralisé de serveurs « semant » des vidéos (comme [Hubzilla YunoHost](https://github.com/YunoHost-Apps/hubzilla_ynh), [Friendica YunoHost](https://github.com/YunoHost-Apps/friendica_ynh), [Mastodon YunoHost](https://github.com/YunoHost-Apps/mastodon_ynh)), [Diaspora](https://github.com/diaspora/diaspora) ([Diaspora YunoHost](https://github.com/YunoHost-Apps/diaspora_ynh)),[Funkwhale](https://funkwhale.audio) ([Funkwhale YunoHost](https://github.com/YunoHost-Apps/funkwhale_ynh)).
|
||||||
Mais ce n'est pas suffisant car une vidéo pourrait devenir célèbre et surcharger le serveur. C'est la raison pour laquelle nous devons utiliser un protocole P2P pour limiter la charge du serveur. Grâce à [WebTorrent](https://github.com/feross/webtorrent), nous pouvons faire du P2P (donc BitTorrent) dans le navigateur Web, dès aujourd'hui.
|
Mais ce n'est pas suffisant car une vidéo pourrait devenir célèbre et surcharger le serveur. C'est la raison pour laquelle nous devons utiliser un protocole P2P pour limiter la charge du serveur. Grâce à [WebTorrent](https://github.com/feross/webtorrent), nous pouvons faire du P2P (donc BitTorrent) dans le navigateur Web, dès aujourd'hui.
|
||||||
|
|
||||||
### Pourquoi est-ce cool ?
|
### Pourquoi est-ce cool ?
|
||||||
|
|
||||||
Les serveurs sont gérés indépendamment par différentes personnes et organisations. Ils peuvent appliquer des politiques de modération extrêmement différentes, afin que vous puissiez en trouver ou en créer une qui correspond parfaitement à vos goûts.
|
Les serveurs sont gérés indépendamment par différentes personnes et organisations. Ils peuvent appliquer des politiques de modération extrêmement différentes, afin que vous puissiez en trouver ou en créer une qui correspond parfaitement à vos goûts.
|
||||||
|
|
||||||
En regardant une vidéo, vous aidez l'hébergeur à la diffuser en devenant vous-même un diffuseur de la vidéo. Chaque instance n'a pas besoin de beaucoup d'argent pour diffuser les vidéos de ses utilisateurs.
|
En regardant une vidéo, vous aidez l'hébergeur à la diffuser en devenant vous-même un diffuseur de la vidéo. Chaque instance n'a pas besoin de beaucoup d'argent pour diffuser les vidéos de ses utilisateurs.
|
||||||
|
|
||||||
## Points importants à lire avant l'installation
|
## Points importants à lire avant l'installation
|
||||||
|
|
||||||
1. Nécessite un **domaine dédié** comme **peertube.domain.tld**.
|
1. Nécessite un **domaine dédié** comme **peertube.domain.tld**.
|
||||||
1. Le nom d'utilisateur de l'administrateur est: **root**.
|
1. Le nom d'utilisateur de l'administrateur est: **root**.
|
||||||
1. **Le mot de passe administrateur et la configuration LDAP** seront envoyés à l'adresse email indiquée au moment de l'installation.
|
1. **Le mot de passe administrateur et la configuration LDAP** seront envoyés à l'adresse email indiquée au moment de l'installation.
|
||||||
1. L'URL ne peut pas être modifiée une fois sélectionnée. Choisissez judicieusement le domaine.
|
1. L'URL ne peut pas être modifiée une fois sélectionnée. Choisissez judicieusement le domaine.
|
||||||
1. Vous avez besoin de plus de **1 Go** de RAM. Si vous ne l'avez pas, veuillez créer une **mémoire swap**.
|
1. Vous avez besoin de plus de **1 Go** de RAM. Si vous ne l'avez pas, veuillez créer une **mémoire swap**.
|
||||||
|
|
||||||
|
|
||||||
$ dd if=/dev/zero of=/swapfile bs=1024 count=1048576
|
$ dd if=/dev/zero of=/swapfile bs=1024 count=1048576
|
||||||
|
@ -29,12 +29,12 @@ En regardant une vid
|
||||||
$ swapon /swapfile
|
$ swapon /swapfile
|
||||||
$ echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
|
$ echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
|
||||||
|
|
||||||
1. Cette application est **multi-instance** (vous pouvez avoir plus d'une instance PeerTube en cours d'exécution sur un serveur YunoHost)
|
1. Cette application est **multi-instance** (vous pouvez avoir plus d'une instance PeerTube en cours d'exécution sur un serveur YunoHost)
|
||||||
1. **Si vous êtes hébergé sur une machine virtuelle OVH ou rencontrez `gyp ERR! configure error`, veuillez passer à [ovh_fix](https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix)**
|
1. **Si vous êtes hébergé sur une machine virtuelle OVH ou rencontrez `gyp ERR! configure error`, veuillez passer à [ovh_fix](https://github.com/YunoHost-Apps/peertube_ynh/tree/ovh_fix)**
|
||||||
|
|
||||||
## Caractéristiques spécifiques YunoHost
|
## Caractéristiques spécifiques YunoHost
|
||||||
|
|
||||||
#### Support multi-utilisateur
|
#### Support multi-utilisateur
|
||||||
|
|
||||||
* L'authentification LDAP est prise en charge, les instructions de configuration sont envoyées à l'adresse email indiquée au moment de l'installation
|
* L'authentification LDAP est prise en charge, les instructions de configuration sont envoyées à l'adresse email indiquée au moment de l'installation
|
||||||
* L'authentification HTTP n'est pas prise en charge
|
* L'authentification HTTP n'est pas prise en charge
|
||||||
|
|
|
@ -6,14 +6,13 @@
|
||||||
"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": "3.4.1~ynh1",
|
"version": "4.0.0~ynh2",
|
||||||
"url": "https://github.com/Chocobozzz/PeerTube",
|
"url": "https://github.com/Chocobozzz/PeerTube",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"website": "https://joinpeertube.org/fr/",
|
"website": "https://joinpeertube.org/fr/",
|
||||||
"demo": "http://peertube.cpy.re",
|
"demo": "http://peertube.cpy.re",
|
||||||
"admindoc": "https://docs.joinpeertube.org/",
|
"admindoc": "https://docs.joinpeertube.org/",
|
||||||
"userdoc": "https://yunohost.org/#/app_peertube",
|
|
||||||
"code": "https://github.com/Chocobozzz/PeerTube/"
|
"code": "https://github.com/Chocobozzz/PeerTube/"
|
||||||
},
|
},
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
|
@ -27,7 +26,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"yunohost": ">= 4.2.0"
|
"yunohost": ">= 4.3.0"
|
||||||
},
|
},
|
||||||
"multi_instance": false,
|
"multi_instance": false,
|
||||||
"services": [
|
"services": [
|
||||||
|
@ -37,13 +36,11 @@
|
||||||
"install" : [
|
"install" : [
|
||||||
{
|
{
|
||||||
"name": "domain",
|
"name": "domain",
|
||||||
"type": "domain",
|
"type": "domain"
|
||||||
"example": "example.com"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "admin",
|
"name": "admin",
|
||||||
"type": "user",
|
"type": "user"
|
||||||
"example": "johndoe"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "is_public",
|
"name": "is_public",
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# dependencies used by the app
|
# dependencies used by the app
|
||||||
pkg_dependencies="ffmpeg postgresql postgresql-contrib openssl g++ redis-server redis-tools mailutils apt-transport-https"
|
pkg_dependencies="ffmpeg postgresql postgresql-contrib openssl g++ mailutils apt-transport-https"
|
||||||
|
|
||||||
NODEJS_VERSION=14
|
NODEJS_VERSION=16
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# PERSONAL HELPERS
|
# PERSONAL HELPERS
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_redis
|
||||||
source ynh_send_readme_to_admin__2
|
source ynh_send_readme_to_admin__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
@ -69,7 +70,7 @@ ynh_app_setting_set --app=$app --key=port --value=$port
|
||||||
|
|
||||||
# PeerTube Live port
|
# PeerTube Live port
|
||||||
rtmp_port=1935
|
rtmp_port=1935
|
||||||
ynh_port_available --port=$rtmp_port || ynh_die "Port $rtmp_port is needs to be available for this app"
|
ynh_port_available --port=$rtmp_port || ynh_die --message="Port $rtmp_port is needs to be available for this app"
|
||||||
ynh_app_setting_set --app=$app --key=rtmp_port --value=$rtmp_port
|
ynh_app_setting_set --app=$app --key=rtmp_port --value=$rtmp_port
|
||||||
|
|
||||||
# Open the port
|
# Open the port
|
||||||
|
@ -85,14 +86,7 @@ ynh_script_progression --message="Installing dependencies..."
|
||||||
#ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
#ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
# Install ffmpeg from backports for Debian Jessie and from main for others
|
|
||||||
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
|
|
||||||
ynh_install_extra_app_dependencies --repo="deb http://httpredir.debian.org/debian jessie-backports main" --package="ffmpeg"
|
|
||||||
else
|
|
||||||
ynh_add_app_dependencies --package="ffmpeg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install Yarn
|
# Install Yarn
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
||||||
|
@ -111,9 +105,10 @@ ynh_system_user_create --username=$app --home_dir=$final_path
|
||||||
ynh_script_progression --message="Creating a PostgreSQL database..."
|
ynh_script_progression --message="Creating a PostgreSQL database..."
|
||||||
|
|
||||||
db_name="peertube_${app}"
|
db_name="peertube_${app}"
|
||||||
db_user=$app
|
db_user=$(ynh_sanitize_dbid --db_name=$app)
|
||||||
db_pwd=$(ynh_string_random --length=30)
|
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_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_app_setting_set --app=$app --key=db_pwd --value=$db_pwd
|
||||||
ynh_psql_test_if_first_run
|
ynh_psql_test_if_first_run
|
||||||
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
|
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
|
||||||
|
@ -121,6 +116,13 @@ ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
|
||||||
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name
|
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name
|
||||||
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
|
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# CONFIGURE REDIS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
redis_db=$(ynh_redis_get_free_db)
|
||||||
|
ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -128,6 +130,7 @@ ynh_script_progression --message="Setting up source files..."
|
||||||
|
|
||||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
|
[ -d "../sources/patches-$(ynh_app_upstream_version)" ] && cp -a "../sources/patches-$(ynh_app_upstream_version)" "../sources/patches"
|
||||||
ynh_setup_source --dest_dir="$final_path"
|
ynh_setup_source --dest_dir="$final_path"
|
||||||
|
|
||||||
chmod 750 "$final_path"
|
chmod 750 "$final_path"
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_redis
|
||||||
source ynh_send_readme_to_admin__2
|
source ynh_send_readme_to_admin__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
@ -21,12 +22,13 @@ domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port)
|
rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port)
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
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)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||||
admin_email=$(ynh_user_get_info --username=$admin --key="mail")
|
admin_email=$(ynh_user_get_info --username=$admin --key="mail")
|
||||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||||
|
redis_db=$(ynh_app_setting_get --app=$app --key=redis_db)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
|
@ -49,6 +51,14 @@ ynh_script_progression --message="Stopping and removing the systemd service..."
|
||||||
# Remove the dedicated systemd config
|
# Remove the dedicated systemd config
|
||||||
ynh_remove_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
|
# REMOVE THE POSTGRESQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -58,13 +68,11 @@ ynh_script_progression --message="Removing the PostgreSQL database..."
|
||||||
ynh_psql_remove_db --db_user=$db_user --db_name=$db_name
|
ynh_psql_remove_db --db_user=$db_user --db_name=$db_name
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE DEPENDENCIES
|
# REMOVE THE REDIS DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Removing dependencies..."
|
ynh_script_progression --message="Removing the redis database..."
|
||||||
|
|
||||||
# Remove metapackage and its dependencies
|
ynh_redis_remove_db "$redis_db"
|
||||||
ynh_remove_nodejs
|
|
||||||
ynh_remove_app_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE APP MAIN DIR
|
# REMOVE APP MAIN DIR
|
||||||
|
@ -74,6 +82,17 @@ ynh_script_progression --message="Removing app main directory..."
|
||||||
# Remove the app directory securely
|
# Remove the app directory securely
|
||||||
ynh_secure_remove --file="$final_path"
|
ynh_secure_remove --file="$final_path"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE DATA DIR
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Remove the data directory if --purge option is used
|
||||||
|
if [ "${YNH_APP_PURGE:-0}" -eq 1 ]
|
||||||
|
then
|
||||||
|
ynh_script_progression --message="Removing app data directory..."
|
||||||
|
ynh_secure_remove --file="$datadir"
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE NGINX CONFIGURATION
|
# REMOVE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -83,12 +102,13 @@ ynh_script_progression --message="Removing NGINX web server configuration..."
|
||||||
ynh_remove_nginx_config
|
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
|
# Remove metapackage and its dependencies
|
||||||
ynh_remove_logrotate
|
ynh_remove_nodejs
|
||||||
|
ynh_remove_app_dependencies
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CLOSE A PORT
|
# CLOSE A PORT
|
||||||
|
|
|
@ -33,7 +33,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port)
|
rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port)
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
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)
|
db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd)
|
||||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
|
|
||||||
|
@ -60,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..."
|
ynh_script_progression --message="Recreating the dedicated system user..."
|
||||||
|
|
||||||
# Create the dedicated user (if not existing)
|
# 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
|
# RESTORE THE APP MAIN DIR
|
||||||
|
@ -97,14 +97,7 @@ ynh_script_progression --message="Reinstalling dependencies..."
|
||||||
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
# Install ffmpeg from backports for Debian Jessie and from main for others
|
|
||||||
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
|
|
||||||
ynh_install_extra_app_dependencies --repo="deb http://httpredir.debian.org/debian jessie-backports main" --package="ffmpeg"
|
|
||||||
else
|
|
||||||
ynh_add_app_dependencies --package="ffmpeg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install Yarn
|
# Install Yarn
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
||||||
|
@ -134,6 +127,13 @@ ynh_script_progression --message="Restoring the systemd configuration..."
|
||||||
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
||||||
systemctl enable $app.service --quiet
|
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
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -148,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"
|
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
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_redis
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -22,11 +23,12 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port)
|
rtmp_port=$(ynh_app_setting_get --app=$app --key=rtmp_port)
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
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)
|
db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd)
|
||||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||||
admin_email=$(ynh_user_get_info --username=$admin --key="mail")
|
admin_email=$(ynh_user_get_info --username=$admin --key="mail")
|
||||||
|
redis_db=$(ynh_app_setting_get --app=$app --key=redis_db)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK VERSION
|
# CHECK VERSION
|
||||||
|
@ -73,12 +75,24 @@ if [ -z "$db_name" ]; then
|
||||||
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
||||||
fi
|
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 db_pwd doesn't exist, create it
|
||||||
if [ -z "$db_pwd" ]; then
|
if [ -z "$db_pwd" ]; then
|
||||||
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
||||||
ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd
|
ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# If redis_db doesn't exist, create it
|
||||||
|
if [ -z "$redis_db" ]; then
|
||||||
|
redis_db=$(ynh_redis_get_free_db)
|
||||||
|
ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$datadir" ];
|
if [ -z "$datadir" ];
|
||||||
then
|
then
|
||||||
datadir="/home/yunohost.app/${app}/storage"
|
datadir="/home/yunohost.app/${app}/storage"
|
||||||
|
@ -97,7 +111,6 @@ ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --data
|
||||||
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
|
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
|
||||||
|
|
||||||
# Remove repository
|
# Remove repository
|
||||||
ynh_secure_remove --file="/etc/apt/sources.list.d/jessie-backports.list"
|
|
||||||
ynh_secure_remove --file="/etc/apt/sources.list.d/yarn.list"
|
ynh_secure_remove --file="/etc/apt/sources.list.d/yarn.list"
|
||||||
|
|
||||||
# Remove not needed checksum
|
# Remove not needed checksum
|
||||||
|
@ -106,7 +119,7 @@ ynh_delete_file_checksum --file="../conf/msg_install"
|
||||||
if [ -z "$rtmp_port" ];
|
if [ -z "$rtmp_port" ];
|
||||||
then
|
then
|
||||||
rtmp_port=1935
|
rtmp_port=1935
|
||||||
ynh_port_available --port=$rtmp_port || ynh_die "Port $rtmp_port is needs to be available for this app"
|
ynh_port_available --port=$rtmp_port || ynh_die --message="Port $rtmp_port is needs to be available for this app"
|
||||||
ynh_app_setting_set --app=$app --key=rtmp_port --value=$rtmp_port
|
ynh_app_setting_set --app=$app --key=rtmp_port --value=$rtmp_port
|
||||||
|
|
||||||
# Open the port
|
# Open the port
|
||||||
|
@ -156,6 +169,7 @@ then
|
||||||
ynh_secure_remove --file="$final_path"
|
ynh_secure_remove --file="$final_path"
|
||||||
|
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
|
[ -d "../sources/patches-$(ynh_app_upstream_version)" ] && cp -a "../sources/patches-$(ynh_app_upstream_version)" "../sources/patches"
|
||||||
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
|
||||||
|
@ -193,14 +207,7 @@ ynh_script_progression --message="Upgrading dependencies..."
|
||||||
#ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
#ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
# Install ffmpeg from backports for Debian Jessie and from main for others
|
|
||||||
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
|
|
||||||
ynh_install_extra_app_dependencies --repo="deb http://httpredir.debian.org/debian jessie-backports main" --package="ffmpeg"
|
|
||||||
else
|
|
||||||
ynh_add_app_dependencies --package="ffmpeg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install Yarn
|
# Install Yarn
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
||||||
|
@ -245,6 +252,22 @@ pushd "$final_path"
|
||||||
#ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --production --pure-lockfile
|
#ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --production --pure-lockfile
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SETUP SYSTEMD
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Upgrading systemd configuration..."
|
||||||
|
|
||||||
|
# Create a dedicated systemd config
|
||||||
|
ynh_add_systemd_config
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
# Start a systemd service
|
||||||
|
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="HTTP server listening on localhost"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL LDAP PLUGIN
|
# INSTALL LDAP PLUGIN
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -255,12 +278,23 @@ pushd "$final_path"
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SYSTEMD
|
# PEERTUBE 4.0.0 UPGRADE MIGRATION SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Upgrading systemd configuration..."
|
|
||||||
|
|
||||||
# Create a dedicated systemd config
|
if ynh_compare_current_package_version --comparison lt --version 4.0.0~ynh1; then
|
||||||
ynh_add_systemd_config
|
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 $ynh_node dist/scripts/migrations/peertube-4.0.js
|
||||||
|
popd
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# STOP SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Stopping a systemd service..."
|
||||||
|
|
||||||
|
# Stop a systemd service
|
||||||
|
ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
|
|
39
scripts/ynh_redis
Normal file
39
scripts/ynh_redis
Normal file
|
@ -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
|
||||||
|
}
|
26
sources/patches-4.0.0/app-python-in-config.patch
Normal file
26
sources/patches-4.0.0/app-python-in-config.patch
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
diff '--color=auto' -ru ./dist/server/helpers/youtube-dl/youtube-dl-cli.js ./dist/server/helpers/youtube-dl/youtube-dl-cli.js
|
||||||
|
--- ./dist/server/helpers/youtube-dl/youtube-dl-cli.js 2021-12-13 09:22:44.000000000 +0100
|
||||||
|
+++ ./dist/server/helpers/youtube-dl/youtube-dl-cli.js 2022-01-11 22:35:52.992330841 +0100
|
||||||
|
@@ -104,7 +104,8 @@
|
||||||
|
let completeArgs = this.wrapWithProxyOptions(args);
|
||||||
|
completeArgs = this.wrapWithIPOptions(completeArgs);
|
||||||
|
completeArgs = this.wrapWithFFmpegOptions(completeArgs);
|
||||||
|
- const output = yield (0, execa_1.default)('python', [youtubeDLBinaryPath, ...completeArgs, url], processOptions);
|
||||||
|
+ const { PYTHON_PATH } = config_1.CONFIG.IMPORT.VIDEOS.HTTP.YOUTUBE_DL_RELEASE;
|
||||||
|
+ const output = yield (0, execa_1.default)(PYTHON_PATH, [youtubeDLBinaryPath, ...completeArgs, url], processOptions);
|
||||||
|
logger_1.logger.debug('Runned youtube-dl command.', Object.assign({ command: output.command }, lTags()));
|
||||||
|
return output.stdout
|
||||||
|
? output.stdout.trim().split(/\r?\n/)
|
||||||
|
diff '--color=auto' -ru ./dist/server/initializers/config.js ./dist/server/initializers/config.js
|
||||||
|
--- ./dist/server/initializers/config.js 2021-12-13 09:22:43.000000000 +0100
|
||||||
|
+++ ./dist/server/initializers/config.js 2022-01-11 22:35:51.812344562 +0100
|
||||||
|
@@ -295,7 +295,8 @@
|
||||||
|
get ENABLED() { return config.get('import.videos.http.enabled'); },
|
||||||
|
YOUTUBE_DL_RELEASE: {
|
||||||
|
get URL() { return config.get('import.videos.http.youtube_dl_release.url'); },
|
||||||
|
- get NAME() { return config.get('import.videos.http.youtube_dl_release.name'); }
|
||||||
|
+ get NAME() { return config.get('import.videos.http.youtube_dl_release.name'); },
|
||||||
|
+ get PYTHON_PATH() { return config.get('import.videos.http.youtube_dl_release.python_path'); }
|
||||||
|
},
|
||||||
|
get FORCE_IPV4() { return config.get('import.videos.http.force_ipv4'); }
|
||||||
|
},
|
Loading…
Reference in a new issue