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
1716msg_info " Installing Dependencies"
1817$STD apt-get install -y \
1918 make \
20- git \
21- build-essential \
22- cargo
19+ build-essential
2320msg_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
4026msg_info " Setting up PostgreSQL DB"
4127DB_NAME=linkwardendb
@@ -58,50 +44,24 @@ msg_ok "Set up PostgreSQL DB"
5844
5945read -r -p " ${TAB3} Would you like to add Adminer? <y/N> " prompt
6046if [[ " ${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
8248fi
8349
8450msg_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"
9052cd /opt/linkwarden
9153$STD yarn
9254$STD npx playwright install-deps
9355$STD yarn playwright install
9456IP=$( hostname -I | awk ' {print $1}' )
95- env_path=" /opt/linkwarden/.env"
96- echo "
57+ cat << EOF >/opt/linkwarden/.env
9758NEXTAUTH_SECRET=${SECRET_KEY}
9859NEXTAUTH_URL=http://${IP} :3000
9960DATABASE_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
10565msg_ok " Installed Linkwarden"
10666
10767msg_info " Creating Service"
@@ -126,7 +86,9 @@ motd_ssh
12686customize
12787
12888msg_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
13294msg_ok " Cleaned"
0 commit comments