Editing
Telodendria
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
[[Category:Server software]] '''[https://telodendria.io Telodendria]''' (also known as '''Telo''') is a Matrix [[Homeserver|homeserver]] in alpha written in C99 (previously C89)<ref>Cytoplasm, which Telodendria depends on [https://git.telodendria.io/Telodendria/Cytoplasm/issues/28 has switched to using C99 features]</ref>, that aims to extremely powerful yet lightweight, while all being as POSIX-compliant as possible. Telodendria is still in heavy development and isn't excepting a non-federating release until January 2025<ref>[https://git.telodendria.io/Telodendria/Telodendria Telodendria README]</ref>. == Configuring Telodendria == Telodendria essentially uses the filesystem as a database, and as such, you need to point it to an existing directory with the <code>-d [dir]</code> flag, like <code>telodendria -d data</code>. From that directory, several things are stored, including the actual data Telodendria has to save in order to act as a Matrix homeserver, log files, and the configuration, as <code>[dir]/config.json</code>. === Modifying the configuration === {{Note|More information is available at Telodendria's wiki page on [https://git.telodendria.io/Telodendria/Telodendria/src/branch/master/docs/user/config.md configuration]}} The configuration is stored in a JSON file called <code>[dir]/config.json</code>, which contains the following properties: * <code>listen</code>: A required object list (Telodendria supports multiple listeners) storing ''where'' Telodendria should listen for requests: ** <code>port</code>: A required integer (between 1 and 65535) representing what port Telodendria listens to. ** <code>maxConnections</code>: An optional integer, defining the maximal amount of connections the listener should accept, which is 32 by default. You should play around, and see what values work the best for your loads. ** <code>threads</code>: An optional integer, defining the amount of threads the listener sets up, which is 4 by default. You should play around, and see what values work the best for your loads. ** <code>tls</code>: An optional object, containing both <code>cert</code> and <code>key</code>, which are both required paths to your certificate and key, in the format excepted by your TLS library. * <code>log</code>: A required object storing how Telodendria should log: ** <code>output</code>: An enum, storing where Telodendria should log: *** <code>"stdout"</code>: Write to the standard output. *** <code>"syslog"</code>: Write to the system logger. *** <code>"file"</code>: Write to the <code>[dir]/telodendria.log</code> file. ** <code>level</code>: An enum, storing the minimum level of severity for Telodendria to log an event: *** <code>"message"</code> *** <code>"debug"</code> *** <code>"notice"</code> *** <code>"warning"</code> *** <code>"error"</code> ** <code>timestampFormat</code>: Represents the format Telodendria uses to write time information (see <code>strftime</code> for more). ** <code>color</code>: A boolean, determining whenever color should be enabled, whenever possible (if on an ANSI terminal) * <code>runAs</code>: An object, that determines what user (<code>uid</code> as username) and role (<code>gid</code> as rolename) to run as if running as UID 0 (<code>root</code> in most systems) * <code>serverName</code>: A required string, representing the server's name to the federation (see [[Delegation]]) * <code>baseUrl</code>: The URL used to prefix Matrix requests, when delegated * <code>pid</code>: An optional PID file Telodendria creates and writes it's PID to when running. * <code>federation</code>: A required boolean, used to determing whenever the server handles federation. * <code>registration</code>: A required boolean, used to determing whenever the server supports open registration. Please note registration tokens do bypass this. * <code>maxCache</code>: An optional integer, denoting how much cache to setup for the database in bytes, set to 0 by default. * <code>identityServer</code>: An optional [[Identity server|identity server]] to advertise. == Compiling Telodendria from Git == Telodendria only needs a few dependencies: Cytoplasm (which can be built at the same time), a POSIX-compliant <code>libc</code> (with pthread support), and an optional TLS library (OpenSSL/LibreSSL). To build it, you can first install Cytoplasm if your distribution supports it. On Arch, you can use the AUR to install <code>cytoplasm-git</code>. Then, clone and setup Telodendria with the following<syntaxhighlight lang="shell-session"> $ git clone https://git.telodendria.io/Telodendria/Telodendria # use --recurse-submodules if Cytoplasm wasn't already installed $ cd Telodendria # If Cytoplasm wasn't already installed $ cd Cytoplasm $ ./configure # --disable-tls if you do not have OpenSSL or LibreSSL $ make # You can use -j[jobs] there $ cd .. </syntaxhighlight> Now, build it with<syntaxhighlight lang="shell-session"> $ ./configure # in the Telodendria directory $ make # You can use -j[jobs] here </syntaxhighlight> If you didn't already install Cytoplasm, make sure to either move the generated shared library (<code>Cytoplasm/out/lib/libCytoplasm.so</code>) to a standard search path by using <code>make install</code>, or add its directory to <code>LD_LIBRARY_PATH</code> for testing. Then, to test that Telodendria works, one can run on its directory <syntaxhighlight lang="shell-session"> $ ./out/bin/telodendria </syntaxhighlight> It should log <code>No database directory specified.</code> before shutting down. == Administration API == {{Note|More information is available at Telodendria's wiki page on [https://git.telodendria.io/Telodendria/Telodendria/src/branch/master/docs/user/admin its admin API]}} Telodendria uses a custom admin API, accessible from <code>/_telodendria/admin/v1</code> (note that endpoints here will use this as a base, so <code>/_telodendria/admin/v1/foo</code> will just be <code>/foo</code>). Unlike [[Synapse]], there are multiple "privileges", allowing fine-grained control over what admins can do<ref name="privileges">https://git.telodendria.io/Telodendria/Telodendria/src/branch/master/docs/user/admin/privileges.md</ref>: * <code>DEACTIVATE</code>: Allows an user to deactivate other users with '''POST''' <code>/deactivate/[local]</code> * <code>ISSUE_TOKENS</code>: Allows an user to issue registration tokens to other users (which can be used to give users specific privileges). * <code>GRANT_PRIVILEGES</code>: Allows an user to change other users' privileges with '''GET|POST|PUT|DELETE''' <code>/privileges/[local]</code><ref name="privileges"/>. * <code>CONFIG</code>: Allows an user to change Telodendria's configuration without touching the database directly with '''GET|POST|PUT''' <code>/config</code>. * <code>ALIAS</code>: Allows an user to manage the server's room aliases. * <code>PROC_CONTROL</code>: Allows an user to manage Telodendria's process (by "soft-restarting" or stopping it) and view statistics. * <code>ALL</code>: Allows an user to do ''any'' admin actions, which is equivalent to giving a user admin access in Synapse. == References == <references />
Summary:
Please note that all contributions to IM Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
IM Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
Edit source
View history
More
Search
Navigation
Main page
Recent changes
All pages
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information