Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83228155bb | ||
|
|
c89638021c | ||
|
|
d0312165bd | ||
|
|
16e918e9b4 | ||
|
|
08b7eecdfe | ||
|
|
c1b478ed51 | ||
|
|
4af5ad4f7b | ||
|
|
537d65275a | ||
|
|
ef460b5a00 | ||
|
|
87ab645231 | ||
|
|
9c44a47b3d | ||
|
|
b793c57000 | ||
|
|
6b45c41334 | ||
|
|
a8eb41e087 | ||
|
|
52adbd9f5c | ||
|
|
73d3aeec99 | ||
|
|
1635bb17da | ||
|
|
b4b8da5725 | ||
|
|
d95a85435b | ||
|
|
962e2877e3 | ||
|
|
3459fe3fa4 | ||
|
|
6580f3100a | ||
|
|
15ffa98ea8 | ||
|
|
4c3b66a26b | ||
|
|
94e97a7366 | ||
|
|
0e95c125d3 | ||
|
|
fa2cb457fa | ||
|
|
02680aed29 | ||
|
|
63459a650d | ||
|
|
343989474d | ||
|
|
a0a6a11838 | ||
|
|
695232c711 | ||
|
|
5b11a6bad8 | ||
|
|
67ac02ea1a | ||
|
|
efa924cb82 |
@@ -26,3 +26,4 @@ AUTH_PASSWORD_HASH=
|
||||
AUTH_ENABLED=false
|
||||
AUTH_SETUP_COMPLETED=false
|
||||
JWT_SECRET=
|
||||
DATABASE_URL="file:./data/database.sqlite"
|
||||
|
||||
3
.github/release-drafter.yml
vendored
3
.github/release-drafter.yml
vendored
@@ -7,6 +7,9 @@ exclude-labels:
|
||||
- automated
|
||||
|
||||
categories:
|
||||
- title: "Breaking Changes"
|
||||
labels:
|
||||
- breaking
|
||||
- title: "🚀 Features"
|
||||
labels:
|
||||
- feature
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -16,6 +16,9 @@
|
||||
db.sqlite
|
||||
data/settings.db
|
||||
|
||||
# ssh keys (sensitive)
|
||||
data/ssh-keys/
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
@@ -47,3 +50,4 @@ yarn-error.log*
|
||||
|
||||
# idea files
|
||||
.idea
|
||||
/generated/prisma
|
||||
|
||||
243
README.md
243
README.md
@@ -210,6 +210,249 @@ The application uses SQLite for storing server configurations:
|
||||
- **Backup**: Copy `data/settings.db` to backup your server configurations
|
||||
- **Reset**: Delete `data/settings.db` to reset all server configurations
|
||||
|
||||
## 📖 Feature Guide
|
||||
|
||||
This section provides detailed information about the application's key features and how to use them effectively.
|
||||
|
||||
### Server Settings
|
||||
|
||||
Manage your Proxmox VE servers and configure connection settings.
|
||||
|
||||
**Adding PVE Servers:**
|
||||
- **Server Name**: A friendly name to identify your server
|
||||
- **IP Address**: The IP address or hostname of your PVE server
|
||||
- **Username**: PVE user account (usually root or a dedicated user)
|
||||
- **SSH Port**: Default is 22, change if your server uses a different port
|
||||
|
||||
**Authentication Types:**
|
||||
- **Password**: Use username and password authentication
|
||||
- **SSH Key**: Use SSH key pair for secure authentication
|
||||
- **Both**: Try SSH key first, fallback to password if needed
|
||||
|
||||
**Server Color Coding:**
|
||||
Assign colors to servers for visual distinction throughout the application. This helps identify which server you're working with when managing scripts. This needs to be enabled in the General Settings.
|
||||
|
||||
### General Settings
|
||||
|
||||
Configure application preferences and behavior.
|
||||
|
||||
**Save Filters:**
|
||||
When enabled, your script filter preferences (search terms, categories, sorting) will be automatically saved and restored when you return to the application:
|
||||
- Search queries are preserved
|
||||
- Selected script types are remembered
|
||||
- Sort preferences are maintained
|
||||
- Category selections are saved
|
||||
|
||||
**Server Color Coding:**
|
||||
Enable visual color coding for servers throughout the application. This makes it easier to identify which server you're working with.
|
||||
|
||||
**GitHub Integration:**
|
||||
Add a GitHub Personal Access Token to increase API rate limits and improve performance:
|
||||
- Bypasses GitHub's rate limiting for unauthenticated requests
|
||||
- Improves script loading and syncing performance
|
||||
- Token is stored securely and only used for API calls
|
||||
|
||||
**Authentication:**
|
||||
Secure your application with username and password authentication:
|
||||
- Set up username and password for app access
|
||||
- Enable/disable authentication as needed
|
||||
- Credentials are stored securely
|
||||
|
||||
### Sync Button
|
||||
|
||||
Synchronize script metadata from the ProxmoxVE GitHub repository.
|
||||
|
||||
**What Does Syncing Do?**
|
||||
- **Updates Script Metadata**: Downloads the latest script information (JSON files)
|
||||
- **Refreshes Available Scripts**: Updates the list of scripts you can download
|
||||
- **Updates Categories**: Refreshes script categories and organization
|
||||
- **Checks for Updates**: Identifies which downloaded scripts have newer versions
|
||||
|
||||
**Important Notes:**
|
||||
- **Metadata Only**: Syncing only updates script information, not the actual script files
|
||||
- **No Downloads**: Script files are downloaded separately when you choose to install them
|
||||
- **Last Sync Time**: Shows when the last successful sync occurred
|
||||
- **Rate Limits**: GitHub API limits may apply without a personal access token
|
||||
|
||||
**When to Sync:**
|
||||
- When you want to see the latest available scripts
|
||||
- To check for updates to your downloaded scripts
|
||||
- If you notice scripts are missing or outdated
|
||||
- After the ProxmoxVE repository has been updated
|
||||
|
||||
### Available Scripts
|
||||
|
||||
Browse and discover scripts from the ProxmoxVE repository.
|
||||
|
||||
**Browsing Scripts:**
|
||||
- **Category Sidebar**: Filter scripts by category (Storage, Network, Security, etc.)
|
||||
- **Search**: Find scripts by name or description
|
||||
- **View Modes**: Switch between card and list view
|
||||
- **Sorting**: Sort by name or creation date
|
||||
|
||||
**Filtering Options:**
|
||||
- **Script Types**: Filter by CT (Container) or other script types
|
||||
- **Update Status**: Show only scripts with available updates
|
||||
- **Search Query**: Search within script names and descriptions
|
||||
- **Categories**: Filter by specific script categories
|
||||
|
||||
**Script Actions:**
|
||||
- **View Details**: Click on a script to see full information and documentation
|
||||
- **Download**: Download script files to your local system
|
||||
- **Install**: Run scripts directly on your PVE servers
|
||||
- **Preview**: View script content before downloading
|
||||
|
||||
### Downloaded Scripts
|
||||
|
||||
Manage scripts that have been downloaded to your local system.
|
||||
|
||||
**What Are Downloaded Scripts?**
|
||||
These are scripts that you've downloaded from the repository and are stored locally on your system:
|
||||
- Script files are stored in your local scripts directory
|
||||
- You can run these scripts on your PVE servers
|
||||
- Scripts can be updated when newer versions are available
|
||||
|
||||
**Update Detection:**
|
||||
The system automatically checks if newer versions of your downloaded scripts are available:
|
||||
- Scripts with updates available are marked with an update indicator
|
||||
- You can filter to show only scripts with available updates
|
||||
- Update detection happens when you sync with the repository
|
||||
|
||||
**Managing Downloaded Scripts:**
|
||||
- **Update Scripts**: Download the latest version of a script
|
||||
- **View Details**: See script information and documentation
|
||||
- **Install/Run**: Execute scripts on your PVE servers
|
||||
- **Filter & Search**: Use the same filtering options as Available Scripts
|
||||
|
||||
### Installed Scripts
|
||||
|
||||
Track and manage scripts that are installed on your PVE servers.
|
||||
|
||||
**Auto-Detection (Primary Feature):**
|
||||
The system can automatically detect LXC containers that have community-script tags on your PVE servers:
|
||||
- **Automatic Discovery**: Scans your PVE servers for containers with community-script tags
|
||||
- **Container Detection**: Identifies LXC containers running Proxmox helper scripts
|
||||
- **Server Association**: Links detected scripts to the specific PVE server
|
||||
- **Bulk Import**: Automatically creates records for all detected scripts
|
||||
|
||||
**How Auto-Detection Works:**
|
||||
1. Connects to your configured PVE servers
|
||||
2. Scans LXC container configurations
|
||||
3. Looks for containers with community-script tags
|
||||
4. Creates installed script records automatically
|
||||
|
||||
**Manual Script Management:**
|
||||
- **Add Scripts Manually**: Create records for scripts not auto-detected
|
||||
- **Edit Script Details**: Update script names and container IDs
|
||||
- **Delete Scripts**: Remove scripts from tracking
|
||||
- **Bulk Operations**: Clean up old or invalid script records
|
||||
|
||||
**Script Tracking Features:**
|
||||
- **Installation Status**: Track success, failure, or in-progress installations
|
||||
- **Server Association**: Know which server each script is installed on
|
||||
- **Container ID**: Link scripts to specific LXC containers
|
||||
- **Web UI Access**: Track and access Web UI IP addresses and ports
|
||||
- **Execution Logs**: View output and logs from script installations
|
||||
- **Filtering**: Filter by server, status, or search terms
|
||||
|
||||
**Managing Installed Scripts:**
|
||||
- **View All Scripts**: See all tracked scripts across all servers
|
||||
- **Filter by Server**: Show scripts for a specific PVE server
|
||||
- **Filter by Status**: Show successful, failed, or in-progress installations
|
||||
- **Sort Options**: Sort by name, container ID, server, status, or date
|
||||
- **Update Scripts**: Re-run or update existing script installations
|
||||
|
||||
**Web UI Access:**
|
||||
Automatically detect and access Web UI interfaces for your installed scripts:
|
||||
- **Auto-Detection**: Automatically detects Web UI URLs from script installation output
|
||||
- **IP & Port Tracking**: Stores and displays Web UI IP addresses and ports
|
||||
- **One-Click Access**: Click IP:port to open Web UI in new tab
|
||||
- **Manual Detection**: Re-detect IP using `hostname -I` inside container
|
||||
- **Port Detection**: Uses script metadata to get correct port (e.g., actualbudget:5006)
|
||||
- **Editable Fields**: Manually edit IP and port values as needed
|
||||
|
||||
**Actions Dropdown:**
|
||||
Clean interface with all actions organized in a dropdown menu:
|
||||
- **Edit Button**: Always visible for quick script editing
|
||||
- **Actions Dropdown**: Contains Update, Shell, Open UI, Start/Stop, Destroy, Delete
|
||||
- **Smart Visibility**: Dropdown only appears when actions are available
|
||||
- **Auto-Close**: Dropdown closes after clicking any action
|
||||
- **Disabled States**: Actions are disabled when container is stopped
|
||||
|
||||
**Container Control:**
|
||||
Directly control LXC containers from the installed scripts page via SSH:
|
||||
- **Start/Stop Button**: Control container state with `pct start/stop <ID>`
|
||||
- **Container Status**: Real-time status indicator (running/stopped/unknown)
|
||||
- **Destroy Button**: Permanently remove LXC container with `pct destroy <ID>`
|
||||
- **Confirmation Modals**: Simple OK/Cancel for start/stop, type container ID to confirm destroy
|
||||
- **SSH Execution**: All commands executed remotely via configured SSH connections
|
||||
|
||||
**Safety Features:**
|
||||
- Start/Stop actions require simple confirmation
|
||||
- Destroy action requires typing the container ID to confirm
|
||||
- All actions show loading states and error handling
|
||||
- Only works with SSH scripts that have valid container IDs
|
||||
|
||||
### Update System
|
||||
|
||||
Keep your PVE Scripts Management application up to date with the latest features and improvements.
|
||||
|
||||
**What Does Updating Do?**
|
||||
- **Downloads Latest Version**: Fetches the newest release from the GitHub repository
|
||||
- **Updates Application Files**: Replaces current files with the latest version
|
||||
- **Installs Dependencies**: Updates Node.js packages and dependencies
|
||||
- **Rebuilds Application**: Compiles the application with latest changes
|
||||
- **Restarts Server**: Automatically restarts the application server
|
||||
|
||||
**How to Update:**
|
||||
|
||||
**Automatic Update (Recommended):**
|
||||
- Click the "Update Now" button when an update is available
|
||||
- The system will handle everything automatically
|
||||
- You'll see a progress overlay with update logs
|
||||
- The page will reload automatically when complete
|
||||
|
||||
**Manual Update (Advanced):**
|
||||
If automatic update fails, you can update manually:
|
||||
```bash
|
||||
# Navigate to the application directory
|
||||
cd $PVESCRIPTLOCAL_DIR
|
||||
|
||||
# Pull latest changes
|
||||
git pull
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Build the application
|
||||
npm run build
|
||||
|
||||
# Start the application
|
||||
npm start
|
||||
```
|
||||
|
||||
**Update Process:**
|
||||
1. **Check for Updates**: System automatically checks GitHub for new releases
|
||||
2. **Download Update**: Downloads the latest release files
|
||||
3. **Backup Current Version**: Creates backup of current installation
|
||||
4. **Install New Version**: Replaces files and updates dependencies
|
||||
5. **Build Application**: Compiles the updated code
|
||||
6. **Restart Server**: Stops old server and starts new version
|
||||
7. **Reload Page**: Automatically refreshes the browser
|
||||
|
||||
**Release Notes:**
|
||||
Click the external link icon next to the update button to view detailed release notes on GitHub:
|
||||
- See what's new in each version
|
||||
- Read about bug fixes and improvements
|
||||
- Check for any breaking changes
|
||||
- View installation requirements
|
||||
|
||||
**Important Notes:**
|
||||
- **Backup**: Your data and settings are preserved during updates
|
||||
- **Downtime**: Brief downtime occurs during the update process
|
||||
- **Compatibility**: Updates maintain backward compatibility with your data
|
||||
- **Rollback**: If issues occur, you can manually revert to previous version
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
|
||||
2180
package-lock.json
generated
2180
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@@ -22,10 +22,12 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"@prisma/client": "^6.17.1",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
||||
"@radix-ui/react-slot": "^1.2.3",
|
||||
"@t3-oss/env-nextjs": "^0.13.8",
|
||||
"@tanstack/react-query": "^5.90.3",
|
||||
"@tailwindcss/typography": "^0.5.19",
|
||||
"@tanstack/react-query": "^5.90.5",
|
||||
"@trpc/client": "^11.6.0",
|
||||
"@trpc/react-query": "^11.6.0",
|
||||
"@trpc/server": "^11.6.0",
|
||||
@@ -35,17 +37,18 @@
|
||||
"@xterm/addon-web-links": "^0.11.0",
|
||||
"@xterm/xterm": "^5.5.0",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"better-sqlite3": "^12.4.1",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"lucide-react": "^0.545.0",
|
||||
"lucide-react": "^0.546.0",
|
||||
"next": "^15.5.5",
|
||||
"node-pty": "^1.0.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-syntax-highlighter": "^15.6.6",
|
||||
"refractor": "^5.0.0",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"server-only": "^0.0.1",
|
||||
"strip-ansi": "^7.1.2",
|
||||
"superjson": "^2.2.1",
|
||||
@@ -62,18 +65,19 @@
|
||||
"@types/bcryptjs": "^3.0.0",
|
||||
"@types/better-sqlite3": "^7.6.8",
|
||||
"@types/jsonwebtoken": "^9.0.10",
|
||||
"@types/node": "^24.7.2",
|
||||
"@types/node": "^24.8.0",
|
||||
"@types/react": "^19.0.0",
|
||||
"@types/react-dom": "^19.2.2",
|
||||
"@vitejs/plugin-react": "^5.0.2",
|
||||
"@vitest/coverage-v8": "^3.2.4",
|
||||
"@vitest/ui": "^3.2.4",
|
||||
"eslint": "^9.23.0",
|
||||
"eslint-config-next": "^15.5.4",
|
||||
"eslint-config-next": "^15.5.5",
|
||||
"jsdom": "^27.0.0",
|
||||
"postcss": "^8.5.3",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-tailwindcss": "^0.6.11",
|
||||
"prettier-plugin-tailwindcss": "^0.7.0",
|
||||
"prisma": "^6.17.1",
|
||||
"tailwindcss": "^4.1.14",
|
||||
"typescript": "^5.8.2",
|
||||
"typescript-eslint": "^8.46.1",
|
||||
|
||||
74
prisma/migrations/20251017092130_init/migration.sql
Normal file
74
prisma/migrations/20251017092130_init/migration.sql
Normal file
@@ -0,0 +1,74 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "installed_scripts" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"script_name" TEXT NOT NULL,
|
||||
"script_path" TEXT NOT NULL,
|
||||
"container_id" TEXT,
|
||||
"server_id" INTEGER,
|
||||
"execution_mode" TEXT NOT NULL,
|
||||
"installation_date" DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
"status" TEXT NOT NULL,
|
||||
"output_log" TEXT,
|
||||
"web_ui_ip" TEXT,
|
||||
"web_ui_port" INTEGER,
|
||||
CONSTRAINT "installed_scripts_server_id_fkey" FOREIGN KEY ("server_id") REFERENCES "servers" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "servers" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"name" TEXT NOT NULL,
|
||||
"ip" TEXT NOT NULL,
|
||||
"user" TEXT NOT NULL,
|
||||
"password" TEXT,
|
||||
"auth_type" TEXT DEFAULT 'password',
|
||||
"ssh_key" TEXT,
|
||||
"ssh_key_passphrase" TEXT,
|
||||
"ssh_port" INTEGER DEFAULT 22,
|
||||
"color" TEXT,
|
||||
"created_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" DATETIME,
|
||||
"ssh_key_path" TEXT,
|
||||
"key_generated" BOOLEAN DEFAULT false
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "lxc_configs" (
|
||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"installed_script_id" INTEGER NOT NULL,
|
||||
"arch" TEXT,
|
||||
"cores" INTEGER,
|
||||
"memory" INTEGER,
|
||||
"hostname" TEXT,
|
||||
"swap" INTEGER,
|
||||
"onboot" INTEGER,
|
||||
"ostype" TEXT,
|
||||
"unprivileged" INTEGER,
|
||||
"net_name" TEXT,
|
||||
"net_bridge" TEXT,
|
||||
"net_hwaddr" TEXT,
|
||||
"net_ip_type" TEXT,
|
||||
"net_ip" TEXT,
|
||||
"net_gateway" TEXT,
|
||||
"net_type" TEXT,
|
||||
"net_vlan" INTEGER,
|
||||
"rootfs_storage" TEXT,
|
||||
"rootfs_size" TEXT,
|
||||
"feature_keyctl" INTEGER,
|
||||
"feature_nesting" INTEGER,
|
||||
"feature_fuse" INTEGER,
|
||||
"feature_mount" TEXT,
|
||||
"tags" TEXT,
|
||||
"advanced_config" TEXT,
|
||||
"synced_at" DATETIME,
|
||||
"config_hash" TEXT,
|
||||
"created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" DATETIME NOT NULL,
|
||||
CONSTRAINT "lxc_configs_installed_script_id_fkey" FOREIGN KEY ("installed_script_id") REFERENCES "installed_scripts" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "servers_name_key" ON "servers"("name");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "lxc_configs_installed_script_id_key" ON "lxc_configs"("installed_script_id");
|
||||
3
prisma/migrations/migration_lock.toml
Normal file
3
prisma/migrations/migration_lock.toml
Normal file
@@ -0,0 +1,3 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "sqlite"
|
||||
97
prisma/schema.prisma
Normal file
97
prisma/schema.prisma
Normal file
@@ -0,0 +1,97 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "sqlite"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
model InstalledScript {
|
||||
id Int @id @default(autoincrement())
|
||||
script_name String
|
||||
script_path String
|
||||
container_id String?
|
||||
server_id Int?
|
||||
execution_mode String
|
||||
installation_date DateTime? @default(now())
|
||||
status String
|
||||
output_log String?
|
||||
web_ui_ip String?
|
||||
web_ui_port Int?
|
||||
server Server? @relation(fields: [server_id], references: [id], onDelete: SetNull)
|
||||
lxc_config LXCConfig?
|
||||
|
||||
@@map("installed_scripts")
|
||||
}
|
||||
|
||||
model Server {
|
||||
id Int @id @default(autoincrement())
|
||||
name String @unique
|
||||
ip String
|
||||
user String
|
||||
password String?
|
||||
auth_type String? @default("password")
|
||||
ssh_key String?
|
||||
ssh_key_passphrase String?
|
||||
ssh_port Int? @default(22)
|
||||
color String?
|
||||
created_at DateTime? @default(now())
|
||||
updated_at DateTime? @updatedAt
|
||||
ssh_key_path String?
|
||||
key_generated Boolean? @default(false)
|
||||
installed_scripts InstalledScript[]
|
||||
|
||||
@@map("servers")
|
||||
}
|
||||
|
||||
model LXCConfig {
|
||||
id Int @id @default(autoincrement())
|
||||
installed_script_id Int @unique
|
||||
installed_script InstalledScript @relation(fields: [installed_script_id], references: [id], onDelete: Cascade)
|
||||
|
||||
// Basic settings
|
||||
arch String?
|
||||
cores Int?
|
||||
memory Int?
|
||||
hostname String?
|
||||
swap Int?
|
||||
onboot Int? // 0 or 1
|
||||
ostype String?
|
||||
unprivileged Int? // 0 or 1
|
||||
|
||||
// Network settings (net0)
|
||||
net_name String?
|
||||
net_bridge String?
|
||||
net_hwaddr String?
|
||||
net_ip_type String? // 'dhcp' or 'static'
|
||||
net_ip String? // IP with CIDR for static
|
||||
net_gateway String?
|
||||
net_type String? // usually 'veth'
|
||||
net_vlan Int?
|
||||
|
||||
// Storage
|
||||
rootfs_storage String?
|
||||
rootfs_size String?
|
||||
|
||||
// Features
|
||||
feature_keyctl Int? // 0 or 1
|
||||
feature_nesting Int? // 0 or 1
|
||||
feature_fuse Int? // 0 or 1
|
||||
feature_mount String? // other mount features
|
||||
|
||||
// Tags
|
||||
tags String?
|
||||
|
||||
// Advanced/raw settings (lxc.* entries and other uncommon settings)
|
||||
advanced_config String? // Text blob for advanced settings
|
||||
|
||||
// Metadata
|
||||
synced_at DateTime?
|
||||
config_hash String? // Hash of server config for diff detection
|
||||
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
|
||||
@@map("lxc_configs")
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
35
scripts/json/guardian.json
Normal file
35
scripts/json/guardian.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Guardian",
|
||||
"slug": "guardian",
|
||||
"categories": [
|
||||
13
|
||||
],
|
||||
"date_created": "2025-10-15",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md",
|
||||
"config_path": "/opt/guardian/.env",
|
||||
"website": "https://github.com/HydroshieldMKII/Guardian",
|
||||
"logo": null,
|
||||
"description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/guardian.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 20,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
40
scripts/json/limesurvey.json
Normal file
40
scripts/json/limesurvey.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "LimeSurvey",
|
||||
"slug": "limesurvey",
|
||||
"categories": [
|
||||
25
|
||||
],
|
||||
"date_created": "2025-10-15",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://www.limesurvey.org/manual/LimeSurvey_Manual",
|
||||
"config_path": "",
|
||||
"website": "https://community.limesurvey.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/limesurvey.webp",
|
||||
"description": "LimeSurvey is the simple, quick and anonymous online survey tool that's bursting with juicy insights. Calling students, professionals and enterprises: design a survey and get the best insights, it’s free and as easy as squeezing a lime. Make a free online survey now!",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/limesurvey.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "You will need to input database credentials into LimeSurvey installer. Use `cat ~/limesurvey.creds` inside LXC.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 3,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"ram": 3072,
|
||||
"hdd": 4,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 7,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 10,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"type": "default",
|
||||
"script": "ct/myip.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 12,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 3072,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 8192,
|
||||
"hdd": 25,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 12,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 6144,
|
||||
"hdd": 6,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 20,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 7,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 12,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 7,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 3072,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"documentation": "https://docs.planka.cloud/",
|
||||
"website": "https://planka.app/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/planka.webp",
|
||||
"config_path": "/opt/planka/planka/.env",
|
||||
"config_path": "/opt/planka/.env",
|
||||
"description": "Planka is a powerful, project management platform that transforms how teams collaborate. Create projects with multiple boards, organize tasks with intuitive drag-and-drop cards, attach files, write rich markdown descriptions, set due dates, assign team members, and keep conversations flowing with comments and labels—all with seamless real-time updates and smart notifications.",
|
||||
"install_methods": [
|
||||
{
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 16,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user