DweebUI/setup.sh
2023-10-15 15:11:58 -07:00

69 lines
2.3 KiB
Bash

#!/bin/bash
# To demo DweebUI, run this script on a fresh Debian 12.2 install. This script will open port 443/tcp for Reverse Proxy and 22/tcp for SSH.
# Manual Install:
# cd DweebUI
# chmod +x setup.sh
# sudo ./setup.sh
# Install dependencies
apt-get install -y curl unzip ufw gnupg ca-certificates lsb-release gpg
# Enable firewall
ufw allow ssh && ufw --force enable
# Opens port 443/tcp for Reverse Proxy
ufw allow https
# Install Docker
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Create docker network
docker network create -d bridge AppBridge
# Install redis
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
apt-get update -y
apt-get install -y redis
systemctl enable --now redis-server
# Install nodejs
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install nodejs -y
# Install pnpm and nodejs modules
npm install -g pnpm
pnpm i
# Prep for caddy
mkdir -p /home/docker/caddy/sites
echo "import sites/*" > /home/docker/caddy/Caddyfile.tmp
mv /home/docker/caddy/Caddyfile.tmp /home/docker/caddy/Caddyfile
# Install pm2 and start DweebUI
npm install pm2 -g
pm2 start app.js --name "dweebui"
pm2 log
# Creates a 'docker-compose' alias, since the command changed to 'docker compose' in Debian 11.
echo '#!/bin/sh
docker compose "$@"' > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose