mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			44 Commits
		
	
	
		
			2025-03-06
			...
			2025-03-10
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					49d7d4a106 | ||
| 
						 | 
					4b638e93be | ||
| 
						 | 
					e508fb101f | ||
| 
						 | 
					2c73cd7cf7 | ||
| 
						 | 
					da94a2c6bc | ||
| 
						 | 
					1de7e428cd | ||
| 
						 | 
					60994b6851 | ||
| 
						 | 
					30e14a157f | ||
| 
						 | 
					ff30e03e88 | ||
| 
						 | 
					88c952c1b4 | ||
| 
						 | 
					8441e65000 | ||
| 
						 | 
					d4ac4809c0 | ||
| 
						 | 
					824e091a67 | ||
| 
						 | 
					cc0ce1a756 | ||
| 
						 | 
					e5b39e6671 | ||
| 
						 | 
					6ad1ea004f | ||
| 
						 | 
					a640814ae0 | ||
| 
						 | 
					89962b01fa | ||
| 
						 | 
					b0a06bdc5f | ||
| 
						 | 
					54fc60b60e | ||
| 
						 | 
					830634517b | ||
| 
						 | 
					f99fd28fe6 | ||
| 
						 | 
					70f96e3bfd | ||
| 
						 | 
					a56bbba2bd | ||
| 
						 | 
					9f0945394f | ||
| 
						 | 
					c9dec5e3cd | ||
| 
						 | 
					6e8dd730ad | ||
| 
						 | 
					0fdab8c0b4 | ||
| 
						 | 
					24af87ae08 | ||
| 
						 | 
					175150d928 | ||
| 
						 | 
					50963e0fa1 | ||
| 
						 | 
					e0f65118a4 | ||
| 
						 | 
					c48111496c | ||
| 
						 | 
					2630c46c24 | ||
| 
						 | 
					4a41b24386 | ||
| 
						 | 
					f3d59531c1 | ||
| 
						 | 
					4a67ba0a88 | ||
| 
						 | 
					d19d535873 | ||
| 
						 | 
					2fd035582a | ||
| 
						 | 
					c057e14daf | ||
| 
						 | 
					06771873f3 | ||
| 
						 | 
					ee008c7db4 | ||
| 
						 | 
					b4874d9705 | ||
| 
						 | 
					06fc4209a7 | 
							
								
								
									
										35
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -16,9 +16,9 @@ jobs:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Install minimatch
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: npm install minimatch
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
      - name: Label PR based on file changes and PR template
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
@@ -61,21 +61,26 @@ jobs:
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            const templateLabelMappings = {
 | 
			
		||||
              "🐞 **Bug fix**": "bugfix",
 | 
			
		||||
              "✨ **New feature**": "feature",
 | 
			
		||||
              "💥 **Breaking change**": "breaking change",
 | 
			
		||||
            };
 | 
			
		||||
            
 | 
			
		||||
            for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
 | 
			
		||||
              const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
 | 
			
		||||
              const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
 | 
			
		||||
              const match = prBody.match(regex);              
 | 
			
		||||
              if (match) {
 | 
			
		||||
                console.log(`Match: ${match}`);
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
            //if two labels or more are added, return
 | 
			
		||||
              if (labelsToAdd.size < 2) {
 | 
			
		||||
                const templateLabelMappings = {
 | 
			
		||||
                "🐞 **Bug fix**": "bugfix",
 | 
			
		||||
                "✨ **New feature**": "feature",
 | 
			
		||||
                "💥 **Breaking change**": "breaking change",
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
 | 
			
		||||
                const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
 | 
			
		||||
                const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
 | 
			
		||||
                const match = prBody.match(regex);              
 | 
			
		||||
                if (match) {
 | 
			
		||||
                  console.log(`Match: ${match}`);
 | 
			
		||||
                  labelsToAdd.add(label);
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
            console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							@@ -4,7 +4,7 @@ on:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: '1 0 * * *'  # Runs daily at 00:01 UTC
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
jobs:
 | 
			
		||||
  create-daily-release:
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
@@ -14,32 +14,25 @@ jobs:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Extract first 5000 characters from CHANGELOG.md
 | 
			
		||||
        run: head -c 5000 CHANGELOG.md > changelog_cropped.md
 | 
			
		||||
 | 
			
		||||
      - name: Debugging - Show extracted changelog
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "=== CHANGELOG EXCERPT ==="
 | 
			
		||||
          cat changelog_cropped.md
 | 
			
		||||
          echo "========================="
 | 
			
		||||
      - name: Clean CHANGELOG (remove HTML header)
 | 
			
		||||
        run: sed -n '/^## /,$p' CHANGELOG.md > changelog_cleaned.md
 | 
			
		||||
 | 
			
		||||
      - name: Extract relevant changelog section
 | 
			
		||||
        run: |
 | 
			
		||||
          YESTERDAY=$(date -u --date="yesterday" +%Y-%m-%d)
 | 
			
		||||
          echo "Checking for changes on: $YESTERDAY"
 | 
			
		||||
 | 
			
		||||
          # Extract relevant section from cropped changelog
 | 
			
		||||
          awk -v date="## $YESTERDAY" '
 | 
			
		||||
            $0 ~ date {found=1; next} 
 | 
			
		||||
            found && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {exit} 
 | 
			
		||||
            found
 | 
			
		||||
          ' changelog_cropped.md > changelog_tmp.md
 | 
			
		||||
          # Extract the section from "## $YESTERDAY" until the next "## YYYY-MM-DD"
 | 
			
		||||
          sed -n "/^## $YESTERDAY/,/^## [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/p" changelog_cleaned.md | head -n -1 > changelog_tmp_full.md
 | 
			
		||||
 | 
			
		||||
          # Truncate the extracted section to 5000 characters
 | 
			
		||||
          head -c 5000 changelog_tmp_full.md > changelog_tmp.md
 | 
			
		||||
 | 
			
		||||
          echo "=== Extracted Changelog ==="
 | 
			
		||||
          cat changelog_tmp.md
 | 
			
		||||
          echo "==========================="
 | 
			
		||||
 | 
			
		||||
          # Skip if no content was found
 | 
			
		||||
          # Abort if no content was found
 | 
			
		||||
          if [ ! -s changelog_tmp.md ]; then
 | 
			
		||||
            echo "No changes found for $YESTERDAY, skipping release."
 | 
			
		||||
            exit 0
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										79
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,85 @@ 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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 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
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Fix wikijs update issue while backing up data [@AdelRefaat](https://github.com/AdelRefaat) ([#2950](https://github.com/community-scripts/ProxmoxVE/pull/2950))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Improve Release-Action (awk function) [@MickLesk](https://github.com/MickLesk) ([#2934](https://github.com/community-scripts/ProxmoxVE/pull/2934))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Pi-hole interface port in documentation [@la7eralus](https://github.com/la7eralus) ([#2953](https://github.com/community-scripts/ProxmoxVE/pull/2953))
 | 
			
		||||
 | 
			
		||||
## 2025-03-08
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update slug to lowercase in pf2etools.json  [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2942](https://github.com/community-scripts/ProxmoxVE/pull/2942))
 | 
			
		||||
 | 
			
		||||
## 2025-03-07
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - JupyterNotebook: Fix APP Variable [@MickLesk](https://github.com/MickLesk) ([#2924](https://github.com/community-scripts/ProxmoxVE/pull/2924))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Beszel: restarting service after update [@C0pywriting](https://github.com/C0pywriting) ([#2915](https://github.com/community-scripts/ProxmoxVE/pull/2915))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - ActualBudget: Update Script with new Repo [@MickLesk](https://github.com/MickLesk) ([#2907](https://github.com/community-scripts/ProxmoxVE/pull/2907))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Improve Nextcloud(pi) docu and Name to NextcloudPi [@MickLesk](https://github.com/MickLesk) ([#2930](https://github.com/community-scripts/ProxmoxVE/pull/2930))
 | 
			
		||||
    - fix jupyternotebook slug [@MickLesk](https://github.com/MickLesk) ([#2922](https://github.com/community-scripts/ProxmoxVE/pull/2922))
 | 
			
		||||
    - Improve Trilium Description and Name to TriliumNext [@MickLesk](https://github.com/MickLesk) ([#2929](https://github.com/community-scripts/ProxmoxVE/pull/2929))
 | 
			
		||||
    - Prowlarr icon [@bannert1337](https://github.com/bannert1337) ([#2906](https://github.com/community-scripts/ProxmoxVE/pull/2906))
 | 
			
		||||
    - Update Apache Tika icon to SVG [@bannert1337](https://github.com/bannert1337) ([#2904](https://github.com/community-scripts/ProxmoxVE/pull/2904))
 | 
			
		||||
    - Update Prometheus Alertmanager Icon [@bannert1337](https://github.com/bannert1337) ([#2905](https://github.com/community-scripts/ProxmoxVE/pull/2905))
 | 
			
		||||
 | 
			
		||||
## 2025-03-06
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -26,9 +26,93 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit 1
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping ${APP}"
 | 
			
		||||
        systemctl stop actualbudget
 | 
			
		||||
        msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        wget -q https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz
 | 
			
		||||
 | 
			
		||||
        mv /opt/actualbudget /opt/actualbudget_bak
 | 
			
		||||
        tar -xzf "v${RELEASE}.tar.gz"
 | 
			
		||||
        mv actual-${RELEASE} /opt/actualbudget
 | 
			
		||||
 | 
			
		||||
        mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
			
		||||
        for dir in server-files .migrate user-files migrations; do
 | 
			
		||||
            if [[ -d /opt/actualbudget_bak/$dir ]]; then
 | 
			
		||||
                mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ || true
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
        if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
 | 
			
		||||
            sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
            sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
 | 
			
		||||
            mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
 | 
			
		||||
            mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f /opt/actualbudget_bak/.env ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
 | 
			
		||||
        else
 | 
			
		||||
            cat <<EOF >/opt/actualbudget-data/.env
 | 
			
		||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
 | 
			
		||||
ACTUAL_DATA_DIR=/opt/actualbudget-data
 | 
			
		||||
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files
 | 
			
		||||
ACTUAL_USER_FILES=/opt/actualbudget-data/user-files
 | 
			
		||||
PORT=5006
 | 
			
		||||
ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7"
 | 
			
		||||
ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
 | 
			
		||||
ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
 | 
			
		||||
EOF
 | 
			
		||||
        fi
 | 
			
		||||
        cd /opt/actualbudget
 | 
			
		||||
        $STD yarn workspaces focus @actual-app/sync-server --production
 | 
			
		||||
        echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting ${APP}"
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Actual Budget Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Group=root
 | 
			
		||||
WorkingDirectory=/opt/actualbudget
 | 
			
		||||
EnvironmentFile=/opt/actualbudget-data/.env
 | 
			
		||||
ExecStart=/usr/bin/yarn start:server
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
        systemctl start actualbudget
 | 
			
		||||
        msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /opt/actualbudget_bak
 | 
			
		||||
        rm -rf "/tmp/v${RELEASE}.tar.gz"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Due to major changes in the Actual Budget repository, we are currently unable to provide updates. Please check back later."
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								ct/beszel.sh
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ct/beszel.sh
									
									
									
									
									
								
							@@ -27,8 +27,18 @@ function update_script() {
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    /opt/beszel/beszel update
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop beszel-hub
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    $STD /opt/beszel/beszel update
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start beszel-hub
 | 
			
		||||
    msg_ok "Successfully started $APP"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
       __                  __               _   __      __       __                __  
 | 
			
		||||
      / /_  ______  __  __/ /____  _____   / | / /___  / /____  / /_  ____  ____  / /__
 | 
			
		||||
 __  / / / / / __ \/ / / / __/ _ \/ ___/  /  |/ / __ \/ __/ _ \/ __ \/ __ \/ __ \/ //_/
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ / /_/  __/ /     / /|  / /_/ / /_/  __/ /_/ / /_/ / /_/ / ,<   
 | 
			
		||||
\____/\__,_/ .___/\__, /\__/\___/_/     /_/ |_/\____/\__/\___/_.___/\____/\____/_/|_|  
 | 
			
		||||
          /_/    /____/                                                                
 | 
			
		||||
       __                  __            _   __      __       __                __  
 | 
			
		||||
      / /_  ______  __  __/ /____  _____/ | / /___  / /____  / /_  ____  ____  / /__
 | 
			
		||||
 __  / / / / / __ \/ / / / __/ _ \/ ___/  |/ / __ \/ __/ _ \/ __ \/ __ \/ __ \/ //_/
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ / /_/  __/ /  / /|  / /_/ / /_/  __/ /_/ / /_/ / /_/ / ,<   
 | 
			
		||||
\____/\__,_/ .___/\__, /\__/\___/_/  /_/ |_/\____/\__/\___/_.___/\____/\____/_/|_|  
 | 
			
		||||
          /_/    /____/                                                             
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
      $STD npm install -g corepack@0.31.0
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "${PREV_RELEASE}" < 0.23.0 ]]; then
 | 
			
		||||
        $STD apt-get install -y graphicsmagick ghostscript
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt
 | 
			
		||||
    if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
 | 
			
		||||
      mkdir -p /etc/hoarder
 | 
			
		||||
 
 | 
			
		||||
@@ -45,8 +45,8 @@ function update_script() {
 | 
			
		||||
    cp -r homepage-${RELEASE}/* /opt/homepage/
 | 
			
		||||
    rm -rf homepage-${RELEASE}
 | 
			
		||||
    cd /opt/homepage
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
    export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://jupyter.org/
 | 
			
		||||
 | 
			
		||||
APP="Jupyter Notebook"
 | 
			
		||||
APP="JupyterNotebook"
 | 
			
		||||
var_tags="ai;dev-tools"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,11 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating ${APP} (Patience)"
 | 
			
		||||
  cd /opt/open-webui
 | 
			
		||||
  mkdir /opt/open-webui-backup
 | 
			
		||||
  cp -rf /opt/open-webui/backend/data /opt/open-webui-backup
 | 
			
		||||
  git add -A
 | 
			
		||||
  $STD git stash
 | 
			
		||||
  $STD git reset --hard
 | 
			
		||||
  output=$(git pull --no-rebase)
 | 
			
		||||
  if echo "$output" | grep -q "Already up to date."; then
 | 
			
		||||
    msg_ok "$APP is already up to date."
 | 
			
		||||
@@ -40,6 +45,8 @@ function update_script() {
 | 
			
		||||
  $STD npm run build
 | 
			
		||||
  cd ./backend
 | 
			
		||||
  $STD pip install -r requirements.txt -U
 | 
			
		||||
  cp -rf /opt/open-webui-backup/* /opt/open-webui/backend
 | 
			
		||||
  $STD git stash pop
 | 
			
		||||
  systemctl start open-webui.service
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    set +e
 | 
			
		||||
    pihole -up
 | 
			
		||||
    /usr/local/bin/pihole -up
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
@@ -41,4 +41,4 @@ 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}/admin${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/admin${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Source: https://snipeitapp.com/
 | 
			
		||||
 | 
			
		||||
APP="SnipeIT"
 | 
			
		||||
var_tags="assat-management;foss"
 | 
			
		||||
var_tags="asset-management;foss"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
@@ -27,13 +27,20 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  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
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop nginx
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    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"
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    mv snipe-it-${RELEASE} /opt/snipe-it
 | 
			
		||||
@@ -53,9 +60,13 @@ function update_script() {
 | 
			
		||||
    chmod -R 755 /opt/snipe-it
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    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
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
@@ -67,4 +78,4 @@ 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}${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,11 @@ function update_script() {
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backing up Data"
 | 
			
		||||
    rm -rf ~/data-backup
 | 
			
		||||
    mkdir -p ~/data-backup
 | 
			
		||||
    cp -R /opt/wikijs/{db.sqlite,config.yml,/data} ~/data-backup
 | 
			
		||||
    [ -f /opt/wikijs/db.sqlite ] && cp /opt/wikijs/db.sqlite ~/data-backup
 | 
			
		||||
    [ -f /opt/wikijs/config.yml ] && cp /opt/wikijs/config.yml ~/data-backup
 | 
			
		||||
    [ -d /opt/wikijs/data ] && cp -R /opt/wikijs/data ~/data-backup
 | 
			
		||||
    msg_ok "Backed up Data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,20 +14,21 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y curl
 | 
			
		||||
$STD apt-get install -y sudo
 | 
			
		||||
$STD apt-get install -y mc
 | 
			
		||||
$STD apt-get install -y git
 | 
			
		||||
$STD apt-get install -y make
 | 
			
		||||
$STD apt-get install -y g++
 | 
			
		||||
$STD apt-get install -y gcc
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
    curl \
 | 
			
		||||
    sudo \
 | 
			
		||||
    mc
 | 
			
		||||
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 bash <(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh)
 | 
			
		||||
. ~/.bashrc
 | 
			
		||||
$STD nvm install 16.20.1
 | 
			
		||||
ln -sf /root/.nvm/versions/node/v16.20.1/bin/node /usr/bin/node
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Cronicle Primary Server"
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,8 @@ $STD apt-get install -y \
 | 
			
		||||
  ca-certificates \
 | 
			
		||||
  chromium/stable \
 | 
			
		||||
  chromium-common/stable \
 | 
			
		||||
  graphicsmagick \
 | 
			
		||||
  ghostscript \
 | 
			
		||||
  mc
 | 
			
		||||
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 \
 | 
			
		||||
  make \
 | 
			
		||||
  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_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"
 | 
			
		||||
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"
 | 
			
		||||
@@ -71,7 +86,7 @@ customize
 | 
			
		||||
# Cleanup
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
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 autoclean
 | 
			
		||||
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_info "Installing Snipe-IT"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
unzip -q v${RELEASE}.zip
 | 
			
		||||
temp_file=$(mktemp)
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
cd /opt/snipe-it
 | 
			
		||||
cp .env.example .env
 | 
			
		||||
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
 | 
			
		||||
chmod -R 755 /opt/snipe-it
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
$STD composer update --no-plugins --no-scripts
 | 
			
		||||
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
 | 
			
		||||
 | 
			
		||||
$STD php artisan key:generate --force
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Installed SnipeIT"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
 | 
			
		||||
server {
 | 
			
		||||
        listen 80;
 | 
			
		||||
@@ -100,7 +95,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
rm -f $temp_file
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
    "interface_port": 9998,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://tika.apache.org/",
 | 
			
		||||
    "logo": "https://tika.apache.org/tika.png",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/apache-tika.svg",
 | 
			
		||||
    "description": "The Apache Tika™ toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). All of these file types can be parsed through a single interface, making Tika useful for search engine indexing, content analysis, translation, and much more.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
@@ -31,4 +31,4 @@
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,10 @@
 | 
			
		||||
        {
 | 
			
		||||
            "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
            "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,
 | 
			
		||||
        "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",
 | 
			
		||||
            "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",
 | 
			
		||||
            "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,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Jupyter Notebook",
 | 
			
		||||
    "slug": "jupyter-notebook",
 | 
			
		||||
    "slug": "jupyternotebook",
 | 
			
		||||
    "categories": [
 | 
			
		||||
      20
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -30,5 +30,10 @@
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Nextcloud",
 | 
			
		||||
    "name": "NextcloudPi",
 | 
			
		||||
    "slug": "nextcloudpi",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        2
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 4443,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "documentation": "https://docs.nextcloudpi.com/",
 | 
			
		||||
    "website": "https://github.com/nextcloud/nextcloudpi",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/nextcloud.svg",
 | 
			
		||||
    "description": "NextCloudPi is a popular self-hosted solution for file collaboration and data storage. It is built on the NextCloud software, which is an open-source platform for data management.",
 | 
			
		||||
@@ -45,6 +45,10 @@
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Only Alpine: To get the username and password, run the script again inside the LXC shell.",
 | 
			
		||||
            "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.",
 | 
			
		||||
            "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"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Pf2eTools",
 | 
			
		||||
    "slug": "Pf2eTools",
 | 
			
		||||
    "slug": "pf2etools",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        24
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -30,5 +30,10 @@
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 81,
 | 
			
		||||
    "interface_port": 80,
 | 
			
		||||
    "documentation": "https://docs.pi-hole.net/",
 | 
			
		||||
    "website": "https://pi-hole.net/",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/pi-hole.svg",
 | 
			
		||||
@@ -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",
 | 
			
		||||
            "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",
 | 
			
		||||
            "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",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
    "interface_port": 9093,
 | 
			
		||||
    "documentation": "https://prometheus.io/docs/alerting/latest/overview/",
 | 
			
		||||
    "website": "https://prometheus.io/",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/prometheus.svg",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/prometheus.svg",
 | 
			
		||||
    "description": "Alerting with Prometheus is separated into two parts. Alerting rules in Prometheus servers send alerts to an Alertmanager. The Alertmanager then manages those alerts, including silencing, inhibition, aggregation and sending out notifications via methods such as email, on-call notification systems, and chat platforms.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
    "interface_port": 9696,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://github.com/Prowlarr/Prowlarr",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/radarr.svg",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/prowlarr.svg",
 | 
			
		||||
    "description": "Prowlarr is a software tool designed to integrate with various PVR (Personal Video Recorder) apps. It is built on a popular *arr .net/ReactJS base stack and serves as an indexer manager and proxy. Prowlarr makes it easy to manage and organize TV show and movie collections, by integrating with popular PVR apps and automating the downloading and organizing of media files. The software provides a web-based interface for managing and organizing TV shows and movies, making it easy to search and find content. Prowlarr also supports metadata management, including show and movie information, making it easy for users to keep their media collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing media collections, making it a valuable tool for media enthusiasts who want to keep their collection organized and up-to-date. With Prowlarr, users can enjoy their media collection from anywhere, making it a powerful tool for managing and sharing media files.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -30,5 +30,10 @@
 | 
			
		||||
        "username": 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,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Trilium",
 | 
			
		||||
    "name": "TriliumNext",
 | 
			
		||||
    "slug": "trilium",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        12
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://github.com/TriliumNext/Notes",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/triliumnext.svg",
 | 
			
		||||
    "description": "Trilium is an open-source note-taking and personal knowledge management application. It allows users to organize and manage their notes, ideas, and information in a single place, using a hierarchical tree-like structure. Trilium offers a range of features, including rich text formatting, links, images, and attachments, making it easy to create and structure notes. The software is designed to be flexible and customizable, with a range of customization options and plugins available, including themes, export options, and more. Trilium is a self-hosted solution, and can be run on a local machine or a cloud-based server, providing users with full control over their notes and information.",
 | 
			
		||||
    "description": "TriliumNext is an newer Fork of Trilium. TriliumNext is an open-source note-taking and personal knowledge management application. It allows users to organize and manage their notes, ideas, and information in a single place, using a hierarchical tree-like structure. Trilium offers a range of features, including rich text formatting, links, images, and attachments, making it easy to create and structure notes. The software is designed to be flexible and customizable, with a range of customization options and plugins available, including themes, export options, and more. Trilium is a self-hosted solution, and can be run on a local machine or a cloud-based server, providing users with full control over their notes and information.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
 
 | 
			
		||||
@@ -30,5 +30,10 @@
 | 
			
		||||
        "username": 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