Upload full Albumik YunoHost package
This commit is contained in:
32
scripts/_common.sh
Executable file
32
scripts/_common.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
app=${YNH_APP_INSTANCE_NAME:-albumik}
|
||||
install_dir="/var/www/$app"
|
||||
data_dir="/home/yunohost.app/$app"
|
||||
config_dir="/etc/$app"
|
||||
service_file="/etc/systemd/system/$app.service"
|
||||
|
||||
find_free_port() {
|
||||
python3 - <<'PY'
|
||||
import socket
|
||||
for p in range(8097, 8297):
|
||||
s=socket.socket()
|
||||
try:
|
||||
s.bind(('127.0.0.1', p))
|
||||
print(p)
|
||||
break
|
||||
except OSError:
|
||||
pass
|
||||
finally:
|
||||
s.close()
|
||||
PY
|
||||
}
|
||||
|
||||
normalize_path() {
|
||||
local p="$1"
|
||||
[ -z "$p" ] && p="/"
|
||||
[[ "$p" != /* ]] && p="/$p"
|
||||
[ "$p" != "/" ] && p="${p%/}"
|
||||
echo "$p"
|
||||
}
|
||||
8
scripts/backup
Executable file
8
scripts/backup
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
source ./scripts/_common.sh
|
||||
|
||||
mkdir -p "$YNH_BACKUP_DIR"
|
||||
tar -C / -czf "$YNH_BACKUP_DIR/albumik-data.tar.gz" "${data_dir#/}" "${config_dir#/}" "${install_dir#/}" 2>/dev/null || true
|
||||
if [ -f "$service_file" ]; then cp "$service_file" "$YNH_BACKUP_DIR/$app.service"; fi
|
||||
echo "Albumik backup declared"
|
||||
65
scripts/install
Executable file
65
scripts/install
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
source ./scripts/_common.sh
|
||||
|
||||
# YunoHost install args
|
||||
# packaging v2 passes these variables to scripts.
|
||||
domain=${YNH_APP_ARG_DOMAIN:?Missing domain}
|
||||
path=$(normalize_path "${YNH_APP_ARG_PATH:-/}")
|
||||
admin_user=${YNH_APP_ARG_ADMIN_USER:-${YNH_APP_ARG_ADMIN:-admin}}
|
||||
admin_password=${YNH_APP_ARG_ADMIN_PASSWORD:-${YNH_APP_ARG_PASSWORD:-}}
|
||||
if [ -z "$admin_password" ]; then
|
||||
echo "Admin password is required" >&2
|
||||
exit 1
|
||||
fi
|
||||
port=$(find_free_port)
|
||||
|
||||
# Create dedicated app user when resources.system_user did not already do it.
|
||||
if ! id "$app" >/dev/null 2>&1; then
|
||||
useradd --system --home "$install_dir" --shell /usr/sbin/nologin "$app"
|
||||
fi
|
||||
|
||||
mkdir -p "$install_dir" "$data_dir/data" "$data_dir/media/originals" "$data_dir/media/thumbs" "$data_dir/media/previews" "$data_dir/media/pending" "$data_dir/logs" "$config_dir"
|
||||
cp -a backend web doc "$install_dir"/
|
||||
|
||||
cp conf/config.json "$config_dir/config.json"
|
||||
sed -i \
|
||||
-e "s#__PORT__#$port#g" \
|
||||
-e "s#__PATH__#$path#g" \
|
||||
-e "s#__DATA_DIR__#$data_dir#g" \
|
||||
-e "s#__INSTALL_DIR__#$install_dir#g" \
|
||||
-e "s#__ADMIN_USER__#$admin_user#g" \
|
||||
-e "s#__ADMIN_PASSWORD__#$admin_password#g" \
|
||||
"$config_dir/config.json"
|
||||
|
||||
cp conf/albumik.service "$service_file"
|
||||
sed -i \
|
||||
-e "s#__APP__#$app#g" \
|
||||
-e "s#__DATA_DIR__#$data_dir#g" \
|
||||
-e "s#__INSTALL_DIR__#$install_dir#g" \
|
||||
"$service_file"
|
||||
|
||||
mkdir -p "/etc/nginx/conf.d/$domain.d"
|
||||
cp conf/nginx.conf "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
sed -i \
|
||||
-e "s#__PORT__#$port#g" \
|
||||
-e "s#__PATH__#$path#g" \
|
||||
"/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
|
||||
chown -R "$app:$app" "$install_dir" "$data_dir" "$config_dir"
|
||||
chmod 750 "$data_dir" "$config_dir"
|
||||
chmod 640 "$config_dir/config.json"
|
||||
|
||||
# Save a few settings for remove/backup scripts if yunohost helpers are available.
|
||||
if command -v yunohost >/dev/null 2>&1; then
|
||||
yunohost app setting "$app" domain -v "$domain" || true
|
||||
yunohost app setting "$app" path -v "$path" || true
|
||||
yunohost app setting "$app" port -v "$port" || true
|
||||
fi
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now "$app"
|
||||
nginx -t
|
||||
systemctl reload nginx
|
||||
|
||||
echo "Albumik installed: https://$domain$path"
|
||||
20
scripts/remove
Executable file
20
scripts/remove
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
source ./scripts/_common.sh
|
||||
|
||||
domain=$(yunohost app setting "$app" domain 2>/dev/null || echo "")
|
||||
|
||||
systemctl disable --now "$app" 2>/dev/null || true
|
||||
rm -f "$service_file"
|
||||
systemctl daemon-reload || true
|
||||
|
||||
if [ -n "$domain" ]; then
|
||||
rm -f "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
nginx -t && systemctl reload nginx || true
|
||||
fi
|
||||
|
||||
rm -rf "$install_dir" "$config_dir"
|
||||
# Dane użytkownika zostawiamy bezpiecznie. Usuń ręcznie, jeśli naprawdę chcesz:
|
||||
# rm -rf "$data_dir"
|
||||
|
||||
echo "Albumik removed. Data left in $data_dir"
|
||||
18
scripts/restore
Executable file
18
scripts/restore
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
source ./scripts/_common.sh
|
||||
|
||||
if [ -f "$YNH_BACKUP_DIR/albumik-data.tar.gz" ]; then
|
||||
tar -C / -xzf "$YNH_BACKUP_DIR/albumik-data.tar.gz"
|
||||
fi
|
||||
if [ -f "$YNH_BACKUP_DIR/$app.service" ]; then
|
||||
cp "$YNH_BACKUP_DIR/$app.service" "$service_file"
|
||||
fi
|
||||
if ! id "$app" >/dev/null 2>&1; then
|
||||
useradd --system --home "$install_dir" --shell /usr/sbin/nologin "$app"
|
||||
fi
|
||||
chown -R "$app:$app" "$install_dir" "$data_dir" "$config_dir" 2>/dev/null || true
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now "$app"
|
||||
systemctl reload nginx || true
|
||||
echo "Albumik restored"
|
||||
13
scripts/upgrade
Executable file
13
scripts/upgrade
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
source ./scripts/_common.sh
|
||||
|
||||
systemctl stop "$app" 2>/dev/null || true
|
||||
mkdir -p "$install_dir"
|
||||
rm -rf "$install_dir/backend" "$install_dir/web" "$install_dir/doc"
|
||||
cp -a backend web doc "$install_dir"/
|
||||
chown -R "$app:$app" "$install_dir"
|
||||
systemctl daemon-reload
|
||||
systemctl start "$app"
|
||||
systemctl reload nginx || true
|
||||
echo "Albumik upgraded"
|
||||
Reference in New Issue
Block a user