From fbb855a404c3534fc6eac2e03973c460f0980c06 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Wed, 8 Apr 2026 16:39:35 -0400 Subject: [PATCH] feat: update build docs --- docs/deploying/generic.mdx | 54 ++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/docs/deploying/generic.mdx b/docs/deploying/generic.mdx index 416cc6940..341f6b55e 100644 --- a/docs/deploying/generic.mdx +++ b/docs/deploying/generic.mdx @@ -14,6 +14,7 @@ Download the binary for your architecture (x86_64 or aarch64) - run the `uname -m` to check which you need. Prebuilt binaries are available from: + - **Tagged releases**: [Latest release page](https://forgejo.ellis.link/continuwuation/continuwuity/releases/latest) - **Development builds**: CI artifacts from the `main` branch (includes Debian/Ubuntu packages) @@ -42,32 +43,36 @@ build profile with [link-time optimisation (LTO)](https://doc.rust-lang.org/cargo/reference/profiles.html#lto) and, for amd64, target the haswell CPU architecture. +### Nix + +Theres a Nix package defined in our flake, available for Linux and MacOS. Add continuwuity as an input to your flake, and use `inputs.continuwuity.packages.${system}.default` to get a working Continuwuity package. + +If you simply wish to generate a binary using Nix, you can run `nix build git+https://forgejo.ellis.link/continuwuation/continuwuity` to generate a binary in `result/bin/conduwuit`. + ### Compiling Alternatively, you may compile the binary yourself. -### Building with the Rust toolchain +#### Using Docker -If wanting to build using standard Rust toolchains, make sure you install: +If you would like to build using docker, you can run the command `docker build -f ./docker/Dockerfile -t forgejo.ellis.link/continuwuation/continuwuity:main .` to compile continuwuity. -- (On linux) `liburing-dev` on the compiling machine, and `liburing` on the target host -- (On linux) `pkg-config` on the compiling machine to allow finding `liburing` -- A C++ compiler and (on linux) `libclang` for RocksDB +#### Manual + +##### Dependencies + +- Run `nix develop` to get a devshell with everything you need +- Or, install the following: + - (On linux) `liburing-dev` on the compiling machine, and `liburing` on the target host + - (On linux) `pkg-config` on the compiling machine to allow finding `liburing` + - A C++ compiler and (on linux) `libclang` for RocksDB + +##### Build You can build Continuwuity using `cargo build --release`. Continuwuity supports various optional features that can be enabled during compilation. Please see the Cargo.toml file for a comprehensive list, or ask in our rooms. -### Building with Nix - -If you prefer, you can use Nix (or [Lix](https://lix.systems)) to build Continuwuity. This provides improved reproducibility and makes it easy to set up a build environment and generate output. This approach also allows for easy cross-compilation. - -You can run the `nix build -L .#static-x86_64-linux-musl-all-features` or -`nix build -L .#static-aarch64-linux-musl-all-features` commands based -on architecture to cross-compile the necessary static binary located at -`result/bin/conduwuit`. This is reproducible with the static binaries produced -in our CI. - ## Adding a Continuwuity user While Continuwuity can run as any user, it is better to use dedicated users for @@ -128,13 +133,11 @@ and entering the following: ReadWritePaths=/path/to/custom/database/path ``` - ### Example systemd Unit File
Click to expand systemd unit file (conduwuit.service) - ```ini file="../../pkg/conduwuit.service" ``` @@ -202,23 +205,27 @@ sudo systemctl enable --now caddy As we prefer our users to use Caddy, we do not provide configuration files for other proxies. You will need to reverse proxy everything under the following routes: + - `/_matrix/` - core Matrix C-S and S-S APIs - `/_conduwuit/` and/or `/_continuwuity/` - ad-hoc Continuwuity routes such as `/local_user_count` and -`/server_version` + `/server_version` You can optionally reverse proxy the following individual routes: + - `/.well-known/matrix/client` and `/.well-known/matrix/server` if using -Continuwuity to perform delegation (see the `[global.well_known]` config section) + Continuwuity to perform delegation (see the `[global.well_known]` config section) - `/.well-known/matrix/support` if using Continuwuity to send the homeserver admin -contact and support page (formerly known as MSC1929) + contact and support page (formerly known as MSC1929) - `/` if you would like to see `hewwo from conduwuit woof!` at the root See the following spec pages for more details on these files: + - [`/.well-known/matrix/server`](https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixserver) - [`/.well-known/matrix/client`](https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixclient) - [`/.well-known/matrix/support`](https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixsupport) Examples of delegation: + - https://continuwuity.org/.well-known/matrix/server - https://continuwuity.org/.well-known/matrix/client - https://ellis.link/.well-known/matrix/server @@ -232,6 +239,7 @@ header, making federation non-functional. If you find a workaround, please share If using Apache, you need to use `nocanon` in your `ProxyPass` directive to prevent httpd from interfering with the `X-Matrix` header (note that Apache is not ideal as a general reverse proxy, so we discourage using it if alternatives are available). If using Nginx, you need to pass the request URI to Continuwuity using `$request_uri`, like this: + - `proxy_pass http://127.0.0.1:6167$request_uri;` - `proxy_pass http://127.0.0.1:6167;` @@ -271,9 +279,9 @@ curl https://your.server.name:8448/_matrix/federation/v1/version ``` - To check if your server can communicate with other homeservers, use the -[Matrix Federation Tester](https://federationtester.mtrnord.blog/). If you can -register but cannot join federated rooms, check your configuration and verify -that port 8448 is open and forwarded correctly. + [Matrix Federation Tester](https://federationtester.mtrnord.blog/). If you can + register but cannot join federated rooms, check your configuration and verify + that port 8448 is open and forwarded correctly. # What's next?