(config) Install native runtime requirements and split docs
Teach the systemd installer to install required Debian/Ubuntu packages by default, with an opt-out for users who manage system dependencies themselves. Add explicit MariaDB install-extra handling so native installs can pull in both the Python extra and required client build packages. Slim down the README to production setup and operations, and move development, Docker, migration helper, and architecture notes into docs/development.md.
This commit is contained in:
@@ -14,6 +14,7 @@ CSRF_TRUSTED_ORIGINS=${POBSYNC_CSRF_TRUSTED_ORIGINS:-}
|
||||
BACKUP_ROOT=${POBSYNC_BACKUP_ROOT:-/backups}
|
||||
WEB_BIND=${POBSYNC_WEB_BIND:-127.0.0.1:8010}
|
||||
FORCE_ENV=0
|
||||
INSTALL_OS_PACKAGES=1
|
||||
WITH_NGINX=0
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
@@ -62,6 +63,14 @@ while [ "$#" -gt 0 ]; do
|
||||
FORCE_ENV=1
|
||||
shift
|
||||
;;
|
||||
--no-install-os-packages)
|
||||
INSTALL_OS_PACKAGES=0
|
||||
shift
|
||||
;;
|
||||
--install-extras)
|
||||
INSTALL_EXTRAS=$2
|
||||
shift 2
|
||||
;;
|
||||
--with-nginx)
|
||||
WITH_NGINX=1
|
||||
shift
|
||||
@@ -82,6 +91,29 @@ if [ "$(id -u)" -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install_os_packages() {
|
||||
if [ "$INSTALL_OS_PACKAGES" -ne 1 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
packages="python3 python3-venv python3-pip rsync openssh-client"
|
||||
if [ "$WITH_NGINX" -eq 1 ]; then
|
||||
packages="$packages nginx"
|
||||
fi
|
||||
if [ "$INSTALL_EXTRAS" = "mariadb" ] || [ "$INSTALL_EXTRAS" = "[mariadb]" ] || [ "$INSTALL_EXTRAS" = ".[mariadb]" ]; then
|
||||
packages="$packages default-libmysqlclient-dev build-essential pkg-config"
|
||||
fi
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends $packages
|
||||
return
|
||||
fi
|
||||
|
||||
echo "No supported package manager found; install python3, python3-venv, rsync, and openssh-client manually." >&2
|
||||
}
|
||||
|
||||
install_os_packages
|
||||
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "python3 is required." >&2
|
||||
exit 1
|
||||
@@ -127,7 +159,25 @@ fi
|
||||
|
||||
python3 -m venv "$VENV_DIR"
|
||||
"$VENV_DIR/bin/python" -m pip install --upgrade pip
|
||||
"$VENV_DIR/bin/python" -m pip install -e "$APP_DIR$INSTALL_EXTRAS"
|
||||
case "$INSTALL_EXTRAS" in
|
||||
"")
|
||||
pip_target=$APP_DIR
|
||||
;;
|
||||
mariadb)
|
||||
pip_target="$APP_DIR[mariadb]"
|
||||
;;
|
||||
\[*\])
|
||||
pip_target="$APP_DIR$INSTALL_EXTRAS"
|
||||
;;
|
||||
.\[*\])
|
||||
pip_target="$APP_DIR${INSTALL_EXTRAS#.}"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported install extras: $INSTALL_EXTRAS" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
"$VENV_DIR/bin/python" -m pip install -e "$pip_target"
|
||||
|
||||
if [ ! -f "$ENV_FILE" ] || [ "$FORCE_ENV" -eq 1 ]; then
|
||||
secret=$("$VENV_DIR/bin/python" -c "import secrets; print(secrets.token_urlsafe(48))")
|
||||
|
||||
Reference in New Issue
Block a user