centralex/install.sh
2023-03-28 17:27:54 +02:00

106 lines
2.2 KiB
Bash
Executable File

#!/bin/bash -e
if ! command -v nano &> /dev/null
then
echo "nano is needed for the installion process"
exit 1
fi
if ! command -v sudo &> /dev/null
then
echo "sudo is needed for the installion process"
exit 1
fi
if ! command -v curl &> /dev/null
then
echo "curl is needed for the installion process"
exit 1
fi
if ! command -v git &> /dev/null
then
echo "git is needed for the installion process"
exit 1
fi
user_name="itelex"
install_dir="/home/itelex/"
service_file="/etc/systemd/system/centralex.service"
if [ $# -lt 1 ]; then
step="root"
else
step="$1"
fi
echo "running $step setup step"
case "$step" in
user)
if [[ $(whoami) != "$user_name" ]]; then
echo "user step needs to be run as user $user_name"
exit 1
fi
cd "$install_dir"
echo "installing rust..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh
chmod +x rustup.sh
./rustup.sh -y --profile minimal
rm rustup.sh
echo "cloning source code..."
git clone https://gitea.h.glsys.de/soruh/centralex centralex
echo "creating default config..."
cp centralex/config-template.json centralex/config.json
;;
root)
if [[ $(whoami) != "root" ]]; then
echo "root step needs to be run as root"
exit 1
fi
# echo "creating user $user_name..."
# useradd -s /usr/sbin/nologin --create-home --home-dir "$install_dir" "$user_name"
echo "creating service file..."
cat > "$service_file" << EOF
[Unit]
Description=Centralex
[Service]
Environment=RUST_BACKTRACE=1
ExecStart=$install_dir/.cargo/bin/cargo run --release
Type=simple
User=$user_name
WorkingDirectory=$install_dir/centralex
[Install]
WantedBy=multi-user.target
EOF
echo "running user step..."
installer="$(mktemp)"
cp "$0" "$installer"
chmod a+rx "$installer"
sudo -u "$user_name" "$installer" user
echo "configuring..."
nano "$install_dir/centralex/config.json"
echo "enabling service..."
systemctl enable --now "$(basename "$service_file")"
;;
*)
echo "unknown installer step $step"
exit 1
;;
esac
echo "success"
exit 0