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

#!/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}"