mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-16 07:41:11 +02:00
Docs: expand developer/debugging and tools references
Add extensive documentation and examples across contribution, guides, templates and tools references. Key changes: - Introduce a Developer Mode & Debugging section (dev_mode flags: trace, keep, pause, breakpoint, logs, dryrun, motd) in CONTRIBUTING.md with usage example. - Provide a standard update_script() pattern and BookStack example in GUIDE.md to clarify update flow (stop services, backup, deploy, restore, migrate, restart). - Add new helper entries (BookLore, KaraKeep) and advanced repository helpers (setup_deb822_repo, prepare_repository_setup, cleanup_tool_keyrings) plus utilities (setup_meilisearch, verify_tool_version) in HELPER_FUNCTIONS.md. - Update install template to suggest PNPM, Java 21 and Meilisearch; update example DB setup notes in AppName-install.sh. - Add var_diagnostics option and switch var_fuse to boolean/toggle wording in CONFIGURATION_REFERENCE.md; clarify privacy and defaults. - Adjust example container definitions in UNATTENDED_DEPLOYMENTS.md (container entries and resource values). - Change storage and flag variables and examples in BUILD_FUNC_USAGE_EXAMPLES.md (ssd-storage, var_fuse/var_tun, etc.). - Expand TOOLS_FUNC_FUNCTIONS_REFERENCE.md with many setup_* function signatures, environment vars, clarified fetch_and_deploy_gh_release modes/parameters, and additional tool docs (nodejs, php, mariadb_db, postgresql_db, java, uv, yq, meilisearch, composer, build tools). These updates improve onboarding, debugging guidance, and operational clarity for contributors and maintainers.
This commit is contained in:
@@ -147,6 +147,30 @@ Verify the PR shows ONLY these 3 files:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# 🛠️ Developer Mode & Debugging
|
||||||
|
|
||||||
|
When building or testing scripts, you can use the `dev_mode` variable to enable powerful debugging features. These flags can be combined (comma-separated).
|
||||||
|
|
||||||
|
**Usage**:
|
||||||
|
```bash
|
||||||
|
# Example: Run with trace and keep the container even if it fails
|
||||||
|
dev_mode="trace,keep" bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/myapp.sh)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Available Flags:
|
||||||
|
|
||||||
|
| Flag | Description |
|
||||||
|
| :--- | :--- |
|
||||||
|
| `trace` | Enables `set -x` for maximum verbosity during execution. |
|
||||||
|
| `keep` | Prevents the container from being deleted if the build fails. |
|
||||||
|
| `pause` | Pauses execution at key points (e.g., before customization). |
|
||||||
|
| `breakpoint` | Allows hardcoded `breakpoint` calls in scripts to drop to a shell. |
|
||||||
|
| `logs` | Saves detailed build logs to `/var/log/community-scripts/`. |
|
||||||
|
| `dryrun` | Bypasses actual container creation (limited support). |
|
||||||
|
| `motd` | Forces an update of the Message of the Day (MOTD). |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 📚 Pages
|
## 📚 Pages
|
||||||
|
|
||||||
- [CT Template: AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/docs/contribution/templates_ct/AppName.sh)
|
- [CT Template: AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/docs/contribution/templates_ct/AppName.sh)
|
||||||
|
|||||||
+31
-13
@@ -433,26 +433,44 @@ $STD apt-get install -y newdependency
|
|||||||
# 4. Test thoroughly before committing
|
# 4. Test thoroughly before committing
|
||||||
```
|
```
|
||||||
|
|
||||||
### Step 3: Update Update Function (if applicable)
|
### Step 3: The Standard Update Pattern
|
||||||
|
|
||||||
|
The `update_script()` function in `ct/appname.sh` should follow a robust pattern:
|
||||||
|
|
||||||
|
1. **Check for updates**: Use `check_for_gh_release` to skip logic if no new version exists.
|
||||||
|
2. **Stop services**: Stop all relevant services (`systemctl stop appname`).
|
||||||
|
3. **Backup existing installation**: Move the old folder (e.g., `mv /opt/app /opt/app_bak`).
|
||||||
|
4. **Deploy new version**: Use `CLEAN_INSTALL=1 fetch_and_deploy_gh_release`.
|
||||||
|
5. **Restore configuration**: Copy `.env` or config files back from the backup.
|
||||||
|
6. **Rebuild/Migrate**: Run `npm install`, `composer install`, or DB migrations.
|
||||||
|
7. **Start services**: Restart services and cleanup the backup.
|
||||||
|
|
||||||
|
**Example from `ct/bookstack.sh`**:
|
||||||
```bash
|
```bash
|
||||||
# Edit: ct/existingapp.sh → update_script()
|
function update_script() {
|
||||||
|
if check_for_gh_release "bookstack" "BookStackApp/BookStack"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop apache2
|
||||||
|
|
||||||
# 1. Update GitHub API URL if repo changed
|
msg_info "Backing up data"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/user/repo/releases/latest | ...)
|
mv /opt/bookstack /opt/bookstack-backup
|
||||||
|
|
||||||
# 2. Update backup/restore logic (if structure changed)
|
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack" "tarball"
|
||||||
# 3. Update cleanup paths
|
|
||||||
|
|
||||||
# 4. Test update on existing installation
|
msg_info "Restoring backup"
|
||||||
```
|
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
||||||
|
# ... restore uploads ...
|
||||||
|
|
||||||
### Step 4: Document Your Changes
|
msg_info "Configuring"
|
||||||
|
cd /opt/bookstack
|
||||||
|
$STD composer install --no-dev
|
||||||
|
$STD php artisan migrate --force
|
||||||
|
|
||||||
```bash
|
systemctl start apache2
|
||||||
# Add comment at top of script
|
rm -rf /opt/bookstack-backup
|
||||||
# Co-Author: YourUsername
|
msg_ok "Updated successfully!"
|
||||||
# Updated: YYYY-MM-DD - Description of changes
|
fi
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -60,6 +60,22 @@ Install scripts are **not** run directly by users; they are invoked by the CT sc
|
|||||||
| CT (update logic) | [ct/endurain.sh](../../ct/endurain.sh) |
|
| CT (update logic) | [ct/endurain.sh](../../ct/endurain.sh) |
|
||||||
| Install | [install/endurain-install.sh](../../install/endurain-install.sh) |
|
| Install | [install/endurain-install.sh](../../install/endurain-install.sh) |
|
||||||
|
|
||||||
|
### Java + Gradle
|
||||||
|
|
||||||
|
**BookLore** - Book management with Java 21 + Gradle + MariaDB + Nginx
|
||||||
|
| File | Link |
|
||||||
|
| ----------------- | -------------------------------------------------------------- |
|
||||||
|
| CT (update logic) | [ct/booklore.sh](../../ct/booklore.sh) |
|
||||||
|
| Install | [install/booklore-install.sh](../../install/booklore-install.sh) |
|
||||||
|
|
||||||
|
### Pnpm + Meilisearch
|
||||||
|
|
||||||
|
**KaraKeep** - Bookmark manager with Pnpm + Meilisearch + Puppeteer
|
||||||
|
| File | Link |
|
||||||
|
| ----------------- | -------------------------------------------------------------- |
|
||||||
|
| CT (update logic) | [ct/karakeep.sh](../../ct/karakeep.sh) |
|
||||||
|
| Install | [install/karakeep-install.sh](../../install/karakeep-install.sh) |
|
||||||
|
|
||||||
### PHP + MariaDB/MySQL
|
### PHP + MariaDB/MySQL
|
||||||
|
|
||||||
**Wallabag** - Read-it-later with PHP + MariaDB + Redis + Nginx
|
**Wallabag** - Read-it-later with PHP + MariaDB + Redis + Nginx
|
||||||
@@ -285,6 +301,43 @@ setup_clickhouse
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Advanced Repository Management
|
||||||
|
|
||||||
|
### `setup_deb822_repo`
|
||||||
|
|
||||||
|
The modern standard (Debian 12+) for adding external repositories. Automatically handles GPG keys and sources.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
setup_deb822_repo \
|
||||||
|
"nodejs" \
|
||||||
|
"https://deb.nodesource.com/gpgkey/nodesource.gpg.key" \
|
||||||
|
"https://deb.nodesource.com/node_22.x" \
|
||||||
|
"bookworm" \
|
||||||
|
"main"
|
||||||
|
```
|
||||||
|
|
||||||
|
### `prepare_repository_setup`
|
||||||
|
|
||||||
|
A high-level helper that performs three critical tasks before adding a new repo:
|
||||||
|
1. Cleans up old repo files matching the names provided.
|
||||||
|
2. Removes old GPG keyrings from all standard locations.
|
||||||
|
3. Ensures APT is in a working state (fixes locks, runs update).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clean up old mysql/mariadb artifacts before setup
|
||||||
|
prepare_repository_setup "mariadb" "mysql"
|
||||||
|
```
|
||||||
|
|
||||||
|
### `cleanup_tool_keyrings`
|
||||||
|
|
||||||
|
Force-removes GPG keys for specific tools from `/usr/share/keyrings/`, `/etc/apt/keyrings/`, and `/etc/apt/trusted.gpg.d/`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cleanup_tool_keyrings "docker" "kubernetes"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## GitHub Release Helpers
|
## GitHub Release Helpers
|
||||||
|
|
||||||
> **Note**: `fetch_and_deploy_gh_release` is the **preferred method** for downloading GitHub releases. It handles version tracking automatically. Only use `get_latest_github_release` if you need the version number separately.
|
> **Note**: `fetch_and_deploy_gh_release` is the **preferred method** for downloading GitHub releases. It handles version tracking automatically. Only use `get_latest_github_release` if you need the version number separately.
|
||||||
@@ -345,26 +398,21 @@ RELEASE=$(get_latest_github_release "owner/repo")
|
|||||||
echo "Latest version: $RELEASE"
|
echo "Latest version: $RELEASE"
|
||||||
```
|
```
|
||||||
|
|
||||||
# Examples
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
|
||||||
fetch_and_deploy_gh_release "appname" "owner/repo" "tarball" "latest" "/opt/myapp"
|
|
||||||
|
|
||||||
````
|
|
||||||
|
|
||||||
**Parameters:**
|
|
||||||
| Parameter | Default | Description |
|
|
||||||
| --------- | ------------- | -------------------------------------------- |
|
|
||||||
| `name` | required | App name (for version tracking) |
|
|
||||||
| `repo` | required | GitHub repo (`owner/repo`) |
|
|
||||||
| `type` | `tarball` | Release type: `tarball`, `zipball`, `binary` |
|
|
||||||
| `version` | `latest` | Version tag or `latest` |
|
|
||||||
| `dest` | `/opt/[name]` | Destination directory |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Tools & Utilities
|
## Tools & Utilities
|
||||||
|
|
||||||
|
### `setup_meilisearch`
|
||||||
|
|
||||||
|
Install Meilisearch, a lightning-fast search engine.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
setup_meilisearch
|
||||||
|
|
||||||
|
# Use in script
|
||||||
|
$STD php artisan scout:sync-index-settings
|
||||||
|
```
|
||||||
|
|
||||||
### `setup_yq`
|
### `setup_yq`
|
||||||
|
|
||||||
Install yq YAML processor.
|
Install yq YAML processor.
|
||||||
@@ -440,6 +488,15 @@ create_self_signed_cert
|
|||||||
|
|
||||||
## Utility Functions
|
## Utility Functions
|
||||||
|
|
||||||
|
### `verify_tool_version`
|
||||||
|
|
||||||
|
Validate that the installed major version matches the expected version. Useful during upgrades or troubleshooting.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Verify Node.js is version 22
|
||||||
|
verify_tool_version "nodejs" "22" "$(node -v | grep -oP '^v\K[0-9]+')"
|
||||||
|
```
|
||||||
|
|
||||||
### `get_lxc_ip`
|
### `get_lxc_ip`
|
||||||
|
|
||||||
Set the `$LOCAL_IP` variable with the container's IP address.
|
Set the `$LOCAL_IP` variable with the container's IP address.
|
||||||
|
|||||||
@@ -30,14 +30,16 @@ msg_ok "Installed Dependencies"
|
|||||||
# Examples (uncomment as needed):
|
# Examples (uncomment as needed):
|
||||||
#
|
#
|
||||||
# NODE_VERSION="22" setup_nodejs
|
# NODE_VERSION="22" setup_nodejs
|
||||||
|
# NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs # Installs pnpm
|
||||||
# PYTHON_VERSION="3.13" setup_uv
|
# PYTHON_VERSION="3.13" setup_uv
|
||||||
# JAVA_VERSION="17" setup_java
|
# JAVA_VERSION="21" setup_java
|
||||||
# GO_VERSION="1.22" setup_go
|
# GO_VERSION="1.22" setup_go
|
||||||
# PHP_VERSION="8.4" PHP_FPM="YES" setup_php
|
# PHP_VERSION="8.4" PHP_FPM="YES" setup_php
|
||||||
# setup_postgresql # Server only
|
# setup_postgresql # Server only
|
||||||
# setup_mariadb # Server only
|
# setup_mariadb # Server only
|
||||||
|
# setup_meilisearch # Search engine
|
||||||
#
|
#
|
||||||
# Then set up DB and user:
|
# Then set up DB and user (sets $[DB]_DB_PASS):
|
||||||
# PG_DB_NAME="myapp" PG_DB_USER="myapp" setup_postgresql_db
|
# PG_DB_NAME="myapp" PG_DB_USER="myapp" setup_postgresql_db
|
||||||
# MARIADB_DB_NAME="myapp" MARIADB_DB_USER="myapp" setup_mariadb_db
|
# MARIADB_DB_NAME="myapp" MARIADB_DB_USER="myapp" setup_mariadb_db
|
||||||
|
|
||||||
|
|||||||
@@ -539,6 +539,25 @@ var_nesting=0 # Nested containers disabled
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### var_diagnostics
|
||||||
|
|
||||||
|
**Type:** Boolean (yes or no)
|
||||||
|
**Default:** `yes`
|
||||||
|
**Description:** Determines if anonymous telemetry and diagnostic data is sent to Community-Scripts API.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
var_diagnostics=yes # Allow telemetry (helps us improve scripts)
|
||||||
|
var_diagnostics=no # Disable all telemetry
|
||||||
|
```
|
||||||
|
|
||||||
|
**Privacy & Usage:**
|
||||||
|
- Data is strictly anonymous (random session ID)
|
||||||
|
- Reports success/failure of installations
|
||||||
|
- Maps error codes (e.g., APT lock, out of RAM)
|
||||||
|
- No user-specific data, hostnames, or secret keys are ever sent
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### var_gpu
|
### var_gpu
|
||||||
|
|
||||||
**Type:** Boolean/Toggle
|
**Type:** Boolean/Toggle
|
||||||
@@ -604,13 +623,14 @@ var_keyctl=0 # Keyctl disabled
|
|||||||
|
|
||||||
### var_fuse
|
### var_fuse
|
||||||
|
|
||||||
**Type:** Boolean (0 or 1)
|
**Type:** Boolean/Toggle
|
||||||
**Default:** `0`
|
**Options:** `yes` or `no`
|
||||||
|
**Default:** `no`
|
||||||
**Description:** Enable FUSE filesystem support.
|
**Description:** Enable FUSE filesystem support.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
var_fuse=1 # FUSE enabled
|
var_fuse=yes # FUSE enabled
|
||||||
var_fuse=0 # FUSE disabled
|
var_fuse=no # FUSE disabled
|
||||||
```
|
```
|
||||||
|
|
||||||
**Required for:**
|
**Required for:**
|
||||||
|
|||||||
@@ -220,10 +220,10 @@ done
|
|||||||
# batch-deploy-advanced.sh - Deploy multiple containers with individual configs
|
# batch-deploy-advanced.sh - Deploy multiple containers with individual configs
|
||||||
|
|
||||||
declare -A CONTAINERS=(
|
declare -A CONTAINERS=(
|
||||||
["pihole"]="2:1024:8:vmbr0:dns,network"
|
["beszel"]="1:512:8:vmbr0:monitoring"
|
||||||
["qui"]="4:4096:20:vmbr0:media,ui"
|
["qui"]="2:1024:10:vmbr0:torrent,ui"
|
||||||
["thingsboard"]="6:8192:50:vmbr1:iot,industrial"
|
["thingsboard"]="6:8192:50:vmbr1:iot,industrial"
|
||||||
["nginx"]="2:2048:10:vmbr0:webserver,proxy"
|
["dockge"]="2:2048:10:vmbr0:docker,management"
|
||||||
)
|
)
|
||||||
|
|
||||||
for app in "${!CONTAINERS[@]}"; do
|
for app in "${!CONTAINERS[@]}"; do
|
||||||
|
|||||||
@@ -60,10 +60,10 @@ export var_gateway="192.168.1.1"
|
|||||||
export var_ip="192.168.1.101"
|
export var_ip="192.168.1.101"
|
||||||
export var_vlan="100"
|
export var_vlan="100"
|
||||||
export var_mtu="9000"
|
export var_mtu="9000"
|
||||||
export var_template_storage="nfs-storage"
|
export var_template_storage="ssd-storage"
|
||||||
export var_container_storage="ssd-storage"
|
export var_container_storage="ssd-storage"
|
||||||
export ENABLE_FUSE="true"
|
export var_fuse="yes"
|
||||||
export ENABLE_TUN="true"
|
export var_tun="yes"
|
||||||
export SSH="true"
|
export SSH="true"
|
||||||
|
|
||||||
# Execute build.func
|
# Execute build.func
|
||||||
|
|||||||
@@ -20,14 +20,19 @@ Complete alphabetical reference of all functions in tools.func with parameters,
|
|||||||
- `setup_nodejs(VERSION)` - Install Node.js and npm
|
- `setup_nodejs(VERSION)` - Install Node.js and npm
|
||||||
- `setup_php(VERSION)` - Install PHP-FPM and CLI
|
- `setup_php(VERSION)` - Install PHP-FPM and CLI
|
||||||
- `setup_python(VERSION)` - Install Python 3 with pip
|
- `setup_python(VERSION)` - Install Python 3 with pip
|
||||||
|
- `setup_uv()` - Install Python uv (modern & fast)
|
||||||
- `setup_ruby(VERSION)` - Install Ruby with gem
|
- `setup_ruby(VERSION)` - Install Ruby with gem
|
||||||
- `setup_golang(VERSION)` - Install Go programming language
|
- `setup_golang(VERSION)` - Install Go programming language
|
||||||
|
- `setup_java(VERSION)` - Install OpenJDK (Adoptium)
|
||||||
|
|
||||||
**Databases**:
|
**Databases**:
|
||||||
- `setup_mariadb()` - Install MariaDB server (distro packages by default)
|
- `setup_mariadb()` - Install MariaDB server
|
||||||
|
- `setup_mariadb_db()` - Create user/db in MariaDB
|
||||||
- `setup_postgresql(VERSION)` - Install PostgreSQL
|
- `setup_postgresql(VERSION)` - Install PostgreSQL
|
||||||
|
- `setup_postgresql_db()` - Create user/db in PostgreSQL
|
||||||
- `setup_mongodb(VERSION)` - Install MongoDB
|
- `setup_mongodb(VERSION)` - Install MongoDB
|
||||||
- `setup_redis(VERSION)` - Install Redis cache
|
- `setup_redis(VERSION)` - Install Redis cache
|
||||||
|
- `setup_meilisearch()` - Install Meilisearch engine
|
||||||
|
|
||||||
**Web Servers**:
|
**Web Servers**:
|
||||||
- `setup_nginx()` - Install Nginx
|
- `setup_nginx()` - Install Nginx
|
||||||
@@ -44,6 +49,7 @@ Complete alphabetical reference of all functions in tools.func with parameters,
|
|||||||
- `setup_docker_compose()` - Install Docker Compose
|
- `setup_docker_compose()` - Install Docker Compose
|
||||||
- `setup_composer()` - Install PHP Composer
|
- `setup_composer()` - Install PHP Composer
|
||||||
- `setup_build_tools()` - Install build-essential
|
- `setup_build_tools()` - Install build-essential
|
||||||
|
- `setup_yq()` - Install mikefarah/yq processor
|
||||||
|
|
||||||
**Monitoring**:
|
**Monitoring**:
|
||||||
- `setup_grafana()` - Install Grafana
|
- `setup_grafana()` - Install Grafana
|
||||||
@@ -112,15 +118,23 @@ The primary tool for downloading and installing software from GitHub Releases. S
|
|||||||
fetch_and_deploy_gh_release APPREPO TYPE [VERSION] [DEST] [ASSET_PATTERN]
|
fetch_and_deploy_gh_release APPREPO TYPE [VERSION] [DEST] [ASSET_PATTERN]
|
||||||
```
|
```
|
||||||
|
|
||||||
**Parameters**:
|
**Environment Variables**:
|
||||||
- `APPREPO`: GitHub repository (e.g., `owner/repo`)
|
- `APPREPO`: GitHub repository (e.g., `owner/repo`)
|
||||||
- `TYPE`: Asset type (`binary`, `tarball`, `prebuild`, `singlefile`, `binary_tarball`)
|
- `TYPE`: Asset type (`binary`, `tarball`, `prebuild`, `singlefile`)
|
||||||
- `VERSION`: Specific tag or `latest` (Default: `latest`)
|
- `VERSION`: Specific tag or `latest` (Default: `latest`)
|
||||||
- `DEST`: Target directory (Default: `/opt/$APP`)
|
- `DEST`: Target directory (Default: `/opt/$APP`)
|
||||||
- `ASSET_PATTERN`: Regex or string pattern to match the release asset
|
- `ASSET_PATTERN`: Regex or string pattern to match the release asset (Required for `prebuild` and `singlefile`)
|
||||||
|
|
||||||
|
**Supported Operation Modes**:
|
||||||
|
- `tarball`: Downloads and extracts the source tarball.
|
||||||
|
- `binary`: Detects host architecture and installs a `.deb` package using `apt` or `dpkg`.
|
||||||
|
- `prebuild`: Downloads and extracts a pre-built binary archive (supports `.tar.gz`, `.zip`, `.tgz`, `.txz`).
|
||||||
|
- `singlefile`: Downloads a single binary file to the destination.
|
||||||
|
|
||||||
**Environment Variables**:
|
**Environment Variables**:
|
||||||
- `CLEAN_INSTALL=1`: Removes the destination directory before extracting.
|
- `CLEAN_INSTALL=1`: Removes all contents of the destination directory before extraction.
|
||||||
|
- `DPKG_FORCE_CONFOLD=1`: Forces `dpkg` to keep old config files during package updates.
|
||||||
|
- `SYSTEMD_OFFLINE=1`: Used automatically for `.deb` installs to prevent systemd-tmpfiles failures in unprivileged containers.
|
||||||
|
|
||||||
**Example**:
|
**Example**:
|
||||||
```bash
|
```bash
|
||||||
@@ -230,19 +244,240 @@ cleanup_repo_metadata
|
|||||||
**Example**:
|
**Example**:
|
||||||
```bash
|
```bash
|
||||||
cleanup_repo_metadata
|
cleanup_repo_metadata
|
||||||
>>>>>>> origin/main
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Tool Installation Functions
|
## Tool Installation Functions
|
||||||
|
|
||||||
### setup_nodejs(VERSION)
|
### setup_nodejs()
|
||||||
|
|
||||||
Install Node.js and npm from official repositories.
|
Install Node.js and npm from official repositories. Handles legacy version cleanup (nvm) automatically.
|
||||||
|
|
||||||
**Signature**:
|
**Signature**:
|
||||||
```bash
|
```bash
|
||||||
|
setup_nodejs
|
||||||
|
```
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `NODE_VERSION`: Major version to install (e.g. "20", "22", "24"). Default: "24".
|
||||||
|
- `NODE_MODULE`: Optional npm package to install globally during setup (e.g. "pnpm", "yarn").
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_php()
|
||||||
|
|
||||||
|
Install PHP with configurable extensions and FPM/Apache integration.
|
||||||
|
|
||||||
|
**Signature**:
|
||||||
|
```bash
|
||||||
|
setup_php
|
||||||
|
```
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `PHP_VERSION`: Version to install (e.g. "8.3", "8.4"). Default: "8.4".
|
||||||
|
- `PHP_MODULE`: Comma-separated list of additional extensions.
|
||||||
|
- `PHP_FPM`: Set to "YES" to install php-fpm.
|
||||||
|
- `PHP_APACHE`: Set to "YES" to install libapache2-mod-php.
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="mysql,xml,zip" setup_php
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_mariadb_db()
|
||||||
|
|
||||||
|
Creates a new MariaDB database and a dedicated user with all privileges. Automatically generates a password if not provided and saves it to a credentials file.
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `MARIADB_DB_NAME`: Name of the database (required)
|
||||||
|
- `MARIADB_DB_USER`: Name of the database user (required)
|
||||||
|
- `MARIADB_DB_PASS`: User password (optional, auto-generated if omitted)
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
MARIADB_DB_NAME="myapp" MARIADB_DB_USER="myapp_user" setup_mariadb_db
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_postgresql_db()
|
||||||
|
|
||||||
|
Creates a new PostgreSQL database and a dedicated user/role with all privileges. Automatically generates a password if not provided and saves it to a credentials file.
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `PG_DB_NAME`: Name of the database (required)
|
||||||
|
- `PG_DB_USER`: Name of the database user (required)
|
||||||
|
- `PG_DB_PASS`: User password (optional, auto-generated if omitted)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_java()
|
||||||
|
|
||||||
|
Installs Temurin JDK.
|
||||||
|
|
||||||
|
**Signature**:
|
||||||
|
```bash
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
```
|
||||||
|
|
||||||
|
**Parameters**:
|
||||||
|
- `JAVA_VERSION` - JDK version (e.g., "17", "21") (default: "21")
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
JAVA_VERSION="17" setup_java
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_uv()
|
||||||
|
|
||||||
|
Installs `uv` (modern Python package manager).
|
||||||
|
|
||||||
|
**Signature**:
|
||||||
|
```bash
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
```
|
||||||
|
|
||||||
|
**Parameters**:
|
||||||
|
- `PYTHON_VERSION` - Optional Python version to pre-install via uv (e.g., "3.12", "3.13")
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_go()
|
||||||
|
|
||||||
|
Installs Go programming language.
|
||||||
|
|
||||||
|
**Signature**:
|
||||||
|
```bash
|
||||||
|
GO_VERSION="1.23" setup_go
|
||||||
|
```
|
||||||
|
|
||||||
|
**Parameters**:
|
||||||
|
- `GO_VERSION` - Go version to install (default: "1.23")
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
GO_VERSION="1.24" setup_go
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_yq()
|
||||||
|
|
||||||
|
Installs `yq` (YAML processor).
|
||||||
|
|
||||||
|
**Signature**:
|
||||||
|
```bash
|
||||||
|
setup_yq
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
setup_yq
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_composer()
|
||||||
|
|
||||||
|
Installs PHP Composer.
|
||||||
|
|
||||||
|
**Signature**:
|
||||||
|
```bash
|
||||||
|
setup_composer
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
setup_composer
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_meilisearch()
|
||||||
|
|
||||||
|
Install and configure Meilisearch search engine.
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `MEILISEARCH_BIND`: Address and port to bind to (Default: "127.0.0.1:7700")
|
||||||
|
- `MEILISEARCH_ENV`: Environment mode (Default: "production")
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_yq()
|
||||||
|
|
||||||
|
Install the `mikefarah/yq` YAML processor. Removes existing non-compliant versions.
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
setup_yq
|
||||||
|
yq eval '.app.version = "1.0.0"' -i config.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_composer()
|
||||||
|
|
||||||
|
Install or update the PHP Composer package manager. Handles `COMPOSER_ALLOW_SUPERUSER` automatically and performs self-updates if already installed.
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
setup_php
|
||||||
|
setup_composer
|
||||||
|
$STD composer install --no-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_build_tools()
|
||||||
|
|
||||||
|
Install the `build-essential` package suite for compiling software.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_uv()
|
||||||
|
|
||||||
|
Install the modern Python package manager `uv`. Extremely fast replacement for pip/venv.
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `PYTHON_VERSION`: Major.Minor version to ensure is installed.
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
uv sync --locked
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### setup_java()
|
||||||
|
|
||||||
|
Install OpenJDK via the Adoptium repository.
|
||||||
|
|
||||||
|
**Environment Variables**:
|
||||||
|
- `JAVA_VERSION`: Major version to install (e.g. "17", "21"). Default: "21".
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
```bash
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
```bash
|
||||||
setup_nodejs VERSION
|
setup_nodejs VERSION
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user