mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			37 Commits
		
	
	
		
			2025-03-11
			...
			2025-03-15
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					db3ab3c7f9 | ||
| 
						 | 
					0b014d25be | ||
| 
						 | 
					0a9eb5078a | ||
| 
						 | 
					46016dc3da | ||
| 
						 | 
					f9c7717719 | ||
| 
						 | 
					ea05730868 | ||
| 
						 | 
					077e49c5c9 | ||
| 
						 | 
					4cc1ab728c | ||
| 
						 | 
					66c4d0e03f | ||
| 
						 | 
					b95e6ec9cf | ||
| 
						 | 
					936a526de3 | ||
| 
						 | 
					72b35646bb | ||
| 
						 | 
					e10574e724 | ||
| 
						 | 
					57b5852f91 | ||
| 
						 | 
					b774ad37c1 | ||
| 
						 | 
					efd5f1944b | ||
| 
						 | 
					bad18f77cb | ||
| 
						 | 
					09cca74147 | ||
| 
						 | 
					c59c796774 | ||
| 
						 | 
					0dc526af08 | ||
| 
						 | 
					127390c917 | ||
| 
						 | 
					d1528d4ba7 | ||
| 
						 | 
					6953a7779b | ||
| 
						 | 
					7aebd12d87 | ||
| 
						 | 
					a426e80b83 | ||
| 
						 | 
					ed93923672 | ||
| 
						 | 
					41ee6adab2 | ||
| 
						 | 
					3dbce17fc3 | ||
| 
						 | 
					4646e10382 | ||
| 
						 | 
					c895fb7809 | ||
| 
						 | 
					540d80a21c | ||
| 
						 | 
					9ad4dcf8d0 | ||
| 
						 | 
					91bfe2442c | ||
| 
						 | 
					f4afe5be9e | ||
| 
						 | 
					fe956f650d | ||
| 
						 | 
					3dd67e46c2 | ||
| 
						 | 
					6de4a8107c | 
							
								
								
									
										58
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
name: Close Matching Issue on PR Merge
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types:
 | 
			
		||||
      - closed
 | 
			
		||||
jobs:
 | 
			
		||||
  close_issue:
 | 
			
		||||
    if: github.event.pull_request.merged == true
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    
 | 
			
		||||
    steps:        
 | 
			
		||||
      - name: Extract and Process PR Title
 | 
			
		||||
        id: extract_title
 | 
			
		||||
        run: |
 | 
			
		||||
          title=$(echo "${{ github.event.pull_request.title }}" | sed 's/^New Script://g' | tr '[:upper:]' '[:lower:]' | sed 's/ //g' | sed 's/-//g')
 | 
			
		||||
          echo "Processed Title: $title"
 | 
			
		||||
          echo "title=$title" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Search for Issues with Similar Titles
 | 
			
		||||
        id: find_issue
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          issues=$(gh issue list --repo community-scripts/ProxmoxVED --json number,title --jq '.[] | {number, title}')
 | 
			
		||||
          
 | 
			
		||||
          best_match_score=0
 | 
			
		||||
          best_match_number=0
 | 
			
		||||
          
 | 
			
		||||
          for issue in $(echo "$issues" | jq -r '. | @base64'); do
 | 
			
		||||
            _jq() {
 | 
			
		||||
              echo ${issue} | base64 --decode | jq -r ${1}
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            issue_title=$(_jq '.title' | tr '[:upper:]' '[:lower:]' | sed 's/ //g' | sed 's/-//g')
 | 
			
		||||
            issue_number=$(_jq '.number')
 | 
			
		||||
 | 
			
		||||
            match_score=$(echo "$title" | grep -o "$issue_title" | wc -l)
 | 
			
		||||
            
 | 
			
		||||
            if [ "$match_score" -gt "$best_match_score" ]; then
 | 
			
		||||
              best_match_score=$match_score
 | 
			
		||||
              best_match_number=$issue_number
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ "$best_match_number" != "0" ]; then
 | 
			
		||||
            echo "issue_number=$best_match_number" >> $GITHUB_ENV
 | 
			
		||||
          else
 | 
			
		||||
            echo "No matching issue found."
 | 
			
		||||
            exit 0
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Comment on the Best-Matching Issue and Close It
 | 
			
		||||
        if: env.issue_number != ''
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.PAT_MICHEL }}
 | 
			
		||||
        run: |
 | 
			
		||||
          gh issue comment $issue_number --repo community-scripts/ProxmoxVED --body "Merged with #${{ github.event.pull_request.number }} in ProxmoxVE"
 | 
			
		||||
          gh issue close $issue_number --repo community-scripts/ProxmoxVED
 | 
			
		||||
							
								
								
									
										69
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										69
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,75 @@ 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-15
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - Homepage: Bugfix for v1.0.0 [@vhsdream](https://github.com/vhsdream) ([#3092](https://github.com/community-scripts/ProxmoxVE/pull/3092))
 | 
			
		||||
 | 
			
		||||
## 2025-03-14
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Memos: Increase RAM Usage and max space [@MickLesk](https://github.com/MickLesk) ([#3072](https://github.com/community-scripts/ProxmoxVE/pull/3072))
 | 
			
		||||
- Seafile - Minor bug fix: domain.sh script fix [@dave-yap](https://github.com/dave-yap) ([#3046](https://github.com/community-scripts/ProxmoxVE/pull/3046))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - openwrt: fix typo netmask [@qzydustin](https://github.com/qzydustin) ([#3084](https://github.com/community-scripts/ProxmoxVE/pull/3084))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - NPMplus: Add info about docker use. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3085](https://github.com/community-scripts/ProxmoxVE/pull/3085))
 | 
			
		||||
 | 
			
		||||
## 2025-03-13
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - NPMplus [@MickLesk](https://github.com/MickLesk) ([#3051](https://github.com/community-scripts/ProxmoxVE/pull/3051))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - OpenWebUI check if there are stashed changes before poping [@tremor021](https://github.com/tremor021) ([#3064](https://github.com/community-scripts/ProxmoxVE/pull/3064))
 | 
			
		||||
    - Update Fluid Calendar for v1.2.0 [@vhsdream](https://github.com/vhsdream) ([#3053](https://github.com/community-scripts/ProxmoxVE/pull/3053))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - alpine-Install (core) add timezone (tz) check [@MickLesk](https://github.com/MickLesk) ([#3057](https://github.com/community-scripts/ProxmoxVE/pull/3057))
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - New Workflow: Close Issues in DEV Repo when new Script is merged [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3042](https://github.com/community-scripts/ProxmoxVE/pull/3042))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Bump @babel/runtime from 7.26.0 to 7.26.10 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#3044](https://github.com/community-scripts/ProxmoxVE/pull/3044))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Update Vaultwarden Source [@MickLesk](https://github.com/MickLesk) ([#3036](https://github.com/community-scripts/ProxmoxVE/pull/3036))
 | 
			
		||||
    - Website: Fix Alpine "undefined" Link [@MickLesk](https://github.com/MickLesk) ([#3048](https://github.com/community-scripts/ProxmoxVE/pull/3048))
 | 
			
		||||
 | 
			
		||||
## 2025-03-12
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Fluid Calendar [@vhsdream](https://github.com/vhsdream) ([#2869](https://github.com/community-scripts/ProxmoxVE/pull/2869))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: Filebrowser: support now alpine [@MickLesk](https://github.com/MickLesk) ([#2997](https://github.com/community-scripts/ProxmoxVE/pull/2997))
 | 
			
		||||
 | 
			
		||||
## 2025-03-11
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										80
									
								
								ct/fluid-calendar.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								ct/fluid-calendar.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
#!/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: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://fluidcalendar.com
 | 
			
		||||
 | 
			
		||||
APP="fluid-calendar"
 | 
			
		||||
var_tags="calendar,tasks"
 | 
			
		||||
var_cpu="3"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
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/fluid-calendar ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop fluid-calendar.service
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Creating Backup"
 | 
			
		||||
        $STD tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/fluid-calendar
 | 
			
		||||
        msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        tmp_file=$(mktemp)
 | 
			
		||||
        wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file
 | 
			
		||||
        unzip -q $tmp_file
 | 
			
		||||
        cp -rf ${APP}-${RELEASE}/* /opt/fluid-calendar
 | 
			
		||||
        cd /opt/fluid-calendar
 | 
			
		||||
        export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
        $STD npm install --legacy-peer-deps
 | 
			
		||||
        $STD npm run prisma:generate
 | 
			
		||||
        $STD npm run prisma:migrate
 | 
			
		||||
        $STD npm run build:os
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start fluid-calendar.service
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf $tmp_file
 | 
			
		||||
        rm -rf "/opt/${APP}_backup_$(date +%F).tar.gz"
 | 
			
		||||
        rm -rf /tmp/${APP}-${RELEASE}
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${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}:3000${CL}"
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/fluid-calendar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/fluid-calendar
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ______      _     __                 __               __          
 | 
			
		||||
   / __/ /_  __(_)___/ /     _________ _/ /__  ____  ____/ /___ ______
 | 
			
		||||
  / /_/ / / / / / __  /_____/ ___/ __ `/ / _ \/ __ \/ __  / __ `/ ___/
 | 
			
		||||
 / __/ / /_/ / / /_/ /_____/ /__/ /_/ / /  __/ / / / /_/ / /_/ / /    
 | 
			
		||||
/_/ /_/\__,_/_/\__,_/      \___/\__,_/_/\___/_/ /_/\__,_/\__,_/_/     
 | 
			
		||||
                                                                      
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/npmplus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/npmplus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    _   ______  __  ___      __          
 | 
			
		||||
   / | / / __ \/  |/  /___  / /_  _______
 | 
			
		||||
  /  |/ / /_/ / /|_/ / __ \/ / / / / ___/
 | 
			
		||||
 / /|  / ____/ /  / / /_/ / / /_/ (__  ) 
 | 
			
		||||
/_/ |_/_/   /_/  /_/ .___/_/\__,_/____/  
 | 
			
		||||
                  /_/                    
 | 
			
		||||
@@ -8,8 +8,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
APP="Homepage"
 | 
			
		||||
var_tags="dashboard"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="3"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="6"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
@@ -35,6 +35,7 @@ function update_script() {
 | 
			
		||||
      echo "Installed NPM..."
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  LOCAL_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Updating Homepage to v${RELEASE} (Patience)"
 | 
			
		||||
@@ -49,7 +50,11 @@ function update_script() {
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
    export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    if [[ ! -f /opt/homepage/.env ]]; then
 | 
			
		||||
        echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" > /opt/homepage/.env
 | 
			
		||||
    fi
 | 
			
		||||
    systemctl start homepage
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Homepage to v${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
APP="Memos"
 | 
			
		||||
var_tags="notes"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_ram="3072"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
@@ -36,6 +36,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  systemctl stop memos
 | 
			
		||||
  export NODE_OPTIONS="--max-old-space-size=2048"
 | 
			
		||||
  cd /opt/memos/web
 | 
			
		||||
  $STD pnpm i --frozen-lockfile
 | 
			
		||||
  $STD pnpm build
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								ct/npmplus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ct/npmplus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
#!/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/ZoeyVid/NPMplus
 | 
			
		||||
 | 
			
		||||
APP="NPMplus"
 | 
			
		||||
var_tags="proxy;nginx"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="3"
 | 
			
		||||
var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
			
		||||
        "1" "Check for Alpine Updates" ON \
 | 
			
		||||
        3>&1 1>&2 2>&3)
 | 
			
		||||
 | 
			
		||||
    header_info
 | 
			
		||||
    if [ "$UPD" == "1" ]; then
 | 
			
		||||
        apk update && apk upgrade
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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}https://${IP}:81${CL}"
 | 
			
		||||
@@ -46,7 +46,9 @@ function update_script() {
 | 
			
		||||
  cd ./backend
 | 
			
		||||
  $STD pip install -r requirements.txt -U
 | 
			
		||||
  cp -rf /opt/open-webui-backup/* /opt/open-webui/backend
 | 
			
		||||
  $STD git stash pop
 | 
			
		||||
  if git stash list | grep -q 'stash@{'; then
 | 
			
		||||
    $STD git stash pop
 | 
			
		||||
  fi
 | 
			
		||||
  systemctl start open-webui.service
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.vaultwarden.net/
 | 
			
		||||
# Source: https://github.com/dani-garcia/vaultwarden
 | 
			
		||||
 | 
			
		||||
APP="Vaultwarden"
 | 
			
		||||
var_tags="password-manager"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -370,9 +370,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/runtime": {
 | 
			
		||||
      "version": "7.26.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
 | 
			
		||||
      "version": "7.26.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
 | 
			
		||||
      "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "regenerator-runtime": "^0.14.0"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										105
									
								
								install/fluid-calendar-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								install/fluid-calendar-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/dotnetfactory/fluid-calendar
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  zip \
 | 
			
		||||
  gnupg \
 | 
			
		||||
  postgresql-common
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Additional Dependencies"
 | 
			
		||||
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_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
echo "YES" | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh &>/dev/null
 | 
			
		||||
$STD apt-get install -y postgresql-17 nodejs
 | 
			
		||||
msg_ok "Installed Additional Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Postgresql Database"
 | 
			
		||||
DB_NAME="fluiddb"
 | 
			
		||||
DB_USER="fluiduser"
 | 
			
		||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)"
 | 
			
		||||
NEXTAUTH_SECRET="$(openssl rand -base64 44 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH ENCRYPTED PASSWORD '$DB_PASS';"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
 | 
			
		||||
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
 | 
			
		||||
{
 | 
			
		||||
    echo "${APPLICATION} Credentials"
 | 
			
		||||
    echo "Database User: $DB_USER"
 | 
			
		||||
    echo "Database Password: $DB_PASS"
 | 
			
		||||
    echo "Database Name: $DB_NAME"
 | 
			
		||||
    echo "NextAuth Secret: $NEXTAUTH_SECRET"
 | 
			
		||||
} >> ~/$APPLICATION.creds
 | 
			
		||||
msg_ok "Set up Postgresql Database"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup ${APPLICATION}"
 | 
			
		||||
tmp_file=$(mktemp)
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file
 | 
			
		||||
unzip -q $tmp_file
 | 
			
		||||
mv ${APPLICATION}-${RELEASE}/ /opt/${APPLICATION}
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/fluid-calendar/.env
 | 
			
		||||
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}"
 | 
			
		||||
 | 
			
		||||
# Change the URL below to your external URL
 | 
			
		||||
NEXTAUTH_URL="http://localhost:3000"
 | 
			
		||||
NEXT_PUBLIC_APP_URL="http://localhost:3000"
 | 
			
		||||
NEXTAUTH_SECRET="${NEXTAUTH_SECRET}"
 | 
			
		||||
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
 | 
			
		||||
 | 
			
		||||
NEXT_PUBLIC_ENABLE_SAAS_FEATURES=false
 | 
			
		||||
 | 
			
		||||
RESEND_API_KEY=
 | 
			
		||||
RESEND_EMAIL=
 | 
			
		||||
EOF
 | 
			
		||||
export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
cd /opt/fluid-calendar
 | 
			
		||||
$STD npm install --legacy-peer-deps
 | 
			
		||||
$STD npm run prisma:generate
 | 
			
		||||
$STD npm run prisma:migrate
 | 
			
		||||
$STD npm run build:os
 | 
			
		||||
msg_ok "Setup ${APPLICATION}"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/fluid-calendar.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Fluid Calendar Application
 | 
			
		||||
After=network.target postgresql.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Restart=always
 | 
			
		||||
WorkingDirectory=/opt/fluid-calendar
 | 
			
		||||
ExecStart=/usr/bin/npm run start
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now fluid-calendar.service
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f $tmp_file
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -14,10 +14,10 @@ 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 gpg
 | 
			
		||||
$STD apt-get install -y curl \
 | 
			
		||||
    sudo \
 | 
			
		||||
    mc \
 | 
			
		||||
    gpg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Node.js Repository"
 | 
			
		||||
@@ -32,6 +32,7 @@ $STD apt-get install -y nodejs
 | 
			
		||||
$STD npm install -g pnpm
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
msg_info "Installing Homepage v${RELEASE} (Patience)"
 | 
			
		||||
wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz
 | 
			
		||||
@@ -45,7 +46,9 @@ cp /opt/homepage/src/skeleton/* /opt/homepage/config
 | 
			
		||||
$STD pnpm install
 | 
			
		||||
export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
$STD pnpm build
 | 
			
		||||
echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" > /opt/homepage/.env
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
msg_ok "Installed Homepage v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,8 @@ msg_ok "Installed Golang"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Memos (Patience)"
 | 
			
		||||
mkdir -p /opt/memos_data
 | 
			
		||||
$STD sudo git clone https://github.com/usememos/memos.git /opt/memos
 | 
			
		||||
export NODE_OPTIONS="--max-old-space-size=2048"
 | 
			
		||||
$STD git clone https://github.com/usememos/memos.git /opt/memos
 | 
			
		||||
cd /opt/memos/web 
 | 
			
		||||
$STD pnpm i --frozen-lockfile
 | 
			
		||||
$STD pnpm build
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										112
									
								
								install/npmplus-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								install/npmplus-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/ZoeyVid/NPMplus
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
    newt \
 | 
			
		||||
    curl \
 | 
			
		||||
    openssh \
 | 
			
		||||
    tzdata \
 | 
			
		||||
    nano \
 | 
			
		||||
    gawk \
 | 
			
		||||
    yq \
 | 
			
		||||
    mc
 | 
			
		||||
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Docker & Compose"
 | 
			
		||||
$STD apk add docker
 | 
			
		||||
$STD rc-service docker start
 | 
			
		||||
$STD rc-update add docker default
 | 
			
		||||
 | 
			
		||||
get_latest_release() {
 | 
			
		||||
    curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
 | 
			
		||||
}
 | 
			
		||||
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
 | 
			
		||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
 | 
			
		||||
mkdir -p $DOCKER_CONFIG/cli-plugins
 | 
			
		||||
curl -sSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
 | 
			
		||||
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
 | 
			
		||||
msg_ok "Installed Docker & Compose"
 | 
			
		||||
 | 
			
		||||
msg_info "Fetching NPMplus"
 | 
			
		||||
cd /opt
 | 
			
		||||
wget -q https://raw.githubusercontent.com/ZoeyVid/NPMplus/refs/heads/develop/compose.yaml
 | 
			
		||||
msg_ok "Fetched NPMplus"
 | 
			
		||||
 | 
			
		||||
attempts=0
 | 
			
		||||
while true; do
 | 
			
		||||
    read -r -p "Enter your TZ Identifier (e.g., Europe/Berlin): " TZ_INPUT
 | 
			
		||||
    if validate_tz "$TZ_INPUT"; then
 | 
			
		||||
        break
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Invalid timezone! Please enter a valid TZ identifier."
 | 
			
		||||
 | 
			
		||||
    attempts=$((attempts + 1))
 | 
			
		||||
    if [[ "$attempts" -ge 3 ]]; then
 | 
			
		||||
        msg_error "Maximum attempts reached. Exiting."
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
read -r -p "Enter your ACME Email: " ACME_EMAIL_INPUT
 | 
			
		||||
 | 
			
		||||
yq -i "
 | 
			
		||||
  .services.npmplus.environment |=
 | 
			
		||||
    (map(select(. != \"TZ=*\" and . != \"ACME_EMAIL=*\")) +
 | 
			
		||||
    [\"TZ=$TZ_INPUT\", \"ACME_EMAIL=$ACME_EMAIL_INPUT\"])
 | 
			
		||||
" /opt/compose.yaml
 | 
			
		||||
 | 
			
		||||
msg_info "Building and Starting NPMplus (Patience)"
 | 
			
		||||
$STD docker compose up -d
 | 
			
		||||
CONTAINER_ID=""
 | 
			
		||||
for i in {1..60}; do
 | 
			
		||||
    CONTAINER_ID=$(docker ps --filter "name=npmplus" --format "{{.ID}}")
 | 
			
		||||
    if [[ -n "$CONTAINER_ID" ]]; then
 | 
			
		||||
        STATUS=$(docker inspect --format '{{.State.Health.Status}}' "$CONTAINER_ID" 2>/dev/null || echo "starting")
 | 
			
		||||
        if [[ "$STATUS" == "healthy" ]]; then
 | 
			
		||||
            msg_ok "NPMplus is running and healthy"
 | 
			
		||||
            break
 | 
			
		||||
        elif [[ "$STATUS" == "unhealthy" ]]; then
 | 
			
		||||
            msg_error "NPMplus container is unhealthy! Check logs."
 | 
			
		||||
            docker logs "$CONTAINER_ID"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
    sleep 2
 | 
			
		||||
    [[ $i -eq 60 ]] && msg_error "NPMplus container did not become healthy within 120s." && docker logs "$CONTAINER_ID" && exit 1
 | 
			
		||||
done
 | 
			
		||||
msg_ok "Builded and started NPMplus"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Retrieving Default Login (Patience)"
 | 
			
		||||
PASSWORD_FOUND=0
 | 
			
		||||
for i in {1..60}; do
 | 
			
		||||
    PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | grep -m1 "Creating a new user:")
 | 
			
		||||
    if [[ -n "$PASSWORD_LINE" ]]; then
 | 
			
		||||
        PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}')
 | 
			
		||||
        echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd
 | 
			
		||||
        msg_ok "Saved default login to /opt/.npm_pwd"
 | 
			
		||||
        PASSWORD_FOUND=1
 | 
			
		||||
        break
 | 
			
		||||
    fi
 | 
			
		||||
    sleep 2
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if [[ $PASSWORD_FOUND -eq 0 ]]; then
 | 
			
		||||
    msg_ok "No default login found, use docker ps & docker logs for container password."
 | 
			
		||||
fi
 | 
			
		||||
@@ -188,6 +188,8 @@ msg_info "Adjusting Conf files"
 | 
			
		||||
sed -i "0,/127.0.0.1/s/127.0.0.1/0.0.0.0/" /opt/seafile/conf/gunicorn.conf.py
 | 
			
		||||
sed -i "0,/SERVICE_URL = \"http:\/\/$IP\"/s/SERVICE_URL = \"http:\/\/$IP\"/SERVICE_URL = \"http:\/\/$IP:8000\"/" /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
echo -e "\nFILE_SERVER_ROOT = \"http://$IP:8082\"" >> /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
echo -e "CSRF_TRUSTED_ORIGINS = [\"http://$IP/\"]" >> /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
echo -e "ALLOWED_HOSTS = [\"$IP\"]" >> /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
echo -e "CSRF_TRUSTED_ORIGINS = ['http://$IP/']" >> /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
msg_ok "Conf files adjusted"
 | 
			
		||||
 | 
			
		||||
@@ -224,14 +226,15 @@ After=network.target mysql.service memcached.service
 | 
			
		||||
Wants=mysql.service memcached.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=forking
 | 
			
		||||
Type=oneshot
 | 
			
		||||
User=seafile
 | 
			
		||||
Group=seafile
 | 
			
		||||
WorkingDirectory=/opt/seafile
 | 
			
		||||
RemainAfterExit=yes
 | 
			
		||||
 | 
			
		||||
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
 | 
			
		||||
ExecStartPost=/opt/seafile/seafile-server-latest/seahub.sh start
 | 
			
		||||
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
 | 
			
		||||
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start 
 | 
			
		||||
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
 | 
			
		||||
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop 
 | 
			
		||||
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
 | 
			
		||||
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
@@ -265,8 +268,13 @@ IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
 | 
			
		||||
DOMAIN_NOSCHEME=$(echo $DOMAIN | sed 's|^https://||')
 | 
			
		||||
 | 
			
		||||
#Change the CORS to provided domain
 | 
			
		||||
sed -i "s|CSRF_TRUSTED_ORIGINS = ['http://$IP:8000/']|CSRF_TRUSTED_ORIGINS = ['$DOMAIN']|g" /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
sed -i "s|SERVICE_URL = \"http://$IP:8000\"|SERVICE_URL = \"$DOMAIN\"|g" /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
sed -i "s|CSRF_TRUSTED_ORIGINS = \[\"http://$IP/\"\]|CSRF_TRUSTED_ORIGINS = \[\"$DOMAIN/\"\]|g" /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
sed -i "s|FILE_SERVER_ROOT = \"http://$IP:8082\"|FILE_SERVER_ROOT = \"$DOMAIN/seafhttp\"|g" /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
sed -i "s|ALLOWED_HOSTS = \[\"$IP\"\]|ALLOWED_HOSTS = \[\"\.$DOMAIN_NOSCHEME\"\]|g" /opt/seafile/conf/seahub_settings.py
 | 
			
		||||
 | 
			
		||||
systemctl restart seafile
 | 
			
		||||
echo "Seafile server restarted! Access it at $DOMAIN."
 | 
			
		||||
EOF
 | 
			
		||||
chmod +x ~/domain.sh
 | 
			
		||||
msg_ok "Bash Script for Domain access created"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.vaultwarden.net/
 | 
			
		||||
# Source: https://github.com/dani-garcia/vaultwarden
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,17 @@
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/alpinelinux.svg",
 | 
			
		||||
    "description": "A security-oriented, lightweight Linux distribution based on musl and BusyBox.\r\nBy default, the root password is set to alpine. If you choose to use advanced settings, you will need to define a password, autologin is currently unavailable.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/alpine.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 512,
 | 
			
		||||
                "hdd": 0.1,
 | 
			
		||||
                "os": "alpine",
 | 
			
		||||
                "version": "3.21"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "alpine",
 | 
			
		||||
            "script": "ct/alpine.sh",
 | 
			
		||||
@@ -36,4 +47,4 @@
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,17 @@
 | 
			
		||||
                "os": null,
 | 
			
		||||
                "version": null
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "alpine",
 | 
			
		||||
            "script": "misc/filebrowser.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": null,
 | 
			
		||||
                "ram": null,
 | 
			
		||||
                "hdd": null,
 | 
			
		||||
                "os": null,
 | 
			
		||||
                "version": null
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
@@ -36,4 +47,4 @@
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								json/fluid-calendar.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								json/fluid-calendar.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Fluid-Calendar",
 | 
			
		||||
  "slug": "fluid-calendar",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    19,
 | 
			
		||||
    0
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-03-12",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://github.com/dotnetfactory/fluid-calendar/tree/main/docs",
 | 
			
		||||
  "website": "https://github.com/dotnetfactory/fluid-calendar",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/dotnetfactory/fluid-calendar/refs/heads/main/src/app/favicon.ico",
 | 
			
		||||
  "description": "The open-source intelligent calendar that adapts to your workflow. Experience seamless task scheduling powered by AI, designed to make your time management effortless.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/fluid-calendar.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 3,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 7,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Creds: cat ~/fluid-calendar.creds",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -19,8 +19,8 @@
 | 
			
		||||
            "script": "ct/homepage.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 1024,
 | 
			
		||||
                "hdd": 3,
 | 
			
		||||
                "ram": 4096,
 | 
			
		||||
                "hdd": 6,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
@@ -34,6 +34,10 @@
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Configuration (bookmarks.yaml, services.yaml, widgets.yaml) path: `/opt/homepage/config/`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Add additional allowed hosts to `/opt/homepage/.env`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
            "script": "ct/memos.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 2048,
 | 
			
		||||
                "ram": 3072,
 | 
			
		||||
                "hdd": 7,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
@@ -31,4 +31,4 @@
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										58
									
								
								json/npmplus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								json/npmplus.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "NPMplus",
 | 
			
		||||
    "slug": "npmplus",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        21
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-03-13",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 81,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://github.com/ZoeyVid/NPMplus",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/ZoeyVid/NPMplus/refs/heads/develop/frontend/app-images/logo-256.png",
 | 
			
		||||
    "description": "NPMplus is an enhanced version of Nginx Proxy Manager. It simplifies the process of setting up reverse proxies with TLS termination through a user-friendly web interface. Key features include HTTP/3 support, integration with CrowdSec IPS, inclusion of GoAccess for real-time log analysis, and support for ModSecurity with the Core Rule Set.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/npmplus.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 512,
 | 
			
		||||
                "hdd": 3,
 | 
			
		||||
                "os": "alpine",
 | 
			
		||||
                "version": "3.21"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "alpine",
 | 
			
		||||
            "script": "ct/npmplus.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 512,
 | 
			
		||||
                "hdd": 3,
 | 
			
		||||
                "os": "alpine",
 | 
			
		||||
                "version": "3.21"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": "root",
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "This uses Docker under the hood, as this can not easily be installed bare-metal. ",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "The initial starting process can be take 1-2min. ",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Application credentials: `cat /opt/.npm_pwd`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,47 +1,47 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Seafile",
 | 
			
		||||
  "slug": "Seafile",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    12
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-03-11",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8000,
 | 
			
		||||
  "documentation": "https://manual.seafile.com/11.0/deploy",
 | 
			
		||||
  "website": "https://seafile.com",
 | 
			
		||||
  "logo": "https://manual.seafile.com/11.0/media/seafile-transparent-1024.png",
 | 
			
		||||
  "description": "Seafile is an open source file sync and share platform, focusing on reliability and performance.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/seafile.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 20,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Application credentials: `cat ~/seafile.creds`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    "name": "Seafile",
 | 
			
		||||
    "slug": "Seafile",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        12
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-03-11",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 8000,
 | 
			
		||||
    "documentation": "https://manual.seafile.com/11.0/deploy",
 | 
			
		||||
    "website": "https://seafile.com",
 | 
			
		||||
    "logo": "https://manual.seafile.com/11.0/media/seafile-transparent-1024.png",
 | 
			
		||||
    "description": "Seafile is an open source file sync and share platform, focusing on reliability and performance.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/seafile.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 2048,
 | 
			
		||||
                "hdd": 20,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Change STORAGE_DIR value in `external-storage.sh` and run `bash external-storage.sh` to use your defined storage instead of internal.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Execute `~/domain.sh <HTTPS://YOUR_DOMAIN.COM_HERE>` to enable access to Seafile via your domain",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Application credentials: `cat ~/seafile.creds`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Change STORAGE_DIR value in `external-storage.sh` and run `bash external-storage.sh` to use your defined storage instead of internal.",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Execute `~/domain.sh <FULL_DOMAIN_URL_WITH_HTTPS_OR_HTTP>` to enable access to Seafile via your domain. Example: ~/domain.sh https://seafile.example.com",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 8000,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://www.vaultwarden.net/",
 | 
			
		||||
    "website": "https://github.com/dani-garcia/vaultwarden/",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg",
 | 
			
		||||
    "description": "Vaultwarden is a self-hosted password manager which provides secure and encrypted password storage. It uses client-side encryption and provides access to passwords through a web interface and mobile apps.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
 
 | 
			
		||||
@@ -179,6 +179,11 @@ motd_ssh() {
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Validate Timezone for some LXC's
 | 
			
		||||
validate_tz() {
 | 
			
		||||
    [[ -f "/usr/share/zoneinfo/$1" ]]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# This function customizes the container and enables passwordless login for the root user
 | 
			
		||||
customize() {
 | 
			
		||||
  if [[ "$PASSWORD" == "" ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -10,10 +10,11 @@ function header_info {
 | 
			
		||||
    _______ __     ____
 | 
			
		||||
   / ____(_) /__  / __ )_________ _      __________  _____
 | 
			
		||||
  / /_  / / / _ \/ __  / ___/ __ \ | /| / / ___/ _ \/ ___/
 | 
			
		||||
 / __/ / / /  __/ /_/ / /  / /_/ / |/ |/ (__  )  __/ / 
 | 
			
		||||
/_/   /_/_/\___/_____/_/   \____/|__/|__/____/\___/_/   
 | 
			
		||||
 / __/ / / /  __/ /_/ / /  / /_/ / |/ |/ (__  )  __/ /
 | 
			
		||||
/_/   /_/_/\___/_____/_/   \____/|__/|__/____/\___/_/
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
YW=$(echo "\033[33m")
 | 
			
		||||
GN=$(echo "\033[1;92m")
 | 
			
		||||
RD=$(echo "\033[01;31m")
 | 
			
		||||
@@ -25,11 +26,31 @@ INFO="${BL}ℹ️${CL}"
 | 
			
		||||
 | 
			
		||||
APP="FileBrowser"
 | 
			
		||||
INSTALL_PATH="/usr/local/bin/filebrowser"
 | 
			
		||||
SERVICE_PATH="/etc/systemd/system/filebrowser.service"
 | 
			
		||||
DB_PATH="/usr/local/community-scripts/filebrowser.db"
 | 
			
		||||
IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
DEFAULT_PORT=8080
 | 
			
		||||
 | 
			
		||||
# Get first non-loopback IP & Detect primary network interface dynamically
 | 
			
		||||
IFACE=$(ip -4 route | awk '/default/ {print $5; exit}')
 | 
			
		||||
IP=$(ip -4 addr show "$IFACE" | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1)
 | 
			
		||||
 | 
			
		||||
[[ -z "$IP" ]] && IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
[[ -z "$IP" ]] && IP="127.0.0.1"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Detect OS
 | 
			
		||||
if [[ -f "/etc/alpine-release" ]]; then
 | 
			
		||||
    OS="Alpine"
 | 
			
		||||
    SERVICE_PATH="/etc/init.d/filebrowser"
 | 
			
		||||
    PKG_MANAGER="apk add --no-cache"
 | 
			
		||||
elif [[ -f "/etc/debian_version" ]]; then
 | 
			
		||||
    OS="Debian"
 | 
			
		||||
    SERVICE_PATH="/etc/systemd/system/filebrowser.service"
 | 
			
		||||
    PKG_MANAGER="apt-get install -y"
 | 
			
		||||
else
 | 
			
		||||
    echo -e "${CROSS} Unsupported OS detected. Exiting."
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
header_info
 | 
			
		||||
 | 
			
		||||
function msg_info() {
 | 
			
		||||
@@ -52,8 +73,15 @@ if [ -f "$INSTALL_PATH" ]; then
 | 
			
		||||
    read -r -p "Would you like to uninstall ${APP}? (y/N): " uninstall_prompt
 | 
			
		||||
    if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
        msg_info "Uninstalling ${APP}"
 | 
			
		||||
        systemctl disable -q --now filebrowser.service
 | 
			
		||||
        rm -f "$INSTALL_PATH" "$DB_PATH" "$SERVICE_PATH"
 | 
			
		||||
        if [[ "$OS" == "Debian" ]]; then
 | 
			
		||||
            systemctl disable --now filebrowser.service &>/dev/null
 | 
			
		||||
            rm -f "$SERVICE_PATH"
 | 
			
		||||
        else
 | 
			
		||||
            rc-service filebrowser stop &>/dev/null
 | 
			
		||||
            rc-update del filebrowser &>/dev/null
 | 
			
		||||
            rm -f "$SERVICE_PATH"
 | 
			
		||||
        fi
 | 
			
		||||
        rm -f "$INSTALL_PATH" "$DB_PATH"
 | 
			
		||||
        msg_ok "${APP} has been uninstalled."
 | 
			
		||||
        exit 0
 | 
			
		||||
    fi
 | 
			
		||||
@@ -61,7 +89,8 @@ if [ -f "$INSTALL_PATH" ]; then
 | 
			
		||||
    read -r -p "Would you like to update ${APP}? (y/N): " update_prompt
 | 
			
		||||
    if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
        msg_info "Updating ${APP}"
 | 
			
		||||
        curl -fsSL https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
 | 
			
		||||
        wget -qO- https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
 | 
			
		||||
        chmod +x "$INSTALL_PATH"
 | 
			
		||||
        msg_ok "Updated ${APP}"
 | 
			
		||||
        exit 0
 | 
			
		||||
    else
 | 
			
		||||
@@ -76,26 +105,30 @@ PORT=${PORT:-$DEFAULT_PORT}
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to install ${APP}? (y/n): " install_prompt
 | 
			
		||||
if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Installing ${APP}"
 | 
			
		||||
    apt-get install -y curl &>/dev/null
 | 
			
		||||
    curl -fsSL https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
 | 
			
		||||
    msg_info "Installing ${APP} on ${OS}"
 | 
			
		||||
    $PKG_MANAGER wget tar curl &>/dev/null
 | 
			
		||||
    wget -qO- https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
 | 
			
		||||
    chmod +x "$INSTALL_PATH"
 | 
			
		||||
    msg_ok "Installed ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating FileBrowser directory"
 | 
			
		||||
    mkdir -p /usr/local/community-scripts
 | 
			
		||||
    chown root:root /usr/local/community-scripts
 | 
			
		||||
    chmod 755 /usr/local/community-scripts
 | 
			
		||||
	touch "$DB_PATH"
 | 
			
		||||
	chown root:root "$DB_PATH"
 | 
			
		||||
	chmod 644 "$DB_PATH"
 | 
			
		||||
    msg_ok "Directory created successfully"
 | 
			
		||||
 | 
			
		||||
    read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt
 | 
			
		||||
    if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
        msg_info "Configuring No Authentication"
 | 
			
		||||
          cd /usr/local/community-scripts
 | 
			
		||||
          filebrowser config init -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
 | 
			
		||||
          filebrowser config set -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
 | 
			
		||||
          filebrowser config init --auth.method=noauth &>/dev/null
 | 
			
		||||
          filebrowser config set --auth.method=noauth &>/dev/null
 | 
			
		||||
          filebrowser users add ID 1 --perm.admin &>/dev/null  
 | 
			
		||||
        cd /usr/local/community-scripts
 | 
			
		||||
        filebrowser config init -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
 | 
			
		||||
        filebrowser config set -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
 | 
			
		||||
        filebrowser config init --auth.method=noauth &>/dev/null
 | 
			
		||||
        filebrowser config set --auth.method=noauth &>/dev/null
 | 
			
		||||
        filebrowser users add ID 1 --perm.admin &>/dev/null
 | 
			
		||||
        msg_ok "No Authentication configured"
 | 
			
		||||
    else
 | 
			
		||||
        msg_info "Setting up default authentication"
 | 
			
		||||
@@ -107,7 +140,8 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating service"
 | 
			
		||||
    cat <<EOF > "$SERVICE_PATH"
 | 
			
		||||
    if [[ "$OS" == "Debian" ]]; then
 | 
			
		||||
        cat <<EOF > "$SERVICE_PATH"
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Filebrowser
 | 
			
		||||
After=network-online.target
 | 
			
		||||
@@ -115,13 +149,33 @@ After=network-online.target
 | 
			
		||||
[Service]
 | 
			
		||||
User=root
 | 
			
		||||
WorkingDirectory=/usr/local/community-scripts
 | 
			
		||||
ExecStart=/usr/local/bin/filebrowser -r / -d "$DB_PATH" -p "$PORT"
 | 
			
		||||
ExecStartPre=/bin/touch /usr/local/community-scripts/filebrowser.db
 | 
			
		||||
ExecStartPre=/usr/local/bin/filebrowser config set -a "0.0.0.0" -p 9000 -d /usr/local/community-scripts/filebrowser.db
 | 
			
		||||
ExecStart=/usr/local/bin/filebrowser -r / -d /usr/local/community-scripts/filebrowser.db -p 9000
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
    systemctl enable -q --now filebrowser.service
 | 
			
		||||
        systemctl enable -q --now filebrowser
 | 
			
		||||
    else
 | 
			
		||||
        cat <<EOF > "$SERVICE_PATH"
 | 
			
		||||
#!/sbin/openrc-run
 | 
			
		||||
 | 
			
		||||
command="/usr/local/bin/filebrowser"
 | 
			
		||||
command_args="-r / -d $DB_PATH -p $PORT"
 | 
			
		||||
command_background=true
 | 
			
		||||
pidfile="/var/run/filebrowser.pid"
 | 
			
		||||
directory="/usr/local/community-scripts"
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
    need net
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
        chmod +x "$SERVICE_PATH"
 | 
			
		||||
        rc-update add filebrowser default &>/dev/null
 | 
			
		||||
        rc-service filebrowser start &>/dev/null
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Service created successfully"
 | 
			
		||||
 | 
			
		||||
    echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -315,7 +315,7 @@ function advanced_settings() {
 | 
			
		||||
    exit-script
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if LAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a router netmmask" 8 58 $LAN_NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
			
		||||
  if LAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a router netmask" 8 58 $LAN_NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
			
		||||
    if [ -z $LAN_NETMASK ]; then
 | 
			
		||||
      LAN_NETMASK="255.255.255.0"
 | 
			
		||||
    fi
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user