Documentation update + remove docker build:
* Update documentation and removed deprecated parts * removed Docker image build files, as it is no more needed
This commit is contained in:
parent
3ba64d3732
commit
187d8be87f
@ -42,6 +42,8 @@ Peertube image.
|
||||
* ConverseJS v10.0.0 (instead of v9.0.0).
|
||||
* Prosody server: enabling mod_disco.
|
||||
* Settings page re-ordered.
|
||||
* Cleaning deprecated documentation.
|
||||
* Removing the code of the Docker image, as it is no more needed.
|
||||
|
||||
### Minor changes and fixes
|
||||
|
||||
|
@ -34,6 +34,11 @@ Toujours annoncer les fonctionnalités sur lesquelles vous voulez travailler en
|
||||
|
||||
Merci d'utiliser la branche `develop`. La branche `main` est réservée aux versions publiées, pour que la documentation affichée reste synchronisée avec la version publiée du plugin.
|
||||
|
||||
Pré-requis pour compiler le plugin:
|
||||
|
||||
- vous devez avoir installé `npm`
|
||||
- vous devez avoir installé les venv python (paquet `python3-venv` sous Debian par exemple)
|
||||
|
||||
Pour clôner le dépot :
|
||||
|
||||
```bash
|
||||
|
@ -37,6 +37,11 @@ before you start working on it, and inform the community that you begin coding b
|
||||
|
||||
Please use the `develop` branch. The `main` branch is reserved to released versions of the plugin, so that the documentation is always synchronized with the released version of the plugin.
|
||||
|
||||
Prerequisite for building this plugin:
|
||||
|
||||
- you must have `npm` installed
|
||||
- you must have python venv installed (`python3-venv` package on Debian for example)
|
||||
|
||||
To clone the repository:
|
||||
|
||||
```bash
|
||||
|
@ -11,15 +11,13 @@ Dieses [Peertube](https://joinpeertube.org/) Plugin ist dafür gedacht, ein Chat
|
||||
|
||||
Siehe eine [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae).
|
||||
|
||||
**Wichtig:** leider funktioniert dieses Plugin (noch) nicht von selbst, es muss auf externe Tools zurückgreifen. Bitte lesen Sie die [Installationsanleitung](documentation/installation.de.md).
|
||||
|
||||
**Bevor Sie auf eine Hauptversion aktualisieren, lesen Sie bitte die Versionshinweise und die Liste der wichtigsten Änderungen : [CHANGELOG](CHANGELOG.md)**.
|
||||
|
||||
## Dokumentation
|
||||
|
||||
* [Installationsanleitung](documentation/installation.de.md)
|
||||
* [Benutzeranleitung](documentation/user.de.md)
|
||||
* [Administratoranleitung](documentation/admin.de.md)
|
||||
* [Benutzeranleitung](documentation/user.md)
|
||||
* [Administratoranleitung](documentation/admin.md)
|
||||
|
||||
## Neue Funktionen / Fehler (Bugs)
|
||||
|
||||
|
@ -9,15 +9,13 @@ Ce plugin pour [Peertube](https://joinpeertube.org/) permet d'intégrer un syst
|
||||
|
||||
Voir une [démo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae).
|
||||
|
||||
**IMPORTANT :** ce plugin ne fonctionne malheureusement pas (encore) tout seul, il doit se reposer sur des outils externes. Merci de consulter la [documentation d'installation](documentation/installation.fr.md).
|
||||
|
||||
**Avant de mettre à jour vers une nouvelle version majeure, merci de lire les notes de version, et la liste des éventuelless modifications non rétro-compatibles : [CHANGELOG](CHANGELOG.md).**
|
||||
|
||||
## Documentation
|
||||
|
||||
* [Documentation d'installation](documentation/installation.fr.md)
|
||||
* [Documentation utilisateur⋅rice](documentation/user.fr.md)
|
||||
* [Documentation d'administration](documentation/admin.fr.md)
|
||||
* [Documentation utilisateur⋅rice](documentation/user.md)
|
||||
* [Documentation d'administration](documentation/admin.md)
|
||||
|
||||
## Évolutions / suivi des bugs
|
||||
|
||||
|
@ -11,8 +11,6 @@ This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat syste
|
||||
|
||||
See a [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae).
|
||||
|
||||
**IMPORTANT:** unfortunately this plugin does not (yet) work by itself, it must rely on external tools. Please read the [installation guide](documentation/installation.md).
|
||||
|
||||
**Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](CHANGELOG.md)**.
|
||||
|
||||
## Documentation
|
||||
|
@ -1,3 +0,0 @@
|
||||
FROM chocobozzz/peertube:production-bullseye
|
||||
|
||||
RUN apt -y update && apt install -y prosody && apt -y clean
|
@ -1,3 +0,0 @@
|
||||
FROM chocobozzz/peertube:production-buster
|
||||
|
||||
RUN apt -y update && apt install -y prosody && apt -y clean
|
@ -1 +0,0 @@
|
||||
TODO: Diese Dokumentation ist im Moment noch nicht fertig.
|
@ -1 +0,0 @@
|
||||
Cette documentation n'est malheureusement pas encore prête.
|
@ -1 +1,152 @@
|
||||
TODO: this documentation is not ready for now.
|
||||
# Plugin Peertube Livechat administration
|
||||
|
||||
## Settings
|
||||
|
||||
This section describes the plugin settings page.
|
||||
|
||||
### List existing rooms
|
||||
|
||||
When pressing the «List rooms» button, all existing chatrooms will be listed.
|
||||
You can then find them and moderated them.
|
||||
|
||||
### Chat behaviour
|
||||
|
||||
#### Room type
|
||||
|
||||
You can choose here to have separate rooms for each video, or to group them by channel.
|
||||
|
||||
#### Automatically open the chat
|
||||
|
||||
If checked, the chat will be loaded as soon as you are on the video page.
|
||||
|
||||
#### Show the «open in new window» button
|
||||
|
||||
If your web chat tool can be opened in a full window, you can add a button to do so.
|
||||
|
||||
If you are using an external web chat tool (see the chat mode «Use an external web chat tool»), maybe it will not work in fullscreen (for example if it needs to access the parent window to get video informations). You can disable this button by unchecking this settings.
|
||||
|
||||
#### Show the «share chat link» button
|
||||
|
||||
This feature enables a «share chat link» modal. With this modal, you can generate URLs to join the chat.
|
||||
The chat can be customized (readonly mode, use the current theme, ...).
|
||||
|
||||
You can for example generate a readonly URL and use it in OBS to integrate the chat in your live stream!
|
||||
|
||||
This settings allows you to choose who can access this modal.
|
||||
|
||||
#### Chats are only available for local videos
|
||||
|
||||
Peertube is a federated service. Plugins are only available on the server you are browsing.
|
||||
So, if you are watching a remote video, only you will have the webchat, not users from remote instances.
|
||||
Therefore, this options is checked by default and prevent displaying a webchat for remote videos.
|
||||
|
||||
#### Users can activate the chat for their lives
|
||||
|
||||
If checked, all live videos will have a checkbox in their properties for enabling the web chat.
|
||||
The video owner will be able to activate web chats.
|
||||
|
||||
#### Activate chat for all lives
|
||||
|
||||
The chat will be available for all Peertube live videos on your instance.
|
||||
|
||||
#### Activate chat for all non-lives
|
||||
|
||||
The chat will be available for all Peertube video that are not live.
|
||||
|
||||
#### Activate chat for these videos
|
||||
|
||||
You can choose some UUIDs for which the chat will be available.
|
||||
If you don't want te enable the feature for all videos, you can use this field to list videos UUIDs.
|
||||
You can add comments: everything rights to the # character will be stripped off, as for empty lines.
|
||||
|
||||
#### Hide the chat for anonymous users
|
||||
|
||||
If checked, anonymous Peertube users won't see the chat.
|
||||
|
||||
Note: for now this feature simply hide the chat.
|
||||
In a future release, the chat will be replaced by a message saying «please log in to [...]».
|
||||
See [v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) for more information.
|
||||
|
||||
### Theming
|
||||
|
||||
#### ConverseJS theme
|
||||
|
||||
You can choose which theme to use for ConverseJS:
|
||||
|
||||
- Peertube theme: this is a special theme, made especially for peertube's integration.
|
||||
- Default ConverseJS theme: this is the default ConverseJS theme.
|
||||
- ConverseJS concord theme: this is a theme provided by ConverseJS.
|
||||
|
||||
#### Automatic color detection
|
||||
|
||||
Try to auto detect colors from user's current theme.
|
||||
When this settings is enabled, the plugin tries to auto-detect colors to apply to the chat theme.
|
||||
If this is not correctly working for some of your Peertube theme, you can disable this option.
|
||||
|
||||
#### Webchat iframe style attribute
|
||||
|
||||
You can add some custom styles that will be added to the iframe.
|
||||
For example a custom width:
|
||||
|
||||
```width:400px;```
|
||||
|
||||
### Chat server advanced settings
|
||||
|
||||
#### Use system Prosody
|
||||
|
||||
The plugin comes with an AppImage that is used to run the [Prosody XMPP server](https://prosody.im).
|
||||
If this AppImage is not working, you can fallback to the Prosody that is packaged for your server. Just install the `prosody` package.
|
||||
|
||||
This settings should only be used if the plugin is broken, and waiting for a patch.
|
||||
|
||||
#### Prosody port
|
||||
|
||||
This is the port that the Prosody server will use. By default it is set to 52800. If you want to use another port, just change the value here.
|
||||
|
||||
#### Peertube URL for API calls
|
||||
|
||||
In some rare cases, Prosody can't call Peertube's API from its public URI.
|
||||
If you have such issues (see the diagnostic tool result), you can try to set the value
|
||||
of this settings to `http://localhost:9000` or `http://127.0.0.1:9000`
|
||||
(supposing your Peertube is listening on port `9000`. Check that in your Peertube `config/production.yaml` file).
|
||||
|
||||
#### Log rooms content by default
|
||||
|
||||
If checked, room content will be archived on the server by default.
|
||||
This means that users who join the chan will see messages sent before they have joined.
|
||||
|
||||
Please note that it is always possible to enable/disable the content logging for a specific room,
|
||||
by editing its properties.
|
||||
|
||||
#### Room logs expiration
|
||||
|
||||
You can set here the expiration delay for room logs.
|
||||
See the online help for accepted values.
|
||||
|
||||
#### Enable client to server connections
|
||||
|
||||
This setting enable XMPP clients to connect to the builtin Prosody server.
|
||||
For now, this option **only allows connections from localhost clients**.
|
||||
|
||||
As example, this option can allow an instance of Matterbridge (once it could use anonymous login) *on the same machine* to bridge your chat with another services like a Matrix room.
|
||||
|
||||
##### Prosody client to server port
|
||||
|
||||
The port that will be used by the c2s module of the builtin Prosody server.
|
||||
XMPP clients shall use this port to connect.
|
||||
Change it if this port is already in use on your server.
|
||||
|
||||
#### Enable external XMPP components
|
||||
|
||||
This settings enable XMPP external components to connect to the server.
|
||||
For now, this option **only allows connections from localhost components**.
|
||||
|
||||
This feature could be used to connect bridges or bots.
|
||||
|
||||
More informations on Prosody external components [here](https://prosody.im/doc/components).
|
||||
|
||||
## Advanced usages
|
||||
|
||||
### Using Matterbridge
|
||||
|
||||
Here is a tutorial to use Matterbridge with the plugin: <https://gitlab.com/refrac/obs-matterbridge-overlay/-/blob/master/documentation/peertube.md>
|
||||
|
@ -1,68 +0,0 @@
|
||||
# Common settings documentation
|
||||
|
||||
There are several options in the plugin settings page that are common to all installation types.
|
||||
|
||||
## Chat behaviour
|
||||
|
||||
### Automatically open the chat
|
||||
|
||||
If checked, the chat will be loaded as soon as you are on the video page.
|
||||
|
||||
### Show the «open in new window» button
|
||||
|
||||
If your web chat tool can be opened in a full window, you can add a button to do so.
|
||||
|
||||
If you are using an external web chat tool (see the chat mode «Use an external web chat tool»), maybe it will not work in fullscreen (for example if it needs to access the parent window to get video informations). You can disable this button by unchecking this settings.
|
||||
|
||||
### Chats are only available for local videos
|
||||
|
||||
Peertube is a federated service. Plugins are only available on the server you are browsing.
|
||||
So, if you are watching a remote video, only you will have the webchat, not users from remote instances.
|
||||
Therefore, this options is checked by default and prevent displaying a webchat for remote videos.
|
||||
|
||||
### Users can activate the chat for their lives
|
||||
|
||||
If checked, all live videos will have a checkbox in their properties for enabling the web chat.
|
||||
The video owner will be able to activate web chats.
|
||||
|
||||
### Activate chat for all lives
|
||||
|
||||
The chat will be available for all Peertube live videos on your instance.
|
||||
|
||||
### Activate chat for all non-lives
|
||||
|
||||
The chat will be available for all Peertube video that are not live.
|
||||
|
||||
### Activate chat for these videos
|
||||
|
||||
You can choose some UUIDs for which the chat will be available.
|
||||
If you don't want te enable the feature for all videos, you can use this field to list videos UUIDs.
|
||||
You can add comments: everything rights to the # character will be stripped off, as for empty lines.
|
||||
|
||||
### Hide the chat for anonymous users
|
||||
|
||||
If checked, anonymous Peertube users won't see the chat.
|
||||
|
||||
Note: for now this feature simply hide the chat.
|
||||
In a future release, the chat will be replaced by a message saying «please log in to [...]».
|
||||
See [v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) for more information.
|
||||
|
||||
### Webchat iframe style attribute
|
||||
|
||||
You can add some custom styles that will be added to the iframe.
|
||||
For example a custom width:
|
||||
|
||||
```width:400px;```
|
||||
|
||||
### ConverseJS advanced settings
|
||||
|
||||
These settings are available if you are in mode «Prosody server controlled by Peertube»
|
||||
or «Connect to an existing XMPP server with ConverseJS».
|
||||
|
||||
#### ConverseJS theme
|
||||
|
||||
You can choose which theme to use for ConverseJS:
|
||||
|
||||
- Peertube theme: this is a special theme, made especially for peertube's integration.
|
||||
- Default ConverseJS theme: this is the default ConverseJS theme.
|
||||
- ConverseJS concord theme: this is a theme provided by ConverseJS.
|
@ -1,54 +0,0 @@
|
||||
# Connect to an existing XMPP server with ConverseJS
|
||||
|
||||
If you have an XMPP server, and don't want to provide a web chat application by yourself, you can use the builtin ConverseJS implementation.
|
||||
|
||||
ConverseJS is an Free and Open Source Javascript library to connect to Jabber/XMPP servers.
|
||||
|
||||
**Important Note**: If you don't have a running XMPP server, here is a
|
||||
**[tutorial to install Prosody XMPP Server](./tutorials/prosody.md) on your Peertube instance**.
|
||||
|
||||
## Plugin Settings
|
||||
|
||||
### Chat mode
|
||||
|
||||
Just select «Connect to an existing XMPP server with ConverseJS» as chat mode.
|
||||
|
||||
#### XMPP service server (mandatory)
|
||||
|
||||
The XMPP server. For example: ```peertube.im.your_domain```.
|
||||
|
||||
NB: If you have an existing Prosody server, you can use its address if it has anonymous authentication on.
|
||||
Otherwise, you can create a subdomain (see [the example file](documentation/examples/prosody/virtualhost.cfg.lua)).
|
||||
The ```peertube.im``` is part of the example, you have to replace the entire value.
|
||||
|
||||
#### XMPP room template (mandatory)
|
||||
|
||||
The room to join on your XMPP server.
|
||||
You can have a single room for all webchats, or you can use any of there placeholders:
|
||||
|
||||
- ```{{VIDEO_UUID}}``` to insert the video UUID and have a custom room for each video.
|
||||
- ```{{CHANNEL_ID}}``` to insert the channel numerical ID and have a custom room for each channel.
|
||||
- ```{{CHANNEL_NAME}}``` to insert the channel name (see the Peertube's documentation for possible characters) and have a custom room for each channel.
|
||||
|
||||
You can mix several placeholders.
|
||||
|
||||
Example: ```room_{{VIDEO_UUID}}@room.peertube.im.your_domain```
|
||||
|
||||
NB: when using CHANNEL_ID or CHANNEL_NAME with remote videos, you can have unexpected results. You should consider disabling webchat for remote videos.
|
||||
|
||||
#### BOSH uri OR Websocket uri
|
||||
|
||||
You have to provide at least one of these two settings.
|
||||
|
||||
Example for BOSH: ```https://peertube.im.yiny.org/http-bind```
|
||||
|
||||
Example for Websocket: ```wss://peertube.im.yiny.org/xmpp-websocket```
|
||||
|
||||
NB: ConverseJS can also use the ```/.well-known/host-meta``` file to discover services.
|
||||
See ConverseJS [documentation](https://conversejs.org/docs/html/configuration.html#discover-connection-methods)
|
||||
and XMPP [documentation](https://xmpp.org/extensions/xep-0156.html#httpexamples).
|
||||
|
||||
### Chat behaviour
|
||||
|
||||
These settings are common with other chat modes.
|
||||
Here is the documentation: [common settings](./common.md).
|
@ -1,41 +0,0 @@
|
||||
# Docker
|
||||
|
||||
## Build the docker image
|
||||
|
||||
Install Docker.
|
||||
Clone the git repository.
|
||||
Then:
|
||||
|
||||
```shell
|
||||
docker build . -f docker/Dockerfile.bullseye
|
||||
```
|
||||
|
||||
## Publish docker image
|
||||
|
||||
NB: the above commands are only available for John Livingston.
|
||||
You have to replace by your own docker up repository
|
||||
if you really need to build such an image.
|
||||
|
||||
First, you have to authenticate your Docker environment.
|
||||
Create an access token on your hub.docker.com account, then use
|
||||
`docker login --username johnxlivingston` to add your credentials.
|
||||
|
||||
```shell
|
||||
# pull the current peertube production image:
|
||||
docker pull chocobozzz/peertube:production-bullseye
|
||||
# build the docker image, if not done yet:
|
||||
docker build . -f docker/Dockerfile.bullseye
|
||||
# list images to find the image id:
|
||||
docker images
|
||||
#REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
#<none> <none> xx_image_id_xx 17 seconds ago 1.19GB
|
||||
#chocobozzz/peertube production-bullseye xx_peertube_image_id_xx 4 days ago 1.17GB
|
||||
|
||||
# tag the image:
|
||||
docker tag xx_image_id_xx johnxlivingston/peertubelivechat:production-bullseye
|
||||
# push on the main tag name:
|
||||
docker push johnxlivingston/peertubelivechat:production-bullseye
|
||||
# push on the current peertube tag name:
|
||||
docker tag johnxlivingston/peertubelivechat:production-bullseye johnxlivingston/peertubelivechat:v4.1.0-bullseye
|
||||
docker push johnxlivingston/peertubelivechat:v4.1.0-bullseye
|
||||
```
|
@ -1,5 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
|
||||
<Link rel="urn:xmpp:alt-connections:xbosh"
|
||||
href="https://peertube.im.your_domain/http-bind" />
|
||||
</XRD>
|
@ -1,56 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js" lang="en">
|
||||
<head>
|
||||
<title>Converse</title>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<meta name="description" content="Converse XMPP/Jabber Chat"/>
|
||||
<link type="text/css" rel="stylesheet" media="screen" href="/conversejs/dist/converse.min.css" />
|
||||
<script src="/conversejs/dist/converse.min.js"></script>
|
||||
<style type="text/css">
|
||||
#conversejs .chat-head {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="converse-fullscreen">
|
||||
<noscript>You need to enable JavaScript to run the Converse.js chat app.</noscript>
|
||||
<div id="conversejs-bg"></div>
|
||||
<script>
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var roomParam = urlParams.get('room');
|
||||
var room = roomParam && /^[\w-]+$/.test(roomParam) ? 'public_' + roomParam : 'public';
|
||||
|
||||
converse.initialize({
|
||||
assets_path: '/conversejs/dist/',
|
||||
|
||||
authentication: 'anonymous',
|
||||
auto_login: true,
|
||||
auto_join_rooms: [
|
||||
room + '@room.peertube.im.your_domain',
|
||||
],
|
||||
bosh_service_url: 'https://peertube.im.your_domain/http-bind/',
|
||||
websocket_url: 'wss://peertube.im.your_domain/xmpp-websocket',
|
||||
jid: 'peertube.im.your_domain',
|
||||
notify_all_room_messages: [
|
||||
room + '@room.peertube.im.your_domain',
|
||||
],
|
||||
singleton: true,
|
||||
auto_focus: false,
|
||||
hide_muc_participants: false,
|
||||
keepalive: true,
|
||||
play_sounds: false,
|
||||
muc_mention_autocomplete_min_chars: 3,
|
||||
muc_mention_autocomplete_filter: 'contains',
|
||||
modtools_disable_assign: true,
|
||||
muc_disable_slash_commands: ['admin', 'ban', 'clear', 'deop', 'destroy', 'kick', 'member', 'modtools', 'mute', 'op', 'owner', 'register', 'revoke', 'subject', 'topic', 'voice'],
|
||||
muc_instant_rooms: true,
|
||||
show_client_info: false,
|
||||
allow_adhoc_commands: false,
|
||||
allow_contact_requests: false,
|
||||
show_controlbox_by_default: false,
|
||||
view_mode: 'fullscreen',
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,100 +0,0 @@
|
||||
server {
|
||||
if ($host = peertube.im.your_domain) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
|
||||
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name peertube.im.your_domain;
|
||||
|
||||
access_log /var/log/nginx/peertube.im.your_domain.access.log;
|
||||
error_log /var/log/nginx/peertube.im.your_domain.error.log;
|
||||
|
||||
location / { return 301 https://$host$request_uri; }
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name peertube.im.your_domain;
|
||||
|
||||
ssl_protocols TLSv1.2;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
|
||||
|
||||
access_log /var/log/nginx/peertube.im.your_domain.access.log;
|
||||
error_log /var/log/nginx/peertube.im.your_domain.error.log;
|
||||
|
||||
root /var/www/peertube.im;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
location /.well-known/host-meta {
|
||||
default_type "application/xml";
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
||||
add_header 'Access-Control-Max-Age' 1728000;
|
||||
add_header 'Content-Type' 'text/plain; charset=utf-8';
|
||||
add_header 'Content-Length' 0;
|
||||
return 204;
|
||||
}
|
||||
if ($request_method = 'GET') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
||||
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
|
||||
}
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
location /http-bind {
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
||||
add_header 'Access-Control-Max-Age' 1728000;
|
||||
add_header 'Content-Type' 'text/plain; charset=utf-8';
|
||||
add_header 'Content-Length' 0;
|
||||
return 204;
|
||||
}
|
||||
if ($request_method = 'POST') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
||||
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
|
||||
}
|
||||
if ($request_method = 'GET') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
||||
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
|
||||
}
|
||||
|
||||
proxy_pass http://localhost:5280/http-bind;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_buffering off;
|
||||
tcp_nodelay on;
|
||||
}
|
||||
|
||||
location /xmpp-websocket {
|
||||
proxy_pass http://localhost:5280/xmpp-websocket;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_read_timeout 900s;
|
||||
}
|
||||
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/peertube.im.your_domain/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/peertube.im.your_domain/privkey.pem; # managed by Certbot
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
-- these global settings can affect an existing Prosody installation.
|
||||
-- Use them with care.
|
||||
-- NB: prosody http will be behind the nginx reverse proxy.
|
||||
cross_domain_bosh = false;
|
||||
consider_bosh_secure = true;
|
||||
cross_domain_websocket = false;
|
||||
consider_websocket_secure = true;
|
||||
https_ports = {};
|
||||
trusted_proxies = { "127.0.0.1", "::1" }
|
||||
|
||||
VirtualHost "your_domain"
|
||||
authentication = "anonymous"
|
||||
allow_anonymous_s2s = false
|
||||
ssl = {
|
||||
key = "/etc/prosody/certs/your_domain.key";
|
||||
certificate = "/etc/prosody/certs/your_domain.crt";
|
||||
}
|
||||
modules_enabled = {
|
||||
"http";
|
||||
"bosh";
|
||||
"ping";
|
||||
"websocket";
|
||||
}
|
||||
http_host = "your_domain"
|
||||
http_external_url = "http://your_domain"
|
||||
admins = { "admin@your_xmpp_provider_domain" }
|
||||
|
||||
Component "room.your_domain" "muc"
|
||||
admins = { "admin@your_xmpp_provider_domain" }
|
||||
restrict_room_creation = "local"
|
||||
muc_room_locking = false
|
||||
muc_tombstones = false
|
||||
muc_room_default_language = "fr"
|
||||
muc_room_default_public = true
|
||||
muc_room_default_persistent = false
|
||||
muc_room_default_members_only = false
|
||||
muc_room_default_moderated = false
|
||||
muc_room_default_public_jids = false
|
||||
muc_room_default_change_subject = false
|
||||
muc_room_default_history_length = 20
|
@ -1,78 +0,0 @@
|
||||
# Use an external web chat tool
|
||||
|
||||
You can use any webchat tool that can be included in an HTML «iframe».
|
||||
|
||||
## Settings
|
||||
|
||||
### Chat mode
|
||||
|
||||
Just select «Use an external web chat tool» as chat mode.
|
||||
|
||||
### Webchat url
|
||||
|
||||
Speficy here the url for you chat application.
|
||||
|
||||
You can add the string {{VIDEO_UUID}} in the url, it will be replaced by the video UUID.
|
||||
|
||||
You can also use {{CHANNEL_ID}} to add the channel id, so you can group webchats per user channel.
|
||||
|
||||
It is possible to use a single chat for all your videos if you omit these parameters.
|
||||
|
||||
Example:
|
||||
```https://peertube.im.your_domain?room={{VIDEO_UUID}}```
|
||||
or
|
||||
```https://peertube.im.your_domain?room={{CHANNEL_ID}}```
|
||||
|
||||
NB: when using CHANNEL_ID with remote videos, you can have unexpected results. You should consider disabling webchat for remote videos.
|
||||
|
||||
### Chat behaviour
|
||||
|
||||
These settings are common with other chat modes.
|
||||
Here is the documentation: [common settings](./common.md).
|
||||
|
||||
## Tips: install your own XMPP webchat
|
||||
|
||||
Here are some tips if you want to setup a XMPP server yourself.
|
||||
|
||||
### Custom ConverseJS webchat
|
||||
|
||||
If you want to setup your own webchat with converseJS on a different webserver, here is some tips.
|
||||
|
||||
Once you have a XMPP server that allow anonymous authentication, with bosh
|
||||
(or websocket) enabled, you can - for example - setup a html page that looks like
|
||||
[this one](./examples/converseJS/index.html). You have of course to
|
||||
replace the path /conversejs/dist with your converseJS path, and replace peertube.im.your_domain
|
||||
by your actual domain.
|
||||
|
||||
NB: converseJS has an option «discover_connection_methods» to find your server configuration (bosh, websocket, ...).
|
||||
To use it, you have to add a file [/.well-known/host-meta](./examples/converseJS/host-meta).
|
||||
Please refer to the converseJS documentation.
|
||||
|
||||
### XMPP Server: Prosody
|
||||
|
||||
You can use Prosody for the XMPP backend.
|
||||
|
||||
You can find an example configuration file [here](./examples/prosody/virtualhost.cfg.lua) or use [this tutorial](./tutorials/prosody.md)
|
||||
to setup Prosody from scratch.
|
||||
|
||||
Replace admin@your_xmpp_provider_domain with Jabber ids of users that you want to be admin for your server and public chatrooms.
|
||||
This users have to be on another domain/virtualhost (which don't use anonymous authentication).
|
||||
It can even be on another XMPP server. Or you can add a virtualhost on the
|
||||
Peertube server's prosody config.
|
||||
If you have no XMPP account, remove the line (but you will not be able to moderate rooms).
|
||||
|
||||
Please refer to the [Prosody documentation](https://prosody.im/doc/) and to [the tutorial](./tutorials/prosody.md) for other modifications
|
||||
(how to get the ssl certificates, ...).
|
||||
|
||||
NB : if you have not nginx on your server, please replace by the correct parameter.
|
||||
|
||||
### XMPP over HTTP: nginx
|
||||
|
||||
You can use the reverse proxy nginx to server the Prosody Bosh server.
|
||||
So your requests will be on the 443 port, and it will minimise cross domains constraints.
|
||||
|
||||
There is an example file [here](./examples/nginx/site.conf).
|
||||
|
||||
NB: this example files also serve the static html files with converseJS.
|
||||
|
||||
NB: it is recommanded to change ```Access-Control-Allow-Origin``` to something else that ```"*"``` (your peertubes uri).
|
@ -3,19 +3,14 @@
|
||||
🇫🇷 French version / Version française [ici](./installation.fr.md).
|
||||
🇬🇧 English version / version anglaise [here](./installation.md).
|
||||
|
||||
**Wichtig:** leider funktioniert dieses Plugin (noch) nicht von selbst, es muss auf externe Tools zurückgreifen.
|
||||
|
||||
**Bevor Sie auf eine Hauptversion aktualisieren, lesen Sie bitte die Versionshinweise und die Liste der wichtigsten Änderungen : [CHANGELOG](CHANGELOG.md)**.
|
||||
|
||||
Dieses Plugin kann auf verschiedene Weise verwendet werden:
|
||||
To install or update the plugin, just use the Peertube web admin interface.
|
||||
|
||||
| Modus | Beschreibung | Dokumentation
|
||||
---|---|---
|
||||
**Prosody-Server, der von Peertube gesteuert wird (empfohlen)** | Dieses Plugin kann einen [Prosody](https://prosody.im)-Prozess starten und ihn automatisch konfigurieren | [Prosody+Peertube-Installation](./prosody.md). **Dies ist der empfohlene Modus, und die Einrichtung erfolgt fast automatisch**
|
||||
**Verbindung zu einem bestehenden XMPP-Server mit ConverseJS** | Sie können einen externen Jabber/XMPP-Server verwenden. Dieser Server muss BOSH oder Websocket API anbieten, anonyme Anmeldung und Raumerstellung akzeptieren. | [ConverseJS+XMPP Installation](./conversejs.md)
|
||||
**Verwenden Sie ein externes Web-Chat-Tool** | Sie können ein beliebiges externes Web-Chat-Tool verwenden, das in einen iframe eingebunden werden kann. | [Externe Chat-Installation](./external.md)
|
||||
## IMPORTANT NOTE
|
||||
|
||||
Bei den ersten beiden Lösungen wird die Verbindung zum XMPP-Server mit der [converseJS](https://conversejs.org/) Javascript-Bibliothek hergestellt.
|
||||
XMPP ist ein Protokoll für Chat-Anwendungen. Es ist auch unter dem Namen Jabber bekannt.
|
||||
Since version v6.0.0, this plugin does not need any Prosody installation.
|
||||
|
||||
Es gibt eine Dokumentation für allgemeine Einstellungen hier: [Allgemeine Einstellungsdokumentation](./common.md).
|
||||
If you were using this plugin before this version, and if you had installed Prosody manually, you can safely uninstall Prosody.
|
||||
|
||||
If you were using the custom Peertube docker image that is embedding Prosody, you can switch back to the official Peertube image.
|
||||
|
@ -3,18 +3,14 @@
|
||||
🇬🇧 English version / version anglaise [here](./installation.md).
|
||||
🇩🇪 German version / deutsche Version [hier](./installation.de.md).
|
||||
|
||||
**IMPORTANT :** ce plugin ne fonctionne malheureusement pas (encore) tout seul, il doit se reposer sur des outils externes.
|
||||
|
||||
**Avant de mettre à jour vers une nouvelle version majeure, merci de lire les notes de version, et la liste des éventuelles modifications non rétro-compatibles : [CHANGELOG](../CHANGELOG.md).**
|
||||
|
||||
Ce plugin peut être utilisé de plusieurs manières différentes :
|
||||
Pour installer ou mettre à jour ce plugin, utilisez simplement l'interface web d'administration de votre Peertube.
|
||||
|
||||
| Mode | Description | Documentation
|
||||
---|---|---
|
||||
**Serveur Prosody contrôlé par Peertube (recommandé)** | Ce plugin peut lancer un processus [Prosody](https://prosody.im) et l'auto-configurer. | [Installation Prosody+Peertube](./prosody.md). **C'est le mode recommandé, et est quasiment automatique à paramétrer**
|
||||
**Se connecter à un serveur XMPP existant avec ConverseJS** | Vous pouvez utiliser un serveur Jabber/XMPP externe. Ce serveur doit pouvoir utiliser le protocole BOSH ou Websocket, accepter les connexions anonymes, et accepter la création de salons de discussion. |[Installation ConverseJS+XMPP externe](./conversejs.md)
|
||||
**Utiliser un outil de chat externe** | Vous pouvez utiliser un outil de chat externe, si celui-ci peut être inclus dans une iframe. | [Installation chat externe](./external.md)
|
||||
## IMPORTANT NOTE
|
||||
|
||||
Pour les deux premiers modes, la connexion vers le serveur XMPP est faite via la bibliothèque javascript [ConverseJS](https://conversejs.org/).
|
||||
Depuis la version v6.0.0, ce plugin ne nécessite plus l'installation de Prosody.
|
||||
|
||||
Il y a de la documentation pour des paramètres communs aux différents modes ici : [common settings documentation](./common.md).
|
||||
Si vous utilisiez ce plugin avant, et que vous aviez installé Prosody manuellement, vous pouvez le désinstaller en tout sécurité.
|
||||
|
||||
Si vous utilisiez l'image docker spéciale de Peertube (qui incluais Prosody), vous pouvez basculer sur l'image officielle de Peertube.
|
||||
|
@ -3,19 +3,14 @@
|
||||
🇫🇷 French version / Version française [ici](./installation.fr.md)
|
||||
🇩🇪 German version / deutsche Version [hier](./installation.de.md)
|
||||
|
||||
**IMPORTANT:** unfortunately this plugin does not (yet) work by itself, it must rely on external tools.
|
||||
|
||||
**Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](../CHANGELOG.md)**.
|
||||
|
||||
This plugin can be used in different ways:
|
||||
To install or update the plugin, just use the Peertube web admin interface.
|
||||
|
||||
| Mode | Description | Documentation
|
||||
---|---|---
|
||||
**Prosody server controlled by Peertube (recommended)** | This plugin can launch a [Prosody](https://prosody.im) process and auto-configure it | [Prosody+Peertube installation](./prosody.md). **This is the recommanded mode, and is almost automatic to setup**
|
||||
**Connect to an existing XMPP server with ConverseJS** | You can use an external Jabber/XMPP server. This server has to provide BOSH or Websocket API, accept anonymous login, and accept room creation. | [ConverseJS+XMPP installation](./conversejs.md)
|
||||
**Use an external web chat tool** | You can use any external web chat tool, that can be included in an iframe. | [External chat installation](./external.md)
|
||||
## IMPORTANT NOTE
|
||||
|
||||
For the two first solutions, the connection to the XMPP server is made with the [converseJS](https://conversejs.org/) Javascript library.
|
||||
XMPP is a protocol for chat applications. It is sometime known has Jabber.
|
||||
Since version v6.0.0, this plugin does not need any Prosody installation.
|
||||
|
||||
There are some documentation for common settings here: [common settings documentation](./common.md).
|
||||
If you were using this plugin before this version, and if you had installed Prosody manually, you can safely uninstall Prosody.
|
||||
|
||||
If you were using the custom Peertube docker image that is embedding Prosody, you can switch back to the official Peertube image.
|
||||
|
@ -1,196 +0,0 @@
|
||||
# Prosody server controlled by Peertube
|
||||
|
||||
This is the recommended setup mode for this plugin.
|
||||
|
||||
Peertube will launch a [Prosody](https://prosody.im) process, with a custom configuration.
|
||||
|
||||
Prosody is a Free and Open Source XMPP/Jabber server software.
|
||||
|
||||
With this mode, the Peertube server will be able to communicate with the Prosody server, with following features:
|
||||
|
||||
- auto login: if a user is logged in on the Peertube instance, they will be automatically authenticated in the web chat
|
||||
- access rights: Peertube instance's administrators and moderators will automatically be owners of all created chat rooms.
|
||||
- access rights: the Peertube's user who has added the video will automatically be moderator on the chat room.
|
||||
- moderation tools will be enabled
|
||||
- it will not be possible to create a room that is not linked to a video
|
||||
- chat room will automatically get some informations from the video (title, ...)
|
||||
|
||||
## Prerequisite
|
||||
|
||||
### For standard Peertube installations
|
||||
|
||||
You have to install [Prosody](https://prosody.im) on your server:
|
||||
|
||||
```bash
|
||||
sudo apt-get install prosody
|
||||
```
|
||||
|
||||
If you are not using prosody for anything else on your server, you can then disabled it:
|
||||
|
||||
```bash
|
||||
sudo systemctl disable prosody && sudo systemctl stop prosody
|
||||
```
|
||||
|
||||
And that's it!
|
||||
|
||||
The Prosody process launched by the plugin will listen on a specific port, and only on the localhost interface.
|
||||
You don't have to open any external port on your firewall.
|
||||
The default local port will be 52800 and can be changed in the plugin settings.
|
||||
|
||||
### For Docker installations
|
||||
|
||||
In the docker-compose.yml file, replace the peertube service image
|
||||
`image: chocobozzz/peertube:production-bullseye` by `image: johnxlivingston/peertubelivechat:production-bullseye`.
|
||||
|
||||
And that's it!
|
||||
|
||||
You can find the source for this Dockerfile [here](../docker/Dockerfile.bullseye).
|
||||
|
||||
### Yunohost
|
||||
|
||||
Yunohost comes with the Metronome XMPP server. Metronome is an old fork of Prosody, but this plugin is not compatible.
|
||||
Unfortunately, the Metronome package conflicts with the Prosody package.
|
||||
You can not install both using debian packages.
|
||||
|
||||
These packages are conflicting, because the two services can not run simultanously (ports would conflict).
|
||||
|
||||
However, this plugin does not need the Prosody service to run. It will launch its own process, on non-standard ports.
|
||||
So you can easily build Prosody from sources, so that the plugin can use the executable.
|
||||
|
||||
The official documentation is here: [installing_from_source](https://prosody.im/doc/installing_from_source).
|
||||
Please refer to this link for up-to-date instructions.
|
||||
Here is a summary of the steps needed:
|
||||
|
||||
- create a folder where you will build prosody (anywhere in your home dir)
|
||||
- in this folder, follow the instructions from [installing_from_source](https://prosody.im/doc/installing_from_source):
|
||||
|
||||
```bash
|
||||
wget https://prosody.im/downloads/source/prosody-0.11.11.tar.gz # check on the official documentation if there is a newer version
|
||||
tar xzf prosody-0.11.11.tar.gz
|
||||
cd prosody-0.11.11
|
||||
sudo apt-get build-dep prosody # (this should work, even if Metronome is installed ; otherwise try: sudo apt install lua5.2 liblua5.2-dev libidn11-dev libssl-dev )
|
||||
./configure
|
||||
make
|
||||
sudo make install # should install Prosody in /usr/local.
|
||||
```
|
||||
|
||||
## Settings
|
||||
|
||||
### Chat mode
|
||||
|
||||
Just select «Prosody server controlled by Peertube» as chat mode.
|
||||
|
||||
### Room type
|
||||
|
||||
You can choose here to have separate rooms for each video, or to group them by channel.
|
||||
|
||||
#### Prosody port
|
||||
|
||||
This is the port that the Prosody server will use. By default it is set to 52800. If you want to use another port, just change the value here.
|
||||
|
||||
### Chat behaviour
|
||||
|
||||
These settings are common with other chat modes.
|
||||
Here is the documentation: [common settings](./common.md).
|
||||
|
||||
### Prosody advanced settings
|
||||
|
||||
#### Show the «share chat link» button
|
||||
|
||||
This feature enables a «share chat link» modal. With this modal, you can generate URLs to join the chat.
|
||||
The chat can be customized (readonly mode, use the current theme, ...).
|
||||
|
||||
You can for example generate a readonly URL and use it in OBS to integrate the chat in your live stream!
|
||||
|
||||
This settings allows you to choose who can access this modal.
|
||||
|
||||
#### Peertube URL for API calls
|
||||
|
||||
In some rare cases, Prosody can't call Peertube's API from its public URI.
|
||||
If you have such issues (see the diagnostic tool result), you can try to set the value
|
||||
of this settings to `http://localhost:9000` or `http://127.0.0.1:9000`
|
||||
(supposing your Peertube is listening on port `9000`. Check that in your Peertube `config/production.yaml` file).
|
||||
|
||||
#### Log rooms content by default
|
||||
|
||||
If checked, room content will be archived on the server by default.
|
||||
This means that users who join the chan will see messages sent before they have joined.
|
||||
|
||||
Please note that it is always possible to enable/disable the content logging for a specific room,
|
||||
by editing its properties.
|
||||
|
||||
#### Room logs expiration
|
||||
|
||||
You can set here the expiration delay for room logs.
|
||||
See the online help for accepted values.
|
||||
|
||||
#### Enable client to server connections
|
||||
|
||||
This setting enable XMPP clients to connect to the builtin Prosody server.
|
||||
For now, this option **only allows connections from localhost clients**.
|
||||
|
||||
As example, this option can allow an instance of Matterbridge (once it could use anonymous login) *on the same machine* to bridge your chat with another services like a Matrix room.
|
||||
|
||||
##### Prosody client to server port
|
||||
|
||||
The port that will be used by the c2s module of the builtin Prosody server.
|
||||
XMPP clients shall use this port to connect.
|
||||
Change it if this port is already in use on your server.
|
||||
|
||||
#### Enable external XMPP components
|
||||
|
||||
This settings enable XMPP external components to connect to the server.
|
||||
For now, this option **only allows connections from localhost components**.
|
||||
|
||||
This feature could be used to connect bridges or bots.
|
||||
|
||||
More informations on Prosody external components [here](https://prosody.im/doc/components).
|
||||
|
||||
## Moderation
|
||||
|
||||
You can access room settings and moderation tools by opening the chat in a new window,
|
||||
and using the dropdown menu at the top right.
|
||||
|
||||
You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms».
|
||||
|
||||
You can delete old rooms: join the room, and use the menu on the top to destroy the room.
|
||||
|
||||
## Notes
|
||||
|
||||
All instance moderators and admins will be owner of created chat rooms.
|
||||
If the video is local (not from a remote Peertube), the video owner will be admin in the chat room.
|
||||
|
||||
You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room.
|
||||
When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right.
|
||||
|
||||
## Advanced usages
|
||||
|
||||
### OBS Overlay
|
||||
|
||||
#### Using readonly chat URL
|
||||
|
||||
You can use the «share chat link» feature (see above) to generate an URL to your chat.
|
||||
Check the «readonly» checkbox in the modal.
|
||||
Then use this link as a «web browser source» in OBS.
|
||||
|
||||
You can use the «Transparent background» to have a transparent background in OBS.
|
||||
If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:
|
||||
|
||||
```css
|
||||
:root {
|
||||
--livechat-transparent: rgba(255 255 255 / 90%) !important;
|
||||
}
|
||||
```
|
||||
|
||||
Note: you can customize colors. This is undocumented yet, but you can try this:
|
||||
in the modal, check «use curent theme colors», then you can try to manually change color values in the URL.
|
||||
You must use valid CSS color values, and they must be properly URL encoded.
|
||||
|
||||
#### Using Matterbridge
|
||||
|
||||
Here is a tutorial to use Matterbridge with the plugin: <https://gitlab.com/refrac/obs-matterbridge-overlay/-/blob/master/documentation/peertube.md>
|
||||
|
||||
#### Mixing multiple chats in your live stream
|
||||
|
||||
You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream.
|
||||
The compatibility with this plugin was added in recent versions.
|
@ -1,266 +0,0 @@
|
||||
# Tutorial: quick setup for Prosody XMPP server on your Peertube's instance
|
||||
|
||||
**IMPORTANT NOTE:** This tutorial is not the best way to use this plugin. If you want to use the recommanded Prosody setup, please refer to [this](../installation.md) and [this](../prosody.md).
|
||||
|
||||
**IMPORTANT NOTE: if you are comming from the Framasoft blog post, the right documentation link is [this one](../prosody.md). There was a mistake in their post.**
|
||||
|
||||
## Abstract
|
||||
|
||||
This tutorial is meant to help you configure [Prosody](https://prosody.im)
|
||||
on your Peertube server.
|
||||
|
||||
This tutorial is for debian-like systems (debian, ubuntu, ...).
|
||||
It was tested with Debian 10 (Buster).
|
||||
|
||||
## Important notes about this tutorial
|
||||
|
||||
### File editor
|
||||
|
||||
I use the `editor` command to edit files. This is a command that switch to
|
||||
the configured editor («vi», «vim», «nano», ...).
|
||||
If you don't have the `editor` command, you can replace with your favorite
|
||||
editor command.
|
||||
To change the editor used by `editor`, you can do:
|
||||
|
||||
```bash
|
||||
sudo update-alternatives --config editor
|
||||
```
|
||||
|
||||
If you don't know which editor to choose, the Nano editor is often a good choice
|
||||
for non-sysadmin users.
|
||||
If you run `vi` or `vim` accidentaly and are stuck withing (that is a *very*
|
||||
common mistake), type `:q!` to exit.
|
||||
|
||||
## Step 1: install Prosody
|
||||
|
||||
Prosody is a XMPP server. XMPP is a communication protocol.
|
||||
It is a robust instant messaging protocol, used by many softwares.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y prosody
|
||||
```
|
||||
|
||||
## Step 2: configure Prosody
|
||||
|
||||
Prosody works with a «virtualhosts» mecanism. You can define multiple
|
||||
virtualhosts, each one having his own configuration.
|
||||
|
||||
**Imporante note**: some settings are global. If you have already a
|
||||
prosody installed (using it as a Jabber server, or because you installed Jisti),
|
||||
some settings may affect existing services. In such case, please read Prosody
|
||||
documentation and be sure to understand what you are doing.
|
||||
|
||||
First step, we are going to create a configuration file.
|
||||
|
||||
```bash
|
||||
sudo editor /etc/prosody/conf.avail/peertube.cfg.lua
|
||||
```
|
||||
|
||||
Then you can add this content to the file:
|
||||
|
||||
```lua
|
||||
-- these global settings can affect an existing Prosody installation.
|
||||
-- Use them with care.
|
||||
-- NB: prosody http will be behind the nginx reverse proxy.
|
||||
cross_domain_bosh = false;
|
||||
consider_bosh_secure = true;
|
||||
cross_domain_websocket = false;
|
||||
consider_websocket_secure = true;
|
||||
https_ports = {};
|
||||
trusted_proxies = { "127.0.0.1", "::1" }
|
||||
|
||||
VirtualHost "${PEERTUBE_DOMAIN}"
|
||||
authentication = "anonymous"
|
||||
allow_anonymous_s2s = false
|
||||
ssl = {
|
||||
key = "/etc/prosody/certs/${PEERTUBE_DOMAIN}.key";
|
||||
certificate = "/etc/prosody/certs/${PEERTUBE_DOMAIN}.crt";
|
||||
}
|
||||
modules_enabled = {
|
||||
"http";
|
||||
"bosh";
|
||||
"ping";
|
||||
-- TODO: does not work for now "websocket";
|
||||
}
|
||||
http_host = "${PEERTUBE_DOMAIN}"
|
||||
http_external_url = "http://${PEERTUBE_DOMAIN}"
|
||||
-- if you have an external XMPP account
|
||||
-- that you want to be moderator,
|
||||
-- uncomment this line and set your adress
|
||||
-- admins = { "admin@your_xmpp_provider_domain" }
|
||||
|
||||
Component "room.${PEERTUBE_DOMAIN}" "muc"
|
||||
-- if you have an external XMPP account
|
||||
-- that you want to be moderator,
|
||||
-- uncomment this line and set your adress
|
||||
-- admins = { "admin@your_xmpp_provider_domain" }
|
||||
|
||||
-- if you want room persistence, uncomment these lines
|
||||
-- (requires prosody>=0.11, for older version there is the mam_muc module)
|
||||
-- modules_enabled = { "muc_mam" }
|
||||
-- muc_log_by_default = true
|
||||
-- muc_log_presences = true
|
||||
-- log_all_rooms = true
|
||||
-- muc_log_expires_after = "1w"
|
||||
-- muc_log_cleanup_interval = 4 * 60 * 60
|
||||
|
||||
restrict_room_creation = "local"
|
||||
muc_room_locking = false
|
||||
muc_tombstones = false
|
||||
muc_room_default_language = "fr"
|
||||
muc_room_default_public = true
|
||||
muc_room_default_persistent = false
|
||||
muc_room_default_members_only = false
|
||||
muc_room_default_moderated = false
|
||||
muc_room_default_public_jids = false
|
||||
muc_room_default_change_subject = false
|
||||
muc_room_default_history_length = 20
|
||||
|
||||
```
|
||||
|
||||
You have to replace `${PEERTUBE_DOMAIN}` with your actual Peertube server
|
||||
domain name. You can do it by hand, or with the following command
|
||||
(replace `[peertube-domain]` with your domain):
|
||||
|
||||
```bash
|
||||
sudo sed -i 's/${PEERTUBE_DOMAIN}/[peertube-domain]/g' /etc/prosody/conf.avail/peertube.cfg.lua
|
||||
```
|
||||
|
||||
By default, if a chat room is empty, it content will be dropped.
|
||||
If you want to activate room persistence (chat room content will be kept even
|
||||
if there is no more users), uncomment the lines in the config file,
|
||||
and change the `muc_log_expires_after` parameter as you want. Please refer to
|
||||
the [muc_mam module documentation](https://prosody.im/doc/modules/mod_muc_mam).
|
||||
This requires Prosody >= 0.11. For older version, see
|
||||
[mam_muc](https://modules.prosody.im/mod_mam_muc.html).
|
||||
|
||||
We have now to activate this configuration file:
|
||||
|
||||
```bash
|
||||
sudo ln -s /etc/prosody/conf.avail/peertube.cfg.lua /etc/prosody/conf.d/
|
||||
```
|
||||
|
||||
You have now to import your ssl certificates from your web server.
|
||||
Prosody use a different certificate format than your web server.
|
||||
See [Prosody certificates documentation](https://prosody.im/doc/certificates)
|
||||
or [Prosody letsencrypt documentation](https://prosody.im/doc/letsencrypt)
|
||||
|
||||
**Important note**: This assume you are using letsencrypt certificates and
|
||||
`certbot` to update them.
|
||||
If you are using other certificates, you have to change the commande. Please
|
||||
reffer to the [Prosody](https://prosody.im) documentation
|
||||
([Prosody certificates documentation](https://prosody.im/doc/certificates)
|
||||
or [Prosody letsencrypt documentation](https://prosody.im/doc/letsencrypt)).
|
||||
|
||||
```bash
|
||||
sudo prosodyctl --root cert import /etc/letsencrypt/live/
|
||||
```
|
||||
|
||||
To do this automatically after each certificate renewall, you can create
|
||||
this file:
|
||||
|
||||
```bash
|
||||
sudo touch /etc/letsencrypt/renewal-hooks/deploy/prosody.sh
|
||||
sudo chmod u+x /etc/letsencrypt/renewal-hooks/deploy/prosody.sh
|
||||
sudo editor /etc/letsencrypt/renewal-hooks/deploy/prosody.sh
|
||||
```
|
||||
|
||||
With this content:
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
/usr/bin/prosodyctl --root cert import /etc/letsencrypt/live
|
||||
|
||||
```
|
||||
|
||||
You can now restart Prosody.
|
||||
|
||||
```bash
|
||||
sudo systemctl restart prosody
|
||||
```
|
||||
|
||||
And you can check prosody status with:
|
||||
|
||||
```bash
|
||||
sudo systemctl status prosody
|
||||
```
|
||||
|
||||
## Step 3: Configure nginx
|
||||
|
||||
Open your peertube's nginx config file:
|
||||
|
||||
```bash
|
||||
sudo editor /etc/nginx/sites-enabled/peertube
|
||||
```
|
||||
|
||||
At the end of the `server { ... }` section, **just before the final curly bracket (`}`)**
|
||||
(assuming you have no custom modification in this file), add:
|
||||
|
||||
```nginx
|
||||
location /http-bind {
|
||||
proxy_pass http://localhost:5280/http-bind;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_buffering off;
|
||||
tcp_nodelay on;
|
||||
}
|
||||
|
||||
location /xmpp-websocket {
|
||||
proxy_pass http://localhost:5280/xmpp-websocket;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_read_timeout 900s;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Save the file, and reload nginx:
|
||||
|
||||
```bash
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
## Step 4: Configure the plugin
|
||||
|
||||
**NB**: If you have not installed peertube-plugin-livechat it is time to do so
|
||||
now.
|
||||
|
||||
Now log in to your peertube instance, and go to the plugin settings page
|
||||
(/admin/plugins/show/peertube-plugin-livechat).
|
||||
Change settings has you want (`Automatically open the chat`, ...).
|
||||
|
||||
Check `Use builtin ConverseJS`.
|
||||
|
||||
Set `Builtin webchat: XMPP service server` to `PEERTUBE_DOMAIN`,
|
||||
replacing `PEERTUBE_DOMAIN` by your actual peertube domain.
|
||||
Don't add `https://` before, you should only set your domain (example.com).
|
||||
|
||||
Set `Builtin webchat: XMPP room template` to something like
|
||||
`video_{{VIDEO_UUID}}@room.PEERTUBE_DOMAIN`, once again by replacing
|
||||
`PEERTUBE_DOMAIN` by your actual peertube domain.
|
||||
|
||||
Set `Builtin webchat: BOSH uri` to `https://PEERTUBE_DOMAIN/http-bind`
|
||||
(you got the point... replace `PEERTUBE_DOMAIN` by your actual peertube domain).
|
||||
|
||||
**TODO: does not work for now**
|
||||
~~Set `Builtin webchat: WS uri` to `wss://PEERTUBE_DOMAIN/xmpp-websocket`
|
||||
(/!\\ the scheme is `wss`, not `https`!).~~
|
||||
|
||||
Save the settings.
|
||||
|
||||
That's it!
|
||||
|
||||
## TODOs
|
||||
|
||||
* TODO: mention that the first user will be granted with moderator rights and
|
||||
how to handle this.
|
||||
* TODO: how to open with jabber clients (or prevent that).
|
||||
* TODO: firewall configuration.
|
||||
* TODO: talk about security issues
|
||||
(for now, rooms can be created without restriction).
|
||||
* TODO: talk about legal notices (specially in case of persistent rooms).
|
@ -1 +0,0 @@
|
||||
TODO: Diese Dokumentation ist im Moment noch nicht fertig.
|
@ -1 +0,0 @@
|
||||
Cette documentation n'est malheureusement pas encore prête.
|
@ -1 +1,46 @@
|
||||
TODO: this documentation is not ready for now.
|
||||
# User documentation
|
||||
|
||||
## Moderation
|
||||
|
||||
You can access room settings and moderation tools by opening the chat in a new window,
|
||||
and using the dropdown menu at the top right.
|
||||
|
||||
You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms».
|
||||
|
||||
You can delete old rooms: join the room, and use the menu on the top to destroy the room.
|
||||
|
||||
### Notes
|
||||
|
||||
All instance moderators and admins will be owner of created chat rooms.
|
||||
If the video is local (not from a remote Peertube), the video owner will be admin in the chat room.
|
||||
|
||||
You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room.
|
||||
When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right.
|
||||
|
||||
## OBS Overlay
|
||||
|
||||
If you are using OBS for streaming, you can easily include the chat in your stream.
|
||||
|
||||
You can use the «share chat link» feature to generate an URL to your chat.
|
||||
The button should be near the chat if you are the video owner (unless it was desactivated by your server admins).
|
||||
|
||||
Check the «readonly» checkbox in the modal.
|
||||
Then use this link as a «web browser source» in OBS.
|
||||
|
||||
You can use the «Transparent background» to have a transparent background in OBS.
|
||||
If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:
|
||||
|
||||
```css
|
||||
:root {
|
||||
--livechat-transparent: rgba(255 255 255 / 90%) !important;
|
||||
}
|
||||
```
|
||||
|
||||
Note: you can customize colors. This is undocumented yet, but you can try this:
|
||||
in the modal, check «use curent theme colors», then you can try to manually change color values in the URL.
|
||||
You must use valid CSS color values, and they must be properly URL encoded.
|
||||
|
||||
### Mixing multiple chats in your live stream
|
||||
|
||||
You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream.
|
||||
The compatibility with this plugin was added in recent versions.
|
||||
|
@ -243,7 +243,8 @@ You can close this port on your firewall, it will not be accessed from the outer
|
||||
descriptionHTML:
|
||||
`Please let this settings empty if you don't know what you are doing.<br>
|
||||
In some rare case, Prosody can't call Peertube's API from its public URI.
|
||||
You can use this field to customise Peertube's URI for Prosody modules (for example with «http://localhost:9000»).`
|
||||
You can use this field to customise Peertube's URI for Prosody modules
|
||||
(for example with «http://localhost:9000» or «http://127.0.0.1:9000»).`
|
||||
})
|
||||
|
||||
registerSetting({
|
||||
|
Loading…
Reference in New Issue
Block a user