Add comprehensive README + Cloudflare Worker for install.jarviscli.dev
- Full README with all CLI flags documented in tables - Quick install, automated install, panel+wings, wings-only examples - Cloudflare Worker: serves install.sh for curl, landing page for browsers - Landing page with dark theme, click-to-copy, feature grid
This commit is contained in:
parent
cbc8ee39ff
commit
55b8a0e6da
2 changed files with 330 additions and 111 deletions
266
README.md
266
README.md
|
|
@ -1,144 +1,204 @@
|
||||||
# 🐦 Pelican Installer
|
# 🐦 Pelican Installer
|
||||||
|
|
||||||
The best way to install [Pelican Panel](https://pelican.dev) & Wings — one script, fully automated, production-ready.
|
The best way to install [Pelican Panel](https://pelican.dev) & Wings — one command, fully automated.
|
||||||
|
|
||||||
## Quick Start
|
> Better than the pterodactyl-installer. Every option configurable via CLI flags, full web server configs, Redis support, auto admin creation, and more.
|
||||||
|
|
||||||
|
## Quick Install
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Interactive install (asks you everything)
|
curl -sSL https://install.jarviscli.dev | sudo bash
|
||||||
sudo bash <(curl -sSL https://raw.githubusercontent.com/everestmcarthur/pelican-installer/main/install.sh)
|
|
||||||
|
|
||||||
# Or download first
|
|
||||||
curl -sSL -o install.sh https://raw.githubusercontent.com/everestmcarthur/pelican-installer/main/install.sh
|
|
||||||
sudo bash install.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Automated Install (No Prompts)
|
Or directly from GitHub:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Panel with Nginx + PostgreSQL + SSL
|
curl -sSL https://raw.githubusercontent.com/everestmcarthur/pelican-installer/main/install.sh | sudo bash
|
||||||
sudo bash install.sh install --panel \
|
```
|
||||||
|
|
||||||
|
## Fully Automated Install (Non-Interactive)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -sSL https://install.jarviscli.dev | sudo bash -s -- install \
|
||||||
|
--panel \
|
||||||
--domain panel.example.com \
|
--domain panel.example.com \
|
||||||
--webserver nginx \
|
--webserver nginx \
|
||||||
--database postgres \
|
--database postgres \
|
||||||
--ssl --email admin@example.com \
|
--ssl --email you@example.com \
|
||||||
|
--cache-driver redis \
|
||||||
|
--session-driver redis \
|
||||||
|
--queue-driver redis \
|
||||||
|
--admin-email admin@example.com \
|
||||||
|
--admin-user admin \
|
||||||
|
--admin-pass S3cureP@ss \
|
||||||
--timezone America/New_York \
|
--timezone America/New_York \
|
||||||
-y
|
-y
|
||||||
|
```
|
||||||
|
|
||||||
# Wings only
|
## Panel + Wings (Same Machine)
|
||||||
sudo bash install.sh install --wings -y
|
|
||||||
|
|
||||||
# Panel + Wings on same machine
|
```bash
|
||||||
sudo bash install.sh install --both \
|
curl -sSL https://install.jarviscli.dev | sudo bash -s -- install \
|
||||||
|
--both \
|
||||||
--domain panel.example.com \
|
--domain panel.example.com \
|
||||||
--webserver caddy \
|
--wings-domain node.example.com \
|
||||||
|
--wings-proxy --wings-ssl \
|
||||||
|
--webserver nginx \
|
||||||
--database postgres \
|
--database postgres \
|
||||||
|
--ssl --email you@example.com \
|
||||||
-y
|
-y
|
||||||
```
|
```
|
||||||
|
|
||||||
## All CLI Flags
|
## Wings Only (With Reverse Proxy)
|
||||||
|
|
||||||
| Flag | Description | Default |
|
|
||||||
|------|-------------|---------|
|
|
||||||
| `install` / `update` / `uninstall` | Action to perform | `install` |
|
|
||||||
| `--panel` | Install/update Panel | — |
|
|
||||||
| `--wings` | Install/update Wings | — |
|
|
||||||
| `--both` | Install/update Panel + Wings | — |
|
|
||||||
| `--domain FQDN` | Panel domain name | *(asked)* |
|
|
||||||
| `--webserver WS` | `nginx`, `apache`, or `caddy` | *(asked)* |
|
|
||||||
| `--database DB` | `sqlite`, `mysql`, `mariadb`, or `postgres` | *(asked)* |
|
|
||||||
| `--db-host HOST` | Database host | `127.0.0.1` |
|
|
||||||
| `--db-port PORT` | Database port | *auto from DB type* |
|
|
||||||
| `--db-name NAME` | Database name | `pelican` |
|
|
||||||
| `--db-user USER` | Database user | `pelican` |
|
|
||||||
| `--db-password PASS` | Database password | *auto-generated* |
|
|
||||||
| `--ssl` | Enable SSL via Let's Encrypt | *(asked)* |
|
|
||||||
| `--no-ssl` | Disable SSL | — |
|
|
||||||
| `--email EMAIL` | Email for Let's Encrypt | *(asked if --ssl)* |
|
|
||||||
| `--timezone TZ` | Server timezone | `UTC` |
|
|
||||||
| `--yes`, `-y` | Skip all confirmation prompts | `false` |
|
|
||||||
|
|
||||||
## Environment Variables
|
|
||||||
|
|
||||||
Every flag can also be set via environment variable:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export FQDN="panel.example.com"
|
curl -sSL https://install.jarviscli.dev | sudo bash -s -- install \
|
||||||
export WEBSERVER="nginx"
|
--wings \
|
||||||
export DB_CHOICE="postgres"
|
--wings-domain node.example.com \
|
||||||
export DB_PASSWORD="my_secure_password"
|
--wings-proxy \
|
||||||
export CONFIGURE_SSL=true
|
--webserver caddy \
|
||||||
export EMAIL="admin@example.com"
|
-y
|
||||||
export ASSUME_YES=true
|
|
||||||
sudo -E bash install.sh install --panel
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
| Feature | This Installer | pterodactyl-installer.se |
|
|
||||||
|---------|:-:|:-:|
|
|
||||||
| Pelican Panel support | ✅ | ❌ (Pterodactyl only) |
|
|
||||||
| Full CLI flags (automated installs) | ✅ | ❌ |
|
|
||||||
| Environment variable config | ✅ | ❌ |
|
|
||||||
| Nginx | ✅ | ✅ |
|
|
||||||
| Apache | ✅ | ✅ |
|
|
||||||
| Caddy (auto-SSL) | ✅ | ❌ |
|
|
||||||
| SQLite | ✅ | ❌ |
|
|
||||||
| MySQL | ✅ | ✅ |
|
|
||||||
| MariaDB | ✅ | ✅ |
|
|
||||||
| PostgreSQL | ✅ | ❌ |
|
|
||||||
| Auto-configures `.env` | ✅ | ❌ |
|
|
||||||
| Runs database migrations | ✅ | ❌ |
|
|
||||||
| PostgreSQL `pg_hba.conf` auth | ✅ | ❌ |
|
|
||||||
| Writes DB password to `.env` | ✅ | ❌ |
|
|
||||||
| Let's Encrypt SSL | ✅ | ✅ |
|
|
||||||
| Post-install health checks | ✅ | ❌ |
|
|
||||||
| HTTP connectivity check | ✅ | ❌ |
|
|
||||||
| Queue worker systemd service | ✅ | ❌ |
|
|
||||||
| Cron auto-setup | ✅ | ❌ |
|
|
||||||
| Step-by-step progress (X/Y) | ✅ | ❌ |
|
|
||||||
| Update command | ✅ | ❌ |
|
|
||||||
| Uninstall command | ✅ | ❌ |
|
|
||||||
| ARM64 support | ✅ | ❌ |
|
|
||||||
| Comprehensive logging | ✅ | ❌ |
|
|
||||||
| Single script (no deps) | ✅ | ✅ |
|
|
||||||
|
|
||||||
## Update & Uninstall
|
## Update & Uninstall
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Update panel
|
# Update everything
|
||||||
sudo bash install.sh update --panel
|
|
||||||
|
|
||||||
# Update wings
|
|
||||||
sudo bash install.sh update --wings
|
|
||||||
|
|
||||||
# Update both
|
|
||||||
sudo bash install.sh update --both -y
|
sudo bash install.sh update --both -y
|
||||||
|
|
||||||
# Uninstall (interactive)
|
# Uninstall
|
||||||
sudo bash install.sh uninstall
|
sudo bash install.sh uninstall
|
||||||
```
|
```
|
||||||
|
|
||||||
## Supported Systems
|
## All CLI Flags
|
||||||
|
|
||||||
| OS | Versions |
|
### Components
|
||||||
|----|----------|
|
| Flag | Description |
|
||||||
| Ubuntu | 22.04, 24.04 |
|
|------|-------------|
|
||||||
| Debian | 11, 12 |
|
| `--panel` | Install Panel |
|
||||||
| AlmaLinux | 8, 9 |
|
| `--wings` | Install Wings |
|
||||||
| Rocky Linux | 8, 9 |
|
| `--both` | Install Panel + Wings |
|
||||||
| CentOS Stream | 9 |
|
|
||||||
|
|
||||||
Both `x86_64` and `ARM64` architectures supported.
|
### Panel — General
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| `--domain FQDN` | Panel domain name | *(required)* |
|
||||||
|
| `--app-name NAME` | Application name | `Pelican` |
|
||||||
|
| `--webserver WS` | `nginx`, `apache`, or `caddy` | *(asked)* |
|
||||||
|
| `--ssl` | Enable SSL via Let's Encrypt | *(asked)* |
|
||||||
|
| `--no-ssl` | Disable SSL | |
|
||||||
|
| `--email EMAIL` | Let's Encrypt email | *(asked if SSL)* |
|
||||||
|
| `--timezone TZ` | Timezone | `UTC` |
|
||||||
|
|
||||||
## Logs
|
### Panel — Admin User (Skip Web Installer)
|
||||||
|
| Flag | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `--admin-email EMAIL` | Admin email |
|
||||||
|
| `--admin-user USER` | Admin username |
|
||||||
|
| `--admin-pass PASS` | Admin password |
|
||||||
|
|
||||||
All installer output is logged to `/var/log/pelican-installer.log`.
|
> If all three are provided, the admin user is created automatically and the web installer is skipped entirely.
|
||||||
|
|
||||||
```bash
|
### Panel — Database
|
||||||
tail -f /var/log/pelican-installer.log
|
| Flag | Description | Default |
|
||||||
```
|
|------|-------------|---------|
|
||||||
|
| `--database DB` | `sqlite`, `mysql`, `mariadb`, `postgres` | *(asked)* |
|
||||||
|
| `--db-host HOST` | Database host | `127.0.0.1` |
|
||||||
|
| `--db-port PORT` | Database port | *auto-detected* |
|
||||||
|
| `--db-name NAME` | Database name | `pelican` |
|
||||||
|
| `--db-user USER` | Database user | `pelican` |
|
||||||
|
| `--db-password PASS` | Database password | *auto-generated* |
|
||||||
|
|
||||||
|
### Panel — Cache
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| `--cache-driver DRV` | `file` or `redis` | `file` |
|
||||||
|
| `--redis-host HOST` | Redis host | `127.0.0.1` |
|
||||||
|
| `--redis-port PORT` | Redis port | `6379` |
|
||||||
|
| `--redis-user USER` | Redis username (ACL) | |
|
||||||
|
| `--redis-password PW` | Redis password | |
|
||||||
|
|
||||||
|
> When using Redis + localhost, Redis server is auto-installed.
|
||||||
|
|
||||||
|
### Panel — Session
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| `--session-driver DRV` | `file`, `database`, `cookie`, `redis` | `file` |
|
||||||
|
|
||||||
|
### Panel — Queue
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| `--queue-driver DRV` | `database`, `redis`, `sync` | `database` |
|
||||||
|
|
||||||
|
### Wings
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| `--wings-domain FQDN` | Wings node domain | |
|
||||||
|
| `--wings-port PORT` | Wings daemon port | `8080` |
|
||||||
|
| `--wings-proxy` | Set up reverse proxy | |
|
||||||
|
| `--wings-ssl` | SSL for Wings proxy | |
|
||||||
|
|
||||||
|
### General
|
||||||
|
| Flag | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `--yes`, `-y` | Skip all confirmation prompts |
|
||||||
|
| `--help`, `-h` | Show help |
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Interactive & Non-Interactive** — Full wizard for beginners, CLI flags for automation
|
||||||
|
- **3 Web Servers** — Nginx, Apache, Caddy (with auto-SSL)
|
||||||
|
- **4 Databases** — SQLite, MySQL, MariaDB, PostgreSQL
|
||||||
|
- **Redis Everything** — Cache, session, and queue with auto-install
|
||||||
|
- **Wings Reverse Proxy** — Full config with WebSocket support for console/file manager on all 3 web servers
|
||||||
|
- **Auto Admin User** — Skip the web installer entirely
|
||||||
|
- **SSL Everywhere** — Let's Encrypt for Panel + Wings in one pass
|
||||||
|
- **Health Checks** — Verifies PHP, web server, database, Redis, .env, HTTP response
|
||||||
|
- **Update & Uninstall** — Built-in commands for lifecycle management
|
||||||
|
- **ARM64 Support** — Works on x86_64 and ARM machines
|
||||||
|
- **Progress Indicators** — Step counter, spinners, color-coded output
|
||||||
|
- **Credential Boxes** — Database password, APP_KEY, admin creds displayed clearly
|
||||||
|
- **Comprehensive Logging** — Everything logged to `/var/log/pelican-installer.log`
|
||||||
|
|
||||||
|
## Supported Operating Systems
|
||||||
|
|
||||||
|
- Ubuntu 20.04, 22.04, 24.04
|
||||||
|
- Debian 11, 12
|
||||||
|
- AlmaLinux 8, 9
|
||||||
|
- Rocky Linux 8, 9
|
||||||
|
- CentOS Stream 8, 9
|
||||||
|
- RHEL 8, 9
|
||||||
|
|
||||||
|
## What It Does
|
||||||
|
|
||||||
|
### Panel Install
|
||||||
|
1. Detects OS and architecture
|
||||||
|
2. Runs preflight checks (root, memory, disk, tools)
|
||||||
|
3. Installs PHP 8.2/8.3/8.4 with all required extensions
|
||||||
|
4. Installs Redis (if selected for cache/session/queue)
|
||||||
|
5. Installs and configures your chosen database
|
||||||
|
6. Installs and configures your chosen web server
|
||||||
|
7. Obtains SSL certificates (if enabled)
|
||||||
|
8. Downloads Pelican Panel + Composer dependencies
|
||||||
|
9. Writes full `.env` configuration (no web installer needed)
|
||||||
|
10. Runs database migrations and seeders
|
||||||
|
11. Creates admin user (if credentials provided)
|
||||||
|
12. Sets up queue worker systemd service
|
||||||
|
13. Configures cron job for scheduled tasks
|
||||||
|
14. Runs health checks
|
||||||
|
|
||||||
|
### Wings Install
|
||||||
|
1. Installs Docker CE
|
||||||
|
2. Downloads Wings binary for your architecture
|
||||||
|
3. Creates systemd service
|
||||||
|
4. Configures reverse proxy (if selected)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
GPL-3.0 — See [LICENSE](LICENSE)
|
GPL-3.0 — see [LICENSE](LICENSE).
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Built for [JarvisCLI](https://jarviscli.dev) by the Pelican Installer team.
|
||||||
|
|
||||||
|
Pelican Panel is created by [pelican-dev](https://github.com/pelican-dev) and is licensed under AGPL-3.0.
|
||||||
|
|
|
||||||
159
cloudflare-worker/worker.js
Normal file
159
cloudflare-worker/worker.js
Normal file
|
|
@ -0,0 +1,159 @@
|
||||||
|
/**
|
||||||
|
* Cloudflare Worker for install.jarviscli.dev
|
||||||
|
*
|
||||||
|
* curl -sSL https://install.jarviscli.dev | sudo bash → serves install.sh
|
||||||
|
* Browser visit → shows landing page
|
||||||
|
*/
|
||||||
|
|
||||||
|
const SCRIPT_URL = 'https://raw.githubusercontent.com/everestmcarthur/pelican-installer/main/install.sh';
|
||||||
|
|
||||||
|
function isCurl(request) {
|
||||||
|
const ua = (request.headers.get('User-Agent') || '').toLowerCase();
|
||||||
|
const accept = (request.headers.get('Accept') || '');
|
||||||
|
// curl, wget, httpie, fetch without html accept
|
||||||
|
return ua.includes('curl') || ua.includes('wget') || ua.includes('httpie') ||
|
||||||
|
ua.includes('powershell') || !accept.includes('text/html');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleRequest(request) {
|
||||||
|
const url = new URL(request.url);
|
||||||
|
|
||||||
|
// Direct script path always returns script
|
||||||
|
if (url.pathname === '/install.sh' || url.pathname === '/script') {
|
||||||
|
return serveScript();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Root: detect curl vs browser
|
||||||
|
if (url.pathname === '/' || url.pathname === '') {
|
||||||
|
if (isCurl(request)) {
|
||||||
|
return serveScript();
|
||||||
|
}
|
||||||
|
return serveLanding();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 404
|
||||||
|
return new Response('Not Found', { status: 404 });
|
||||||
|
}
|
||||||
|
|
||||||
|
async function serveScript() {
|
||||||
|
const resp = await fetch(SCRIPT_URL, {
|
||||||
|
cf: { cacheTtl: 300, cacheEverything: true }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!resp.ok) {
|
||||||
|
return new Response('#!/bin/bash\necho "Error: Could not fetch installer. Try: curl -sSL https://raw.githubusercontent.com/everestmcarthur/pelican-installer/main/install.sh | sudo bash"\nexit 1', {
|
||||||
|
status: 502,
|
||||||
|
headers: { 'Content-Type': 'text/plain' }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const script = await resp.text();
|
||||||
|
return new Response(script, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'text/plain; charset=utf-8',
|
||||||
|
'Cache-Control': 'public, max-age=300',
|
||||||
|
'X-Content-Type-Options': 'nosniff'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function serveLanding() {
|
||||||
|
const html = `<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Pelican Installer — install.jarviscli.dev</title>
|
||||||
|
<style>
|
||||||
|
:root { --bg: #0f172a; --card: #1e293b; --border: #334155; --text: #e2e8f0; --dim: #94a3b8; --accent: #38bdf8; --green: #4ade80; --purple: #a78bfa; }
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body { font-family: 'SF Mono', 'Fira Code', 'JetBrains Mono', monospace; background: var(--bg); color: var(--text); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 2rem; }
|
||||||
|
.container { max-width: 680px; width: 100%; }
|
||||||
|
h1 { font-size: 2rem; margin-bottom: 0.5rem; }
|
||||||
|
h1 span { color: var(--accent); }
|
||||||
|
.subtitle { color: var(--dim); margin-bottom: 2rem; font-size: 0.95rem; }
|
||||||
|
.card { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 1.5rem; margin-bottom: 1.5rem; }
|
||||||
|
.card-title { color: var(--accent); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1rem; }
|
||||||
|
.cmd { background: #0d1117; border: 1px solid var(--border); border-radius: 8px; padding: 1rem 1.25rem; font-size: 0.95rem; position: relative; cursor: pointer; transition: border-color 0.2s; overflow-x: auto; }
|
||||||
|
.cmd:hover { border-color: var(--accent); }
|
||||||
|
.cmd code { color: var(--green); white-space: nowrap; }
|
||||||
|
.cmd .copy-hint { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--dim); font-size: 0.75rem; opacity: 0; transition: opacity 0.2s; }
|
||||||
|
.cmd:hover .copy-hint { opacity: 1; }
|
||||||
|
.cmd.copied .copy-hint { color: var(--green); opacity: 1; }
|
||||||
|
.features { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
|
||||||
|
.feature { display: flex; align-items: start; gap: 0.5rem; font-size: 0.85rem; color: var(--dim); }
|
||||||
|
.feature::before { content: '✓'; color: var(--green); font-weight: bold; flex-shrink: 0; }
|
||||||
|
.links { display: flex; gap: 1rem; margin-top: 1.5rem; }
|
||||||
|
.links a { color: var(--accent); text-decoration: none; font-size: 0.85rem; }
|
||||||
|
.links a:hover { text-decoration: underline; }
|
||||||
|
.version { color: var(--purple); font-size: 0.8rem; margin-top: 1.5rem; text-align: center; }
|
||||||
|
@media (max-width: 600px) { .features { grid-template-columns: 1fr; } }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>🐦 <span>Pelican Installer</span></h1>
|
||||||
|
<p class="subtitle">The best way to install Pelican Panel & Wings — one command, fully automated.</p>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Quick Install</div>
|
||||||
|
<div class="cmd" onclick="copyCmd(this, 'curl -sSL https://install.jarviscli.dev | sudo bash')">
|
||||||
|
<code>curl -sSL https://install.jarviscli.dev | sudo bash</code>
|
||||||
|
<span class="copy-hint">click to copy</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Or with options</div>
|
||||||
|
<div class="cmd" onclick="copyCmd(this, \`curl -sSL https://install.jarviscli.dev | sudo bash -s -- install --panel --domain panel.example.com --webserver nginx --database postgres --ssl --email you@example.com --cache-driver redis --session-driver redis --queue-driver redis --admin-email admin@example.com --admin-user admin --admin-pass MyPassword -y\`)">
|
||||||
|
<code>curl -sSL https://install.jarviscli.dev | sudo bash -s -- install \\<br> --panel --domain panel.example.com --webserver nginx \\<br> --database postgres --ssl --email you@example.com \\<br> --cache-driver redis --session-driver redis \\<br> --queue-driver redis --admin-email admin@example.com \\<br> --admin-user admin --admin-pass MyPassword -y</code>
|
||||||
|
<span class="copy-hint">click to copy</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Features</div>
|
||||||
|
<div class="features">
|
||||||
|
<div class="feature">Nginx, Apache & Caddy</div>
|
||||||
|
<div class="feature">MySQL, MariaDB, PostgreSQL, SQLite</div>
|
||||||
|
<div class="feature">Auto SSL via Let's Encrypt</div>
|
||||||
|
<div class="feature">Redis cache, session & queue</div>
|
||||||
|
<div class="feature">Wings reverse proxy (all 3 web servers)</div>
|
||||||
|
<div class="feature">Fully non-interactive mode</div>
|
||||||
|
<div class="feature">Auto admin user creation</div>
|
||||||
|
<div class="feature">Post-install health checks</div>
|
||||||
|
<div class="feature">Update & uninstall commands</div>
|
||||||
|
<div class="feature">ARM64 support</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="links">
|
||||||
|
<a href="https://github.com/everestmcarthur/pelican-installer">📦 GitHub</a>
|
||||||
|
<a href="https://github.com/everestmcarthur/pelican-installer#readme">📖 Docs</a>
|
||||||
|
<a href="https://github.com/everestmcarthur/pelican-installer/issues">🐛 Issues</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="version">Powered by JarvisCLI</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function copyCmd(el, text) {
|
||||||
|
navigator.clipboard.writeText(text);
|
||||||
|
el.classList.add('copied');
|
||||||
|
el.querySelector('.copy-hint').textContent = 'copied!';
|
||||||
|
setTimeout(() => {
|
||||||
|
el.classList.remove('copied');
|
||||||
|
el.querySelector('.copy-hint').textContent = 'click to copy';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>`;
|
||||||
|
return new Response(html, {
|
||||||
|
headers: { 'Content-Type': 'text/html; charset=utf-8' }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventListener('fetch', event => {
|
||||||
|
event.respondWith(handleRequest(event.request));
|
||||||
|
});
|
||||||
Loading…
Add table
Reference in a new issue