diff options
| author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2021-08-02 16:06:04 -0400 |
|---|---|---|
| committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2021-08-02 17:23:30 -0400 |
| commit | 10f554700c417b84c22c56fdd007567a52c45d75 (patch) | |
| tree | 7a29433e67959982feecfd6fba05ad26a632a3a7 /doc | |
| parent | 0ae0d8b4ce006797967b602ab2b2e61c24594f2f (diff) | |
Reinstate "services: Add a service for Jami."
This reverts commit 4673f817938d9d2b1b40a072ab2e0c44a32ccc97, which reverted
commit 69dcc24c9f0cdfea674eb690e7755d26a25ced2b with the fix detailed below.
Thanks to Christopher Baines for reporting the failure and proposing a fix.
* guix/self.scm (compiled-guix) [*system-test-modules*]: Add the test data
files via the 'extra-files' argument.
* gnu/local.mk (dist_patch_DATA): Move the tests/data/jami-dummy-account.dat
file to...
* gnu/local.mk (MODULES_NOT_COMPILED): ... here.
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/guix.texi | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 2298d512a1e..9a9c85678c2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi | |||
| @@ -22526,6 +22526,234 @@ and Error. | |||
| 22526 | @node Telephony Services | 22526 | @node Telephony Services |
| 22527 | @subsection Telephony Services | 22527 | @subsection Telephony Services |
| 22528 | 22528 | ||
| 22529 | @cindex telephony, services | ||
| 22530 | The @code{(gnu services telephony)} module contains Guix service | ||
| 22531 | definitions for telephony services. Currently it provides the following | ||
| 22532 | services: | ||
| 22533 | |||
| 22534 | @subsubheading Jami | ||
| 22535 | |||
| 22536 | @cindex jami, service | ||
| 22537 | |||
| 22538 | This section describes how to configure a Jami server that can be used | ||
| 22539 | to host video (or audio) conferences, among other uses. The following | ||
| 22540 | example demonstrates how to specify Jami account archives (backups) to | ||
| 22541 | be provisioned automatically: | ||
| 22542 | |||
| 22543 | @lisp | ||
| 22544 | (service jami-service-type | ||
| 22545 | (jami-configuration | ||
| 22546 | (accounts | ||
| 22547 | (list (jami-account | ||
| 22548 | (archive "/etc/jami/unencrypted-account-1.gz")) | ||
| 22549 | (jami-account | ||
| 22550 | (archive "/etc/jami/unencrypted-account-2.gz")))))) | ||
| 22551 | @end lisp | ||
| 22552 | |||
| 22553 | When the accounts field is specified, the Jami account files of the | ||
| 22554 | service found under @file{/var/lib/jami} are recreated every time the | ||
| 22555 | service starts. | ||
| 22556 | |||
| 22557 | Jami accounts and their corresponding backup archives can be generated | ||
| 22558 | using either the @code{jami-qt} or @code{jami-gnome} Jami clients. The | ||
| 22559 | accounts should not be password-protected, but it is wise to ensure | ||
| 22560 | their files are only readable by @samp{root}. | ||
| 22561 | |||
| 22562 | The next example shows how to declare that only some contacts should be | ||
| 22563 | allowed to communicate with a given account: | ||
| 22564 | |||
| 22565 | @lisp | ||
| 22566 | (service jami-service-type | ||
| 22567 | (jami-configuration | ||
| 22568 | (accounts | ||
| 22569 | (list (jami-account | ||
| 22570 | (archive "/etc/jami/unencrypted-account-1.gz") | ||
| 22571 | (peer-discovery? #t) | ||
| 22572 | (rendezvous-point? #t) | ||
| 22573 | (allowed-contacts | ||
| 22574 | '("1dbcb0f5f37324228235564b79f2b9737e9a008f" | ||
| 22575 | "2dbcb0f5f37324228235564b79f2b9737e9a008f"))))))) | ||
| 22576 | @end lisp | ||
| 22577 | |||
| 22578 | In this mode, only the declared @code{allowed-contacts} can initiate | ||
| 22579 | communication with the Jami account. This can be used, for example, | ||
| 22580 | with rendezvous point accounts to create a private video conferencing | ||
| 22581 | space. | ||
| 22582 | |||
| 22583 | To put the system administrator in full control of the conferences | ||
| 22584 | hosted on their system, the Jami service supports the following actions: | ||
| 22585 | |||
| 22586 | @example sh | ||
| 22587 | # herd doc jami list-actions jami | ||
| 22588 | (list-accounts | ||
| 22589 | list-account-details | ||
| 22590 | list-banned-contacts | ||
| 22591 | list-contacts | ||
| 22592 | list-moderators | ||
| 22593 | add-moderator | ||
| 22594 | ban-contact | ||
| 22595 | enable-account | ||
| 22596 | disable-account) | ||
| 22597 | @end example | ||
| 22598 | |||
| 22599 | The above actions aim to provide the most valuable actions for | ||
| 22600 | moderation purposes, not to cover the whole Jami API. Users wanting to | ||
| 22601 | interact with the Jami daemon from Guile may be interested in | ||
| 22602 | experimenting with the @code{(gnu build jami-service)} module, which | ||
| 22603 | powers the above Shepherd actions. | ||
| 22604 | |||
| 22605 | @c TODO: This should be auto-generated from the doc already defined on | ||
| 22606 | @c the shepherd-actions themselves in (gnu services telephony). | ||
| 22607 | The @code{add-moderator} and @code{ban-contact} actions accept a contact | ||
| 22608 | @emph{fingerprint} (40 characters long hash) as first argument and an | ||
| 22609 | account fingerprint or username as second argument: | ||
| 22610 | |||
| 22611 | @example sh | ||
| 22612 | # herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f \ | ||
| 22613 | f3345f2775ddfe07a4b0d95daea111d15fbc1199 | ||
| 22614 | |||
| 22615 | # herd list-moderators jami | ||
| 22616 | Moderators for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: | ||
| 22617 | - 1dbcb0f5f37324228235564b79f2b9737e9a008f | ||
| 22618 | |||
| 22619 | @end example | ||
| 22620 | |||
| 22621 | In the case of @code{ban-contact}, the second username argument is | ||
| 22622 | optional; when omitted, the account is banned from all Jami accounts: | ||
| 22623 | |||
| 22624 | @example sh | ||
| 22625 | # herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f | ||
| 22626 | |||
| 22627 | # herd list-banned-contacts jami | ||
| 22628 | Banned contacts for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: | ||
| 22629 | - 1dbcb0f5f37324228235564b79f2b9737e9a008f | ||
| 22630 | |||
| 22631 | @end example | ||
| 22632 | |||
| 22633 | Banned contacts are also stripped from their moderation privileges. | ||
| 22634 | |||
| 22635 | The @code{disable-account} action allows to completely disconnect an | ||
| 22636 | account from the network, making it unreachable, while | ||
| 22637 | @code{enable-account} does the inverse. They accept a single account | ||
| 22638 | username or fingerprint as first argument: | ||
| 22639 | |||
| 22640 | @example sh | ||
| 22641 | # herd disable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199 | ||
| 22642 | |||
| 22643 | # herd list-accounts jami | ||
| 22644 | The following Jami accounts are available: | ||
| 22645 | - f3345f2775ddfe07a4b0d95daea111d15fbc1199 (dummy) [disabled] | ||
| 22646 | |||
| 22647 | @end example | ||
| 22648 | |||
| 22649 | The @code{list-account-details} action prints the detailed parameters of | ||
| 22650 | each accounts in the Recutils format, which means the @command{recsel} | ||
| 22651 | command can be used to select accounts of interest (@pxref{Selection | ||
| 22652 | Expressions,,,recutils, GNU recutils manual}). Note that period | ||
| 22653 | characters (@samp{.}) found in the account parameter keys are mapped to | ||
| 22654 | underscores (@samp{_}) in the output, to meet the requirements of the | ||
| 22655 | Recutils format. The following example shows how to print the account | ||
| 22656 | fingerprints for all accounts operating in the rendezvous point mode: | ||
| 22657 | |||
| 22658 | @example sh | ||
| 22659 | # herd list-account-details jami | \ | ||
| 22660 | recsel -p Account.username -e 'Account.rendezVous ~ "true"' | ||
| 22661 | Account_username: f3345f2775ddfe07a4b0d95daea111d15fbc1199 | ||
| 22662 | @end example | ||
| 22663 | |||
| 22664 | The remaining actions should be self-explanatory. | ||
| 22665 | |||
| 22666 | The complete set of available configuration options is detailed below. | ||
| 22667 | |||
| 22668 | @c TODO: Ideally, the following fragments would be auto-generated at | ||
| 22669 | @c build time, so that they needn't be manually duplicated. | ||
| 22670 | @c Auto-generated via (configuration->documentation 'jami-configuration) | ||
| 22671 | @deftp {Data Type} jami-configuration | ||
| 22672 | Available @code{jami-configuration} fields are: | ||
| 22673 | |||
| 22674 | @table @asis | ||
| 22675 | @item @code{jamid} (default: @code{libring}) (type: package) | ||
| 22676 | The Jami daemon package to use. | ||
| 22677 | |||
| 22678 | @item @code{dbus} (default: @code{dbus}) (type: package) | ||
| 22679 | The D-Bus package to use to start the required D-Bus session. | ||
| 22680 | |||
| 22681 | @item @code{nss-certs} (default: @code{nss-certs}) (type: package) | ||
| 22682 | The nss-certs package to use to provide TLS certificates. | ||
| 22683 | |||
| 22684 | @item @code{enable-logging?} (default: @code{#t}) (type: boolean) | ||
| 22685 | Whether to enable logging to syslog. | ||
| 22686 | |||
| 22687 | @item @code{debug?} (default: @code{#f}) (type: boolean) | ||
| 22688 | Whether to enable debug level messages. | ||
| 22689 | |||
| 22690 | @item @code{auto-answer?} (default: @code{#f}) (type: boolean) | ||
| 22691 | Whether to force automatic answer to incoming calls. | ||
| 22692 | |||
| 22693 | @item @code{accounts} (default: @code{disabled}) (type: maybe-jami-account-list) | ||
| 22694 | A list of Jami accounts to be (re-)provisioned every time the Jami | ||
| 22695 | daemon service starts. When providing this field, the account | ||
| 22696 | directories under @file{/var/lib/jami/} are recreated every time the | ||
| 22697 | service starts, ensuring a consistent state. | ||
| 22698 | |||
| 22699 | @end table | ||
| 22700 | |||
| 22701 | @end deftp | ||
| 22702 | |||
| 22703 | @c Auto-generated via (configuration->documentation 'jami-account) | ||
| 22704 | @deftp {Data Type} jami-account | ||
| 22705 | Available @code{jami-account} fields are: | ||
| 22706 | |||
| 22707 | @table @asis | ||
| 22708 | @item @code{archive} (type: string-or-computed-file) | ||
| 22709 | The account archive (backup) file name of the account. This is used to | ||
| 22710 | provision the account when the service starts. The account archive | ||
| 22711 | should @emph{not} be encrypted. It is highly recommended to make it | ||
| 22712 | readable only to the @samp{root} user (i.e., not in the store), to guard | ||
| 22713 | against leaking the secret key material of the Jami account it contains. | ||
| 22714 | |||
| 22715 | @item @code{allowed-contacts} (default: @code{disabled}) (type: maybe-account-fingerprint-list) | ||
| 22716 | The list of allowed contacts for the account, entered as their 40 | ||
| 22717 | characters long fingerprint. Messages or calls from accounts not in | ||
| 22718 | that list will be rejected. When unspecified, the configuration of the | ||
| 22719 | account archive is used as-is with respect to contacts and public | ||
| 22720 | inbound calls/messaging allowance, which typically defaults to allow any | ||
| 22721 | contact to communicate with the account. | ||
| 22722 | |||
| 22723 | @item @code{moderators} (default: @code{disabled}) (type: maybe-account-fingerprint-list) | ||
| 22724 | The list of contacts that should have moderation privileges (to ban, | ||
| 22725 | mute, etc. other users) in rendezvous conferences, entered as their 40 | ||
| 22726 | characters long fingerprint. When unspecified, the configuration of the | ||
| 22727 | account archive is used as-is with respect to moderation, which | ||
| 22728 | typically defaults to allow anyone to moderate. | ||
| 22729 | |||
| 22730 | @item @code{rendezvous-point?} (default: @code{disabled}) (type: maybe-boolean) | ||
| 22731 | Whether the account should operate in the rendezvous mode. In this | ||
| 22732 | mode, all the incoming audio/video calls are mixed into a conference. | ||
| 22733 | When left unspecified, the value from the account archive prevails. | ||
| 22734 | |||
| 22735 | @item @code{peer-discovery?} (default: @code{disabled}) (type: maybe-boolean) | ||
| 22736 | Whether peer discovery should be enabled. Peer discovery is used to | ||
| 22737 | discover other OpenDHT nodes on the local network, which can be useful | ||
| 22738 | to maintain communication between devices on such network even when the | ||
| 22739 | connection to the the Internet has been lost. When left unspecified, | ||
| 22740 | the value from the account archive prevails. | ||
| 22741 | |||
| 22742 | @item @code{bootstrap-hostnames} (default: @code{disabled}) (type: maybe-string-list) | ||
| 22743 | A list of hostnames or IPs pointing to OpenDHT nodes, that should be | ||
| 22744 | used to initially join the OpenDHT network. When left unspecified, the | ||
| 22745 | value from the account archive prevails. | ||
| 22746 | |||
| 22747 | @item @code{name-server-uri} (default: @code{disabled}) (type: maybe-string) | ||
| 22748 | The URI of the name server to use, that can be used to retrieve the | ||
| 22749 | account fingerprint for a registered username. | ||
| 22750 | |||
| 22751 | @end table | ||
| 22752 | |||
| 22753 | @end deftp | ||
| 22754 | |||
| 22755 | @subsubheading Murmur (VoIP server) | ||
| 22756 | |||
| 22529 | @cindex Murmur (VoIP server) | 22757 | @cindex Murmur (VoIP server) |
| 22530 | @cindex VoIP server | 22758 | @cindex VoIP server |
| 22531 | This section describes how to set up and run a Murmur server. Murmur is | 22759 | This section describes how to set up and run a Murmur server. Murmur is |
