123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/usr/bin/env bash
- # Copyright (c) 2021-2023 tteck
- # Author: tteck (tteckster)
- # License: MIT
- # https://github.com/tteck/Proxmox/raw/main/LICENSE
- source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
- color
- verb_ip6
- catch_errors
- setting_up_container
- network_check
- update_os
- msg_info "Installing Dependencies"
- $STD apt-get install -y curl
- $STD apt-get install -y sudo
- $STD apt-get install -y mc
- $STD apt-get install -y git
- $STD apt-get install -y gpg
- $STD apt-get install -y postgresql
- msg_ok "Installed Dependencies"
- msg_info "Setting up Node.js Repository"
- mkdir -p /etc/apt/keyrings
- curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
- echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
- msg_ok "Set up Node.js Repository"
- msg_info "Installing Node.js/Yarn"
- $STD apt-get update
- $STD apt-get install -y nodejs
- $STD npm install -g yarn
- msg_ok "Installed Node.js/Yarn"
- msg_info "Clone Linkwarden Repository"
- $STD git clone https://github.com/linkwarden/linkwarden.git /opt/linkwarden
- cd /opt/linkwarden
- msg_ok "Cloned Linkwarden Repository"
- msg_info "Setting up PostgreSQL DB"
- DB_NAME=linkwardendb
- DB_USER=linkwarden
- DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
- $STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
- $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
- echo "" >>~/linkwarden.creds
- echo -e "Linkwarden Database User: \e[32m$DB_USER\e[0m" >>~/linkwarden.creds
- echo -e "Linkwarden Database Password: \e[32m$DB_PASS\e[0m" >>~/linkwarden.creds
- echo -e "Linkwarden Database Name: \e[32m$DB_NAME\e[0m" >>~/linkwarden.creds
- msg_ok "Set up PostgreSQL DB"
- read -r -p "Would you like to add Adminer? <y/N> " prompt
- if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
- msg_info "Installing Adminer"
- $STD apt install -y adminer
- $STD a2enconf adminer
- systemctl reload apache2
- IP=$(hostname -I | awk '{print $1}')
- echo "" >>~/linkwarden.creds
- echo -e "Adminer Interface: \e[32m$IP/adminer/\e[0m" >>~/linkwarden.creds
- echo -e "Adminer System: \e[32mPostgreSQL\e[0m" >>~/linkwarden.creds
- echo -e "Adminer Server: \e[32mlocalhost:5432\e[0m" >>~/linkwarden.creds
- echo -e "Adminer Username: \e[32m$DB_USER\e[0m" >>~/linkwarden.creds
- echo -e "Adminer Password: \e[32m$DB_PASS\e[0m" >>~/linkwarden.creds
- echo -e "Adminer Database: \e[32m$DB_NAME\e[0m" >>~/linkwarden.creds
- msg_ok "Installed Adminer"
- fi
- msg_info "Installing Linkwarden (Patience)"
- $STD yarn
- $STD npx playwright install-deps
- IP=$(hostname -I | awk '{print $1}')
- SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
- env_path="/opt/linkwarden/.env"
- echo "
- NEXTAUTH_SECRET=${SECRET_KEY}
- NEXTAUTH_URL=http://${IP}:3000
- DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
- " >$env_path
- $STD yarn build
- $STD yarn prisma migrate deploy
- msg_ok "Installed Linkwarden"
- msg_info "Creating Service"
- cat <<EOF >/etc/systemd/system/linkwarden.service
- [Unit]
- Description=Linkwarden Service
- After=network.target
- [Service]
- Type=exec
- WorkingDirectory=/opt/linkwarden
- ExecStart=/usr/bin/yarn start
- [Install]
- WantedBy=multi-user.target
- EOF
- systemctl enable -q --now linkwarden.service
- msg_ok "Created Service"
- motd_ssh
- customize
- msg_info "Cleaning up"
- $STD apt-get autoremove
- $STD apt-get autoclean
- msg_ok "Cleaned"
|