mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-09-27 12:38:06 +00:00
Let ArchiveBox reach 0.9 instead of staying on 0.7.4
uv pip install --system targets the container's Python 3.11, and every ArchiveBox release from 0.9 on requires 3.13, so the resolver silently fell back to 0.7.4. The package now lives in its own 3.13 venv, with the interpreter outside root's home because ArchiveBox drops privileges while importing. The expect block is gone: init and createsuperuser both run unattended now, and the server moved to its new default port.
This commit is contained in:
+34
-7
@@ -32,6 +32,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
|
||||
export UV_PYTHON_INSTALL_DIR="/opt/archivebox/python"
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
|
||||
ensure_dependencies chromium
|
||||
@@ -40,15 +41,41 @@ function update_script() {
|
||||
systemctl stop archivebox
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Upgrading Playwright"
|
||||
$STD uv pip install playwright --system --break-system-packages
|
||||
$STD playwright install-deps chromium
|
||||
msg_ok "Upgraded Playwright"
|
||||
# Earlier installs used the system interpreter, which caps ArchiveBox at 0.7.4.
|
||||
if [[ ! -x /opt/archivebox/venv/bin/archivebox ]]; then
|
||||
msg_info "Moving ArchiveBox to its own Python 3.13 environment"
|
||||
$STD uv venv --python 3.13 /opt/archivebox/venv
|
||||
# Keep whatever port this container already answers on, or a reverse proxy in front
|
||||
# of it would silently stop resolving.
|
||||
local port
|
||||
port="$(awk -F: '/^ExecStart=/ {print $NF}' /etc/systemd/system/archivebox.service 2>/dev/null)"
|
||||
[[ "$port" =~ ^[0-9]+$ ]] || port=5797
|
||||
cat <<EOF >/etc/systemd/system/archivebox.service
|
||||
[Unit]
|
||||
Description=ArchiveBox Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=archivebox
|
||||
WorkingDirectory=/opt/archivebox/data
|
||||
ExecStart=/opt/archivebox/venv/bin/archivebox server 0.0.0.0:${port}
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
msg_ok "Moved ArchiveBox to its own Python 3.13 environment (port ${port})"
|
||||
fi
|
||||
|
||||
msg_info "Updating ArchiveBox"
|
||||
$STD uv pip install --python /opt/archivebox/venv/bin/python --upgrade archivebox playwright
|
||||
$STD /opt/archivebox/venv/bin/playwright install-deps chromium
|
||||
chown -R archivebox:archivebox /opt/archivebox/python /opt/archivebox/venv
|
||||
# Without this a shell still reaches the old 0.7.4 entry point against a 0.9 collection.
|
||||
ln -sf /opt/archivebox/venv/bin/archivebox /usr/local/bin/archivebox
|
||||
cd /opt/archivebox/data
|
||||
$STD uv pip install --system --break-system-packages --upgrade --no-reinstall archivebox
|
||||
sudo -u archivebox archivebox init
|
||||
$STD sudo -u archivebox /opt/archivebox/venv/bin/archivebox init
|
||||
msg_ok "Updated ArchiveBox"
|
||||
|
||||
msg_info "Starting Service"
|
||||
@@ -65,4 +92,4 @@ 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}:8000/admin/login${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}:5797/admin/login${CL}"
|
||||
|
||||
@@ -16,7 +16,6 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
git \
|
||||
expect \
|
||||
libssl-dev \
|
||||
libldap2-dev \
|
||||
libsasl2-dev \
|
||||
@@ -26,51 +25,33 @@ $STD apt-get install -y \
|
||||
chromium
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3-ldap \
|
||||
python3-msgpack \
|
||||
python3-regex
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
|
||||
# ArchiveBox drops privileges on import, so its interpreter may not sit in root's home.
|
||||
export UV_PYTHON_INSTALL_DIR="/opt/archivebox/python"
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
|
||||
msg_info "Installing Playwright"
|
||||
$STD uv pip install playwright --system --break-system-packages
|
||||
$STD playwright install-deps chromium
|
||||
msg_ok "Installed Playwright"
|
||||
|
||||
msg_info "Installing ArchiveBox"
|
||||
mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
|
||||
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
|
||||
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
|
||||
# A venv, not --system: the system interpreter is 3.11 and silently caps us at 0.7.4.
|
||||
$STD uv venv --python 3.13 /opt/archivebox/venv
|
||||
$STD uv pip install --python /opt/archivebox/venv/bin/python archivebox playwright
|
||||
$STD /opt/archivebox/venv/bin/playwright install-deps chromium
|
||||
ln -sf /opt/archivebox/venv/bin/archivebox /usr/local/bin/archivebox
|
||||
chown -R archivebox:archivebox /opt/archivebox
|
||||
chmod -R 755 /opt/archivebox/data
|
||||
$STD uv pip install archivebox --system --break-system-packages
|
||||
cd /opt/archivebox/data
|
||||
expect <<EOF
|
||||
set timeout -1
|
||||
log_user 0
|
||||
|
||||
spawn sudo -u archivebox playwright install chromium
|
||||
spawn sudo -u archivebox archivebox setup
|
||||
|
||||
expect "Username"
|
||||
send "\r"
|
||||
|
||||
expect "Email address"
|
||||
send "\r"
|
||||
|
||||
expect "Password"
|
||||
send "community-scripts.org\r"
|
||||
|
||||
expect "Password (again)"
|
||||
send "community-scripts.org\r"
|
||||
|
||||
expect eof
|
||||
EOF
|
||||
msg_ok "Installed ArchiveBox"
|
||||
|
||||
msg_info "Initializing ArchiveBox"
|
||||
cd /opt/archivebox/data
|
||||
$STD sudo -u archivebox /opt/archivebox/venv/bin/archivebox init
|
||||
$STD sudo -u archivebox env \
|
||||
DJANGO_SUPERUSER_USERNAME=admin \
|
||||
DJANGO_SUPERUSER_EMAIL=admin@archivebox.local \
|
||||
DJANGO_SUPERUSER_PASSWORD=community-scripts.org \
|
||||
/opt/archivebox/venv/bin/archivebox manage createsuperuser --noinput
|
||||
msg_ok "Initialized ArchiveBox"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/archivebox.service
|
||||
[Unit]
|
||||
@@ -80,7 +61,7 @@ After=network.target
|
||||
[Service]
|
||||
User=archivebox
|
||||
WorkingDirectory=/opt/archivebox/data
|
||||
ExecStart=/usr/local/bin/archivebox server 0.0.0.0:8000
|
||||
ExecStart=/opt/archivebox/venv/bin/archivebox server 0.0.0.0:5797
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
|
||||
Reference in New Issue
Block a user