Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
services:conduwuit [2025/02/02 06:52] – willy | services:conduwuit [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Conduwuit ====== | ||
- | |||
- | [[https:// | ||
- | |||
- | I will show you also how to install Element Web app which is a nice companion for web access everywhere. | ||
- | |||
- | ===== Installation of Conduwuit server ===== | ||
- | |||
- | Installation instructions: | ||
- | |||
- | Create user and required folders: | ||
- | <code bash> | ||
- | seradd -d / | ||
- | mkdir -p / | ||
- | chown conduwuit: | ||
- | </ | ||
- | |||
- | Download the correct executable from [[https:// | ||
- | <code bash> | ||
- | su - conduwuit | ||
- | mkdir bin | ||
- | cd bin | ||
- | wget https:// | ||
- | </ | ||
- | |||
- | ===== Installation of Element Web app ===== | ||
- | |||
- | Element Web app is a great web based UI for Matrix, that you can pair to your instance. | ||
- | |||
- | Again installing bare-metal is the way to go. See [[https:// | ||
- | |||
- | Download latest release tarball from [[https:// | ||
- | <code bash> | ||
- | su - conduwuit | ||
- | wget https:// | ||
- | tar xvf element-<< | ||
- | ln -s element-<< | ||
- | </ | ||
- | |||
- | |||
- | ===== Configuration of Conduwuit server ===== | ||
- | |||
- | The official Conduwuit configuration documentation can be found [[https:// | ||
- | |||
- | Now, you cannot start Conduwuit withour a proper configuration file. I suggest you to put it under **/ | ||
- | <file / | ||
- | [global] | ||
- | server_name = " | ||
- | address = [" | ||
- | port = 6167 | ||
- | database_path = "/ | ||
- | new_user_displayname_suffix = " | ||
- | allow_check_for_updates = false | ||
- | max_request_size = 20971520 # this should match NGINX max request size | ||
- | #log = " | ||
- | #log_colors = true | ||
- | # | ||
- | |||
- | [global.well_known] | ||
- | client = " | ||
- | server = " | ||
- | </ | ||
- | |||
- | You are now ready for testing your installation. | ||
- | |||
- | ===== Configuration of Element Web App ===== | ||
- | |||
- | Rename the file called **config.sample.json** to **config.json** inside the // | ||
- | <code bash> | ||
- | cd / | ||
- | cp config.sample.json / | ||
- | ln -s / | ||
- | </ | ||
- | |||
- | At the very least perform the following edits: | ||
- | < | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | }, | ||
- | " | ||
- | " | ||
- | </ | ||
- | |||
- | at the beginning of the file. I suggest to disable both custom URLs and guests, to avoid your web instance to be used too openly. Please note that this **does not mean** that your instance will be used: Element X is a javascript app that works in the browser of the use anyway. | ||
- | |||
- | |||
- | ===== Manual startup ===== | ||
- | |||
- | to run Conduwuit server, run the following command as **conduwuit** user: | ||
- | <code bash> | ||
- | / | ||
- | </ | ||
- | |||
- | Of course, replace the proper paths and filenames with your setup. | ||
- | |||
- | Running manually is good because you can easily access the admin console by typing **CTRL+C** from the terminal. You might want to take this opportunity to create your first user, and make it an admin too. | ||
- | |||
- | ===== Testing ===== | ||
- | |||
- | Call directly this endpoint: | ||
- | <code bash> | ||
- | curl https:// | ||
- | {" | ||
- | </ | ||
- | |||
- | Check federation and Matrix operability, | ||
- | < | ||
- | https:// | ||
- | </ | ||
- | |||
- | |||
- | ===== Reverse proxy ===== | ||
- | |||
- | A Matrix server must be hosted on a dedicated subdomain. Please see my [[selfhost: | ||
- | |||
- | <file - chat.conf> | ||
- | server { | ||
- | server_name chat.mydomain.com; | ||
- | listen 8443 ssl; # external access | ||
- | listen 443 ssl; # internal access | ||
- | |||
- | access_log / | ||
- | error_log / | ||
- | |||
- | location / { | ||
- | root / | ||
- | } | ||
- | |||
- | location ~ ^(/ | ||
- | add_header ' | ||
- | proxy_pass http:// | ||
- | #proxy_pass http:// | ||
- | proxy_set_header X-Forwarded-For $remote_addr; | ||
- | proxy_set_header X-Forwarded-Proto $scheme; | ||
- | proxy_set_header Host $host; | ||
- | proxy_buffering off; | ||
- | client_max_body_size 30M; | ||
- | proxy_read_timeout 10m; | ||
- | proxy_http_version 1.1; | ||
- | } | ||
- | |||
- | location / | ||
- | return 200 ' | ||
- | types { } default_type " | ||
- | } | ||
- | |||
- | location / | ||
- | return 200 ' | ||
- | types { } default_type " | ||
- | add_header " | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Adding users ===== | ||
- | |||
- | From the Contuwuit admin console, which can be accessed by running the conduwuit binary in a terminl then hit **CTRL+C**, you can do a lot of admin stuff, including creating new users. | ||
- | |||
- | To create a user: | ||
- | < | ||
- | uwu> admin users create-user myuser mypassword | ||
- | </ | ||
- | |||
- | To make a user an admin: | ||
- | < | ||
- | uwu> admin users make-user-admin myuser | ||
- | </ | ||
- | |||
- | To change a user password: | ||
- | < | ||
- | uwu> admin users reset-password myuser mynewpassword | ||
- | </ | ||
- | |||
- | You **must** create at least one user and make it admin! | ||
- | |||
- | |||
- | ===== Autostart ===== | ||
- | |||
- | Since i use OpenRC, simply drop the following script to / | ||
- | <file - / | ||
- | # | ||
- | # Copyright 2025 Gentoo Authors | ||
- | # Distributed under the terms of the GNU General Public License v2 | ||
- | |||
- | name=" | ||
- | description=" | ||
- | pidfile="/ | ||
- | command_background=true | ||
- | command="/ | ||
- | command_args=" | ||
- | command_user=" | ||
- | |||
- | depend() { | ||
- | need net | ||
- | } | ||
- | </ | ||
- | |||
- | Make it executable and add to the proper runlevel: | ||
- | <code bash> | ||
- | chmod +x / | ||
- | rc-update add conduwuit default | ||
- | </ | ||
- | |||
- | ===== Installing the Telegram Bridge ===== | ||
- | |||
- | The Mautrix Telegram bridge is currently the best (only?) option. More info | ||
- | [[https:// | ||
- | |||
- | Create subfolder and Python venv inside (see [[gentoo: | ||
- | <code bash> | ||
- | su - conduwuit | ||
- | mkdir mautrix-telegram | ||
- | cd mautrix-telegram | ||
- | # Enable PIP like in the link above | ||
- | # - create ~/ | ||
- | # - add ~/ | ||
- | python -m venv . # Note the dot at the end! | ||
- | source ./ | ||
- | # Now flip include-system-site-packages = true in pyvenv.cfg | ||
- | # Install: | ||
- | pip install --upgrade mautrix-telegram[all] | ||
- | </ | ||
- | |||
- | You need to create API keys to connect to Telegram. Go to [[https:// | ||
- | Grab the example config file [[https:// | ||
- | <code bash> | ||
- | wget -O / | ||
- | ln -d / | ||
- | </ | ||
- | |||
- | This file is huge, here are the most relevant changes needed: | ||
- | <file - config.yaml> | ||
- | homeserver: | ||
- | address: https:// | ||
- | domain: chat.mydomain.com | ||
- | verify_ssl: true | ||
- | database: sqlite:/ | ||
- | as_token: "put your id here" | ||
- | hs_token: "put your hash" | ||
- | </ | ||
- | |||
- | More details on configuration can be found [[https:// | ||
- | |||
- | |||
- | Next steps: | ||
- | - registering the appservice https:// | ||
- | - enabling it and use it | ||
- | - https:// | ||
- | - https:// |