Compare commits

..

1 Commits

Author SHA1 Message Date
Michel Roegl-Brunner e58813ddeb fix(webtrees): initialize database schema before admin user creation
PR #14818 replaced the setup wizard curl with CLI commands but omitted
the schema migration step, causing fresh installs to fail when creating
the admin user. Trigger schema init via HTTP after config-ini.

Fixes #15828
2026-07-17 08:46:31 +02:00
4 changed files with 11 additions and 204 deletions
-6
View File
@@ -1,6 +0,0 @@
____ _ ___
/ _/___ _ __(_)___/ (_)___ __ _______
/ // __ \ | / / / __ / / __ \/ / / / ___/
_/ // / / / |/ / / /_/ / / /_/ / /_/ (__ )
/___/_/ /_/|___/_/\__,_/_/\____/\__,_/____/
-77
View File
@@ -1,77 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/iv-org/invidious
APP="Invidious"
var_tags="${var_tags:-streaming}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/invidious ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "Invidious" "iv-org/invidious"; then
msg_info "Stopping services"
$STD systemctl stop invidious-companion invidious
msg_ok "Stopped services"
create_backup /opt/invidious/config/config.yml
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Invidious" "iv-org/invidious" "tarball" "latest" "/opt/invidious"
if check_for_gh_release "Invidious-Companion" "iv-org/invidious-companion"; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Invidious-Companion" "iv-org/invidious-companion" "prebuild" "latest" "/opt/invidious-companion" "invidious_companion-$(arch_resolve x86_64 aarch64)-unknown-linux-gnu.tar.gz"
fi
msg_info "Rebuilding Invidious"
cd /opt/invidious
INVIDIOUS_VERSION="$(cat ~/.invidious 2>/dev/null || echo "unknown")"
INVIDIOUS_VERSION="${INVIDIOUS_VERSION#v}"
sed -i \
-e "s~^\(\s*CURRENT_BRANCH\s*=\).*~\1 \"master\"~" \
-e "s~^\(\s*CURRENT_COMMIT\s*=\).*~\1 \"\"~" \
-e "s~^\(\s*CURRENT_VERSION\s*=\).*~\1 \"${INVIDIOUS_VERSION}\"~" \
-e "s~^\(\s*CURRENT_TAG\s*=\).*~\1 \"${INVIDIOUS_VERSION}\"~" \
-e "s~^\(\s*ASSET_COMMIT\s*=\).*~\1 \"\"~" \
src/invidious.cr
$STD make
msg_ok "Rebuilt Invidious"
restore_backup
msg_info "Starting services"
$STD systemctl start invidious invidious-companion
msg_ok "Started services"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
-121
View File
@@ -1,121 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/iv-org/invidious
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
git \
pkg-config \
libssl-dev \
libxml2-dev \
libyaml-dev \
libgmp-dev \
libreadline-dev \
librsvg2-bin \
libsqlite3-dev \
zlib1g-dev \
libpcre2-dev \
libevent-dev \
fonts-open-sans
msg_ok "Installed Dependencies"
if [[ "$(arch_resolve amd64 arm64)" == "amd64" ]]; then
setup_deb822_repo "crystal" "https://download.opensuse.org/repositories/devel:/languages:/crystal/Debian_13/Release.key" "https://download.opensuse.org/repositories/devel:/languages:/crystal/Debian_13/" "./"
$STD apt install -y crystal
else
fetch_and_deploy_gh_release "Crystal" "crystal-lang/crystal" "prebuild" "latest" "/opt/crystal" "crystal-*-linux-aarch64-bundled.tar.gz"
ln -sf /opt/crystal/bin/crystal /usr/local/bin/crystal
ln -sf /opt/crystal/bin/shards /usr/local/bin/shards
fi
PG_VERSION="17" setup_postgresql
PG_DB_NAME="invidious" PG_DB_USER="invidious" setup_postgresql_db
fetch_and_deploy_gh_release "Invidious" "iv-org/invidious" "tarball" "latest" "/opt/invidious"
fetch_and_deploy_gh_release "Invidious Companion" "iv-org/invidious-companion" "prebuild" "latest" "/opt/invidious-companion" "invidious_companion-$(arch_resolve x86_64 aarch64)-unknown-linux-gnu.tar.gz"
msg_info "Building Invidious"
cd /opt/invidious
INVIDIOUS_VERSION="$(cat ~/.invidious 2>/dev/null || echo "unknown")"
INVIDIOUS_VERSION="${INVIDIOUS_VERSION#v}"
sed -i \
-e "s~^\(\s*CURRENT_BRANCH\s*=\).*~\1 \"master\"~" \
-e "s~^\(\s*CURRENT_COMMIT\s*=\).*~\1 \"\"~" \
-e "s~^\(\s*CURRENT_VERSION\s*=\).*~\1 \"${INVIDIOUS_VERSION}\"~" \
-e "s~^\(\s*CURRENT_TAG\s*=\).*~\1 \"${INVIDIOUS_VERSION}\"~" \
-e "s~^\(\s*ASSET_COMMIT\s*=\).*~\1 \"\"~" \
src/invidious.cr
$STD make
msg_ok "Built Invidious"
msg_info "Configuring Invidious"
SECRET_KEY="$(openssl rand -hex 8)"
HMAC_KEY="$(openssl rand -hex 32)"
sed -e '\~^db:~,\~dbname:~d' \
-e "s~^#database_.*~database_url: postgres://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}~" \
-e 's~^#check_tables.*~check_tables: true~' \
-e 's~^#invidious_companion:~invidious_companion:~' \
-e 's~^# - private_~ - private_~' \
-e "s~^#invidious_companion_key:.*~invidious_companion_key: \"${SECRET_KEY}\"~" \
-e "s~^hmac_key:.*~hmac_key: \"${HMAC_KEY}\"~" \
/opt/invidious/config/config.example.yml >/opt/invidious/config/config.yml
chmod 600 /opt/invidious/config/config.yml
cat <<EOF >/etc/logrotate.d/invidious.logrotate
/opt/invidious/invidious.log {
rotate 4
weekly
notifempty
missingok
compress
minsize 1048576
}
EOF
chmod 0644 /etc/logrotate.d/invidious.logrotate
msg_ok "Configured Invidious"
msg_info "Migrating database"
$STD ./invidious --migrate
msg_ok "Migrated database"
msg_info "Configuring services"
sed -e 's|^User=invidious|User=root|' \
-e 's|^Group=invidious|Group=root|' \
-e 's|/home/invidious/invidious|/opt/invidious|g' \
/opt/invidious/invidious.service >/etc/systemd/system/invidious.service
mkdir -p /var/tmp/youtubei.js
cat <<EOF >/etc/systemd/system/invidious-companion.service
[Unit]
Description=Invidious Companion
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/invidious-companion
Environment=SERVER_SECRET_KEY=${SECRET_KEY}
Environment=CACHE_DIRECTORY=/var/tmp/youtubei.js
ExecStart=/opt/invidious-companion/invidious_companion
Restart=always
RestartSec=2s
[Install]
WantedBy=multi-user.target
EOF
systemctl -q enable --now invidious invidious-companion
msg_ok "Configured services"
motd_ssh
customize
cleanup_lxc
+11
View File
@@ -47,6 +47,8 @@ msg_ok "Configured Caddy"
msg_info "Automating Webtrees Setup"
cd /opt/webtrees
mkdir -p /opt/webtrees/data
chown -R www-data:www-data /opt/webtrees/data
WT_ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c15)
$STD sudo -u www-data php /opt/webtrees/index.php config-ini \
--dbhost=127.0.0.1 \
@@ -56,6 +58,15 @@ $STD sudo -u www-data php /opt/webtrees/index.php config-ini \
--dbname=webtrees \
--tblpfx=wt_ \
--base-url="http://${LOCAL_IP}"
msg_info "Initializing Webtrees database schema"
for i in {1..15}; do
if curl -sf "http://127.0.0.1/" >/dev/null 2>&1; then
break
fi
sleep 2
done
$STD mariadb -u webtrees -p"${MARIADB_DB_PASS}" -h 127.0.0.1 webtrees -e "SHOW TABLES LIKE 'wt_user';" | grep -q wt_user
msg_ok "Initialized Webtrees database schema"
$STD sudo -u www-data php /opt/webtrees/index.php user Admin \
--create \
--real-name="Administrator" \