You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.7 KiB
117 lines
2.7 KiB
#!/usr/bin/env bash
|
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
|
|
# Copyright (c) 2021-2026 tteck
|
|
# Modified for custom mirror download
|
|
|
|
APP="Ollama"
|
|
var_tags="${var_tags:-ai}"
|
|
var_cpu="${var_cpu:-4}"
|
|
var_ram="${var_ram:-4096}"
|
|
var_disk="${var_disk:-35}"
|
|
var_os="${var_os:-ubuntu}"
|
|
var_version="${var_version:-24.04}"
|
|
var_gpu="${var_gpu:-yes}"
|
|
|
|
# 🔥 YOUR MIRROR
|
|
OLLAMA_MIRROR="https://file.wifibills.com/ollama-linux-amd64.tar.zst"
|
|
|
|
header_info "$APP"
|
|
variables
|
|
color
|
|
catch_errors
|
|
|
|
function download_ollama() {
|
|
TMP_TAR=$(mktemp --suffix=.tar.zst)
|
|
|
|
msg_info "Trying local mirror..."
|
|
if curl -fL# -o "${TMP_TAR}" "${OLLAMA_MIRROR}"; then
|
|
msg_ok "Downloaded from mirror"
|
|
else
|
|
msg_info "Mirror failed, trying GitHub..."
|
|
curl -fL# -o "${TMP_TAR}" \
|
|
"https://github.com/ollama/ollama/releases/latest/download/ollama-linux-amd64.tar.zst" || {
|
|
msg_error "Download failed from both mirror and GitHub!"
|
|
exit 1
|
|
}
|
|
fi
|
|
|
|
echo "${TMP_TAR}"
|
|
}
|
|
|
|
function install_ollama() {
|
|
msg_info "Installing Ollama"
|
|
|
|
ensure_dependencies curl zstd
|
|
|
|
TAR_FILE=$(download_ollama)
|
|
|
|
rm -rf /usr/local/lib/ollama
|
|
rm -rf /usr/local/bin/ollama
|
|
|
|
mkdir -p /usr/local/lib/ollama
|
|
tar --zstd -xf "${TAR_FILE}" -C /usr/local/lib/ollama
|
|
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
|
|
rm -f "${TAR_FILE}"
|
|
|
|
cat <<EOF >/etc/systemd/system/ollama.service
|
|
[Unit]
|
|
Description=Ollama Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
ExecStart=/usr/local/bin/ollama serve
|
|
Restart=always
|
|
User=root
|
|
Group=root
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable ollama
|
|
systemctl start ollama
|
|
|
|
msg_ok "Ollama Installed Successfully"
|
|
}
|
|
|
|
function update_script() {
|
|
header_info
|
|
check_container_storage
|
|
check_container_resources
|
|
|
|
if [[ ! -d /usr/local/lib/ollama ]]; then
|
|
msg_error "No Ollama Installation Found!"
|
|
exit
|
|
fi
|
|
|
|
msg_info "Stopping Ollama service"
|
|
systemctl stop ollama
|
|
|
|
TAR_FILE=$(download_ollama)
|
|
|
|
rm -rf /usr/local/lib/ollama
|
|
rm -rf /usr/local/bin/ollama
|
|
|
|
mkdir -p /usr/local/lib/ollama
|
|
tar --zstd -xf "${TAR_FILE}" -C /usr/local/lib/ollama
|
|
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
|
|
rm -f "${TAR_FILE}"
|
|
|
|
systemctl start ollama
|
|
msg_ok "Ollama Updated Successfully"
|
|
exit
|
|
}
|
|
|
|
start
|
|
build_container
|
|
description
|
|
|
|
msg_info "Running Ollama installer inside container"
|
|
pct exec $CTID -- bash -c "$(declare -f install_ollama download_ollama); install_ollama"
|
|
|
|
msg_ok "Completed successfully!"
|
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:11434${CL}"
|