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 @@ ### Prebuilt binary 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 @@ #### Performance-optimised builds [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 @@ ## Setting up a systemd service 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 @@ ### Other Reverse Proxies 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 @@ ### Other Reverse Proxies 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 @@ # If federation is enabled ``` - 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?