pelican-installer/README.md
Pelican Installer Bot 9e4d1bf0c6 v2.0.0: complete rewrite — fixes all bugs, adds CLI flags
CRITICAL FIXES:
- Actually writes DB credentials to .env (was missing entirely!)
- Runs 'php artisan migrate --seed --force' on fresh install
- Configures pg_hba.conf for PostgreSQL password auth over TCP
- Uses chmod 775 (not 755) on storage directories
- Generates APP_KEY via 'php artisan key:generate'
- Creates storage subdirectories before setting permissions
- Sets PHP-FPM pool user to match web server user

NEW FEATURES:
- Full CLI flag support (--panel, --wings, --domain, --database, etc.)
- Environment variable overrides for all settings
- Non-interactive mode (--yes / -y) for fully automated installs
- Step progress indicator [X/Y] throughout install
- Database credentials displayed in visible green box
- APP_KEY shown in red warning box
- Input validation for FQDN
- Interactive DB credential customization
- HTTP connectivity health check
- Artisan CLI health check
- Smart defaults (auto-detect DB port, auto-generate passwords)

UI IMPROVEMENTS:
- Menus start at [1] instead of [0]
- Credential boxes use visible colored borders
- help text with usage examples
- Cleaner step/section separators
2026-05-17 11:53:42 +00:00

144 lines
3.9 KiB
Markdown

# 🐦 Pelican Installer
The best way to install [Pelican Panel](https://pelican.dev) & Wings — one script, fully automated, production-ready.
## Quick Start
```bash
# Interactive install (asks you everything)
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)
```bash
# Panel with Nginx + PostgreSQL + SSL
sudo bash install.sh install --panel \
--domain panel.example.com \
--webserver nginx \
--database postgres \
--ssl --email admin@example.com \
--timezone America/New_York \
-y
# Wings only
sudo bash install.sh install --wings -y
# Panel + Wings on same machine
sudo bash install.sh install --both \
--domain panel.example.com \
--webserver caddy \
--database postgres \
-y
```
## All CLI Flags
| 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
export FQDN="panel.example.com"
export WEBSERVER="nginx"
export DB_CHOICE="postgres"
export DB_PASSWORD="my_secure_password"
export CONFIGURE_SSL=true
export EMAIL="admin@example.com"
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
```bash
# Update panel
sudo bash install.sh update --panel
# Update wings
sudo bash install.sh update --wings
# Update both
sudo bash install.sh update --both -y
# Uninstall (interactive)
sudo bash install.sh uninstall
```
## Supported Systems
| OS | Versions |
|----|----------|
| Ubuntu | 22.04, 24.04 |
| Debian | 11, 12 |
| AlmaLinux | 8, 9 |
| Rocky Linux | 8, 9 |
| CentOS Stream | 9 |
Both `x86_64` and `ARM64` architectures supported.
## Logs
All installer output is logged to `/var/log/pelican-installer.log`.
```bash
tail -f /var/log/pelican-installer.log
```
## License
GPL-3.0 — See [LICENSE](LICENSE)