app: Conduit

This commit is contained in:
Сергей Кодолов 2023-05-08 16:17:31 +03:00
parent e705fa05fc
commit 8377c72d60
7 changed files with 210 additions and 0 deletions

View File

@ -15,6 +15,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
- [Chatpad AI](https://github.com/deiucanta/chatpad) - Not just another ChatGPT user-interface!
- [Code-Server](https://github.com/coder/code-server) - Web VS Code
- [Codex.Docs](https://github.com/codex-team/codex.docst) - Free Docs app powered by Editor.js ecosystem.
- [Conduit](https://gitlab.com/famedly/conduit) - Conduit is a simple, fast and reliable chat server written in Rust
- [DailyTXT](https://github.com/PhiTux/DailyTxT) - Encrypted Diary Web-App
- [Dash.](https://github.com/MauriceNino/dashdot) - A simple, modern server dashboard, primarily used by smaller private server
- [Deluge](https://github.com/linuxserver/docker-deluge) - Deluge is a lightweight, Free Software, cross-platform BitTorrent client

View File

@ -0,0 +1,54 @@
{
"$schema": "../schema.json",
"name": "Conduit",
"port": 6167,
"available": true,
"exposable": true,
"no_gui": true,
"id": "matrix-conduit",
"tipi_version": 1,
"version": "0.5.0",
"categories": ["social"],
"description": "Conduit is a fast Matrix homeserver thats easy to set up and just works. You can install it on a mini-computer like the Raspberry Pi to host Matrix for your family, friends or company.",
"short_desc": "Conduit is a simple, fast and reliable chat server written in Rust",
"author": "Timo Kösters",
"source": "https://gitlab.com/famedly/conduit",
"website": "https://matrix.org/docs/projects/server/conduit",
"form_fields": [
{
"type": "boolean",
"label": "Allow Registration",
"hint": "WARNING! First user will be admin",
"required": false,
"env_variable": "ALLOW_REGISTRATION"
},
{
"type": "boolean",
"label": "Allow Federation",
"required": false,
"env_variable": "ALLOW_FEDERATION"
},
{
"type": "array",
"label": "Trusted Servers",
"hint": "[\"matrix.org\"]",
"required": false,
"env_variable": "TRUSTED_SERVERS"
},
{
"type": "number",
"label": "Max request size",
"hint": "In bytes, for example 20000000",
"required": false,
"env_variable": "MAX_REQUEST_SIZE"
},
{
"type": "text",
"label": "Loggin Level",
"hint": "Available levels: error, warn, info, debug, trace",
"placeholder": "-warn,rocket=off,_=off,sled=off",
"required": false,
"env_variable": "LOG"
}
]
}

View File

@ -0,0 +1,50 @@
version: "3.7"
services:
homeserver:
container_name: matrix
image: matrixconduit/matrix-conduit:v0.5.0
ports:
- ${APP_PORT}:6167
environment:
CONDUIT_SERVER_NAME: ${APP_DOMAIN}
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
CONDUIT_DATABASE_BACKEND: rocksdb
CONDUIT_PORT: 6167
CONDUIT_MAX_REQUEST_SIZE: ${MAX_REQUEST_SIZE:-20000000}
CONDUIT_ALLOW_REGISTRATION: ${ALLOW_REGISTRATION:-false}
CONDUIT_ALLOW_FEDERATION: ${ALLOW_FEDERATION:-false}
CONDUIT_TRUSTED_SERVERS: ${TRUSTED_SERVERS:-[]}
CONDUIT_LOG: ${LOG:-warn,rocket=off,_=off,sled=off}
CONDUIT_ADDRESS: 0.0.0.0
CONDUIT_CONFIG: '' # Ignore this
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data:/var/lib/matrix-conduit/
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.matrix.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.matrix.entrypoints: websecure
traefik.http.routers.matrix.service: matrix
traefik.http.routers.matrix.tls.certresolver: myresolver
traefik.http.services.matrix.loadbalancer.server.port: 6167
well-known:
container_name: matrix-well-known
build:
context: nginx
dockerfile: Dockerfile
environment:
APP_DOMAIN: ${APP_DOMAIN}
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.matrix-well-knows.rule: Host(`${APP_DOMAIN}`) && PathPrefix(`/.well-known/matrix`)
traefik.http.routers.matrix-well-knows.entrypoints: websecure
traefik.http.routers.matrix-well-knows.service: matrix-well-knows
traefik.http.routers.matrix-well-knows.tls.certresolver: myresolver
traefik.http.services.matrix-well-knows.loadbalancer.server.port: 80

View File

@ -0,0 +1,82 @@
# Conduit
### A Matrix homeserver written in Rust
#### What is Matrix?
[Matrix](https://matrix.org) is an open network for secure and decentralized
communication. Users from every Matrix homeserver can chat with users from all
other Matrix servers. You can even use bridges (also called Matrix appservices)
to communicate with users outside of Matrix, like a community on Discord.
#### What is the goal?
An efficient Matrix homeserver that's easy to set up and just works. You can install
it on a mini-computer like the Raspberry Pi to host Matrix for your family,
friends or company.
#### Can I try it out?
Yes! You can test our Conduit instance by opening a Matrix client (<https://app.element.io> or Element Android for
example) and registering on the `conduit.rs` homeserver.
*Registration is currently disabled because of scammers. For an account please
message us (see contact section below).*
Server hosting for conduit.rs is donated by the Matrix.org Foundation.
#### What is the current status?
Conduit is Beta, meaning you can join and participate in most
Matrix rooms, but not all features are supported and you might run into bugs
from time to time.
There are still a few important features missing:
- E2EE emoji comparison over federation (E2EE chat works)
- Outgoing read receipts, typing, presence over federation (incoming works)
Check out the [Conduit 1.0 Release Milestone](https://gitlab.com/famedly/conduit/-/milestones/3).
#### How can I deploy my own?
- Simple install (this was tested the most): [DEPLOY.md](DEPLOY.md)
- Debian package: [debian/README.Debian](debian/README.Debian)
- Nix/NixOS: [nix/README.md](nix/README.md)
- Docker: [docker/README.md](docker/README.md)
If you want to connect an Appservice to Conduit, take a look at [APPSERVICES.md](APPSERVICES.md).
#### How can I contribute?
1. Look for an issue you would like to work on and make sure it's not assigned
to other users
2. Ask someone to assign the issue to you (comment on the issue or chat in
[#conduit:fachschaften.org](https://matrix.to/#/#conduit:fachschaften.org))
3. Fork the repo and work on the issue.[#conduit:fachschaften.org](https://matrix.to/#/#conduit:fachschaften.org) is happy to help :)
4. Submit a MR
#### Thanks to
Thanks to FUTO, Famedly, Prototype Fund (DLR and German BMBF) and all individuals for financially supporting this project.
Thanks to the contributors to Conduit and all libraries we use, for example:
- Ruma: A clean library for the Matrix Spec in Rust
- axum: A modular web framework
#### Contact
If you run into any question, feel free to
- Ask us in `#conduit:fachschaften.org` on Matrix
- Write an E-Mail to `conduit@koesters.xyz`
- Send an direct message to `timo@fachschaften.org` on Matrix
- [Open an issue on GitLab](https://gitlab.com/famedly/conduit/-/issues/new)
#### Donate
Liberapay: <https://liberapay.com/timokoesters/>\
Bitcoin: `bc1qnnykf986tw49ur7wx9rpw2tevpsztvar5x8w4n`
#### Logo
Lightning Bolt Logo: https://github.com/mozilla/fxemoji/blob/gh-pages/svgs/nature/u26A1-bolt.svg \
Logo License: https://github.com/mozilla/fxemoji/blob/gh-pages/LICENSE.md

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,4 @@
FROM nginx:1.24-alpine
RUN mkdir /etc/nginx/templates
COPY matrix.conf.template /etc/nginx/templates

View File

@ -0,0 +1,19 @@
server {
server_name ${APP_DOMAIN};
listen 80 default_server;
location /.well-known/matrix/server {
return 200 '{"m.server": "${APP_DOMAIN}:443"}';
types { } default_type "application/json; charset=utf-8";
}
location /.well-known/matrix/client {
return 200 '{"m.homeserver": {"base_url": "https://${APP_DOMAIN}"}}';
types { } default_type "application/json; charset=utf-8";
add_header "Access-Control-Allow-Origin" *;
}
location / {
return 404;
}
}