diff --git a/ct/headers/localagi b/ct/headers/localagi new file mode 100644 index 000000000..c47da9aac --- /dev/null +++ b/ct/headers/localagi @@ -0,0 +1,6 @@ + __ _____ __________ + / / ____ _________ _/ / | / ____/ _/ + / / / __ \/ ___/ __ `/ / /| |/ / __ / / + / /___/ /_/ / /__/ /_/ / / ___ / /_/ // / +/_____/\____/\___/\__,_/_/_/ |_\____/___/ + diff --git a/ct/localagi.sh b/ct/localagi.sh new file mode 100644 index 000000000..d0c60e649 --- /dev/null +++ b/ct/localagi.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: BillyOutlast +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/mudler/LocalAGI + +APP="LocalAGI" +var_tags="${var_tags:-ai}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-20}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" +var_unprivileged="${var_unprivileged:-1}" +var_gpu="${var_gpu:-no}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/localagi ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "localagi" "mudler/LocalAGI"; then + msg_info "Stopping Service" + systemctl stop localagi + msg_ok "Stopped Service" + + create_backup /opt/localagi/.env + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "localagi" "mudler/LocalAGI" "tarball" "latest" "/opt/localagi" + + restore_backup + + + msg_info "Building LocalAGI" + cd /opt/localagi/webui/react-ui + $STD bun install + $STD bun run build + cd /opt/localagi + $STD go build -o /usr/local/bin/localagi + msg_ok "Updated LocalAGI successfully" + + msg_info "Starting Service" + systemctl start localagi + msg_ok "Started Service" + msg_ok "Updated successfully!" + exit + fi + exit +} + +start +build_container +description + +msg_ok "Completed successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW}Access it using the following URL:${CL}" +echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/install/localagi-install.sh b/install/localagi-install.sh new file mode 100644 index 000000000..3589d1b8b --- /dev/null +++ b/install/localagi-install.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: BillyOutlast +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/mudler/LocalAGI + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +APP="LocalAGI" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y build-essential +msg_ok "Installed Dependencies" + +NODE_VERSION="24" setup_nodejs +setup_go + +msg_info "Installing Bun" +export BUN_INSTALL="/root/.bun" +curl -fsSL https://bun.sh/install | $STD bash +ln -sf /root/.bun/bin/bun /usr/local/bin/bun +ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx +msg_ok "Installed Bun" + +fetch_and_deploy_gh_release "localagi" "mudler/LocalAGI" "tarball" "latest" "/opt/localagi" + +msg_info "Configuring LocalAGI" +mkdir -p /opt/localagi/pool +cat <<'EOF' >/opt/localagi/.env +LOCALAGI_MODEL=gemma-3-4b-it-qat +LOCALAGI_MULTIMODAL_MODEL=moondream2-20250414 +LOCALAGI_IMAGE_MODEL=sd-1.5-ggml +LOCALAGI_LLM_API_URL=http://127.0.0.1:11434/v1 +LOCALAGI_STATE_DIR=/opt/localagi/pool +EOF +msg_ok "Configured LocalAGI" + +msg_info "Setting up LocalAGI" +cd /opt/localagi/webui/react-ui +$STD bun install +$STD bun run build +cd /opt/localagi +$STD go build -o /usr/local/bin/localagi +msg_ok "Set up LocalAGI" + +msg_info "Creating LocalAGI systemd service" +cat </etc/systemd/system/localagi.service +[Unit] +Description=LocalAGI +After=network.target + +[Service] +User=root +Type=simple +EnvironmentFile=/opt/localagi/.env + +WorkingDirectory=/opt/localagi +ExecStart=/usr/local/bin/localagi +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now localagi +msg_ok "Created LocalAGI systemd service" + +motd_ssh +customize +cleanup_lxc