Merge branch 'cargo-deb-packaging' into 'master'
Add Debian packaging via cargo-deb See merge request famedly/conduit!3
This commit is contained in:
		
						commit
						9d4c7c34a0
					
				
					 8 changed files with 267 additions and 0 deletions
				
			
		
							
								
								
									
										23
									
								
								Cargo.toml
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								Cargo.toml
									
									
									
									
									
								
							|  | @ -72,3 +72,26 @@ required-features = ["conduit_bin"] | ||||||
| [lib] | [lib] | ||||||
| name = "conduit" | name = "conduit" | ||||||
| path = "src/lib.rs" | path = "src/lib.rs" | ||||||
|  | 
 | ||||||
|  | [package.metadata.deb] | ||||||
|  | name = "matrix-conduit" | ||||||
|  | maintainer = "Paul van Tilburg <paul@luon.net>" | ||||||
|  | copyright = "2020, Timo Kösters <timo@koesters.xyz>" | ||||||
|  | license-file = ["LICENSE", "3"] | ||||||
|  | depends = "$auto, ca-certificates" | ||||||
|  | extended-description = """\ | ||||||
|  | A fast Matrix homeserver that is optimized for smaller, personal servers, \ | ||||||
|  | instead of a server that has high scalability.""" | ||||||
|  | section = "net" | ||||||
|  | priority = "optional" | ||||||
|  | assets = [ | ||||||
|  |   ["debian/env.local", "etc/matrix-conduit/local", "644"], | ||||||
|  |   ["debian/README.Debian", "usr/share/doc/matrix-conduit/", "644"], | ||||||
|  |   ["README.md", "usr/share/doc/matrix-conduit/", "644"], | ||||||
|  |   ["target/release/conduit", "usr/sbin/matrix-conduit", "755"], | ||||||
|  | ] | ||||||
|  | conf-files = [ | ||||||
|  |   "/etc/matrix-conduit/local" | ||||||
|  | ] | ||||||
|  | maintainer-scripts = "debian/" | ||||||
|  | systemd-units = { unit-name = "matrix-conduit" } | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								debian/README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								debian/README.Debian
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | ||||||
|  | Conduit for Debian | ||||||
|  | ================== | ||||||
|  | 
 | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | When installed, Debconf handles the configuration of the homeserver (host)name, | ||||||
|  | the address and port it listens on. These configuration variables end up in | ||||||
|  | /etc/matrix-conduit/debian. | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | size for download/upload, enabling federation, etc. | ||||||
|  | 
 | ||||||
|  | Running | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | environment before running the server. | ||||||
|  | 
 | ||||||
|  | This package assumes by default that Conduit is placed behind a reverse proxy | ||||||
|  | such as Apache or nginx. This default deployment entails just listening on | ||||||
|  | 127.0.0.1 and the free port 14004 and is reachable via a client using the URL | ||||||
|  | http://localhost:14004. | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | renewal, for it to work properly. | ||||||
							
								
								
									
										17
									
								
								debian/config
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								debian/config
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | # Source debconf library. | ||||||
|  | . /usr/share/debconf/confmodule | ||||||
|  | 
 | ||||||
|  | # Ask for the Matrix homeserver name, address and port. | ||||||
|  | db_input high matrix-conduit/hostname || true | ||||||
|  | db_go | ||||||
|  | 
 | ||||||
|  | db_input low matrix-conduit/address || true | ||||||
|  | db_go | ||||||
|  | 
 | ||||||
|  | db_input medium matrix-conduit/port || true | ||||||
|  | db_go | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
							
								
								
									
										33
									
								
								debian/env.local
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								debian/env.local
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | ||||||
|  | # 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" | ||||||
							
								
								
									
										49
									
								
								debian/matrix-conduit.service
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								debian/matrix-conduit.service
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | ||||||
|  | [Unit] | ||||||
|  | Description=Conduit Matrix homeserver | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | User=_matrix-conduit | ||||||
|  | Group=_matrix-conduit | ||||||
|  | Type=simple | ||||||
|  | 
 | ||||||
|  | AmbientCapabilities= | ||||||
|  | CapabilityBoundingSet= | ||||||
|  | LockPersonality=yes | ||||||
|  | MemoryDenyWriteExecute=yes | ||||||
|  | NoNewPrivileges=yes | ||||||
|  | ProtectClock=yes | ||||||
|  | ProtectControlGroups=yes | ||||||
|  | ProtectHome=yes | ||||||
|  | ProtectHostname=yes | ||||||
|  | ProtectKernelLogs=yes | ||||||
|  | ProtectKernelModules=yes | ||||||
|  | ProtectKernelTunables=yes | ||||||
|  | ProtectSystem=strict | ||||||
|  | PrivateDevices=yes | ||||||
|  | PrivateMounts=yes | ||||||
|  | PrivateTmp=yes | ||||||
|  | PrivateUsers=yes | ||||||
|  | RemoveIPC=yes | ||||||
|  | RestrictAddressFamilies=AF_INET AF_INET6 | ||||||
|  | RestrictNamespaces=yes | ||||||
|  | RestrictRealtime=yes | ||||||
|  | RestrictSUIDSGID=yes | ||||||
|  | SystemCallArchitectures=native | ||||||
|  | SystemCallFilter=@system-service | ||||||
|  | SystemCallErrorNumber=EPERM | ||||||
|  | StateDirectory=matrix-conduit | ||||||
|  | 
 | ||||||
|  | Environment="ROCKET_ENV=production" | ||||||
|  | Environment="ROCKET_DATABASE_PATH=/var/lib/matrix-conduit" | ||||||
|  | EnvironmentFile=/etc/matrix-conduit/debian | ||||||
|  | EnvironmentFile=/etc/matrix-conduit/local | ||||||
|  | 
 | ||||||
|  | ExecStart=/usr/sbin/matrix-conduit | ||||||
|  | Restart=on-failure | ||||||
|  | RestartSec=10 | ||||||
|  | StartLimitInterval=1m | ||||||
|  | StartLimitBurst=5 | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
							
								
								
									
										73
									
								
								debian/postinst
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								debian/postinst
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | . /usr/share/debconf/confmodule | ||||||
|  | 
 | ||||||
|  | CONDUIT_CONFIG_PATH=/etc/matrix-conduit | ||||||
|  | CONDUIT_CONFIG_FILE="$CONDUIT_CONFIG_PATH/debian" | ||||||
|  | CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit | ||||||
|  | 
 | ||||||
|  | case "$1" in | ||||||
|  |   configure) | ||||||
|  |     # Create the `_matrix-conduit` user if it does not exist yet. | ||||||
|  |     if ! getent passwd _matrix-conduit > /dev/null ; then | ||||||
|  |       echo 'Adding system user for the Conduit Matrix homeserver' 1>&2 | ||||||
|  |       adduser --system --group --quiet \ | ||||||
|  |         --home $CONDUIT_DATABASE_PATH \ | ||||||
|  |         --disabled-login \ | ||||||
|  |         --force-badname \ | ||||||
|  |         _matrix-conduit | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     # Create the database path if it does not exist yet. | ||||||
|  |     if [ ! -d "$CONDUIT_DATABASE_PATH" ]; then | ||||||
|  |       mkdir -p "$CONDUIT_DATABASE_PATH" | ||||||
|  |       chown _matrix-conduit "$CONDUIT_DATABASE_PATH" | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     # Write the debconf values in the config. | ||||||
|  |     db_get matrix-conduit/hostname | ||||||
|  |     ROCKET_SERVER_NAME="$RET" | ||||||
|  |     db_get matrix-conduit/address | ||||||
|  |     ROCKET_ADDRESS="$RET" | ||||||
|  |     db_get matrix-conduit/port | ||||||
|  |     ROCKET_PORT="$RET" | ||||||
|  |     cat >"$CONDUIT_CONFIG_FILE" << EOF | ||||||
|  | # Conduit homeserver Debian configuration | ||||||
|  | # | ||||||
|  | # Conduit is an application based on the Rocket web framework. | ||||||
|  | # Configuration of Conduit happens via Debconf (of which the resulting config | ||||||
|  | # is in this file) and optionally by uncommenting and tweaking the variables in | ||||||
|  | # /etc/matrix-conduit/local. | ||||||
|  | 
 | ||||||
|  | # THIS FILE IS GENERATED BY DEBCONF AND WILL BE OVERRIDDEN! | ||||||
|  | # | ||||||
|  | # 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. | ||||||
|  | # | ||||||
|  | # 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 | ||||||
|  | # only listen on the localhost when using a reverse proxy. | ||||||
|  | ROCKET_ADDRESS="$ROCKET_ADDRESS" | ||||||
|  | 
 | ||||||
|  | # The port of the Matrix homeserver. | ||||||
|  | # | ||||||
|  | # This port is could be any available port if accessed by a reverse proxy. | ||||||
|  | # By default the server listens on port 8000. | ||||||
|  | ROCKET_PORT="$ROCKET_PORT" | ||||||
|  | 
 | ||||||
|  | # THIS FILE IS GENERATED BY DEBCONF AND WILL BE OVERRIDDEN! | ||||||
|  | EOF | ||||||
|  |     ;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | #DEBHELPER# | ||||||
							
								
								
									
										22
									
								
								debian/postrm
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								debian/postrm
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | CONDUIT_CONFIG_PATH=/etc/matrix-conduit | ||||||
|  | CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit | ||||||
|  | 
 | ||||||
|  | case $1 in | ||||||
|  |   purge) | ||||||
|  |     # Per https://www.debian.org/doc/debian-policy/ch-files.html#behavior | ||||||
|  |     # "configuration files must be preserved when the package is removed, and | ||||||
|  |     #  only deleted when the package is purged." | ||||||
|  |     if [ -d "$CONDUIT_CONFIG_PATH" ]; then | ||||||
|  |       rm -r "$CONDUIT_CONFIG_PATH" | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     if [ -d "$CONDUIT_DATABASE_PATH" ]; then | ||||||
|  |       rm -r "$CONDUIT_DATABASE_PATH" | ||||||
|  |     fi | ||||||
|  |     ;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | #DEBHELPER# | ||||||
							
								
								
									
										21
									
								
								debian/templates
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								debian/templates
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | Template: matrix-conduit/hostname | ||||||
|  | Type: string | ||||||
|  | Default: localhost | ||||||
|  | Description: The server (host)name of the Matrix homeserver | ||||||
|  |  This is the hostname the homeserver will be reachable at via a client. | ||||||
|  |  . | ||||||
|  |  If set to "localhost", you can connect with a client locally and clients | ||||||
|  |  from other hosts and also other homeservers will not be able to reach you! | ||||||
|  | 
 | ||||||
|  | Template: matrix-conduit/address | ||||||
|  | Type: string | ||||||
|  | Default: 127.0.0.1 | ||||||
|  | Description: The listen address of the Matrix homeserver | ||||||
|  |  This is the address the homeserver will listen on. Leave it set to 127.0.0.1 | ||||||
|  |  when using a reverse proxy. | ||||||
|  | 
 | ||||||
|  | Template: matrix-conduit/port | ||||||
|  | Type: string | ||||||
|  | Default: 14004 | ||||||
|  | Description: The port of the Matrix homeserver | ||||||
|  |  This port is most often just accessed by a reverse proxy. | ||||||
		Loading…
	
		Reference in a new issue