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:
MickLesk
2026-09-25 11:27:02 +02:00
parent 01be93e721
commit 6a33fc45ad
2 changed files with 53 additions and 45 deletions
+34 -7
View File
@@ -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}"