diff --git a/README.md b/README.md index 0cb292d1..f0947919 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/apps/matrix-conduit/config.json b/apps/matrix-conduit/config.json new file mode 100644 index 00000000..4ce82bb4 --- /dev/null +++ b/apps/matrix-conduit/config.json @@ -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 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.", + "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" + } + ] +} diff --git a/apps/matrix-conduit/docker-compose.yml b/apps/matrix-conduit/docker-compose.yml new file mode 100644 index 00000000..51a1cb01 --- /dev/null +++ b/apps/matrix-conduit/docker-compose.yml @@ -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 diff --git a/apps/matrix-conduit/metadata/description.md b/apps/matrix-conduit/metadata/description.md new file mode 100644 index 00000000..edc1d57d --- /dev/null +++ b/apps/matrix-conduit/metadata/description.md @@ -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 ( 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: \ +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 \ No newline at end of file diff --git a/apps/matrix-conduit/metadata/logo.jpg b/apps/matrix-conduit/metadata/logo.jpg new file mode 100644 index 00000000..ad3f78a2 Binary files /dev/null and b/apps/matrix-conduit/metadata/logo.jpg differ diff --git a/apps/matrix-conduit/nginx/Dockerfile b/apps/matrix-conduit/nginx/Dockerfile new file mode 100644 index 00000000..d8009608 --- /dev/null +++ b/apps/matrix-conduit/nginx/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx:1.24-alpine + +RUN mkdir /etc/nginx/templates +COPY matrix.conf.template /etc/nginx/templates \ No newline at end of file diff --git a/apps/matrix-conduit/nginx/matrix.conf.template b/apps/matrix-conduit/nginx/matrix.conf.template new file mode 100644 index 00000000..7885dd0e --- /dev/null +++ b/apps/matrix-conduit/nginx/matrix.conf.template @@ -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; + } +} \ No newline at end of file