user/listmonk: new aport
This commit is contained in:
parent
1279f4009c
commit
28d52cbcc7
6 changed files with 161 additions and 0 deletions
71
user/listmonk/APKBUILD
Normal file
71
user/listmonk/APKBUILD
Normal file
|
@ -0,0 +1,71 @@
|
|||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
pkgname=listmonk
|
||||
pkgver=3.0.0
|
||||
pkgrel=0
|
||||
pkgdesc='Self-hosted newsletter and mailing list manager with a modern dashboard'
|
||||
arch="all"
|
||||
url=https://listmonk.app
|
||||
license="AGPL3"
|
||||
depends="
|
||||
libcap-setcap
|
||||
postgresql
|
||||
procps
|
||||
"
|
||||
makedepends="go npm nodejs yarn"
|
||||
source="
|
||||
$pkgname-$pkgver.tar.gz::https://github.com/knadh/listmonk/archive/v$pkgver.tar.gz
|
||||
listmonk.sh
|
||||
listmonk.openrc
|
||||
"
|
||||
install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
|
||||
subpackages="$pkgname-openrc"
|
||||
pkgusers="listmonk"
|
||||
pkggroups="listmonk"
|
||||
|
||||
build() {
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildmode=pie \
|
||||
-mod=readonly \
|
||||
-modcacherw \
|
||||
-ldflags "-extldflags '$LDFLAGS' -X 'main.buildString=Alpine Linux v$pkgver-$pkgrel' -X 'main.versionString=v$pkgver'" \
|
||||
-o $pkgname \
|
||||
cmd/*.go
|
||||
|
||||
(
|
||||
cd frontend
|
||||
export YARN_CACHE_FOLDER="$srcdir/node_modules"
|
||||
export VUE_APP_VERSION="v$pkgver"
|
||||
yarn install --frozen-lockfile
|
||||
yarn build
|
||||
)
|
||||
}
|
||||
|
||||
check() {
|
||||
go test ./...
|
||||
}
|
||||
|
||||
package() {
|
||||
install -Dm755 "$srcdir"/listmonk.sh "$pkgdir"/usr/bin/listmonk
|
||||
install -Dm644 config.toml.sample "$pkgdir"/etc/listmonk/config.toml
|
||||
install -Dm644 -t "$pkgdir"/usr/share/webapps/listmonk/ \
|
||||
schema.sql \
|
||||
queries.sql \
|
||||
config.toml.sample
|
||||
install -Dm755 listmonk "$pkgdir"/usr/share/webapps/listmonk/
|
||||
install -Dm644 -t "$pkgdir"/usr/share/webapps/listmonk/frontend/dist/ \
|
||||
frontend/dist/static/favicon.png
|
||||
cp -a frontend/dist/static "$pkgdir"/usr/share/webapps/listmonk/frontend/dist/static
|
||||
cp -a frontend/dist/index.html "$pkgdir"/usr/share/webapps/listmonk/frontend/dist/index.html
|
||||
cp -a static "$pkgdir"/usr/share/webapps/listmonk/
|
||||
cp -a i18n "$pkgdir"/usr/share/webapps/listmonk/
|
||||
install -Dm755 "$srcdir"/$pkgname.openrc \
|
||||
"$pkgdir"/etc/init.d/$pkgname
|
||||
ln -s /etc/listmonk/config.toml "$pkgdir"/usr/share/webapps/listmonk/config.toml
|
||||
}
|
||||
sha512sums="
|
||||
afd0ea1d4d2b2753c3043526590cf09c45a541a2d818f5d1581644ffd10818326fd553a3b04bca59494860a7bb6e96364b08afd33d337a9fc5c71bedd1a5ee6c listmonk-3.0.0.tar.gz
|
||||
939450af4b23708e3d23a5a88fad4c24b957090bdd21351a6dd520959e52e45e5fcac117a3eafa280d9506616dae39ad3943589571f008cac5abe1ffd8062424 listmonk.sh
|
||||
8e9c0b1f335c295fb741418246eb17c7566e5e4200a284c6483433e8ddbf5250aa692435211cf062ad1dfcdce3fae9148def28f03f2492d33fe5e66cbeebd4bd listmonk.openrc
|
||||
"
|
29
user/listmonk/listmonk.openrc
Normal file
29
user/listmonk/listmonk.openrc
Normal file
|
@ -0,0 +1,29 @@
|
|||
#!/sbin/openrc-run
|
||||
|
||||
name="$RC_SVCNAME"
|
||||
cfgfile="/etc/conf.d/$RC_SVCNAME.conf"
|
||||
pidfile="/run/$RC_SVCNAME.pid"
|
||||
working_directory="/usr/share/webapps/listmonk"
|
||||
command="/usr/share/webapps/listmonk/listmonk"
|
||||
command_user="listmonk"
|
||||
command_group="listmonk"
|
||||
start_stop_daemon_args=""
|
||||
command_background="yes"
|
||||
output_log="/var/log/listmonk/$RC_SVCNAME.log"
|
||||
error_log="/var/log/listmonk/$RC_SVCNAME.err"
|
||||
|
||||
depend() {
|
||||
need postgresql
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
cd "$working_directory"
|
||||
checkpath --directory --owner $command_user:$command_group --mode 0775 \
|
||||
/var/log/listmonk \
|
||||
/var/lib/listmonk
|
||||
}
|
||||
|
||||
stop_pre() {
|
||||
ebegin "Killing child processes"
|
||||
kill $(ps -o pid= --ppid $(cat $pidfile)) || true
|
||||
}
|
27
user/listmonk/listmonk.post-install
Normal file
27
user/listmonk/listmonk.post-install
Normal file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
setcap 'cap_net_bind_service=+ep' /usr/share/webapps/listmonk/listmonk
|
||||
|
||||
if [ "${0##*.}" = 'post-upgrade' ]; then
|
||||
cat >&2 <<-EOF
|
||||
*
|
||||
* To finish Listmonk upgrade run:
|
||||
*
|
||||
* listmonk --upgrade
|
||||
*
|
||||
EOF
|
||||
else
|
||||
cat >&2 <<-EOF
|
||||
*
|
||||
* 1. Adjust settings in /etc/listmonk/config.toml.
|
||||
*
|
||||
* 2. Create database for Listmonk:
|
||||
*
|
||||
* psql -c "CREATE ROLE listmonk PASSWORD 'top-secret' INHERIT LOGIN;"
|
||||
* psql -c "CREATE DATABASE listmonk OWNER listmonk ENCODING 'UTF-8';"
|
||||
*
|
||||
* 3. Run "listmonk --install"
|
||||
*
|
||||
EOF
|
||||
fi
|
1
user/listmonk/listmonk.post-upgrade
Symbolic link
1
user/listmonk/listmonk.post-upgrade
Symbolic link
|
@ -0,0 +1 @@
|
|||
listmonk.post-install
|
21
user/listmonk/listmonk.pre-install
Normal file
21
user/listmonk/listmonk.pre-install
Normal file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
# It's very important to set user/group correctly.
|
||||
|
||||
listmonk_dir='/var/lib/listmonk'
|
||||
|
||||
if ! getent group listmonk 1>/dev/null; then
|
||||
echo '* Creating group listmonk' 1>&2
|
||||
|
||||
addgroup -S listmonk
|
||||
fi
|
||||
|
||||
if ! id listmonk 2>/dev/null 1>&2; then
|
||||
echo '* Creating user listmonk' 1>&2
|
||||
|
||||
adduser -DHS -G listmonk -h "$listmonk_dir" -s /bin/sh \
|
||||
-g "added by apk for listmonk" listmonk
|
||||
passwd -u listmonk 1>/dev/null # unlock
|
||||
fi
|
||||
|
||||
|
||||
exit 0
|
12
user/listmonk/listmonk.sh
Normal file
12
user/listmonk/listmonk.sh
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
#!/bin/sh
|
||||
|
||||
BUNDLE_DIR='/usr/share/webapps/listmonk'
|
||||
|
||||
cd $BUNDLE_DIR
|
||||
|
||||
if [ "$(id -un)" != 'listmonk' ]; then
|
||||
exec su listmonk -c '"$0" "$@"' -- ./listmonk "$@"
|
||||
else
|
||||
exec ./listmonk "$@"
|
||||
fi
|
Loading…
Reference in a new issue