Add Debian package support
This commit is contained in:
23
README.md
23
README.md
@@ -36,8 +36,7 @@ Given the phone number `+123456789`, the following lookup logic will be performe
|
|||||||
- Forwarder: Proxy the request to other configurable identity servers.
|
- Forwarder: Proxy the request to other configurable identity servers.
|
||||||
|
|
||||||
# Packages
|
# Packages
|
||||||
## Native installer
|
See [releases]((https://github.com/kamax-io/mxisd/releases)) for native installers of supported systems.
|
||||||
See releases for native installers of supported systems.
|
|
||||||
If none is available, please use other packages or build from source.
|
If none is available, please use other packages or build from source.
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
@@ -52,7 +51,20 @@ docker run -v /data/mxisd/etc:/etc/mxisd -v /data/mxisd/var:/var/mxisd -p 8090:8
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Debian
|
## Debian
|
||||||
TODO
|
### Download
|
||||||
|
See the [releases section](https://github.com/kamax-io/mxisd/releases).
|
||||||
|
|
||||||
|
### From source
|
||||||
|
Requirements:
|
||||||
|
- fakeroot
|
||||||
|
- dpkg-deb
|
||||||
|
|
||||||
|
Run:
|
||||||
|
```
|
||||||
|
./gradlew buildDeb
|
||||||
|
```
|
||||||
|
|
||||||
|
You will find the debian package in `build/dist`
|
||||||
|
|
||||||
# From Source
|
# From Source
|
||||||
## Requirements
|
## Requirements
|
||||||
@@ -68,8 +80,9 @@ cd mxisd
|
|||||||
## Configure
|
## Configure
|
||||||
1. Create a new local config: `cp application.example.yaml application.yaml`
|
1. Create a new local config: `cp application.example.yaml application.yaml`
|
||||||
2. Set the `server.name` value to the domain value used in your Home Server configuration
|
2. Set the `server.name` value to the domain value used in your Home Server configuration
|
||||||
3. Provide the LDAP attributes you want to use for lookup
|
3. Set an absolute location for the signing keys using `key.path`
|
||||||
4. Edit an entity in your LDAP database and set the configure attribute with a Matrix ID (e.g. `@john.doe:example.org`)
|
4. Provide the LDAP attributes you want to use for lookup, if you want to use one
|
||||||
|
5. Edit an entity in your LDAP database and set the configure attribute with a Matrix ID (e.g. `@john.doe:example.org`)
|
||||||
|
|
||||||
## Test build and configuration
|
## Test build and configuration
|
||||||
Start the server in foreground to validate the build:
|
Start the server in foreground to validate the build:
|
||||||
|
@@ -6,7 +6,7 @@ server:
|
|||||||
# HTTPS can be configured using Tomcat configuration properties.
|
# HTTPS can be configured using Tomcat configuration properties.
|
||||||
port: 8090
|
port: 8090
|
||||||
|
|
||||||
# Realm under which this Identity Server is authoritative.
|
# Realm under which this Identity Server is authoritative, required.
|
||||||
#
|
#
|
||||||
# This is used to avoid unnecessary connections and endless recursive lookup.
|
# This is used to avoid unnecessary connections and endless recursive lookup.
|
||||||
# e.g. domain name in e-mails.
|
# e.g. domain name in e-mails.
|
||||||
@@ -16,12 +16,14 @@ server:
|
|||||||
|
|
||||||
key:
|
key:
|
||||||
|
|
||||||
# Where the Identity Server signing key will be stored.
|
# Absolute path for the Identity Server signing key, required.
|
||||||
|
# During testing, /var/tmp/mxisd.key is a possible value
|
||||||
#
|
#
|
||||||
# /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\
|
# For production, use a stable location like:
|
||||||
# /!\ CHANGE THIS TO A MORE PERMANENT LOCATION! /!\
|
# - /var/opt/mxisd/sign.key
|
||||||
# /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\
|
# - /var/local/mxisd/sign.key
|
||||||
path: '/var/tmp/mxis-signing.key'
|
# - /var/lib/mxisd/sign.key
|
||||||
|
path: '%SIGNING_KEYS_PATH%'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -97,7 +99,7 @@ lookup:
|
|||||||
|
|
||||||
|
|
||||||
ldap:
|
ldap:
|
||||||
enabled: true
|
enabled: false
|
||||||
tls: false
|
tls: false
|
||||||
host: 'localhost'
|
host: 'localhost'
|
||||||
port: 389
|
port: 389
|
||||||
|
109
build.gradle
109
build.gradle
@@ -1,3 +1,5 @@
|
|||||||
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* mxisd - Matrix Identity Server Daemon
|
* mxisd - Matrix Identity Server Daemon
|
||||||
* Copyright (C) 2017 Maxime Dor
|
* Copyright (C) 2017 Maxime Dor
|
||||||
@@ -21,6 +23,34 @@
|
|||||||
apply plugin: 'groovy'
|
apply plugin: 'groovy'
|
||||||
apply plugin: 'org.springframework.boot'
|
apply plugin: 'org.springframework.boot'
|
||||||
|
|
||||||
|
def confFileName = "application.example.yaml"
|
||||||
|
def distDir = "${project.buildDir}/dist"
|
||||||
|
|
||||||
|
def debBinPath = "/usr/lib/mxisd"
|
||||||
|
def debConfPath = "/etc/mxisd"
|
||||||
|
def debDataPath = "/var/lib/mxisd"
|
||||||
|
def debSystemdPath = "/etc/systemd/system"
|
||||||
|
|
||||||
|
def debConfFileName = "mxisd-sample.yaml"
|
||||||
|
|
||||||
|
def debBuildBasePath = "${project.buildDir}/tmp/debian"
|
||||||
|
def debBuildDebianPath = "${debBuildBasePath}/DEBIAN"
|
||||||
|
def debBuildBinPath = "${debBuildBasePath}${debBinPath}"
|
||||||
|
def debBuildConfPath = "${debBuildBasePath}${debConfPath}"
|
||||||
|
def debBuildDataPath = "${debBuildBasePath}${debDataPath}"
|
||||||
|
def debBuildSystemdPath = "${debBuildBasePath}${debSystemdPath}"
|
||||||
|
|
||||||
|
String gitVersion() {
|
||||||
|
def versionPattern = Pattern.compile("v(\\d+\\.)?(\\d+\\.)?(\\d+)(-.*)?")
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine = [ 'git', 'describe', '--always', '--dirty' ]
|
||||||
|
standardOutput = out
|
||||||
|
}
|
||||||
|
def v = out.toString().replace(System.lineSeparator(), '')
|
||||||
|
return versionPattern.matcher(v).matches() ? v.substring(1) : v
|
||||||
|
}
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -73,3 +103,82 @@ springBoot {
|
|||||||
confFolder: "/etc/default"
|
confFolder: "/etc/default"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task buildDeb(dependsOn: build) {
|
||||||
|
doLast {
|
||||||
|
def v = gitVersion()
|
||||||
|
println "Version for package: ${v}"
|
||||||
|
mkdir distDir
|
||||||
|
mkdir debBuildBasePath
|
||||||
|
mkdir "${debBuildBasePath}/DEBIAN"
|
||||||
|
mkdir debBuildBinPath
|
||||||
|
mkdir debBuildConfPath
|
||||||
|
mkdir debBuildDataPath
|
||||||
|
mkdir debBuildSystemdPath
|
||||||
|
|
||||||
|
copy {
|
||||||
|
from "${project.buildDir}/libs/mxisd.jar"
|
||||||
|
into debBuildBinPath
|
||||||
|
}
|
||||||
|
|
||||||
|
ant.chmod(
|
||||||
|
file: "${debBuildBinPath}/mxisd.jar",
|
||||||
|
perm: 'a+x'
|
||||||
|
)
|
||||||
|
|
||||||
|
copy {
|
||||||
|
from(project.file(confFileName)) {
|
||||||
|
rename confFileName, debConfFileName
|
||||||
|
}
|
||||||
|
into debBuildConfPath
|
||||||
|
}
|
||||||
|
|
||||||
|
ant.replace(
|
||||||
|
file: "${debBuildConfPath}/${debConfFileName}",
|
||||||
|
token: '%SIGNING_KEYS_PATH%',
|
||||||
|
value: "${debDataPath}/signing.key"
|
||||||
|
)
|
||||||
|
|
||||||
|
copy {
|
||||||
|
from project.file('src/debian')
|
||||||
|
into debBuildDebianPath
|
||||||
|
}
|
||||||
|
|
||||||
|
ant.replace(
|
||||||
|
file: "${debBuildDebianPath}/control",
|
||||||
|
token: 'Version: 0',
|
||||||
|
value: "Version: ${v}"
|
||||||
|
)
|
||||||
|
|
||||||
|
ant.replace(
|
||||||
|
file: "${debBuildDebianPath}/postinst",
|
||||||
|
token: '%DEB_DATA_DIR%',
|
||||||
|
value: debDataPath
|
||||||
|
)
|
||||||
|
|
||||||
|
ant.chmod(
|
||||||
|
file: "${debBuildDebianPath}/postinst",
|
||||||
|
perm: 'a+x'
|
||||||
|
)
|
||||||
|
|
||||||
|
ant.chmod(
|
||||||
|
file: "${debBuildDebianPath}/prerm",
|
||||||
|
perm: 'a+x'
|
||||||
|
)
|
||||||
|
|
||||||
|
copy {
|
||||||
|
from "${project.file('src/systemd/mxisd.service')}"
|
||||||
|
into debBuildSystemdPath
|
||||||
|
}
|
||||||
|
|
||||||
|
exec {
|
||||||
|
commandLine(
|
||||||
|
'fakeroot',
|
||||||
|
'dpkg-deb',
|
||||||
|
'-b',
|
||||||
|
debBuildBasePath,
|
||||||
|
"${project.buildDir}/dist"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
7
src/debian/control
Normal file
7
src/debian/control
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Package: mxisd
|
||||||
|
Maintainer: Kamax.io <foss@kamax.io>
|
||||||
|
Homepage: https://github.com/kamax-io/mxisd
|
||||||
|
Description: Federated Matrix Identity Server
|
||||||
|
Architecture: all
|
||||||
|
Depends: openjdk-8-jre | openjdk-8-jre-headless | openjdk-8-jdk | openjdk-8-jdk-headless
|
||||||
|
Version: 0
|
13
src/debian/postinst
Executable file
13
src/debian/postinst
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# Add service account
|
||||||
|
useradd -r mxisd || true
|
||||||
|
|
||||||
|
# Set permissions for data directory
|
||||||
|
chown -R mxisd:mxisd %DEB_DATA_DIR%
|
||||||
|
|
||||||
|
# Create symlink to mxusd
|
||||||
|
ln -sfT /usr/lib/mxisd/mxisd.jar /usr/bin/mxisd
|
||||||
|
|
||||||
|
# Enable systemd service
|
||||||
|
systemctl enable mxisd.service
|
10
src/debian/prerm
Normal file
10
src/debian/prerm
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Stop running instance if needed
|
||||||
|
systemctl stop mxisd.service
|
||||||
|
|
||||||
|
# Disable service if exists
|
||||||
|
systemctl disable mxisd.service
|
||||||
|
|
||||||
|
# remove symlink
|
||||||
|
rm /usr/bin/mxisd
|
Reference in New Issue
Block a user