mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-08 12:22:49 +00:00
Compare commits
15 Commits
2025-03-09
...
2025-03-10
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
49d7d4a106 | ||
|
|
4b638e93be | ||
|
|
e508fb101f | ||
|
|
2c73cd7cf7 | ||
|
|
da94a2c6bc | ||
|
|
1de7e428cd | ||
|
|
60994b6851 | ||
|
|
30e14a157f | ||
|
|
ff30e03e88 | ||
|
|
88c952c1b4 | ||
|
|
8441e65000 | ||
|
|
d4ac4809c0 | ||
|
|
824e091a67 | ||
|
|
cc0ce1a756 | ||
|
|
e5b39e6671 |
31
.github/workflows/autolabeler.yml
vendored
31
.github/workflows/autolabeler.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
|||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install minimatch
|
- name: Install dependencies
|
||||||
run: npm install minimatch
|
run: npm install minimatch
|
||||||
|
|
||||||
- name: Label PR based on file changes and PR template
|
- name: Label PR based on file changes and PR template
|
||||||
@@ -61,22 +61,27 @@ jobs:
|
|||||||
labelsToAdd.add(label);
|
labelsToAdd.add(label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const templateLabelMappings = {
|
//if two labels or more are added, return
|
||||||
"🐞 **Bug fix**": "bugfix",
|
if (labelsToAdd.size < 2) {
|
||||||
"✨ **New feature**": "feature",
|
const templateLabelMappings = {
|
||||||
"💥 **Breaking change**": "breaking change",
|
"🐞 **Bug fix**": "bugfix",
|
||||||
};
|
"✨ **New feature**": "feature",
|
||||||
|
"💥 **Breaking change**": "breaking change",
|
||||||
|
};
|
||||||
|
|
||||||
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
||||||
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
|
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
|
||||||
const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
|
const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
|
||||||
const match = prBody.match(regex);
|
const match = prBody.match(regex);
|
||||||
if (match) {
|
if (match) {
|
||||||
console.log(`Match: ${match}`);
|
console.log(`Match: ${match}`);
|
||||||
labelsToAdd.add(label);
|
labelsToAdd.add(label);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
|
console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
|
||||||
|
|
||||||
if (labelsToAdd.size > 0) {
|
if (labelsToAdd.size > 0) {
|
||||||
|
|||||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -14,6 +14,30 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||||
|
|
||||||
|
|
||||||
|
## 2025-03-10
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Paperless-GPT [@MickLesk](https://github.com/MickLesk) ([#2965](https://github.com/community-scripts/ProxmoxVE/pull/2965))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Rework SnipeIT: Tarball & Tempfile [@MickLesk](https://github.com/MickLesk) ([#2963](https://github.com/community-scripts/ProxmoxVE/pull/2963))
|
||||||
|
- pihole: fix path when accessing pihole using `pct enter` [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2964](https://github.com/community-scripts/ProxmoxVE/pull/2964))
|
||||||
|
- Hoarder: v0.23.0 dependency update [@vhsdream](https://github.com/vhsdream) ([#2958](https://github.com/community-scripts/ProxmoxVE/pull/2958))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📂 Github
|
||||||
|
|
||||||
|
- Update autolabeler.yml: Set Labels correctly [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2968](https://github.com/community-scripts/ProxmoxVE/pull/2968))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Add warnings about externaly sourced scripts [@tremor021](https://github.com/tremor021) ([#2975](https://github.com/community-scripts/ProxmoxVE/pull/2975))
|
||||||
|
|
||||||
## 2025-03-09
|
## 2025-03-09
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
6
ct/headers/paperless-gpt
Normal file
6
ct/headers/paperless-gpt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ __ __________ ______
|
||||||
|
/ __ \____ _____ ___ _____/ /__ __________ / ____/ __ \/_ __/
|
||||||
|
/ /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/ / __/ /_/ / / /
|
||||||
|
/ ____/ /_/ / /_/ / __/ / / / __(__ |__ )_____/ /_/ / ____/ / /
|
||||||
|
/_/ \__,_/ .___/\___/_/ /_/\___/____/____/ \____/_/ /_/
|
||||||
|
/_/
|
||||||
@@ -37,6 +37,9 @@ function update_script() {
|
|||||||
if [[ $(corepack -v) < "0.31.0" ]]; then
|
if [[ $(corepack -v) < "0.31.0" ]]; then
|
||||||
$STD npm install -g corepack@0.31.0
|
$STD npm install -g corepack@0.31.0
|
||||||
fi
|
fi
|
||||||
|
if [[ "${PREV_RELEASE}" < 0.23.0 ]]; then
|
||||||
|
$STD apt-get install -y graphicsmagick ghostscript
|
||||||
|
fi
|
||||||
cd /opt
|
cd /opt
|
||||||
if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
|
if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
|
||||||
mkdir -p /etc/hoarder
|
mkdir -p /etc/hoarder
|
||||||
|
|||||||
74
ct/paperless-gpt.sh
Normal file
74
ct/paperless-gpt.sh
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/icereed/paperless-gpt
|
||||||
|
|
||||||
|
APP="Paperless-GPT"
|
||||||
|
var_tags="os"
|
||||||
|
var_cpu="3"
|
||||||
|
var_ram="2048"
|
||||||
|
var_disk="7"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
var_unprivileged="1"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/paperless-gpt ]]; then
|
||||||
|
msg_error "No Paperless-GPT installation found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop paperless-gpt
|
||||||
|
msg_ok "Service Stopped"
|
||||||
|
|
||||||
|
msg_info "Updating Paperless-GPT to ${RELEASE}"
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
wget -q "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
|
||||||
|
tar zxf $temp_file
|
||||||
|
rm -rf /opt/paperless-gpt
|
||||||
|
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
|
||||||
|
cd /opt/paperless-gpt/web-app
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
cd /opt/paperless-gpt
|
||||||
|
go mod download
|
||||||
|
export CC=musl-gcc
|
||||||
|
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
||||||
|
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
||||||
|
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
|
||||||
|
msg_ok "Updated Paperless-GPT to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start paperless-gpt
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -f $temp_file
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
@@ -29,7 +29,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
set +e
|
set +e
|
||||||
pihole -up
|
/usr/local/bin/pihole -up
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
|||||||
# Source: https://snipeitapp.com/
|
# Source: https://snipeitapp.com/
|
||||||
|
|
||||||
APP="SnipeIT"
|
APP="SnipeIT"
|
||||||
var_tags="assat-management;foss"
|
var_tags="asset-management;foss"
|
||||||
var_cpu="2"
|
var_cpu="2"
|
||||||
var_ram="2048"
|
var_ram="2048"
|
||||||
var_disk="4"
|
var_disk="4"
|
||||||
@@ -27,13 +27,20 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop nginx
|
||||||
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
mv /opt/snipe-it /opt/snipe-it-backup
|
mv /opt/snipe-it /opt/snipe-it-backup
|
||||||
cd /opt
|
temp_file=$(mktemp)
|
||||||
|
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
|
||||||
|
tar zxf $temp_file
|
||||||
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
$STD wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
$STD wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
||||||
unzip -q v${RELEASE}.zip
|
unzip -q v${RELEASE}.zip
|
||||||
mv snipe-it-${RELEASE} /opt/snipe-it
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
@@ -53,9 +60,13 @@ function update_script() {
|
|||||||
chmod -R 755 /opt/snipe-it
|
chmod -R 755 /opt/snipe-it
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
rm -rf /opt/snipe-it-backup
|
rm -rf /opt/snipe-it-backup
|
||||||
msg_ok "Updated ${APP} LXC"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start nginx
|
||||||
|
msg_ok "Started Service"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,20 +14,21 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
$STD apt-get install -y git
|
mc
|
||||||
$STD apt-get install -y make
|
|
||||||
$STD apt-get install -y g++
|
|
||||||
$STD apt-get install -y gcc
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up Node.js Repository"
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||||
|
msg_ok "Set up Node.js Repository"
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
msg_info "Installing Node.js"
|
||||||
$STD bash <(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh)
|
$STD apt-get update
|
||||||
. ~/.bashrc
|
$STD apt-get install -y nodejs
|
||||||
$STD nvm install 16.20.1
|
|
||||||
ln -sf /root/.nvm/versions/node/v16.20.1/bin/node /usr/bin/node
|
|
||||||
msg_ok "Installed Node.js"
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
msg_info "Installing Cronicle Primary Server"
|
msg_info "Installing Cronicle Primary Server"
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ $STD apt-get install -y \
|
|||||||
ca-certificates \
|
ca-certificates \
|
||||||
chromium/stable \
|
chromium/stable \
|
||||||
chromium-common/stable \
|
chromium-common/stable \
|
||||||
|
graphicsmagick \
|
||||||
|
ghostscript \
|
||||||
mc
|
mc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|||||||
136
install/paperless-gpt-install.sh
Normal file
136
install/paperless-gpt-install.sh
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/icereed/paperless-gpt
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
sudo \
|
||||||
|
curl \
|
||||||
|
mc \
|
||||||
|
gcc \
|
||||||
|
gnupg \
|
||||||
|
ca-certificates \
|
||||||
|
musl-dev \
|
||||||
|
mupdf \
|
||||||
|
libc6-dev \
|
||||||
|
musl-tools
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up Node.js Repository"
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||||
|
msg_ok "Set up Node.js Repository"
|
||||||
|
|
||||||
|
msg_info "Installing Node.js"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y nodejs
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
|
msg_info "Installing Golang"
|
||||||
|
set +o pipefail
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1)
|
||||||
|
wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file"
|
||||||
|
tar -C /usr/local -xzf "$temp_file"
|
||||||
|
ln -sf /usr/local/go/bin/go /usr/local/bin/go
|
||||||
|
rm -f "$temp_file"
|
||||||
|
set -o pipefail
|
||||||
|
msg_ok "Installed Golang"
|
||||||
|
|
||||||
|
msg_info "Setup Paperless-GPT"
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
wget -q "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
|
||||||
|
tar zxf $temp_file
|
||||||
|
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
|
||||||
|
cd /opt/paperless-gpt/web-app
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
cd /opt/paperless-gpt
|
||||||
|
go mod download
|
||||||
|
export CC=musl-gcc
|
||||||
|
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
||||||
|
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Setup Paperless-GPT"
|
||||||
|
|
||||||
|
mkdir -p /opt/paperless-gpt-data
|
||||||
|
read -p "Do you want to enter the Paperless local URL now? (y/n) " input_url
|
||||||
|
if [[ "$input_url" =~ ^[Yy]$ ]]; then
|
||||||
|
read -p "Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
|
||||||
|
else
|
||||||
|
PAPERLESS_BASE_URL="http://your_paperless_ngx_url"
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Do you want to enter the Paperless API token now? (y/n) " input_token
|
||||||
|
if [[ "$input_token" =~ ^[Yy]$ ]]; then
|
||||||
|
read -p "Enter your Paperless API token: " PAPERLESS_API_TOKEN
|
||||||
|
else
|
||||||
|
PAPERLESS_API_TOKEN="your_paperless_api_token"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Setup Environment"
|
||||||
|
cat <<EOF >/opt/paperless-gpt-data/.env
|
||||||
|
PAPERLESS_BASE_URL=$PAPERLESS_BASE_URL
|
||||||
|
PAPERLESS_API_TOKEN=$PAPERLESS_API_TOKEN
|
||||||
|
|
||||||
|
LLM_PROVIDER=openai
|
||||||
|
LLM_MODEL=gpt-4o
|
||||||
|
OPENAI_API_KEY=your_openai_api_key
|
||||||
|
|
||||||
|
#VISION_LLM_PROVIDER=ollama
|
||||||
|
#VISION_LLM_MODEL=minicpm-v
|
||||||
|
|
||||||
|
LLM_LANGUAGE=English
|
||||||
|
LOG_LEVEL=info
|
||||||
|
|
||||||
|
LISTEN_INTERFACE=:8080
|
||||||
|
|
||||||
|
AUTO_TAG=paperless-gpt-auto
|
||||||
|
MANUAL_TAG=paperless-gpt
|
||||||
|
AUTO_OCR_TAG=paperless-gpt-ocr-auto
|
||||||
|
|
||||||
|
OCR_LIMIT_PAGES=5
|
||||||
|
EOF
|
||||||
|
msg_ok "Setup Environment"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/paperless-gpt.service
|
||||||
|
[Unit]
|
||||||
|
Description=Paperless-GPT
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/paperless-gpt
|
||||||
|
ExecStart=/opt/paperless-gpt/paperless-gpt
|
||||||
|
Restart=always
|
||||||
|
User=root
|
||||||
|
EnvironmentFile=/opt/paperless-gpt-data/.env
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now paperless-gpt
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -f $temp_file
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -20,14 +20,29 @@ $STD apt-get install -y \
|
|||||||
mc \
|
mc \
|
||||||
make \
|
make \
|
||||||
gcc
|
gcc
|
||||||
wget -q https://go.dev/dl/go1.23.5.linux-amd64.tar.gz
|
|
||||||
curl -s -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash &> /dev/null
|
|
||||||
tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz
|
|
||||||
export PATH=$PATH:/usr/local/go/bin
|
|
||||||
source ~/.bashrc
|
|
||||||
$STD nvm install node
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Golang"
|
||||||
|
set +o pipefail
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1)
|
||||||
|
wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file"
|
||||||
|
tar -C /usr/local -xzf "$temp_file"
|
||||||
|
ln -sf /usr/local/go/bin/go /usr/local/bin/go
|
||||||
|
set -o pipefail
|
||||||
|
msg_ok "Installed Golang"
|
||||||
|
|
||||||
|
msg_info "Setting up Node.js Repository"
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||||
|
msg_ok "Set up Node.js Repository"
|
||||||
|
|
||||||
|
msg_info "Installing Node.js"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y nodejs
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
msg_info "Setting up seelf. Patience"
|
msg_info "Setting up seelf. Patience"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
wget -q "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz"
|
wget -q "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz"
|
||||||
@@ -71,7 +86,7 @@ customize
|
|||||||
# Cleanup
|
# Cleanup
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f ~/v${RELEASE}.tar.gz
|
rm -f ~/v${RELEASE}.tar.gz
|
||||||
rm -f ~/go1.23.5.linux-amd64.tar.gz
|
rm -f $temp_file
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -41,13 +41,11 @@ mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVI
|
|||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Installing Snipe-IT"
|
msg_info "Installing Snipe-IT"
|
||||||
cd /opt
|
temp_file=$(mktemp)
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
|
||||||
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
tar zxf $temp_file
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv snipe-it-${RELEASE} /opt/snipe-it
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
|
|
||||||
cd /opt/snipe-it
|
cd /opt/snipe-it
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
IPADDRESS=$(hostname -I | awk '{print $1}')
|
IPADDRESS=$(hostname -I | awk '{print $1}')
|
||||||
@@ -59,17 +57,14 @@ sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
|||||||
|
|
||||||
chown -R www-data: /opt/snipe-it
|
chown -R www-data: /opt/snipe-it
|
||||||
chmod -R 755 /opt/snipe-it
|
chmod -R 755 /opt/snipe-it
|
||||||
|
|
||||||
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer update --no-plugins --no-scripts
|
$STD composer update --no-plugins --no-scripts
|
||||||
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
||||||
|
|
||||||
$STD php artisan key:generate --force
|
$STD php artisan key:generate --force
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed SnipeIT"
|
msg_ok "Installed SnipeIT"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|
||||||
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@@ -100,7 +95,7 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
rm -f $temp_file
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -34,6 +34,10 @@
|
|||||||
{
|
{
|
||||||
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
|
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -34,6 +34,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Execute within an existing LXC Console",
|
"text": "Execute within an existing LXC Console",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Portainer Interface: LXC-IP: 9443",
|
"text": "Portainer Interface: LXC-IP: 9443",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Only Alpine: To get the username and password, run the script again inside the LXC shell.",
|
"text": "Only Alpine: To get the username and password, run the script again inside the LXC shell.",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Since there are hundreds of Certbot instances, it's necessary to install the specific Certbot of your preference. Running `/app/scripts/install-certbot-plugins` within the nginxproxymanager LXC shell will install many additional plugins.",
|
"text": "Since there are hundreds of Certbot instances, it's necessary to install the specific Certbot of your preference. Running `/app/scripts/install-certbot-plugins` within the nginxproxymanager LXC shell will install many additional plugins.",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
39
json/paperless-gpt.json
Normal file
39
json/paperless-gpt.json
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"name": "Paperless-GPT",
|
||||||
|
"slug": "paperless-gpt",
|
||||||
|
"categories": [
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"date_created": "2025-03-10",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8080,
|
||||||
|
"documentation": null,
|
||||||
|
"website": "https://github.com/icereed/paperless-gpt",
|
||||||
|
"logo": "https://raw.githubusercontent.com/icereed/paperless-gpt/refs/heads/main/web-app/src/assets/logo.svg",
|
||||||
|
"description": "Paperless-GPT seamlessly pairs with paperless-ngx to generate AI-powered document titles and tags, saving you hours of manual sorting. While other tools may offer AI chat features, paperless-gpt stands out by supercharging OCR with LLMs-ensuring high accuracy, even with tricky scans. If you’re craving next-level text extraction and effortless document organization, this is your solution.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/paperless-gpt.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 3,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 7,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Configuration File: `/opt/paperless-gpt-data/.env`",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,10 @@
|
|||||||
{
|
{
|
||||||
"text": "With an option to configure Unbound as a forwarding DNS server (using DNS-over-TLS (DoT)) as opposed to a recursive DNS server",
|
"text": "With an option to configure Unbound as a forwarding DNS server (using DNS-over-TLS (DoT)) as opposed to a recursive DNS server",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,10 @@
|
|||||||
{
|
{
|
||||||
"text": "With Privileged/Unprivileged Hardware Acceleration Support",
|
"text": "With Privileged/Unprivileged Hardware Acceleration Support",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Options to Install Portainer or Portainer Agent",
|
"text": "Options to Install Portainer or Portainer Agent",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -30,5 +30,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user