From b00eb4a8897e0194d513dae2f5883193db26fd88 Mon Sep 17 00:00:00 2001 From: tremor021 Date: Sat, 27 Dec 2025 09:51:49 +0100 Subject: [PATCH] add Linkwarden test --- ct/linkwarden.sh | 75 +++++++++++++++++++++++++++++++++++ install/linkwarden-install.sh | 75 +++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 ct/linkwarden.sh create mode 100644 install/linkwarden-install.sh diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh new file mode 100644 index 000000000..487505a1e --- /dev/null +++ b/ct/linkwarden.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://linkwarden.app/ + +APP="Linkwarden" +var_tags="${var_tags:-bookmark}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-12}" +var_os="${var_os:-ubuntu}" +var_version="${var_version:-24.04}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/linkwarden ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "linkwarden" "linkwarden/linkwarden"; then + NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs + msg_info "Stopping Service" + systemctl stop linkwarden + msg_ok "Stopped Service" + + RUST_CRATES="monolith" setup_rust + + msg_info "Backing up data" + mv /opt/linkwarden/.env /opt/.env + [ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak + rm -rf /opt/linkwarden + msg_ok "Backed up data" + + fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" + + msg_info "Updating ${APP}" + cd /opt/linkwarden + $STD yarn + $STD npx playwright install-deps + $STD yarn playwright install + mv /opt/.env /opt/linkwarden/.env + $STD yarn prisma:generate + $STD yarn web:build + $STD yarn prisma:deploy + [ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data + rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache + rm -rf /root/.cache/yarn + rm -rf /opt/linkwarden/.next/cache + msg_ok "Updated ${APP}" + + msg_info "Starting Service" + systemctl start linkwarden + msg_ok "Started Service" + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/install/linkwarden-install.sh b/install/linkwarden-install.sh new file mode 100644 index 000000000..b47c80485 --- /dev/null +++ b/install/linkwarden-install.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://linkwarden.app/ + +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 +msg_ok "Installed Dependencies" + +NODE_VERSION="22" setup_nodejs +PG_VERSION="16" setup_postgresql +PG_DB_NAME="linkwardendb" PG_DB_USER="linkwarden" setup_postgresql_db +RUST_CRATES="monolith" setup_rust +fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"\import_local_ip + +read -r -p "${TAB3}Would you like to add Adminer? " prompt +if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + setup_adminer +fi + +msg_info "Installing Linkwarden (Patience)" +export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +export PRISMA_HIDE_UPDATE_MESSAGE=1 +export DEBIAN_FRONTEND=noninteractive +corepack enable +SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)" +cd /opt/linkwarden +$STD yarn workspaces focus linkwarden @linkwarden/web @linkwarden/worker +$STD npx playwright install-deps +$STD yarn playwright install + +cat </opt/linkwarden/.env +NEXTAUTH_SECRET=${SECRET_KEY} +NEXTAUTH_URL=http://${LOCAL_IP}:3000 +DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} +EOF +$STD yarn prisma:generate +$STD yarn web:build +$STD yarn prisma:deploy +rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache +rm -rf /root/.cache/yarn +rm -rf /opt/linkwarden/.next/cache +msg_ok "Installed Linkwarden" + +msg_info "Creating Service" +cat </etc/systemd/system/linkwarden.service +[Unit] +Description=Linkwarden Service +After=network.target + +[Service] +Type=exec +Environment=PATH=$PATH +WorkingDirectory=/opt/linkwarden +ExecStart=/usr/bin/yarn concurrently:start + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now linkwarden +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc