mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-21 18:25:41 +03:00
75 lines
1.9 KiB
Bash
75 lines
1.9 KiB
Bash
#!/sbin/openrc-run
|
|
|
|
name="MinIO"
|
|
description="Minio Block Storage Server"
|
|
|
|
: ${data_dirs:="/var/lib/minio/data"}
|
|
: ${logfile="/var/log/$RC_SVCNAME.log"}
|
|
: ${command_user:="minio:minio"}
|
|
: ${healthcheck_timer:=30}
|
|
: ${respawn_delay:=5}
|
|
: ${respawn_max:=0}
|
|
|
|
command="/usr/bin/minio"
|
|
command_args="server
|
|
${certs_dir:+"--certs-dir=$certs_dir"}
|
|
${command_args-"--quiet --anonymous"}
|
|
$data_dirs
|
|
"
|
|
command_background="yes"
|
|
pidfile="/run/$RC_SVCNAME.pid"
|
|
output_log="$logfile"
|
|
error_log="$logfile"
|
|
|
|
depend() {
|
|
need localmount net
|
|
use dns
|
|
}
|
|
|
|
start_pre() {
|
|
# Replace root user and password placeholders with random strings.
|
|
if [ "$MINIO_ROOT_USER" = 'change-me' ] || [ "$MINIO_ROOT_PASSWORD" = 'change-me' ]; then
|
|
local conf
|
|
for conf in "/etc/conf.d/${RC_SVCNAME%%.*}" "/etc/conf.d/$RC_SVCNAME" ""; do
|
|
[ -w "$conf" ] && break
|
|
done
|
|
if [ "$conf" ]; then
|
|
_randomize_secrets "$conf"
|
|
else # no writable config found
|
|
ewarn "Change MINIO_ROOT_USER and MINIO_ROOT_PASSWORD in /etc/conf.d/"
|
|
ewarn "to unique and long values!"
|
|
fi
|
|
fi
|
|
|
|
# If the first directory is a local directory (starts with "/"), ensure it exists.
|
|
case "$data_dirs" in /*)
|
|
local first_dir=$(echo "$data_dirs" | grep -Eo '\S+' | head -n1)
|
|
|
|
checkpath --directory --mode 0700 --owner "$command_user" "$first_dir" || return 1
|
|
esac
|
|
|
|
if [ "$logfile" ]; then
|
|
checkpath --file --mode 0640 --owner "$command_user" "$logfile" || return 1
|
|
fi
|
|
}
|
|
|
|
healthcheck() {
|
|
[ -x /usr/bin/curl ] || return 0
|
|
/usr/bin/curl -q "${MINIO_ADDRESS:-"localhost:9000"}"/minio/health/ready
|
|
}
|
|
|
|
_randomize_secrets() {
|
|
einfo "Replacing MINIO_ROOT_USER and MINIO_ROOT_PASSWORD in $1 with random values..."
|
|
|
|
local user=$(cat /proc/sys/kernel/random/uuid 2>/dev/null || _gen_pass 16)
|
|
local pass=$(_gen_pass 32)
|
|
|
|
sed -Ei \
|
|
-e 's/^(MINIO_ROOT_USER)="change-me"/\1="'"$user"'"/' \
|
|
-e 's/^(MINIO_ROOT_PASSWORD)="change-me"/\1="'"$pass"'"/' \
|
|
"$1"
|
|
}
|
|
|
|
_gen_pass() {
|
|
head /dev/urandom | tr -dc A-Za-z0-9 | head -c $1 && echo ''
|
|
}
|