117 lines
3.0 KiB
Bash
Executable File
117 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
WEBROOT=/data/www
|
|
WEBDAV_PORT=${WEBDAV_PORT:-8080}
|
|
PHP=${PHP:-none}
|
|
POSTSIZE=${POSTSIZE:-256M}
|
|
USERNAME=${USERNAME:-theuser}
|
|
PUID=${PUID:-1000}
|
|
GROUPNAME=${GROUPNAME:-thegroup}
|
|
PGID=${PGID:-1000}
|
|
RANDOMPWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13)
|
|
addgroup -g "${PGID}" "${GROUPNAME}"
|
|
addgroup nginx "${GROUPNAME}"
|
|
adduser -DH -h "${WEBROOT}" -G "${GROUPNAME}" -u "${PUID}" "${USERNAME}"
|
|
printf '%s\n%s' "${RANDOMPWD}" "${RANDOMPWD}" | passwd "${USERNAME}"
|
|
echo "password for the user \"${USERNAME}\" is: ${RANDOMPWD}"
|
|
|
|
chown "${PUID}:${GROUPNAME}" "${WEBROOT}" -R
|
|
find "${WEBROOT}" -type d -exec chmod 0755 {} \;
|
|
find "${WEBROOT}" -type f -exec chmod 0644 {} \;
|
|
|
|
FPM_MAX_CHILDREN=${FPM_MAX_CHILDREN:-5}
|
|
FPM_START_SERVERS=${FPM_START_SERVERS:-1}
|
|
FPM_MIN_SPARE_SERVERS=${FPM_MIN_SPARE_SERVERS:-1}
|
|
FPM_MAX_SPARE_SERVERS=${FPM_MAX_SPARE_SERVERS:-3}
|
|
|
|
# set php config
|
|
case "${PHP}" in
|
|
"php7")
|
|
cat >"/etc/${PHP}/php-fpm.d/www.conf" <<EOF
|
|
[www]
|
|
user = ${USERNAME}
|
|
group = ${GROUPNAME}
|
|
listen = 127.0.0.1:9000
|
|
pm = dynamic
|
|
pm.max_children = ${FPM_MAX_CHILDREN}
|
|
pm.start_servers = ${FPM_START_SERVERS}
|
|
pm.min_spare_servers = ${FPM_MIN_SPARE_SERVERS}
|
|
pm.max_spare_servers = ${FPM_MAX_SPARE_SERVERS}
|
|
EOF
|
|
cat >"/etc/${PHP}/conf.d/post_size.ini" <<EOF
|
|
upload_max_size = ${POSTSIZE}
|
|
post_max_size = ${POSTSIZE}
|
|
upload_max_filesize = ${POSTSIZE}
|
|
upload_tmp_dir = /tmp
|
|
EOF
|
|
;;
|
|
*) ;;
|
|
esac
|
|
|
|
cat >"/etc/nginx/custom.d/post_size.conf" <<EOF
|
|
client_max_body_size ${POSTSIZE};
|
|
EOF
|
|
|
|
# start php
|
|
case "${PHP}" in
|
|
"php7")
|
|
cp /app/nginx/php7.conf /etc/nginx/custom.d/
|
|
cp /app/nginx/default_php.conf /etc/nginx/http.d/default.conf
|
|
/usr/sbin/php-fpm7 -D
|
|
;;
|
|
*)
|
|
cp /app/nginx/default_nophp.conf /etc/nginx/http.d/default.conf
|
|
;;
|
|
esac
|
|
|
|
# start ssh
|
|
for keytype in ecdsa rsa ed25519 ; do
|
|
if [ ! -r "/ssh/ssh_host_${keytype}_key" ] ; then
|
|
/usr/bin/ssh-keygen -t "${keytype}" -f "/ssh/ssh_host_${keytype}_key" -N ""
|
|
fi
|
|
chmod 0600 "/ssh/ssh_host_${keytype}_key"
|
|
chmod 0644 "/ssh/ssh_host_${keytype}_key.pub"
|
|
done
|
|
|
|
# set authorized_keys permissions
|
|
if [ -f /ssh/authorized_keys ] ; then
|
|
chmod 0600 /ssh/authorized_keys
|
|
chown "${USERNAME}:${GROUPNAME}" /ssh/authorized_keys
|
|
fi
|
|
|
|
chmod 0700 "${WEBROOT}/.ssh"
|
|
/usr/sbin/sshd -e
|
|
|
|
cat > /etc/nginx/conf.d/user.conf <<EOF
|
|
user ${USERNAME} ${GROUPNAME};
|
|
EOF
|
|
|
|
# fix permissions for upload
|
|
chown "${USERNAME}" /var/lib/nginx /var/lib/nginx/tmp
|
|
|
|
cat > /etc/nginx/http.d/webdav.conf <<EOF
|
|
server {
|
|
listen ${WEBDAV_PORT} default_server;
|
|
listen [::]:${WEBDAV_PORT} default_server;
|
|
root ${WEBROOT};
|
|
|
|
location / {
|
|
autoindex on;
|
|
autoindex_exact_size off;
|
|
autoindex_localtime on;
|
|
dav_methods PUT DELETE MKCOL COPY MOVE;
|
|
dav_ext_methods PROPFIND OPTIONS;
|
|
create_full_put_path on;
|
|
dav_access user:rw;
|
|
}
|
|
|
|
auth_basic "Restricted area";
|
|
auth_basic_user_file /app/htpasswd;
|
|
}
|
|
EOF
|
|
|
|
touch /app/htpasswd
|
|
|
|
# start nginx
|
|
nginx
|