mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-09-13 07:10:51 +02:00
Compare commits
28 Commits
2025-02-19
...
2025-02-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
36
.github/changelog-pr-config.json
vendored
36
.github/changelog-pr-config.json
vendored
@@ -1,34 +1,38 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": ["breaking change"]
|
"labels": ["breaking change"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Scripts",
|
"title": "✨ New Scripts",
|
||||||
"labels": ["new script"]
|
"labels": ["new script"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🚀 Updated Scripts",
|
"title": "🚀 Updated Scripts",
|
||||||
"labels": ["update script"]
|
"labels": ["update script"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🌐 Website",
|
"title": "🆕 Features",
|
||||||
"labels": ["website"]
|
"labels": ["new feature"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🌐 Website",
|
||||||
"labels": ["bug fix"]
|
"labels": ["website"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🧰 Maintenance",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": ["maintenance"]
|
"labels": ["bug fix"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📡 API",
|
"title": "🧰 Maintenance",
|
||||||
"labels": ["api"]
|
"labels": ["maintenance"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "❔ Unlabelled",
|
"title": "📡 API",
|
||||||
"labels": []
|
"labels": ["api"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "❔ Unlabelled",
|
||||||
|
"labels": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
54
.github/workflows/autolabeler.yml
vendored
54
.github/workflows/autolabeler.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
|||||||
- name: Install minimatch
|
- name: Install minimatch
|
||||||
run: npm install minimatch
|
run: npm install minimatch
|
||||||
|
|
||||||
- name: Label PR based on config rules
|
- name: Label PR based on file changes
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -39,6 +39,8 @@ jobs:
|
|||||||
});
|
});
|
||||||
const prFiles = prListFilesResponse.data;
|
const prFiles = prListFilesResponse.data;
|
||||||
|
|
||||||
|
let labelsToAdd = new Set();
|
||||||
|
|
||||||
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
||||||
const shouldAddLabel = prFiles.some((prFile) => {
|
const shouldAddLabel = prFiles.some((prFile) => {
|
||||||
return rules.some((rule) => {
|
return rules.some((rule) => {
|
||||||
@@ -51,12 +53,48 @@ jobs:
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (shouldAddLabel) {
|
if (shouldAddLabel) {
|
||||||
console.log(`Adding label ${label} to PR ${prNumber}`);
|
labelsToAdd.add(label);
|
||||||
await github.rest.issues.addLabels({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
issue_number: prNumber,
|
|
||||||
labels: [label],
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Label PR based on PR template selections
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const prBody = context.payload.pull_request.body.toLowerCase();
|
||||||
|
const prNumber = context.payload.pull_request.number;
|
||||||
|
const labelMappings = {
|
||||||
|
"🐞 bug fix": "bug fix",
|
||||||
|
"✨ new feature": "new feature",
|
||||||
|
"💥 breaking change": "breaking change",
|
||||||
|
"🆕 new script": "new script"
|
||||||
|
};
|
||||||
|
|
||||||
|
let labelsToAdd = new Set();
|
||||||
|
|
||||||
|
for (const [checkbox, label] of Object.entries(labelMappings)) {
|
||||||
|
const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i");
|
||||||
|
if (regex.test(prBody)) {
|
||||||
|
labelsToAdd.add(label);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
22
CHANGELOG.md
22
CHANGELOG.md
@@ -17,6 +17,28 @@ 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
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
|
||||||
|
## 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
|
## 2025-02-19
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# 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"
|
wget -q "https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz"
|
||||||
|
|
||||||
mv /opt/actualbudget /opt/actualbudget_bak
|
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
|
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
|
fi
|
||||||
|
|
||||||
rm -rf /opt/actualbudget/.env
|
if [[ -f /opt/actualbudget_bak/.env ]]; then
|
||||||
if [[ ! -f /opt/actualbudget_bak/.env ]]; then
|
mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
|
||||||
cat <<EOF > /opt/actualbudget_bak/.env
|
else
|
||||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
|
cat <<EOF > /opt/actualbudget-data/.env
|
||||||
|
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
|
||||||
ACTUAL_DATA_DIR=/opt/actualbudget-data
|
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
|
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
|
EOF
|
||||||
fi
|
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
|
cd /opt/actualbudget
|
||||||
yarn install &>/dev/null
|
yarn install &>/dev/null
|
||||||
echo "${RELEASE}" > /opt/actualbudget_version.txt
|
echo "${RELEASE}" > /opt/actualbudget_version.txt
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
cat <<EOF >/etc/systemd/system/actualbudget.service
|
cat <<EOF > /etc/systemd/system/actualbudget.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Actual Budget Service
|
Description=Actual Budget Service
|
||||||
After=network.target
|
After=network.target
|
||||||
@@ -82,7 +89,7 @@ Type=simple
|
|||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
WorkingDirectory=/opt/actualbudget
|
WorkingDirectory=/opt/actualbudget
|
||||||
EnvironmentFile=/opt/actualbudget/.env
|
EnvironmentFile=/opt/actualbudget-data/.env
|
||||||
ExecStart=/usr/bin/yarn start
|
ExecStart=/usr/bin/yarn start
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
@@ -90,6 +97,8 @@ RestartSec=10
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
systemctl start actualbudget
|
systemctl start actualbudget
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
@@ -111,4 +120,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${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
|
cd /opt
|
||||||
wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip"
|
wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip"
|
||||||
unzip -q 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 /opt/pingvin-share
|
||||||
cd backend
|
cd backend
|
||||||
npm install &>/dev/null
|
npm install &>/dev/null
|
||||||
@@ -49,6 +49,7 @@ function update_script() {
|
|||||||
npm run build &>/dev/null
|
npm run build &>/dev/null
|
||||||
echo "${RELEASE}" >"/opt/pingvin_version.txt"
|
echo "${RELEASE}" >"/opt/pingvin_version.txt"
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
rm -rf /opt/pingvin-share-${RELEASE}
|
||||||
msg_ok "Updated Pingvin Share to v${RELEASE}"
|
msg_ok "Updated Pingvin Share to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Pingvin Share"
|
msg_info "Starting Pingvin Share"
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
|||||||
|
|
||||||
APP="Wikijs"
|
APP="Wikijs"
|
||||||
var_tags="wiki"
|
var_tags="wiki"
|
||||||
var_cpu="1"
|
var_cpu="2"
|
||||||
var_ram="512"
|
var_ram="2048"
|
||||||
var_disk="3"
|
var_disk="10"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
var_unprivileged="1"
|
var_unprivileged="1"
|
||||||
@@ -63,4 +63,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${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
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: MickLesk (CanbiZ)
|
||||||
# License: MIT
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# Source: https://actualbudget.org/
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
color
|
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
|
wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz
|
||||||
tar -xzf v${RELEASE}.tar.gz
|
tar -xzf v${RELEASE}.tar.gz
|
||||||
mv *ctual-server-* /opt/actualbudget
|
mv *ctual-server-* /opt/actualbudget
|
||||||
mkdir -p /opt/actualbudget/server-files
|
|
||||||
mkdir -p /opt/actualbudget-data
|
mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
|
||||||
chown -R root:root /opt/actualbudget/server-files
|
chown -R root:root /opt/actualbudget-data
|
||||||
chmod 755 /opt/actualbudget/server-files
|
chmod -R 755 /opt/actualbudget-data
|
||||||
cat <<EOF > /opt/actualbudget/.env
|
|
||||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
|
cat <<EOF > /opt/actualbudget-data/.env
|
||||||
|
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
|
||||||
ACTUAL_DATA_DIR=/opt/actualbudget-data
|
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
|
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
|
EOF
|
||||||
cd /opt/actualbudget
|
cd /opt/actualbudget
|
||||||
$STD yarn install
|
$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"
|
echo "${RELEASE}" >"/opt/actualbudget_version.txt"
|
||||||
msg_ok "Installed Actual Budget"
|
msg_ok "Installed Actual Budget"
|
||||||
|
|
||||||
@@ -67,7 +81,7 @@ Type=simple
|
|||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
WorkingDirectory=/opt/actualbudget
|
WorkingDirectory=/opt/actualbudget
|
||||||
EnvironmentFile=/opt/actualbudget/.env
|
EnvironmentFile=/opt/actualbudget-data/.env
|
||||||
ExecStart=/usr/bin/yarn start
|
ExecStart=/usr/bin/yarn start
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ msg_ok "Installed Dependencies"
|
|||||||
msg_info "Setting up Node.js Repository"
|
msg_info "Setting up Node.js Repository"
|
||||||
mkdir -p /etc/apt/keyrings
|
mkdir -p /etc/apt/keyrings
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
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_ok "Set up Node.js Repository"
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
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|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
|
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"
|
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||||
$STD pnpm install --force
|
$STD pnpm install
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed Docmost"
|
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
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
$STD apt-get install -y ufw
|
mc \
|
||||||
$STD apt-get install -y ntp
|
ufw
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Pi-hole"
|
msg_info "Installing Pi-hole"
|
||||||
mkdir -p /etc/pihole/
|
mkdir -p /etc/pihole
|
||||||
cat <<EOF >/etc/pihole/setupVars.conf
|
touch /etc/pihole/pihole.toml
|
||||||
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
|
|
||||||
$STD bash <(curl -fsSL https://install.pi-hole.net) --unattended
|
$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"
|
msg_ok "Installed Pi-hole"
|
||||||
|
|
||||||
read -r -p "Would you like to add Unbound? <y/N> " prompt
|
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
|
#forward-addr: 2620:fe::9@853#dns.quad9.net
|
||||||
EOF
|
EOF
|
||||||
fi
|
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|^(upstreams =).*|\1 [\"127.0.0.1#5335\", \"8.8.4.4\"]|" /etc/pihole/pihole.toml
|
||||||
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
|
|
||||||
systemctl enable -q --now unbound
|
systemctl enable -q --now unbound
|
||||||
systemctl restart pihole-FTL.service
|
systemctl restart pihole-FTL.service
|
||||||
msg_ok "Installed Unbound"
|
msg_ok "Installed Unbound"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
verb_ip6
|
verb_ip6
|
||||||
catch_errors
|
catch_errors
|
||||||
@@ -14,70 +14,97 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
$STD apt-get install -y git
|
mc \
|
||||||
$STD apt-get install -y ca-certificates
|
git \
|
||||||
$STD apt-get install -y gnupg
|
ca-certificates \
|
||||||
|
gnupg \
|
||||||
|
build-essential \
|
||||||
|
python3 \
|
||||||
|
g++ \
|
||||||
|
make
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
msg_info "Setting up Node.js Repository"
|
||||||
mkdir -p /etc/apt/keyrings
|
mkdir -p /etc/apt/keyrings
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
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_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"
|
msg_info "Installing Node.js"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y nodejs
|
$STD apt-get install -y nodejs
|
||||||
|
$STD npm install --global yarn
|
||||||
|
$STD npm install -g node-gyp
|
||||||
msg_ok "Installed Node.js"
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
msg_info "Installing Wiki.js"
|
msg_info "Set up PostgreSQL"
|
||||||
mkdir -p /opt/wikijs
|
$STD apt-get install -y postgresql-17
|
||||||
cd /opt/wikijs
|
DB_NAME="wiki"
|
||||||
$STD wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
|
DB_USER="wikijs_user"
|
||||||
tar xzf wiki-js.tar.gz
|
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||||
rm wiki-js.tar.gz
|
$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
|
msg_info "Setup Wiki.js"
|
||||||
bindIP: 0.0.0.0
|
temp_file=$(mktemp)
|
||||||
port: 3000
|
RELEASE=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
db:
|
wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
|
||||||
type: sqlite
|
tar -xzf "$temp_file"
|
||||||
storage: /opt/wikijs/db.sqlite
|
mv wiki-${RELEASE} /opt/wikijs
|
||||||
logLevel: info
|
mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
|
||||||
logFormat: default
|
sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml
|
||||||
dataPath: /opt/wikijs/data
|
sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml
|
||||||
bodyParserLimit: 5mb
|
cd /opt/wikijs
|
||||||
EOF
|
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||||
$STD npm rebuild sqlite3
|
$STD yarn install --ignore-engines
|
||||||
|
$STD yarn build
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed Wiki.js"
|
msg_ok "Installed Wiki.js"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/wikijs.service"
|
cat <<EOF >/etc/systemd/system/wikijs.service
|
||||||
|
[Unit]
|
||||||
echo "[Unit]
|
|
||||||
Description=Wiki.js
|
Description=Wiki.js
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/usr/bin/node server
|
ExecStart=/usr/bin/yarn start
|
||||||
Restart=always
|
Restart=always
|
||||||
User=root
|
User=root
|
||||||
Environment=NODE_ENV=production
|
Environment=NODE_ENV=production
|
||||||
WorkingDirectory=/opt/wikijs
|
WorkingDirectory=/opt/wikijs
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
$STD systemctl enable --now wikijs
|
EOF
|
||||||
|
systemctl enable -q --now wikijs
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -f "$temp_file"
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/wikijs.sh",
|
"script": "ct/wikijs.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 2,
|
||||||
"ram": 512,
|
"ram": 2048,
|
||||||
"hdd": 3,
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -31,4 +31,4 @@
|
|||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user