22
33# Copyright (c) 2021-2024 tteck
44# Author: tteck (tteckster)
5+ # Co-Author: MickLesk (Canbiz)
56# License: MIT
67# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
78
@@ -14,12 +15,13 @@ network_check
1415update_os
1516
1617msg_info " Installing Dependencies"
17- $STD apt-get install -y curl
18- $STD apt-get install -y sudo
19- $STD apt-get install -y mc
20- $STD apt-get install -y git
21- $STD apt-get install -y gpg
22- $STD apt-get install -y postgresql
18+ $STD apt-get install -y \
19+ curl \
20+ sudo \
21+ mc \
22+ make \
23+ postgresql \
24+ cargo
2325msg_ok " Installed Dependencies"
2426
2527msg_info " Setting up Node.js Repository"
@@ -34,22 +36,28 @@ $STD apt-get install -y nodejs
3436$STD npm install -g yarn
3537msg_ok " Installed Node.js/Yarn"
3638
37- msg_info " Clone Linkwarden Repository"
38- $STD git clone https://github.com/linkwarden/linkwarden.git /opt/linkwarden
39- cd /opt/linkwarden
40- msg_ok " Cloned Linkwarden Repository"
39+ msg_info " Installing Monolith"
40+ $STD cargo install monolith
41+ echo ' export PATH=~/.cargo/bin:$PATH' >> ~/.bashrc
42+ export PATH=~ /.cargo/bin:$PATH
43+ msg_ok " Installed Monolith"
4144
4245msg_info " Setting up PostgreSQL DB"
4346DB_NAME=linkwardendb
4447DB_USER=linkwarden
4548DB_PASS=" $( openssl rand -base64 18 | tr -d ' /' | cut -c1-13) "
4649$STD sudo -u postgres psql -c " CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS ';"
47- $STD sudo -u postgres psql -c " CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
48-
49- echo " " >> ~/linkwarden.creds
50- echo -e " Linkwarden Database User: \e[32m$DB_USER \e[0m" >> ~/linkwarden.creds
51- echo -e " Linkwarden Database Password: \e[32m$DB_PASS \e[0m" >> ~/linkwarden.creds
52- echo -e " Linkwarden Database Name: \e[32m$DB_NAME \e[0m" >> ~/linkwarden.creds
50+ $STD sudo -u postgres psql -c " CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
51+ $STD sudo -u postgres psql -c " ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
52+ $STD sudo -u postgres psql -c " ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
53+ $STD sudo -u postgres psql -c " ALTER ROLE $DB_USER SET timezone TO 'UTC';"
54+ {
55+ echo " Linkwarden-Credentials"
56+ echo " Linkwarden Database User: $DB_USER "
57+ echo " Linkwarden Database Password: $DB_PASS "
58+ echo " Linkwarden Database Name: $DB_NAME "
59+ echo " Linkwarden Secret: $SECRET_KEY "
60+ } >> ~ /linkwarden.creds
5361msg_ok " Set up PostgreSQL DB"
5462
5563read -r -p " Would you like to add Adminer? <y/N> " prompt
@@ -66,12 +74,24 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
6674 echo -e " Adminer Username: \e[32m$DB_USER \e[0m" >> ~/linkwarden.creds
6775 echo -e " Adminer Password: \e[32m$DB_PASS \e[0m" >> ~/linkwarden.creds
6876 echo -e " Adminer Database: \e[32m$DB_NAME \e[0m" >> ~/linkwarden.creds
77+ {
78+ echo " "
79+ echo " Adminer-Credentials"
80+ echo " Adminer WebUI: $IP /adminer/"
81+ echo " Adminer Database User: $DB_USER "
82+ echo " Adminer Database Password: $DB_PASS "
83+ echo " Adminer Database Name: $DB_NAME "
84+ } >> ~ /linkwarden.creds
6985 msg_ok " Installed Adminer"
7086fi
7187
7288msg_info " Installing Linkwarden (Patience)"
89+ cd /opt
7390RELEASE=$( curl -s https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep " tag_name" | awk ' {print substr($2, 2, length($2)-3) }' )
74- echo " ${RELEASE} " > /opt/${APPLICATION} _version.txt
91+ wget -q " https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE} .zip"
92+ unzip -q ${RELEASE} .zip
93+ mv linkwarden-${RELEASE: 1} /opt/linkwarden
94+ cd /opt/linkwarden
7595$STD yarn
7696$STD npx playwright install-deps
7797$STD yarn playwright install
@@ -85,6 +105,7 @@ DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
85105" > $env_path
86106$STD yarn build
87107$STD yarn prisma migrate deploy
108+ echo " ${RELEASE} " > /opt/${APPLICATION} _version.txt
88109msg_ok " Installed Linkwarden"
89110
90111msg_info " Creating Service"
@@ -108,6 +129,7 @@ motd_ssh
108129customize
109130
110131msg_info " Cleaning up"
132+ rm -rf /opt/${RELEASE} .zip
111133$STD apt-get -y autoremove
112134$STD apt-get -y autoclean
113135msg_ok " Cleaned"
0 commit comments