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:
John Livingston 2022-11-15 18:04:51 +01:00
parent 3ba64d3732
commit 187d8be87f
No known key found for this signature in database
GPG Key ID: B17B5640CE66CDBC
28 changed files with 234 additions and 959 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -1,3 +0,0 @@
FROM chocobozzz/peertube:production-bullseye
RUN apt -y update && apt install -y prosody && apt -y clean

View File

@ -1,3 +0,0 @@
FROM chocobozzz/peertube:production-buster
RUN apt -y update && apt install -y prosody && apt -y clean

View File

@ -1 +0,0 @@
TODO: Diese Dokumentation ist im Moment noch nicht fertig.

View File

@ -1 +0,0 @@
Cette documentation n'est malheureusement pas encore prête.

View File

@ -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>

View File

@ -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.

View File

@ -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).

View File

@ -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
```

View File

@ -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>

View File

@ -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>

View File

@ -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
}

View File

@ -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

View File

@ -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).

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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).

View File

@ -1 +0,0 @@
TODO: Diese Dokumentation ist im Moment noch nicht fertig.

View File

@ -1 +0,0 @@
Cette documentation n'est malheureusement pas encore prête.

View File

@ -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.

View File

@ -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({