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 |
@@ -25,4 +25,5 @@ AUTH_USERNAME=
|
|||||||
AUTH_PASSWORD_HASH=
|
AUTH_PASSWORD_HASH=
|
||||||
AUTH_ENABLED=false
|
AUTH_ENABLED=false
|
||||||
AUTH_SETUP_COMPLETED=false
|
AUTH_SETUP_COMPLETED=false
|
||||||
JWT_SECRET=
|
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
|
- automated
|
||||||
|
|
||||||
categories:
|
categories:
|
||||||
|
- title: "Breaking Changes"
|
||||||
|
labels:
|
||||||
|
- breaking
|
||||||
- title: "🚀 Features"
|
- title: "🚀 Features"
|
||||||
labels:
|
labels:
|
||||||
- feature
|
- feature
|
||||||
|
|||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -16,6 +16,9 @@
|
|||||||
db.sqlite
|
db.sqlite
|
||||||
data/settings.db
|
data/settings.db
|
||||||
|
|
||||||
|
# ssh keys (sensitive)
|
||||||
|
data/ssh-keys/
|
||||||
|
|
||||||
# next.js
|
# next.js
|
||||||
/.next/
|
/.next/
|
||||||
/out/
|
/out/
|
||||||
@@ -46,4 +49,5 @@ yarn-error.log*
|
|||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
|
|
||||||
# idea files
|
# idea files
|
||||||
.idea
|
.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
|
- **Backup**: Copy `data/settings.db` to backup your server configurations
|
||||||
- **Reset**: Delete `data/settings.db` to reset all 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
|
## 📁 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"
|
"typecheck": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@prisma/client": "^6.17.1",
|
||||||
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
||||||
"@radix-ui/react-slot": "^1.2.3",
|
"@radix-ui/react-slot": "^1.2.3",
|
||||||
"@t3-oss/env-nextjs": "^0.13.8",
|
"@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/client": "^11.6.0",
|
||||||
"@trpc/react-query": "^11.6.0",
|
"@trpc/react-query": "^11.6.0",
|
||||||
"@trpc/server": "^11.6.0",
|
"@trpc/server": "^11.6.0",
|
||||||
@@ -35,17 +37,18 @@
|
|||||||
"@xterm/addon-web-links": "^0.11.0",
|
"@xterm/addon-web-links": "^0.11.0",
|
||||||
"@xterm/xterm": "^5.5.0",
|
"@xterm/xterm": "^5.5.0",
|
||||||
"bcryptjs": "^3.0.2",
|
"bcryptjs": "^3.0.2",
|
||||||
"better-sqlite3": "^12.4.1",
|
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"lucide-react": "^0.545.0",
|
"lucide-react": "^0.546.0",
|
||||||
"next": "^15.5.5",
|
"next": "^15.5.5",
|
||||||
"node-pty": "^1.0.0",
|
"node-pty": "^1.0.0",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "^19.0.0",
|
||||||
|
"react-markdown": "^10.1.0",
|
||||||
"react-syntax-highlighter": "^15.6.6",
|
"react-syntax-highlighter": "^15.6.6",
|
||||||
"refractor": "^5.0.0",
|
"refractor": "^5.0.0",
|
||||||
|
"remark-gfm": "^4.0.1",
|
||||||
"server-only": "^0.0.1",
|
"server-only": "^0.0.1",
|
||||||
"strip-ansi": "^7.1.2",
|
"strip-ansi": "^7.1.2",
|
||||||
"superjson": "^2.2.1",
|
"superjson": "^2.2.1",
|
||||||
@@ -62,18 +65,19 @@
|
|||||||
"@types/bcryptjs": "^3.0.0",
|
"@types/bcryptjs": "^3.0.0",
|
||||||
"@types/better-sqlite3": "^7.6.8",
|
"@types/better-sqlite3": "^7.6.8",
|
||||||
"@types/jsonwebtoken": "^9.0.10",
|
"@types/jsonwebtoken": "^9.0.10",
|
||||||
"@types/node": "^24.7.2",
|
"@types/node": "^24.8.0",
|
||||||
"@types/react": "^19.0.0",
|
"@types/react": "^19.0.0",
|
||||||
"@types/react-dom": "^19.2.2",
|
"@types/react-dom": "^19.2.2",
|
||||||
"@vitejs/plugin-react": "^5.0.2",
|
"@vitejs/plugin-react": "^5.0.2",
|
||||||
"@vitest/coverage-v8": "^3.2.4",
|
"@vitest/coverage-v8": "^3.2.4",
|
||||||
"@vitest/ui": "^3.2.4",
|
"@vitest/ui": "^3.2.4",
|
||||||
"eslint": "^9.23.0",
|
"eslint": "^9.23.0",
|
||||||
"eslint-config-next": "^15.5.4",
|
"eslint-config-next": "^15.5.5",
|
||||||
"jsdom": "^27.0.0",
|
"jsdom": "^27.0.0",
|
||||||
"postcss": "^8.5.3",
|
"postcss": "^8.5.3",
|
||||||
"prettier": "^3.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",
|
"tailwindcss": "^4.1.14",
|
||||||
"typescript": "^5.8.2",
|
"typescript": "^5.8.2",
|
||||||
"typescript-eslint": "^8.46.1",
|
"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,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"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,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 20,
|
"hdd": 20,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 20,
|
"hdd": 20,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"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,
|
"ram": 1024,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
"ram": 3072,
|
"ram": 3072,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 7,
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/myip.sh",
|
"script": "ct/myip.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 2,
|
||||||
"ram": 512,
|
"ram": 1024,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 12,
|
"hdd": 12,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 3072,
|
"ram": 3072,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 8192,
|
"ram": 8192,
|
||||||
"hdd": 25,
|
"hdd": 25,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 12,
|
"hdd": 12,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 6144,
|
"ram": 6144,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 20,
|
"hdd": 20,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 7,
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 12,
|
"hdd": 12,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 7,
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 3072,
|
"ram": 3072,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 3,
|
"hdd": 3,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 2,
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"documentation": "https://docs.planka.cloud/",
|
"documentation": "https://docs.planka.cloud/",
|
||||||
"website": "https://planka.app/",
|
"website": "https://planka.app/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/planka.webp",
|
"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.",
|
"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": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 16,
|
"hdd": 16,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"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