librelad 875a60f90f LibrePortal v0.1.0 — initial release
A free, open, self-hosted app platform (GNU AGPLv3): one-click app deploys,
Traefik reverse proxy with automatic SSL, rootless Docker support, gluetun
VPN routing, and a web dashboard to manage it all.

Free & open forever to self-host; optional paid hosted services fund it.
See PROMISE.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Signed-off-by: librelad <librelad@digitalangels.vip>
2026-05-21 20:37:54 +01:00

179 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# Category : Miscellaneous
# Description : SSH Download - Web Server for Local SSH Files (c/u/s/r/i):
installSshdownload()
{
local config_variables="$1"
if [[ "$sshdownload" == *[cCtTuUsSrRiI]* ]]; then
dockerConfigSetupToContainer silent sshdownload;
local app_name=$CFG_SSHDOWNLOAD_APP_NAME
initializeAppVariables $app_name;
fi
if [[ "$sshdownload" == *[cC]* ]]; then
editAppConfig $app_name;
fi
if [[ "$sshdownload" == *[uU]* ]]; then
dockerUninstallApp $app_name;
fi
if [[ "$sshdownload" == *[sS]* ]]; then
dockerComposeDown $app_name;
fi
if [[ "$sshdownload" == *[rR]* ]]; then
dockerComposeRestart $app_name;
fi
if [[ "$sshdownload" == *[iI]* ]]; then
echo ""
echo "##########################################"
echo "### Installing $app_name"
echo "##########################################"
echo ""
((menu_number++))
echo ""
echo "---- $menu_number. Checking public status for security purposes."
echo ""
if [[ "$public" == "true" ]]; then
echo ""
isNotice "!!!!!!!!!! PROCEED WITH CAUTION !!!!!!!!!!"
isNotice "Public access is not fully recommended for security reasons."
if [[ "$login_required" == "false" ]]; then
isNotice "NO PASSWORD PROTECTION FOUND."
isNotice "Anyone with an internet connection will be able to download your SSH Keys"
fi
echo ""
while true; do
isQuestion "Are you sure you want to allow sshdownload to the public? (y/n): "
read -p "" sshdownload_public
if [[ "$sshdownload_public" == [yY] ]]; then
break
else
isNotice "Please confirm the setup or provide a valid input."
fi
done
fi
if [[ $sshdownload_public == [yY] ]]; then
isError "Setup is not wanted due to public security access, setup is cancelling..."
else
isSuccessful "Accepting of public security risks, setup is continuing..."
fi
((menu_number++))
echo ""
echo "---- $menu_number. Setting up install folder and config file for $app_name."
echo ""
dockerConfigSetupToContainer "loud" "$app_name" "install" "$config_variables";
isSuccessful "Install folders and Config files have been setup for $app_name."
((menu_number++))
echo ""
((menu_number++))
echo ""
echo "---- $menu_number. Setting up the $app_name docker-compose.yml file."
echo ""
dockerComposeSetupFile $app_name;
result=$(sudo cp -r $install_containers_dir$app_name/resources/index.html "${ssh_dir}private/index.html")
checkSuccess "Copying over index.html file for SSH Downloader."
updateSSHHTMLSSHKeyLinks;
((menu_number++))
echo ""
echo "---- $menu_number. Updating file permissions before starting."
echo ""
fixPermissionsBeforeStart $app_name;
((menu_number++))
echo ""
echo "---- $menu_number. Running the docker-compose.yml to install and start $app_name"
echo ""
dockerComposeUpdateAndStartApp $app_name install;
((menu_number++))
echo ""
echo "---- $menu_number. Running Application specific updates (if required)"
echo ""
appUpdateSpecifics $app_name;
((menu_number++))
echo ""
echo "---- $menu_number. Running Headscale setup (if required)"
echo ""
setupHeadscale $app_name;
((menu_number++))
echo ""
echo "---- $menu_number. Adding $app_name to the Apps Database table."
echo ""
databaseInstallApp $app_name;
((menu_number++))
echo ""
echo "---- $menu_number. Updating WebUI config file."
echo ""
webuiContainerSetup $app_name install;
((menu_number++))
echo ""
echo "---- $menu_number. You can find $app_name files at $containers_dir$app_name"
echo ""
isNotice "Your SSH Key(s) are available to download using the link below."
echo ""
echo " URL : http://$ip_setup/"
echo ""
isNotice "TIP - Public SSH Keys are stored at /docker/ssh/public/"
echo ""
while true; do
isQuestion "Have you followed the instructions above? (y/n): "
read -p "" sshdownload_instructions
if [[ "$sshdownload_instructions" == 'y' || "$sshdownload_instructions" == 'Y' ]]; then
break
else
isNotice "Please confirm the setup or provide a valid input."
fi
done
((menu_number++))
echo ""
echo "---- $menu_number. Destroying $app_name service as SSH keys have been downloaded."
echo ""
dockerUninstallApp $app_name;
((menu_number++))
echo ""
echo "---- $menu_number. Outro Message."
echo ""
isNotice "The service has been destroyed for safety reasons"
isNotice "You can reinstall this service at anytime in the System install menu under the sshinstall option."
echo ""
if [[ "$CFG_REQUIREMENT_CONTINUE_PROMPT" == "true" ]]; then
read -p "Press Enter to continue."
fi
menu_number=0
#sleep 3s
cd
fi
sshdownload=n
}