docs: build docs using mdBook, build in CI, deploy to gitlab pages

squashed from https://gitlab.com/famedly/conduit/-/merge_requests/604

added differences.md

Co-authored-by: Charles Hall <charles@computer.surgery>
Co-authored-by: strawberry <strawberry@puppygock.gay>
Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
Samuel Meenzen 2024-03-17 18:06:10 -04:00 committed by June
parent a7966b8f05
commit e9ce642795
23 changed files with 154 additions and 27 deletions

3
.gitignore vendored
View File

@ -75,5 +75,8 @@ test-conduit.toml
# Gitlab CI cache # Gitlab CI cache
/.gitlab-ci.d /.gitlab-ci.d
# mdbook output
public/
# macOS # macOS
.DS_Store .DS_Store

View File

@ -105,6 +105,10 @@ artifacts:
- ./bin/nix-build-and-cache .#oci-image-aarch64-unknown-linux-musl - ./bin/nix-build-and-cache .#oci-image-aarch64-unknown-linux-musl
- cp result oci-image-arm64v8.tar.gz - cp result oci-image-arm64v8.tar.gz
- ./bin/nix-build-and-cache .#book
# We can't just copy the symlink, we need to dereference it https://gitlab.com/gitlab-org/gitlab/-/issues/19746
- cp -r --dereference result public
artifacts: artifacts:
paths: paths:
- x86_64-unknown-linux-musl - x86_64-unknown-linux-musl
@ -112,6 +116,7 @@ artifacts:
- x86_64-unknown-linux-musl.deb - x86_64-unknown-linux-musl.deb
- oci-image-amd64.tar.gz - oci-image-amd64.tar.gz
- oci-image-arm64v8.tar.gz - oci-image-arm64v8.tar.gz
- public
rules: rules:
# CI required for all MRs # CI required for all MRs
- if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_PIPELINE_SOURCE == "merge_request_event"
@ -164,3 +169,15 @@ oci-image:push-gitlab:
IMAGE_NAME: $CI_REGISTRY_IMAGE/conduwuit IMAGE_NAME: $CI_REGISTRY_IMAGE/conduwuit
before_script: before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
pages:
stage: publish
dependencies:
- artifacts
only:
- next
script:
- "true"
artifacts:
paths:
- public

3
.gitlab/route-map.yml Normal file
View File

@ -0,0 +1,3 @@
# Docs: Map markdown to html files
- source: /docs/(.+)\.md/
public: '\1.html'

View File

@ -1,9 +1,17 @@
# conduwuit # conduwuit
### a well maintained fork of [Conduit](https://conduit.rs/)
[![CI and Artifacts](https://github.com/girlbossceo/conduwuit/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/girlbossceo/conduwuit/actions/workflows/ci.yml) [![CI and Artifacts](https://github.com/girlbossceo/conduwuit/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/girlbossceo/conduwuit/actions/workflows/ci.yml)
<!-- ANCHOR: catchphrase -->
### a well maintained fork of [Conduit](https://conduit.rs/)
<!-- ANCHOR_END: catchphrase -->
Please visit the [Conduit documentation](https://famedly.gitlab.io/conduit) for more information.
Alternatively you can open [docs/introduction.md](docs/introduction.md) in this repository.
<!-- ANCHOR: body -->
#### What is Matrix? #### What is Matrix?
[Matrix](https://matrix.org) is an open network for secure and decentralized [Matrix](https://matrix.org) is an open network for secure and decentralized
communication. Users from every Matrix homeserver can chat with users from all communication. Users from every Matrix homeserver can chat with users from all
other Matrix servers. You can even use bridges (also called Matrix Appservices) other Matrix servers. You can even use bridges (also called Matrix Appservices)
@ -31,7 +39,7 @@ There are still a few nice to have features missing that some users may notice:
#### What's different about your fork than upstream Conduit? #### What's different about your fork than upstream Conduit?
See [DIFFERENCES.md](DIFFERENCES.md) See [docs/differences.md](docs/differences.md)
#### Why does this fork exist? Why don't you contribute back upstream? #### Why does this fork exist? Why don't you contribute back upstream?
@ -45,16 +53,9 @@ I now intend on contributing back as time and mental energy sees fit, but my for
- Have a **stable** testing ground for some MRs or new features and bug fixes - Have a **stable** testing ground for some MRs or new features and bug fixes
And various other reasons that may not be listed here. And various other reasons that may not be listed here.
<!-- ANCHOR_END: body -->
#### How can I deploy my own? <!-- ANCHOR: footer -->
conduwuit officially supports Linux, macOS, BSD, and Windows.
- Simple install (this was tested the most): [DEPLOY.md](DEPLOY.md)
- Nix/NixOS (and binary cache): [nix/README.md](nix/README.md)
If you want to connect an Appservice to Conduit, take a look at [APPSERVICES.md](APPSERVICES.md).
#### How can I contribute? #### How can I contribute?
1. Look for an issue you would like to work on and make sure it's not assigned 1. Look for an issue you would like to work on and make sure it's not assigned
@ -72,9 +73,9 @@ If you run into any question, feel free to
#### Donate #### Donate
Liberapay: <https://liberapay.com/girlbossceo>\ - Liberapay: <https://liberapay.com/girlbossceo>
Ko-fi: <https://ko-fi.com/puppygock>\ - Ko-fi: <https://ko-fi.com/puppygock>
GitHub Sponsors: <https://github.com/sponsors/girlbossceo> - GitHub Sponsors: <https://github.com/sponsors/girlbossceo>
#### Logo #### Logo
@ -86,8 +87,9 @@ Both.
#### Mirrors of conduwuit #### Mirrors of conduwuit
GitHub: <https://github.com/girlbossceo/conduwuit>\ - GitHub: <https://github.com/girlbossceo/conduwuit>
GitLab: <https://gitlab.com/girlbossceo/conduwuit>\ - GitLab: <https://gitlab.com/girlbossceo/conduwuit>
git.gay: <https://git.gay/june/conduwuit>\ - git.gay: <https://git.gay/june/conduwuit>
Codeberg: <https://codeberg.org/girlbossceo/conduwuit>\ - Codeberg: <https://codeberg.org/girlbossceo/conduwuit>
sourcehut: <https://git.sr.ht/~girlbossceo/conduwuit> - sourcehut: <https://git.sr.ht/~girlbossceo/conduwuit>
<!-- ANCHOR_END: footer -->

18
book.toml Normal file
View File

@ -0,0 +1,18 @@
[book]
title = "Conduit"
description = "Conduit is a simple, fast and reliable chat server for the Matrix protocol"
language = "en"
multilingual = false
src = "docs"
[build]
build-dir = "public"
create-missing = true
[output.html]
git-repository-url = "https://gitlab.com/famedly/conduit"
edit-url-template = "https://gitlab.com/famedly/conduit/-/edit/next/{path}"
git-repository-icon = "fa-git-square"
[output.html.search]
limit-results = 15

2
debian/README.md vendored
View File

@ -5,7 +5,7 @@ Installation
------------ ------------
Information about downloading, building and deploying the Debian package, see Information about downloading, building and deploying the Debian package, see
the "Installing Conduit" section in [DEPLOY.md](../DEPLOY.md). the "Installing Conduit" section in the Deploying docs.
All following sections until "Setting up the Reverse Proxy" be ignored because All following sections until "Setting up the Reverse Proxy" be ignored because
this is handled automatically by the packaging. this is handled automatically by the packaging.

13
docs/SUMMARY.md Normal file
View File

@ -0,0 +1,13 @@
# Summary
- [Introduction](introduction.md)
- [Differences from upstream Conduit](differences.md)
- [Example configuration](configuration.md)
- [Deployment options](deploying.md)
- [Simple (Recommended)](deploying/simple.md)
- [Debian](deploying/debian.md)
- [Docker](deploying/docker.md)
- [Nix](deploying/nix.md)
- [TURN](turn.md)
- [Appservices](appservices.md)

5
docs/configuration.md Normal file
View File

@ -0,0 +1,5 @@
# Example configuration
``` toml
{{#include ../conduit-example.toml}}
```

8
docs/deploying.md Normal file
View File

@ -0,0 +1,8 @@
# Deployment options
There are several ways to deploy a Conduit server.
- [Simple (Recommended)](deploying/simple.md) - This is the recommended way to set up Conduit.
- [Debian](deploying/debian.md) - If you're using a debian-based system, you may find the `deb` package useful.
- [Docker](deploying/docker.md) - We provide multi-arch OCI images for Conduit.
- [Nix](deploying/nix.md) - Nix flake based setup.

1
docs/deploying/debian.md Normal file
View File

@ -0,0 +1 @@
{{#include ../../debian/README.md}}

View File

@ -70,7 +70,7 @@ docker run -d -p 8448:6167 \
or you can use [docker-compose](#docker-compose). or you can use [docker-compose](#docker-compose).
The `-d` flag lets the container run in detached mode. You now need to supply a `conduit.toml` config file, an example can be found [here](../conduwuit-example.toml). The `-d` flag lets the container run in detached mode. You now need to supply a `conduit.toml` config file, an example can be found [here](../configuration.md).
You can pass in different env vars to change config values on the fly. You can even configure Conduit completely by using env vars, but for that you need You can pass in different env vars to change config values on the fly. You can even configure Conduit completely by using env vars, but for that you need
to pass `-e CONDUIT_CONFIG=""` into your container. For an overview of possible values, please take a look at the `docker-compose.yml` file. to pass `-e CONDUIT_CONFIG=""` into your container. For an overview of possible values, please take a look at the `docker-compose.yml` file.
@ -89,7 +89,7 @@ When picking the traefik-related compose file, rename it so it matches `docker-c
rename the override file to `docker-compose.override.yml`. Edit the latter with the values you want rename the override file to `docker-compose.override.yml`. Edit the latter with the values you want
for your server. for your server.
Additional info about deploying Conduit can be found [here](../DEPLOY.md). Additional info about deploying Conduit can be found [here](simple.md).
### Build ### Build
@ -131,7 +131,7 @@ So...step by step:
1. Copy [`docker-compose.for-traefik.yml`](docker-compose.for-traefik.yml) (or 1. Copy [`docker-compose.for-traefik.yml`](docker-compose.for-traefik.yml) (or
[`docker-compose.with-traefik.yml`](docker-compose.with-traefik.yml)) and [`docker-compose.override.yml`](docker-compose.override.yml) from the repository and remove `.for-traefik` (or `.with-traefik`) from the filename. [`docker-compose.with-traefik.yml`](docker-compose.with-traefik.yml)) and [`docker-compose.override.yml`](docker-compose.override.yml) from the repository and remove `.for-traefik` (or `.with-traefik`) from the filename.
2. Open both files and modify/adjust them to your needs. Meaning, change the `CONDUIT_SERVER_NAME` and the volume host mappings according to your needs. 2. Open both files and modify/adjust them to your needs. Meaning, change the `CONDUIT_SERVER_NAME` and the volume host mappings according to your needs.
3. Create the `conduit.toml` config file, an example can be found [here](../conduwuit-example.toml), or set `CONDUIT_CONFIG=""` and configure Conduit per env vars. 3. Create the `conduit.toml` config file, an example can be found [here](../configuration.md), or set `CONDUIT_CONFIG=""` and configure Conduit per env vars.
4. Uncomment the `element-web` service if you want to host your own Element Web Client and create a `element_config.json`. 4. Uncomment the `element-web` service if you want to host your own Element Web Client and create a `element_config.json`.
5. Create the files needed by the `well-known` service. 5. Create the files needed by the `well-known` service.

View File

@ -1,4 +1,6 @@
# Deploying Conduit # Simple setup
This is the recommended way to set up Conduit. It is the easiest way to get started and is suitable for most use cases.
### Please note that this documentation is not fully representative of conduwuit at the moment. Assume majority of it is outdated. ### Please note that this documentation is not fully representative of conduwuit at the moment. Assume majority of it is outdated.
@ -118,7 +120,7 @@ Now we need to create the Conduit's config file in `/etc/conduwuit/conduwuit.tom
to read it. You need to change at least the server name.** to read it. You need to change at least the server name.**
You can also choose to use a different database backend, but right now only `rocksdb` and `sqlite` are recommended. You can also choose to use a different database backend, but right now only `rocksdb` and `sqlite` are recommended.
See the following example config at [conduwuit-example.toml](conduwuit-example.toml) See the following example config at [conduwuit-example.toml](../configuration.md)
## Setting the correct file permissions ## Setting the correct file permissions
@ -300,8 +302,8 @@ $ curl https://your.server.name:8448/_matrix/client/versions
## Audio/Video calls ## Audio/Video calls
For Audio/Video call functionality see the [TURN Guide](TURN.md). For Audio/Video call functionality see the [TURN Guide](../turn.md).
## Appservices ## Appservices
If you want to set up an appservice, take a look at the [Appservice Guide](APPSERVICES.md). If you want to set up an appservice, take a look at the [Appservice Guide](../appservices.md).

13
docs/introduction.md Normal file
View File

@ -0,0 +1,13 @@
# Conduit
{{#include ../README.md:catchphrase}}
{{#include ../README.md:body}}
#### How can I deploy my own?
- [Deployment options](deploying.md)
If you want to connect an Appservice to Conduit, take a look at the [appservices documentation](appservices.md).
{{#include ../README.md:footer}}

View File

@ -50,6 +50,11 @@ name = "cargo-deb"
group = "versions" group = "versions"
script = "cargo deb --version" script = "cargo deb --version"
[[task]]
name = "lychee"
group = "versions"
script = "lychee --version"
[[task]] [[task]]
name = "cargo-audit" name = "cargo-audit"
group = "security" group = "security"
@ -77,6 +82,11 @@ name = "cargo-clippy"
group = "lints" group = "lints"
script = "cargo clippy --workspace --all-targets --all-features --color=always -- -D warnings" script = "cargo clippy --workspace --all-targets --all-features --color=always -- -D warnings"
[[task]]
name = "lychee"
group = "lints"
script = "lychee --offline docs"
[[task]] [[task]]
name = "cargo" name = "cargo"
group = "tests" group = "tests"

View File

@ -208,6 +208,35 @@
packages = { packages = {
default = package pkgsHost; default = package pkgsHost;
oci-image = mkOciImage pkgsHost self.packages.${system}.default; oci-image = mkOciImage pkgsHost self.packages.${system}.default;
book =
let
package = self.packages.${system}.default;
in
pkgsHost.stdenv.mkDerivation {
pname = "${package.pname}-book";
version = package.version;
src = nix-filter {
root = ./.;
include = [
"book.toml"
"conduit-example.toml"
"README.md"
"debian/README.md"
"docs"
];
};
nativeBuildInputs = (with pkgsHost; [
mdbook
]);
buildPhase = ''
mdbook build
mv public $out
'';
};
} }
// //
builtins.listToAttrs builtins.listToAttrs
@ -276,6 +305,9 @@
# Needed for our script for Complement # Needed for our script for Complement
jq jq
# Needed for finding broken markdown links
lychee
]); ]);
}; };
}); });