View RawView Markdown # Automated Script Installation
## Overview
The automated installation script is the easiest way to install 5q12's Indexer. It handles all dependencies, configuration, and setup automatically.
### Features
- **Automatic dependency installation** - Installs Nginx, PHP, and required extensions
- **Conflict resolution** - Stops and disables conflicting web servers (Apache2, Lighttpd)
- **Nginx configuration** - Creates optimized configuration for the indexer
- **PHP optimization** - Installs and configures PHP-FPM with required extensions
- **System integration** - Sets up system-wide command access
- **Update management** - Built-in update checking and upgrading
### Compatibility
**Tested and Supported:**
- Ubuntu Server 20.04 LTS
- Ubuntu Server 22.04 LTS
- Ubuntu Server 24.04 LTS
**May Work (Untested):**
- Other Debian-based distributions
- Arch Linux (with manual package management adjustments)
- Other systemd-based distributions
**Not Supported:**
- CentOS/RHEL (different package manager)
- Alpine Linux (different init system)
- Windows/macOS
## Installation
### Step 1: Download the Script
```bash
# Download the installation script
wget https://github.com/5q12-ccls/5q12-s-Indexer/raw/main/install.sh
# Make it executable
chmod +x install.sh
```
### Step 2: Run Installation
```bash
# Install to a web directory
sudo ./install.sh install /var/www/html/files
# Or install to a relative path
sudo ./install.sh install files
# Or install to home directory
sudo ./install.sh install ~/public_html/files
```
**Installation Path Examples:**
- `/var/www/html/files` - Standard web server location
- `/home/user/www/files` - User home directory
- `./files` - Current directory (converts to absolute path)
### Step 3: Access Your Indexer
After installation, your indexer will be available at:
```
http://your-server-ip:5012
```
Or if running locally:
```
http://localhost:5012
```
## System Requirements
### Required
- **Operating System**: Debian-based Linux distribution
- **Memory**: 512MB RAM minimum (1GB+ recommended)
- **Disk Space**: 100MB free space
- **Network**: Internet connection for package downloads
- **Privileges**: sudo/root access
### Automatically Installed
- **Nginx** (latest stable)
- **PHP 8.3** with PHP-FPM
- **PHP Extensions**: json, fileinfo, mbstring, sqlite3, zip, curl, openssl
## Command Reference
Once installed, you can use the `5q12-index` command system-wide:
### Installation
```bash
# Install to specified directory
sudo 5q12-index install /path/to/directory
```
### Update Management
```bash
# Check for updates
5q12-index version
# Update to latest version
sudo 5q12-index update
```
### Help
```bash
# Show help information
5q12-index help
```
## Installation Process Details
### What the Script Does
1. **System Check**
- Verifies OS compatibility
- Checks for existing installations
- Validates system requirements
2. **Dependency Management**
- Updates package lists
- Installs Nginx and PHP-FPM
- Removes conflicting web servers
- Installs required PHP extensions
3. **Configuration**
- Creates optimized Nginx configuration
- Sets up PHP-FPM integration
- Configures proper file permissions
- Creates system directories
4. **Indexer Setup**
- Downloads latest index.php
- Sets proper ownership (www-data)
- Initializes configuration
- Creates management symlinks
5. **Service Management**
- Enables and starts Nginx
- Enables and starts PHP-FPM
- Tests configuration validity
- Reloads services
### Generated Files and Directories
**System Configuration:**
- `/etc/5q12-indexer/indexer.conf` - Installation configuration
- `/etc/5q12-indexer/backups/` - Backup directory
- `/etc/nginx/sites-available/5q12-indexer.conf` - Nginx configuration
- `/usr/local/bin/5q12-index` - System command symlink
**Indexer Files:**
- `{install-path}/index.php` - Main indexer file
- `{install-path}/.indexer_files/` - Generated configuration and cache
## Troubleshooting
### Permission Issues
```bash
# Fix ownership if needed
sudo chown -R www-data:www-data /path/to/installation
# Fix permissions
sudo chmod 755 /path/to/installation
sudo chmod 644 /path/to/installation/index.php
```
### Service Issues
```bash
# Check service status
sudo systemctl status nginx
sudo systemctl status php8.3-fpm
# Restart services
sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm
# Check nginx configuration
sudo nginx -t
```
### Network Issues
```bash
# Check if port 5012 is open
sudo netstat -tlnp | grep :5012
# Check firewall (if applicable)
sudo ufw status
sudo ufw allow 5012
```
### PHP Extension Issues
```bash
# Check installed extensions
php -m | grep -E 'json|sqlite3|zip|curl'
# Install missing extensions manually
sudo apt install php8.3-sqlite3 php8.3-zip php8.3-curl php8.3-mbstring
```
### Common Error Solutions
**"Port 5012 already in use"**
- Check for other services using the port
- Modify nginx configuration to use different port
**"Permission denied"**
- Ensure running with sudo
- Check directory permissions
- Verify www-data user exists
**"Package not found"**
- Update package lists: `sudo apt update`
- Check internet connection
- Verify distribution compatibility
## Manual Cleanup
If you need to completely remove the installation:
```bash
# Remove nginx configuration
sudo rm -f /etc/nginx/sites-available/5q12-indexer.conf
sudo rm -f /etc/nginx/sites-enabled/5q12-indexer.conf
# Remove system files
sudo rm -rf /etc/5q12-indexer
sudo rm -f /usr/local/bin/5q12-index
# Remove indexer files (replace with your path)
sudo rm -rf /path/to/your/installation
# Reload nginx
sudo systemctl reload nginx
```
## Advanced Configuration
### Custom Port
Edit `/etc/nginx/sites-available/5q12-indexer.conf` and change:
```nginx
listen 5012;
```
To your desired port, then reload nginx:
```bash
sudo systemctl reload nginx
```
### SSL/HTTPS Setup
Add SSL certificate configuration to your nginx config:
```nginx
listen 443 ssl;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/private.key;
```
### Custom PHP Settings
Edit `/etc/php/8.3/fpm/php.ini` for global changes or create pool-specific configuration.
## Next Steps
After successful installation:
1. **Configure the indexer** - See [Configuration Guide](configuration.md)
2. **Secure your installation** - See [Security Guide](security.md)
3. **Customize appearance** - Edit configuration settings
4. **Set up backups** - Regular backups of your files and configuration
---
**Related Documentation:**
- [Configuration Guide](configuration.md) - Customize indexer settings
- [Security Guide](security.md) - Secure your installation
- [Troubleshooting Guide](troubleshooting.md) - Common issues and solutions