mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			45 Commits
		
	
	
		
			2025-02-19
			...
			2025-02-21
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					a9362e0b4a | ||
| 
						 | 
					10c46723fe | ||
| 
						 | 
					666e170f7d | ||
| 
						 | 
					109c48694e | ||
| 
						 | 
					d0cd58e923 | ||
| 
						 | 
					16b8bbfca6 | ||
| 
						 | 
					209aa220b0 | ||
| 
						 | 
					dd8db43dea | ||
| 
						 | 
					7d40e148e9 | ||
| 
						 | 
					ef6eeea608 | ||
| 
						 | 
					0c13b71466 | ||
| 
						 | 
					e1c25a3c8e | ||
| 
						 | 
					e5bfb8f8a3 | ||
| 
						 | 
					4dfcd32d92 | ||
| 
						 | 
					167deb5d7f | ||
| 
						 | 
					8cb3007d66 | ||
| 
						 | 
					49bcd30e77 | ||
| 
						 | 
					1e2954a993 | ||
| 
						 | 
					fe5711d9c4 | ||
| 
						 | 
					33f812179f | ||
| 
						 | 
					d7a2614819 | ||
| 
						 | 
					dc259847af | ||
| 
						 | 
					9bcd1cd237 | ||
| 
						 | 
					3a1ae8f7c0 | ||
| 
						 | 
					9cbe196913 | ||
| 
						 | 
					d0c8b1c15b | ||
| 
						 | 
					2efdea9a29 | ||
| 
						 | 
					978dc549f4 | ||
| 
						 | 
					d4d8943c9f | ||
| 
						 | 
					12a1f46703 | ||
| 
						 | 
					15d20a54b3 | ||
| 
						 | 
					bedfbd232d | ||
| 
						 | 
					3c289e7235 | ||
| 
						 | 
					450d2410d9 | ||
| 
						 | 
					e1ecc8d6cf | ||
| 
						 | 
					e9d9da3355 | ||
| 
						 | 
					6d3c442464 | ||
| 
						 | 
					1a8f5a4007 | ||
| 
						 | 
					20414d9659 | ||
| 
						 | 
					1fe8bc05b3 | ||
| 
						 | 
					049afa994b | ||
| 
						 | 
					ba41bcd561 | ||
| 
						 | 
					4aa84c265d | ||
| 
						 | 
					436945b711 | ||
| 
						 | 
					b749119a1c | 
							
								
								
									
										40
									
								
								.github/changelog-pr-config.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.github/changelog-pr-config.json
									
									
									
									
										vendored
									
									
								
							@@ -1,34 +1,42 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
      "title": "💥 Breaking Changes",
 | 
			
		||||
      "labels": ["breaking change"]
 | 
			
		||||
    "title": "💥 Breaking Changes",
 | 
			
		||||
    "labels": ["breaking change"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "✨ New Scripts",
 | 
			
		||||
      "labels": ["new script"]
 | 
			
		||||
    "title": "🆕 New Scripts",
 | 
			
		||||
    "labels": ["new script"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "🚀 Updated Scripts",
 | 
			
		||||
      "labels": ["update script"]
 | 
			
		||||
    "title": "🚀 Updated Scripts",
 | 
			
		||||
    "labels": ["update script"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "🌐 Website",
 | 
			
		||||
      "labels": ["website"]
 | 
			
		||||
    "title": "🐞 Bug Fixes (Updated Scripts)",
 | 
			
		||||
    "labels": ["update script", "bugfix"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "🐞 Bug Fixes",
 | 
			
		||||
      "labels": ["bug fix"]
 | 
			
		||||
    "title": "✨ Feature Updates (Updated Scripts)",
 | 
			
		||||
    "labels": ["update script", "feature"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "🧰 Maintenance",
 | 
			
		||||
      "labels": ["maintenance"]
 | 
			
		||||
    "title": "✨ New Features",
 | 
			
		||||
    "labels": ["feature"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "📡 API",
 | 
			
		||||
      "labels": ["api"]
 | 
			
		||||
    "title": "🌐 Website",
 | 
			
		||||
    "labels": ["website"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
      "title": "❔ Unlabelled",
 | 
			
		||||
      "labels": []
 | 
			
		||||
    "title": "📡 API",
 | 
			
		||||
    "labels": ["api"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "🧰 Maintenance",
 | 
			
		||||
    "labels": ["maintenance"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "❔ Unlabelled",
 | 
			
		||||
    "labels": []
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -19,7 +19,7 @@ jobs:
 | 
			
		||||
      - name: Install minimatch
 | 
			
		||||
        run: npm install minimatch
 | 
			
		||||
 | 
			
		||||
      - name: Label PR based on config rules
 | 
			
		||||
      - name: Label PR based on file changes and PR template
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
@@ -30,8 +30,14 @@ jobs:
 | 
			
		||||
            const configPath = path.resolve(process.env.CONFIG_PATH);
 | 
			
		||||
            const fileContent = await fs.readFile(configPath, 'utf-8');
 | 
			
		||||
            const autolabelerConfig = JSON.parse(fileContent);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
            const prNumber = context.payload.pull_request.number;
 | 
			
		||||
            const prBody = context.payload.pull_request.body.toLowerCase();
 | 
			
		||||
            
 | 
			
		||||
            // Label-Sammlung (um doppelte API-Calls zu vermeiden)
 | 
			
		||||
            let labelsToAdd = new Set();
 | 
			
		||||
 | 
			
		||||
            // Prüfe Datei-Änderungen
 | 
			
		||||
            const prListFilesResponse = await github.rest.pulls.listFiles({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
@@ -51,12 +57,36 @@ jobs:
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              if (shouldAddLabel) {
 | 
			
		||||
                console.log(`Adding label ${label} to PR ${prNumber}`);
 | 
			
		||||
                await github.rest.issues.addLabels({
 | 
			
		||||
                  owner: context.repo.owner,
 | 
			
		||||
                  repo: context.repo.repo,
 | 
			
		||||
                  issue_number: prNumber,
 | 
			
		||||
                  labels: [label],
 | 
			
		||||
                });
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Prüfe PR-Template Checkboxen mit den korrekten Labels
 | 
			
		||||
            const templateLabelMappings = {
 | 
			
		||||
              "🐞 bug fix": "bugfix",
 | 
			
		||||
              "✨ new feature": "feature",
 | 
			
		||||
              "💥 breaking change": "breaking change",
 | 
			
		||||
              "🆕 new script": "new script"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
 | 
			
		||||
              const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i");
 | 
			
		||||
              const match = prBody.match(regex);
 | 
			
		||||
              if (match && match[1].trim() !== "") { // Checkbox ist gesetzt
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Debugging: Anzeigen, welche Labels tatsächlich erkannt wurden
 | 
			
		||||
            console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
 | 
			
		||||
 | 
			
		||||
            // Labels setzen, falls neue erkannt wurden
 | 
			
		||||
            if (labelsToAdd.size > 0) {
 | 
			
		||||
              console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
 | 
			
		||||
              await github.rest.issues.addLabels({
 | 
			
		||||
                owner: context.repo.owner,
 | 
			
		||||
                repo: context.repo.repo,
 | 
			
		||||
                issue_number: prNumber,
 | 
			
		||||
                labels: Array.from(labelsToAdd),
 | 
			
		||||
              });
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								.editorconfig → .vscode/.editorconfig
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								.editorconfig → .vscode/.editorconfig
									
									
									
									
										vendored
									
									
								
							
							
								
								
									
										35
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -17,6 +17,41 @@ All LXC instances created using this repository come pre-installed with Midnight
 | 
			
		||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-02-21
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Add ZFS to Podman. Now it works on ZFS! [@jaminmc](https://github.com/jaminmc) ([#2526](https://github.com/community-scripts/ProxmoxVE/pull/2526))
 | 
			
		||||
- Fix: Tianji - Downgrade Node [@MickLesk](https://github.com/MickLesk) ([#2530](https://github.com/community-scripts/ProxmoxVE/pull/2530))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [gh] General Cleanup & Moving Files / Folders [@MickLesk](https://github.com/MickLesk) ([#2532](https://github.com/community-scripts/ProxmoxVE/pull/2532))
 | 
			
		||||
 | 
			
		||||
## 2025-02-20
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- Breaking: Actual Budget Script (HTTPS / DB Migration / New Structure) - Read Description [@MickLesk](https://github.com/MickLesk) ([#2496](https://github.com/community-scripts/ProxmoxVE/pull/2496))
 | 
			
		||||
- Pihole & Unbound: Installation for Pihole V6 (read description) [@MickLesk](https://github.com/MickLesk) ([#2505](https://github.com/community-scripts/ProxmoxVE/pull/2505))
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Dolibarr [@tremor021](https://github.com/tremor021) ([#2502](https://github.com/community-scripts/ProxmoxVE/pull/2502))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Pingvin Share - Update not copying to correct directory [@tremor021](https://github.com/tremor021) ([#2521](https://github.com/community-scripts/ProxmoxVE/pull/2521))
 | 
			
		||||
- WikiJS: Prepare for Using PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#2516](https://github.com/community-scripts/ProxmoxVE/pull/2516))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [gh] better handling of labels [@MickLesk](https://github.com/MickLesk) ([#2517](https://github.com/community-scripts/ProxmoxVE/pull/2517))
 | 
			
		||||
 | 
			
		||||
## 2025-02-19
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 
 | 
			
		||||
@@ -19,10 +19,10 @@
 | 
			
		||||
    <a href="https://ko-fi.com/community_scripts">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Support-FF5F5F?style=for-the-badge&logo=ko-fi&logoColor=white" alt="Donate" />
 | 
			
		||||
    </a>
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTING.md">
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Contribute-ff4785?style=for-the-badge&logo=git&logoColor=white" alt="Contribute" />
 | 
			
		||||
    </a> 
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/USER_SUBMITTED_GUIDES.md">
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Guides-0077b5?style=for-the-badge&logo=read-the-docs&logoColor=white" alt="Guides" />
 | 
			
		||||
    </a> 
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
@@ -43,36 +42,44 @@ function update_script() {
 | 
			
		||||
        wget -q "https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz"
 | 
			
		||||
 | 
			
		||||
        mv /opt/actualbudget /opt/actualbudget_bak
 | 
			
		||||
        tar -xzf "v${RELEASE}.tar.gz" >/dev/null 2>&1
 | 
			
		||||
        tar -xzf "v${RELEASE}.tar.gz" &>/dev/null
 | 
			
		||||
        mv *ctual-server-* /opt/actualbudget
 | 
			
		||||
        if [[ ! -d /opt/actualbudget-data ]]; then
 | 
			
		||||
            mkdir -p /opt/actualbudget-data/server-files
 | 
			
		||||
 | 
			
		||||
        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/ 2>/dev/null || 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
 | 
			
		||||
 | 
			
		||||
        rm -rf /opt/actualbudget/.env
 | 
			
		||||
        if [[ ! -f /opt/actualbudget_bak/.env ]]; then
 | 
			
		||||
            cat <<EOF > /opt/actualbudget_bak/.env
 | 
			
		||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
 | 
			
		||||
        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/server-files
 | 
			
		||||
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
 | 
			
		||||
        mv /opt/actualbudget_bak/.env /opt/actualbudget/
 | 
			
		||||
        if [[ -d /opt/actualbudget_bak/server-files ]] && [[ -n $(ls -A /opt/actualbudget_bak/server-files 2>/dev/null) ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/server-files/* /opt/actualbudget/server-files/
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ -d /opt/actualbudget_bak/.migrate ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/.migrate /opt/actualbudget/
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        cd /opt/actualbudget
 | 
			
		||||
        yarn install &>/dev/null
 | 
			
		||||
        echo "${RELEASE}" > /opt/actualbudget_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting ${APP}"
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
			
		||||
        cat <<EOF > /etc/systemd/system/actualbudget.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Actual Budget Service
 | 
			
		||||
After=network.target
 | 
			
		||||
@@ -82,7 +89,7 @@ Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Group=root
 | 
			
		||||
WorkingDirectory=/opt/actualbudget
 | 
			
		||||
EnvironmentFile=/opt/actualbudget/.env
 | 
			
		||||
EnvironmentFile=/opt/actualbudget-data/.env
 | 
			
		||||
ExecStart=/usr/bin/yarn start
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
@@ -90,6 +97,8 @@ RestartSec=10
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
        systemctl start actualbudget
 | 
			
		||||
        msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
@@ -111,4 +120,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}:5006${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								ct/dolibarr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ct/dolibarr.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: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Dolibarr/dolibarr/
 | 
			
		||||
 | 
			
		||||
APP="Dolibarr"
 | 
			
		||||
var_tags="erp;accounting"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="6"
 | 
			
		||||
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 /usr/share/dolibarr ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "To update ${APP}, use the applications web interface."
 | 
			
		||||
    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}/dolibarr/install${CL}"
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/dolibarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/dolibarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____        ___ __                   
 | 
			
		||||
   / __ \____  / (_) /_  ____ ___________
 | 
			
		||||
  / / / / __ \/ / / __ \/ __ `/ ___/ ___/
 | 
			
		||||
 / /_/ / /_/ / / / /_/ / /_/ / /  / /    
 | 
			
		||||
/_____/\____/_/_/_.___/\__,_/_/  /_/     
 | 
			
		||||
                                         
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
      cd /opt
 | 
			
		||||
      wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
      unzip -q v${RELEASE}.zip
 | 
			
		||||
      mv pingvin-share-${RELEASE} /opt/pingvin-share  
 | 
			
		||||
      cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
 | 
			
		||||
      cd /opt/pingvin-share
 | 
			
		||||
      cd backend
 | 
			
		||||
      npm install &>/dev/null
 | 
			
		||||
@@ -49,6 +49,7 @@ function update_script() {
 | 
			
		||||
      npm run build &>/dev/null
 | 
			
		||||
      echo "${RELEASE}" >"/opt/pingvin_version.txt"
 | 
			
		||||
      rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
      rm -rf /opt/pingvin-share-${RELEASE}
 | 
			
		||||
      msg_ok "Updated Pingvin Share to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
      msg_info "Starting Pingvin Share"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,9 +7,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
 | 
			
		||||
APP="Wikijs"
 | 
			
		||||
var_tags="wiki"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="3"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
@@ -63,4 +63,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}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://actualbudget.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -41,18 +41,32 @@ RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/late
 | 
			
		||||
wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz
 | 
			
		||||
tar -xzf v${RELEASE}.tar.gz
 | 
			
		||||
mv *ctual-server-* /opt/actualbudget
 | 
			
		||||
mkdir -p /opt/actualbudget/server-files
 | 
			
		||||
mkdir -p /opt/actualbudget-data
 | 
			
		||||
chown -R root:root /opt/actualbudget/server-files
 | 
			
		||||
chmod 755 /opt/actualbudget/server-files
 | 
			
		||||
cat <<EOF > /opt/actualbudget/.env
 | 
			
		||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
 | 
			
		||||
 | 
			
		||||
mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
			
		||||
chown -R root:root /opt/actualbudget-data
 | 
			
		||||
chmod -R 755 /opt/actualbudget-data
 | 
			
		||||
 | 
			
		||||
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/server-files
 | 
			
		||||
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
 | 
			
		||||
cd /opt/actualbudget
 | 
			
		||||
$STD yarn install
 | 
			
		||||
$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <<EOF
 | 
			
		||||
US
 | 
			
		||||
California
 | 
			
		||||
San Francisco
 | 
			
		||||
My Organization
 | 
			
		||||
My Unit
 | 
			
		||||
localhost
 | 
			
		||||
myemail@example.com
 | 
			
		||||
EOF
 | 
			
		||||
echo "${RELEASE}" >"/opt/actualbudget_version.txt"
 | 
			
		||||
msg_ok "Installed Actual Budget"
 | 
			
		||||
 | 
			
		||||
@@ -67,7 +81,7 @@ Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Group=root
 | 
			
		||||
WorkingDirectory=/opt/actualbudget
 | 
			
		||||
EnvironmentFile=/opt/actualbudget/.env
 | 
			
		||||
EnvironmentFile=/opt/actualbudget-data/.env
 | 
			
		||||
ExecStart=/usr/bin/yarn start
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ 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
 | 
			
		||||
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
 | 
			
		||||
msg_ok "Set up Node.js Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
@@ -64,7 +64,7 @@ mv .env.example .env
 | 
			
		||||
sed -i "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" /opt/docmost/.env
 | 
			
		||||
sed -i "s|DATABASE_URL=.*|DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME|" /opt/docmost/.env
 | 
			
		||||
export NODE_OPTIONS="--max-old-space-size=2048"
 | 
			
		||||
$STD pnpm install --force
 | 
			
		||||
$STD pnpm install
 | 
			
		||||
$STD pnpm build
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Installed Docmost"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								install/dolibarr-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								install/dolibarr-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Dolibarr/dolibarr/
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
  php-imap \
 | 
			
		||||
  debconf-utils \
 | 
			
		||||
  mariadb-server
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Database"
 | 
			
		||||
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
$STD sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$ROOT_PASS'); flush privileges;"
 | 
			
		||||
{
 | 
			
		||||
    echo "Dolibarr DB Credentials"
 | 
			
		||||
    echo "MariaDB Root Password: $ROOT_PASS"
 | 
			
		||||
} >> ~/dolibarr.creds
 | 
			
		||||
msg_ok "Set up database"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Dolibarr"
 | 
			
		||||
BASE="https://sourceforge.net/projects/dolibarr/files/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/"
 | 
			
		||||
RELEASE=$(curl -s "$BASE" | grep -oP '(?<=/Dolibarr%20installer%20for%20Debian-Ubuntu%20%28DoliDeb%29/)[^/"]+' | head -n1)
 | 
			
		||||
FILE=$(curl -s "${BASE}${RELEASE}/" | grep -oP 'dolibarr_[^"]+_all.deb' | head -n1)
 | 
			
		||||
wget -q "https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -O "$FILE"
 | 
			
		||||
echo "dolibarr dolibarr/reconfigure-webserver multiselect apache2" | debconf-set-selections
 | 
			
		||||
$STD apt-get install ./$FILE -y
 | 
			
		||||
$STD apt install -f
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Setup Dolibarr"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf ~/$FILE
 | 
			
		||||
$STD apt-get autoremove
 | 
			
		||||
$STD apt-get autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -14,32 +14,48 @@ 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 ufw
 | 
			
		||||
$STD apt-get install -y ntp
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  ufw
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Pi-hole"
 | 
			
		||||
mkdir -p /etc/pihole/
 | 
			
		||||
cat <<EOF >/etc/pihole/setupVars.conf
 | 
			
		||||
PIHOLE_INTERFACE=eth0
 | 
			
		||||
PIHOLE_DNS_1=8.8.8.8
 | 
			
		||||
PIHOLE_DNS_2=8.8.4.4
 | 
			
		||||
QUERY_LOGGING=true
 | 
			
		||||
INSTALL_WEB_SERVER=true
 | 
			
		||||
INSTALL_WEB_INTERFACE=true
 | 
			
		||||
LIGHTTPD_ENABLED=true
 | 
			
		||||
CACHE_SIZE=10000
 | 
			
		||||
DNS_FQDN_REQUIRED=true
 | 
			
		||||
DNS_BOGUS_PRIV=true
 | 
			
		||||
DNSMASQ_LISTENING=local
 | 
			
		||||
WEBPASSWORD=$(openssl rand -base64 48)
 | 
			
		||||
BLOCKING_ENABLED=true
 | 
			
		||||
EOF
 | 
			
		||||
# View script https://install.pi-hole.net
 | 
			
		||||
mkdir -p /etc/pihole
 | 
			
		||||
touch /etc/pihole/pihole.toml
 | 
			
		||||
$STD bash <(curl -fsSL https://install.pi-hole.net) --unattended
 | 
			
		||||
sed -i -E '
 | 
			
		||||
/^\s*upstreams =/ s|=.*|= ["8.8.8.8", "8.8.4.4"]|
 | 
			
		||||
/^\s*interface =/ s|=.*|= "eth0"|
 | 
			
		||||
/^\s*queryLogging =/ s|=.*|= true|
 | 
			
		||||
/^\s*size =/ s|=.*|= 10000|
 | 
			
		||||
/^\s*active =/ s|=.*|= true|
 | 
			
		||||
/^\s*listeningMode =/ s|=.*|= "LOCAL"|
 | 
			
		||||
/^\s*port =/ s|=.*|= "80o,443os,[::]:80o,[::]:443os"|
 | 
			
		||||
/^\s*pwhash =/ s|=.*|= ""|
 | 
			
		||||
 | 
			
		||||
# DHCP Disable
 | 
			
		||||
/^\s*\[dhcp\]/,/^\s*\[/{s/^\s*active = true/  active = false/}
 | 
			
		||||
 | 
			
		||||
# NTP Disable
 | 
			
		||||
/^\s*\[ntp.ipv4\]/,/^\s*\[/{s/^\s*active = true/  active = false/}
 | 
			
		||||
/^\s*\[ntp.ipv6\]/,/^\s*\[/{s/^\s*active = true/  active = false/}
 | 
			
		||||
/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*active = true/  active = false/}
 | 
			
		||||
/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*interval = [0-9]+/  interval = 0/}
 | 
			
		||||
/^\s*\[ntp.sync.rtc\]/,/^\s*\[/{s/^\s*set = true/  set = false/}
 | 
			
		||||
 | 
			
		||||
# set domainNeeded und expandHosts
 | 
			
		||||
/^\s*domainNeeded =/ s|=.*|= true|
 | 
			
		||||
/^\s*expandHosts =/ s|=.*|= true|
 | 
			
		||||
' /etc/pihole/pihole.toml
 | 
			
		||||
 | 
			
		||||
cat <<EOF > /etc/dnsmasq.d/01-pihole.conf
 | 
			
		||||
server=8.8.8.8
 | 
			
		||||
server=8.8.4.4
 | 
			
		||||
EOF
 | 
			
		||||
$STD pihole-FTL --config ntp.sync.interval 0
 | 
			
		||||
systemctl restart pihole-FTL.service
 | 
			
		||||
msg_ok "Installed Pi-hole"
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to add Unbound? <y/N> " prompt
 | 
			
		||||
@@ -119,9 +135,13 @@ forward-zone:
 | 
			
		||||
  #forward-addr: 2620:fe::9@853#dns.quad9.net
 | 
			
		||||
EOF
 | 
			
		||||
  fi
 | 
			
		||||
cat <<EOF > /etc/dnsmasq.d/01-pihole.conf
 | 
			
		||||
server=127.0.0.1#5335
 | 
			
		||||
server=8.8.8.8
 | 
			
		||||
server=8.8.4.4
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
  sed -i -e 's/PIHOLE_DNS_1=8.8.8.8/PIHOLE_DNS_1=127.0.0.1#5335/' -e '/PIHOLE_DNS_2=8.8.4.4/d' /etc/pihole/setupVars.conf
 | 
			
		||||
  sed -i -e 's/server=8.8.8.8/server=127.0.0.1#5335/' -e '/server=8.8.4.4/d' /etc/dnsmasq.d/01-pihole.conf
 | 
			
		||||
  sed -i -E "s|^(upstreams =).*|\1 [\"127.0.0.1#5335\", \"8.8.4.4\"]|" /etc/pihole/pihole.toml
 | 
			
		||||
  systemctl enable -q --now unbound
 | 
			
		||||
  systemctl restart pihole-FTL.service
 | 
			
		||||
  msg_ok "Installed Unbound"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,11 +19,72 @@ $STD apt-get install -y sudo
 | 
			
		||||
$STD apt-get install -y mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
get_latest_release() {
 | 
			
		||||
  curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
 | 
			
		||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
 | 
			
		||||
 | 
			
		||||
if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then
 | 
			
		||||
    msg_info "Enabling ZFS support."
 | 
			
		||||
    mkdir -p /etc/containers
 | 
			
		||||
    cat <<'EOF' >/usr/local/bin/overlayzfsmount
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
exec /bin/mount -t overlay overlay "$@"
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /usr/local/bin/overlayzfsmount
 | 
			
		||||
    cat <<'EOF' >/etc/containers/storage.conf
 | 
			
		||||
[storage]
 | 
			
		||||
driver = "overlay"
 | 
			
		||||
runroot = "/run/containers/storage"
 | 
			
		||||
graphroot = "/var/lib/containers/storage"
 | 
			
		||||
 | 
			
		||||
[storage.options]
 | 
			
		||||
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
 | 
			
		||||
mount_program = "/usr/local/bin/overlayzfsmount"
 | 
			
		||||
 | 
			
		||||
[storage.options.overlay]
 | 
			
		||||
mountopt = "nodev"
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Podman"
 | 
			
		||||
$STD apt-get -y install podman
 | 
			
		||||
$STD systemctl enable --now podman.socket
 | 
			
		||||
echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf
 | 
			
		||||
msg_ok "Installed Podman"
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to add Portainer? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
  podman volume create portainer_data >/dev/null
 | 
			
		||||
  $STD podman run -d \
 | 
			
		||||
    -p 8000:8000 \
 | 
			
		||||
    -p 9443:9443 \
 | 
			
		||||
    --name=portainer \
 | 
			
		||||
    --restart=always \
 | 
			
		||||
    -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
    -v portainer_data:/data \
 | 
			
		||||
    portainer/portainer-ce:latest
 | 
			
		||||
  msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
else
 | 
			
		||||
  read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
 | 
			
		||||
  if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
    podman volume create temp >/dev/null
 | 
			
		||||
    podman volume remove temp >/dev/null
 | 
			
		||||
    $STD podman run -d \
 | 
			
		||||
      -p 9001:9001 \
 | 
			
		||||
      --name portainer_agent \
 | 
			
		||||
      --restart=always \
 | 
			
		||||
      -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
      -v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
 | 
			
		||||
      portainer/agent
 | 
			
		||||
    msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Pulling Home Assistant Image"
 | 
			
		||||
$STD podman pull docker.io/homeassistant/home-assistant:stable
 | 
			
		||||
msg_ok "Pulled Home Assistant Image"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,12 +19,73 @@ $STD apt-get install -y sudo
 | 
			
		||||
$STD apt-get install -y mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
get_latest_release() {
 | 
			
		||||
  curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
 | 
			
		||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
 | 
			
		||||
 | 
			
		||||
if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then
 | 
			
		||||
    msg_info "Enabling ZFS support."
 | 
			
		||||
    mkdir -p /etc/containers
 | 
			
		||||
    cat <<'EOF' >/usr/local/bin/overlayzfsmount
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
exec /bin/mount -t overlay overlay "$@"
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /usr/local/bin/overlayzfsmount
 | 
			
		||||
    cat <<'EOF' >/etc/containers/storage.conf
 | 
			
		||||
[storage]
 | 
			
		||||
driver = "overlay"
 | 
			
		||||
runroot = "/run/containers/storage"
 | 
			
		||||
graphroot = "/var/lib/containers/storage"
 | 
			
		||||
 | 
			
		||||
[storage.options]
 | 
			
		||||
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
 | 
			
		||||
mount_program = "/usr/local/bin/overlayzfsmount"
 | 
			
		||||
 | 
			
		||||
[storage.options.overlay]
 | 
			
		||||
mountopt = "nodev"
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Podman"
 | 
			
		||||
$STD apt-get -y install podman
 | 
			
		||||
$STD systemctl enable --now podman.socket
 | 
			
		||||
echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf
 | 
			
		||||
msg_ok "Installed Podman"
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to add Portainer? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
  podman volume create portainer_data >/dev/null
 | 
			
		||||
  $STD podman run -d \
 | 
			
		||||
    -p 8000:8000 \
 | 
			
		||||
    -p 9443:9443 \
 | 
			
		||||
    --name=portainer \
 | 
			
		||||
    --restart=always \
 | 
			
		||||
    -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
    -v portainer_data:/data \
 | 
			
		||||
    portainer/portainer-ce:latest
 | 
			
		||||
  msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
else
 | 
			
		||||
  read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
 | 
			
		||||
  if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
    podman volume create temp >/dev/null
 | 
			
		||||
    podman volume remove temp >/dev/null
 | 
			
		||||
    $STD podman run -d \
 | 
			
		||||
      -p 9001:9001 \
 | 
			
		||||
      --name portainer_agent \
 | 
			
		||||
      --restart=always \
 | 
			
		||||
      -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
      -v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
 | 
			
		||||
      portainer/agent
 | 
			
		||||
    msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ msg_ok "Installed Dependencies"
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
$STD npm install -g pnpm@9.7.1
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -14,70 +14,97 @@ 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 ca-certificates
 | 
			
		||||
$STD apt-get install -y gnupg
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  git \
 | 
			
		||||
  ca-certificates \
 | 
			
		||||
  gnupg \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  python3 \
 | 
			
		||||
  g++ \
 | 
			
		||||
  make
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
msg_ok "Set up Node.js Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PostgreSQL Repository"
 | 
			
		||||
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
			
		||||
echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list
 | 
			
		||||
msg_ok "Set up PostgreSQL Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
$STD npm install --global yarn
 | 
			
		||||
$STD npm install -g node-gyp
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Wiki.js"
 | 
			
		||||
mkdir -p /opt/wikijs
 | 
			
		||||
cd /opt/wikijs
 | 
			
		||||
$STD wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
 | 
			
		||||
tar xzf wiki-js.tar.gz
 | 
			
		||||
rm wiki-js.tar.gz
 | 
			
		||||
msg_info "Set up PostgreSQL"
 | 
			
		||||
$STD apt-get install -y postgresql-17
 | 
			
		||||
DB_NAME="wiki"
 | 
			
		||||
DB_USER="wikijs_user"
 | 
			
		||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN 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 "CREATE EXTENSION IF NOT EXISTS pg_trgm;" $DB_NAME
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
 | 
			
		||||
{
 | 
			
		||||
    echo "WikiJS-Credentials"
 | 
			
		||||
    echo "WikiJS Database User: $DB_USER"
 | 
			
		||||
    echo "WikiJS Database Password: $DB_PASS"
 | 
			
		||||
    echo "WikiJS Database Name: $DB_NAME"
 | 
			
		||||
} >> ~/wikijs.creds
 | 
			
		||||
msg_ok "Set up PostgreSQL"
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/wikijs/config.yml
 | 
			
		||||
bindIP: 0.0.0.0
 | 
			
		||||
port: 3000
 | 
			
		||||
db:
 | 
			
		||||
  type: sqlite
 | 
			
		||||
  storage: /opt/wikijs/db.sqlite
 | 
			
		||||
logLevel: info
 | 
			
		||||
logFormat: default
 | 
			
		||||
dataPath: /opt/wikijs/data
 | 
			
		||||
bodyParserLimit: 5mb
 | 
			
		||||
EOF
 | 
			
		||||
$STD npm rebuild sqlite3
 | 
			
		||||
msg_info "Setup Wiki.js"
 | 
			
		||||
temp_file=$(mktemp)
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
 | 
			
		||||
tar -xzf "$temp_file"
 | 
			
		||||
mv wiki-${RELEASE} /opt/wikijs
 | 
			
		||||
mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
 | 
			
		||||
sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml
 | 
			
		||||
sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml
 | 
			
		||||
cd /opt/wikijs
 | 
			
		||||
export NODE_OPTIONS="--max-old-space-size=2048"
 | 
			
		||||
$STD yarn install --ignore-engines
 | 
			
		||||
$STD yarn build
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Installed Wiki.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
service_path="/etc/systemd/system/wikijs.service"
 | 
			
		||||
 | 
			
		||||
echo "[Unit]
 | 
			
		||||
cat <<EOF >/etc/systemd/system/wikijs.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Wiki.js
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
ExecStart=/usr/bin/node server
 | 
			
		||||
ExecStart=/usr/bin/yarn start
 | 
			
		||||
Restart=always
 | 
			
		||||
User=root
 | 
			
		||||
Environment=NODE_ENV=production
 | 
			
		||||
WorkingDirectory=/opt/wikijs
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target" >$service_path
 | 
			
		||||
$STD systemctl enable --now wikijs
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now wikijs
 | 
			
		||||
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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								json/dolibarr.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								json/dolibarr.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Dolibarr",
 | 
			
		||||
    "slug": "dolibarr",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        25
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-02-20",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 80,
 | 
			
		||||
    "documentation": "https://wiki.dolibarr.org/index.php?title=Home",
 | 
			
		||||
    "website": "https://www.dolibarr.org/",
 | 
			
		||||
    "logo": "https://wiki.dolibarr.org/images/5/51/Dolibarr_124x124_white.svg",
 | 
			
		||||
    "description": "Dolibarr ERP CRM is a modern software package to manage your company or foundation's activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). it's an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
      {
 | 
			
		||||
        "type": "default",
 | 
			
		||||
        "script": "ct/dolibarr.sh",
 | 
			
		||||
        "resources": {
 | 
			
		||||
          "cpu": 1,
 | 
			
		||||
          "ram": 2048,
 | 
			
		||||
          "hdd": 6,
 | 
			
		||||
          "os": "debian",
 | 
			
		||||
          "version": "12"
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
      "username": null,
 | 
			
		||||
      "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
      {
 | 
			
		||||
        "text": "Database credentials: `cat ~/dolibarr.creds`",
 | 
			
		||||
        "type": "info"
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
@@ -31,10 +31,6 @@
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Doesn't work with ZFS",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
@@ -42,6 +38,10 @@
 | 
			
		||||
        {
 | 
			
		||||
            "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Options to Install Portainer or Portainer Agent",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Doesn't work with ZFS",
 | 
			
		||||
            "text": "Options to Install Portainer or Portainer Agent",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -18,9 +18,9 @@
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/wikijs.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 512,
 | 
			
		||||
                "hdd": 3,
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 2048,
 | 
			
		||||
                "hdd": 7,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
@@ -31,4 +31,4 @@
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user