Skip to content

Commit a7bf267

Browse files
authored
Refactor: Linkwarden + OS Upgrade (#4756)
* Refactor: Linkwarden + OS Upgrade * update fetch_and_deploy function * Update linkwarden.sh
1 parent 7079f42 commit a7bf267

File tree

4 files changed

+29
-78
lines changed

4 files changed

+29
-78
lines changed

ct/linkwarden.sh

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
#!/usr/bin/env bash
22
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
3-
# Copyright (c) 2021-2025 tteck
4-
# Author: tteck (tteckster)
3+
# Copyright (c) 2021-2025 community-scripts ORG
4+
# Author: MickLesk (CanbiZ)
55
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
66
# Source: https://linkwarden.app/
77

88
APP="Linkwarden"
99
var_tags="${var_tags:-bookmark}"
1010
var_cpu="${var_cpu:-2}"
11-
var_ram="${var_ram:-2048}"
11+
var_ram="${var_ram:-4096}"
1212
var_disk="${var_disk:-12}"
1313
var_os="${var_os:-ubuntu}"
14-
var_version="${var_version:-22.04}"
14+
var_version="${var_version:-24.04}"
1515

1616
header_info "$APP"
1717
variables
@@ -27,48 +27,36 @@ function update_script() {
2727
exit
2828
fi
2929
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
30-
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
31-
NODE_VERSION="22"
32-
NODE_MODULE="yarn@latest"
33-
install_node_and_modules
34-
30+
if [[ "${RELEASE}" != "$(cat /opt/linkwarden_version.txt)" ]] || [[ ! -f /opt/linkwarden_version.txt ]]; then
31+
NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
3532
msg_info "Stopping ${APP}"
3633
systemctl stop linkwarden
3734
msg_ok "Stopped ${APP}"
3835

39-
msg_info "Updating Rust"
40-
$STD apt-get install -y build-essential
41-
$STD curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
42-
source $HOME/.cargo/env
43-
echo 'export PATH=/usr/local/cargo/bin:$PATH' >>/etc/profile
44-
source /etc/profile
45-
$STD cargo install monolith
46-
msg_ok "Updated Rust"
36+
RUST_CRATES="monolith" install_rust_and_crates
4737

4838
msg_info "Updating ${APP} to ${RELEASE}"
49-
cd /opt
5039
mv /opt/linkwarden/.env /opt/.env
5140
rm -rf /opt/linkwarden
52-
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
53-
curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
54-
unzip -q ${RELEASE}.zip
55-
mv linkwarden-${RELEASE:1} /opt/linkwarden
41+
fetch_and_deploy_gh_release "linkwarden/linkwarden"
5642
cd /opt/linkwarden
5743
$STD yarn
5844
$STD npx playwright install-deps
5945
$STD yarn playwright install
60-
cp /opt/.env /opt/linkwarden/.env
46+
mv /opt/.env /opt/linkwarden/.env
6147
$STD yarn prisma:generate
6248
$STD yarn web:build
6349
$STD yarn prisma:deploy
64-
echo "${RELEASE}" >/opt/${APP}_version.txt
6550
msg_ok "Updated ${APP} to ${RELEASE}"
6651

6752
msg_info "Starting ${APP}"
6853
systemctl start linkwarden
6954
msg_ok "Started ${APP}"
55+
7056
msg_info "Cleaning up"
71-
rm -rf /opt/${RELEASE}.zip
57+
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
58+
rm -rf /root/.cache/yarn
59+
rm -rf /opt/linkwarden/.next/cache
7260
msg_ok "Cleaned"
7361
msg_ok "Updated Successfully"
7462
else

frontend/public/json/linkwarden.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"ram": 2048,
2424
"hdd": 12,
2525
"os": "ubuntu",
26-
"version": "22.04"
26+
"version": "24.04"
2727
}
2828
}
2929
],

install/linkwarden-install.sh

Lines changed: 13 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#!/usr/bin/env bash
22

3-
# Copyright (c) 2021-2025 tteck
4-
# Author: tteck (tteckster)
5-
# Co-Author: MickLesk (Canbiz)
3+
# Copyright (c) 2021-2025 community-scripts ORG
4+
# Author: MickLesk (Canbiz)
65
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
76
# Source: https://linkwarden.app/
87

@@ -17,25 +16,12 @@ update_os
1716
msg_info "Installing Dependencies"
1817
$STD apt-get install -y \
1918
make \
20-
git \
21-
build-essential \
22-
cargo
19+
build-essential
2320
msg_ok "Installed Dependencies"
2421

25-
NODE_VERSION="22"
26-
NODE_MODULE="yarn@latest"
27-
install_node_and_modules
28-
PG_VERSION="15"
29-
install_postgresql
30-
31-
msg_info "Installing Rust"
32-
curl -fsSL https://sh.rustup.rs -o rustup-init.sh
33-
$STD bash rustup-init.sh -y --profile minimal
34-
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >>~/.bashrc
35-
export PATH="$HOME/.cargo/bin:$PATH"
36-
rm rustup-init.sh
37-
$STD cargo install monolith
38-
msg_ok "Installed Rust"
22+
NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
23+
PG_VERSION="16" install_postgresql
24+
RUST_CRATES="monolith" install_rust_and_crates
3925

4026
msg_info "Setting up PostgreSQL DB"
4127
DB_NAME=linkwardendb
@@ -58,50 +44,24 @@ msg_ok "Set up PostgreSQL DB"
5844

5945
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
6046
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
61-
msg_info "Installing Adminer"
62-
$STD apt install -y adminer
63-
$STD a2enconf adminer
64-
systemctl reload apache2
65-
IP=$(hostname -I | awk '{print $1}')
66-
echo "" >>~/linkwarden.creds
67-
echo -e "Adminer Interface: \e[32m$IP/adminer/\e[0m" >>~/linkwarden.creds
68-
echo -e "Adminer System: \e[32mPostgreSQL\e[0m" >>~/linkwarden.creds
69-
echo -e "Adminer Server: \e[32mlocalhost:5432\e[0m" >>~/linkwarden.creds
70-
echo -e "Adminer Username: \e[32m$DB_USER\e[0m" >>~/linkwarden.creds
71-
echo -e "Adminer Password: \e[32m$DB_PASS\e[0m" >>~/linkwarden.creds
72-
echo -e "Adminer Database: \e[32m$DB_NAME\e[0m" >>~/linkwarden.creds
73-
{
74-
echo ""
75-
echo "Adminer-Credentials"
76-
echo "Adminer WebUI: $IP/adminer/"
77-
echo "Adminer Database User: $DB_USER"
78-
echo "Adminer Database Password: $DB_PASS"
79-
echo "Adminer Database Name: $DB_NAME"
80-
} >>~/linkwarden.creds
81-
msg_ok "Installed Adminer"
47+
install_adminer
8248
fi
8349

8450
msg_info "Installing Linkwarden (Patience)"
85-
cd /opt
86-
RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
87-
curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
88-
unzip -q ${RELEASE}.zip
89-
mv linkwarden-${RELEASE:1} /opt/linkwarden
51+
fetch_and_deploy_gh_release "linkwarden/linkwarden"
9052
cd /opt/linkwarden
9153
$STD yarn
9254
$STD npx playwright install-deps
9355
$STD yarn playwright install
9456
IP=$(hostname -I | awk '{print $1}')
95-
env_path="/opt/linkwarden/.env"
96-
echo "
57+
cat <<EOF >/opt/linkwarden/.env
9758
NEXTAUTH_SECRET=${SECRET_KEY}
9859
NEXTAUTH_URL=http://${IP}:3000
9960
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
100-
" >$env_path
61+
EOF
10162
$STD yarn prisma:generate
10263
$STD yarn web:build
10364
$STD yarn prisma:deploy
104-
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
10565
msg_ok "Installed Linkwarden"
10666

10767
msg_info "Creating Service"
@@ -126,7 +86,9 @@ motd_ssh
12686
customize
12787

12888
msg_info "Cleaning up"
129-
rm -rf /opt/${RELEASE}.zip
89+
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
90+
rm -rf /root/.cache/yarn
91+
rm -rf /opt/linkwarden/.next/cache
13092
$STD apt-get -y autoremove
13193
$STD apt-get -y autoclean
13294
msg_ok "Cleaned"

misc/tools.func

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,8 @@ install_mongodb() {
684684

685685
fetch_and_deploy_gh_release() {
686686
local repo="$1"
687-
local app=${APP:-$(echo "${APPLICATION,,}" | tr -d ' ')}
687+
local raw_app="${APP:-$APPLICATION}"
688+
local app=$(echo "${raw_app,,}" | tr -d ' ')
688689
local api_url="https://api.github.com/repos/$repo/releases/latest"
689690
local header=()
690691
local attempt=0

0 commit comments

Comments
 (0)