Merge branch 'cargo-deb-packaging-update' into 'master'

Update cargo-deb packaging for recent changes

See merge request famedly/conduit!61
next
Timo Kösters 2021-05-22 09:03:43 +00:00
commit acfd0aef27
9 changed files with 89 additions and 89 deletions

View File

@ -97,13 +97,12 @@ instead of a server that has high scalability."""
section = "net" section = "net"
priority = "optional" priority = "optional"
assets = [ assets = [
["debian/env.local", "etc/matrix-conduit/local", "644"],
["debian/README.Debian", "usr/share/doc/matrix-conduit/", "644"], ["debian/README.Debian", "usr/share/doc/matrix-conduit/", "644"],
["README.md", "usr/share/doc/matrix-conduit/", "644"], ["README.md", "usr/share/doc/matrix-conduit/", "644"],
["target/release/conduit", "usr/sbin/matrix-conduit", "755"], ["target/release/conduit", "usr/sbin/matrix-conduit", "755"],
] ]
conf-files = [ conf-files = [
"/etc/matrix-conduit/local" "/etc/matrix-conduit/conduit.toml"
] ]
maintainer-scripts = "debian/" maintainer-scripts = "debian/"
systemd-units = { unit-name = "matrix-conduit" } systemd-units = { unit-name = "matrix-conduit" }

View File

@ -52,6 +52,26 @@ Check out the [Conduit 1.0 Release Milestone](https://gitlab.com/famedly/conduit
Download or compile a Conduit binary, set up the config and call it from somewhere like a systemd script. [Read Download or compile a Conduit binary, set up the config and call it from somewhere like a systemd script. [Read
more](DEPLOY.md) more](DEPLOY.md)
##### Deloy using a Debian package
You need to have the `deb` helper command installed that creates Debian packages from Cargo projects (see [cargo-deb](https://github.com/mmstick/cargo-deb/) for more info):
```shell
$ cargo install cargo-deb
```
Then, you can create and install a Debian package at a whim:
```shell
$ cargo deb
$ dpkg -i target/debian/matrix-conduit_0.1.0_amd64.deb
```
This will build, package, install, configure and start Conduit. [Read more](debian/README.Debian).
Note that `cargo deb` supports [cross-compilation](https://github.com/mmstick/cargo-deb/#cross-compilation) too!
Official Debian packages will follow once Conduit starts to have stable releases.
##### Deploy using Docker ##### Deploy using Docker
Pull and run the docker image with Pull and run the docker image with

View File

@ -11,7 +11,7 @@
# YOU NEED TO EDIT THIS # YOU NEED TO EDIT THIS
#server_name = "your.server.name" #server_name = "your.server.name"
# This is the only directly where Conduit will save its data # This is the only directory where Conduit will save its data
database_path = "/var/lib/conduit/conduit.db" database_path = "/var/lib/conduit/conduit.db"
# The port Conduit will be running on. You need to set up a reverse proxy in # The port Conduit will be running on. You need to set up a reverse proxy in

20
debian/README.Debian vendored
View File

@ -4,25 +4,25 @@ Conduit for Debian
Configuration Configuration
------------- -------------
When installed, Debconf handles the configuration of the homeserver (host)name, When installed, Debconf generates the configuration of the homeserver
the address and port it listens on. These configuration variables end up in (host)name, the address and port it listens on. This configuration ends up in
/etc/matrix-conduit/debian. /etc/matrix-conduit/conduit.toml.
You can tweak more detailed settings by uncommenting and setting the variables You can tweak more detailed settings by uncommenting and setting the variables
in /etc/matrix-conduit/local. This involves settings such as the maximum file in /etc/matrix-conduit/conduit.toml. This involves settings such as the maximum
size for download/upload, enabling federation, etc. file size for download/upload, enabling federation, etc.
Running Running
------- -------
The package uses the matrix-conduit.service systemd unit file to start and The package uses the matrix-conduit.service systemd unit file to start and
stop Conduit. It loads the configuration files mentioned above to set up the stop Conduit. It loads the configuration file mentioned above to set up the
environment before running the server. environment before running the server.
This package assumes by default that Conduit is placed behind a reverse proxy This package assumes by default that Conduit will be placed behind a reverse
such as Apache or nginx. This default deployment entails just listening on proxy such as Apache or nginx. This default deployment entails just listening
127.0.0.1 and the free port 14004 and is reachable via a client using the URL on 127.0.0.1 and the free port 6167 and is reachable via a client using the URL
http://localhost:14004. http://localhost:6167.
At a later stage this packaging may support also setting up TLS and running At a later stage this packaging may support also setting up TLS and running
stand-alone. In this case, however, you need to set up some certificates and stand-alone. In this case, however, you need to set up some certificates and

33
debian/env.local vendored
View File

@ -1,33 +0,0 @@
# Conduit homeserver local configuration
#
# Conduit is an application based on the Rocket web framework.
# Configuration of Conduit happens via Debconf (see the resulting config in
# `/etc/matrix-conduit/debian`) and optionally by uncommenting and tweaking the
# variables in this file below.
# The maximum size of a Matrix HTTP requests in bytes.
#
# This mostly affects the size of files that can be downloaded/uploaded.
# It defaults to 20971520 (20MB).
#ROCKET_MAX_REQUEST_SIZE=20971520
# Whether user registration is allowed.
#
# User registration is not disabled by default.
#ROCKET_REGISTRATION_DISABLED=false
# Whether encryption is enabled.
#
# (End-to-end) encryption is not disabled by default.
#ROCKET_ENCRYPTION_DISABLED=false
# Whether federation with other Matrix servers is enabled.
#
# Federation is not enabled by default; it is still experimental.
#ROCKET_FEDERATION_ENABLED=false
# The log level of the homeserver.
#
# The log level is "critical" by default.
# Allowed values are: "off", "normal", "debug", "critical"
#ROCKET_LOG="critical"

View File

@ -34,10 +34,7 @@ SystemCallFilter=@system-service
SystemCallErrorNumber=EPERM SystemCallErrorNumber=EPERM
StateDirectory=matrix-conduit StateDirectory=matrix-conduit
Environment="ROCKET_ENV=production" Environment="CONDUIT_CONFIG=/etc/matrix-conduit/conduit.toml"
Environment="ROCKET_DATABASE_PATH=/var/lib/matrix-conduit"
EnvironmentFile=/etc/matrix-conduit/debian
EnvironmentFile=/etc/matrix-conduit/local
ExecStart=/usr/sbin/matrix-conduit ExecStart=/usr/sbin/matrix-conduit
Restart=on-failure Restart=on-failure

88
debian/postinst vendored
View File

@ -4,8 +4,8 @@ set -e
. /usr/share/debconf/confmodule . /usr/share/debconf/confmodule
CONDUIT_CONFIG_PATH=/etc/matrix-conduit CONDUIT_CONFIG_PATH=/etc/matrix-conduit
CONDUIT_CONFIG_FILE="$CONDUIT_CONFIG_PATH/debian" CONDUIT_CONFIG_FILE="${CONDUIT_CONFIG_PATH}/conduit.toml"
CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit/conduit_db
case "$1" in case "$1" in
configure) configure)
@ -13,7 +13,7 @@ case "$1" in
if ! getent passwd _matrix-conduit > /dev/null ; then if ! getent passwd _matrix-conduit > /dev/null ; then
echo 'Adding system user for the Conduit Matrix homeserver' 1>&2 echo 'Adding system user for the Conduit Matrix homeserver' 1>&2
adduser --system --group --quiet \ adduser --system --group --quiet \
--home $CONDUIT_DATABASE_PATH \ --home "$CONDUIT_DATABASE_PATH" \
--disabled-login \ --disabled-login \
--force-badname \ --force-badname \
_matrix-conduit _matrix-conduit
@ -25,48 +25,60 @@ case "$1" in
chown _matrix-conduit "$CONDUIT_DATABASE_PATH" chown _matrix-conduit "$CONDUIT_DATABASE_PATH"
fi fi
# Write the debconf values in the config. if [ ! -e "$CONDUIT_CONFIG_FILE" ]; then
db_get matrix-conduit/hostname # Write the debconf values in the config.
ROCKET_SERVER_NAME="$RET" db_get matrix-conduit/hostname
db_get matrix-conduit/address CONDUIT_SERVER_NAME="$RET"
ROCKET_ADDRESS="$RET" db_get matrix-conduit/address
db_get matrix-conduit/port CONDUIT_ADDRESS="$RET"
ROCKET_PORT="$RET" db_get matrix-conduit/port
cat >"$CONDUIT_CONFIG_FILE" << EOF CONDUIT_PORT="$RET"
# Conduit homeserver Debian configuration mkdir -p "$CONDUIT_CONFIG_PATH"
# cat > "$CONDUIT_CONFIG_FILE" << EOF
# Conduit is an application based on the Rocket web framework. [global]
# Configuration of Conduit happens via Debconf (of which the resulting config # The server_name is the name of this server. It is used as a suffix for user
# is in this file) and optionally by uncommenting and tweaking the variables in # and room ids. Examples: matrix.org, conduit.rs
# /etc/matrix-conduit/local. # The Conduit server needs to be reachable at https://your.server.name/ on port
# 443 (client-server) and 8448 (federation) OR you can create /.well-known
# files to redirect requests. See
# https://matrix.org/docs/spec/client_server/latest#get-well-known-matrix-client
# and https://matrix.org/docs/spec/server_server/r0.1.4#get-well-known-matrix-server
# for more information.
server_name = "${CONDUIT_SERVER_NAME}"
# THIS FILE IS GENERATED BY DEBCONF AND WILL BE OVERRIDDEN! # This is the only directory where Conduit will save its data.
# database_path = "${CONDUIT_DATABASE_PATH}"
# Please make changes by running:
#
# \$ dpkg-reconfigure matrix-conduit
#
# or by providing overriding changes in /etc/matrix-conduit/local.
# The server (host)name of the Matrix homeserver. # The address Conduit will be listening on.
#
# This is the hostname the homeserver will be reachable at via a client.
ROCKET_SERVER_NAME="$ROCKET_SERVER_NAME"
# The address the Matrix homeserver listens on.
#
# By default the server listens on address 0.0.0.0. Change this to 127.0.0.1 to # By default the server listens on address 0.0.0.0. Change this to 127.0.0.1 to
# only listen on the localhost when using a reverse proxy. # only listen on the localhost when using a reverse proxy.
ROCKET_ADDRESS="$ROCKET_ADDRESS" address = "${CONDUIT_ADDRESS}"
# The port of the Matrix homeserver. # The port Conduit will be running on. You need to set up a reverse proxy in
# # your web server (e.g. apache or nginx), so all requests to /_matrix on port
# This port is could be any available port if accessed by a reverse proxy. # 443 and 8448 will be forwarded to the Conduit instance running on this port.
# By default the server listens on port 8000. port = ${CONDUIT_PORT}
ROCKET_PORT="$ROCKET_PORT"
# THIS FILE IS GENERATED BY DEBCONF AND WILL BE OVERRIDDEN! # Max size for uploads
max_request_size = 20_000_000 # in bytes
# Disable registration. No new users will be able to register on this server.
#allow_registration = false
# Disable encryption, so no new encrypted rooms can be created.
# Note: Existing rooms will continue to work.
#allow_encryption = false
#allow_federation = false
# Enable jaeger to support monitoring and troubleshooting through jaeger.
#allow_jaeger = false
#cache_capacity = 1073741824 # in bytes, 1024 * 1024 * 1024
#max_concurrent_requests = 4 # How many requests Conduit sends to other servers at the same time
#log = "info,state_res=warn,rocket=off,_=off,sled=off"
#workers = 4 # default: cpu core count * 2
EOF EOF
fi
;; ;;
esac esac

5
debian/postrm vendored
View File

@ -1,11 +1,16 @@
#!/bin/sh #!/bin/sh
set -e set -e
. /usr/share/debconf/confmodule
CONDUIT_CONFIG_PATH=/etc/matrix-conduit CONDUIT_CONFIG_PATH=/etc/matrix-conduit
CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit
case $1 in case $1 in
purge) purge)
# Remove debconf changes from the db
db_purge
# Per https://www.debian.org/doc/debian-policy/ch-files.html#behavior # Per https://www.debian.org/doc/debian-policy/ch-files.html#behavior
# "configuration files must be preserved when the package is removed, and # "configuration files must be preserved when the package is removed, and
# only deleted when the package is purged." # only deleted when the package is purged."

2
debian/templates vendored
View File

@ -16,6 +16,6 @@ Description: The listen address of the Matrix homeserver
Template: matrix-conduit/port Template: matrix-conduit/port
Type: string Type: string
Default: 14004 Default: 6167
Description: The port of the Matrix homeserver Description: The port of the Matrix homeserver
This port is most often just accessed by a reverse proxy. This port is most often just accessed by a reverse proxy.