# 1: Getting Started

This guide is designed for IT professionals who are familiar with Linux, servers, networking, and modern DevOps practices. If you're comfortable with Docker, containerization, and command-line administration, you're in the right place.

## Prerequisites

Before installing Infinity Tools, ensure you have:

### Required

- ✅ **Linux Server** - Any modern Linux distribution (Ubuntu, Debian, CentOS, Fedora, Arch, etc.)
- ✅ **Root/Sudo Access** - Full administrative privileges
- ✅ **Internet Connection** - Required for downloading dependencies and Docker images
- ✅ **Minimum 2GB RAM** - Recommended 4GB+ for running multiple services
- ✅ **20GB+ Storage** - For applications and data (more recommended for production)

### Technical Knowledge Assumed

This guide assumes you're familiar with:

- Linux command-line operations
- Docker and Docker Compose
- Basic networking concepts (ports, DNS, reverse proxies)
- SSL/TLS certificates and Let's Encrypt
- SSH connections and key management
- System administration basics

## Server Setup Options

### Option 1: Self-Hosted Server

If you have physical hardware or are running a virtualization platform:

**Requirements:**

- Physical server or VM with a supported Linux distribution
- Direct internet access or through a router/firewall
- Ability to configure DNS records (for SSL certificates)

**Considerations:**

- Network configuration and firewall rules
- Static IP address recommended
- Domain name for SSL certificates (optional but recommended)

### Option 2: Cloud/VPS Provider

Most IT professionals will use a cloud provider. Popular options include:

**Hetzner Cloud** (Recommended)

- Excellent price-to-performance ratio
- EU-based with strong data protection
- Simple interface, great for automation
- Starting at ~€4/month for basic instances

**DigitalOcean**

- Developer-friendly interface
- Strong documentation and community
- Good performance and reliability
- Starting at $6/month for basic droplets

**Other Options:**

- AWS EC2, Google Cloud Platform, Azure (more complex but powerful)
- Linode, Vultr, Scaleway (good alternatives)
- Any provider that offers a Linux server with root access

### Server Configuration

Regardless of your hosting choice, configure your server with:

1. **Fresh Linux Installation**
    - Clean install of your preferred distribution
    - All security updates applied (`apt update && apt upgrade` or equivalent)
2. **Non-Root User with Sudo**
    - Create a user account with sudo privileges
    - SSH key authentication configured (password auth disabled recommended)
3. **Basic Firewall**
    - At minimum, allow SSH (port 22) and HTTP/HTTPS (ports 80/443)
    - UFW or firewalld configured and enabled
4. **DNS Configuration** (for SSL certificates) 
    - Domain name pointing to your server's IP address
    - If using Traefik, ensure DNS A record is configured before installation

## System Requirements

### Minimum Specifications

- **CPU:** 1 core (2 cores recommended)
- **RAM:** 2GB (4GB+ recommended)
- **Storage:** 20GB SSD (more for production workloads)
- **Network:** Stable internet connection

### Recommended for Production

- **CPU:** 2-4 cores
- **RAM:** 4-8GB
- **Storage:** 50GB+ SSD with backup storage
- **Network:** 100Mbps+ connection

### Storage Considerations

Infinity Tools stores data in `/opt/speedbits/` by default:

- Application data volumes
- Database files
- Configuration files
- SSL certificates

Ensure sufficient disk space and consider:

- Using separate volumes for databases
- Regular backup strategies
- Monitoring disk usage

## What You'll Need Before Installation

### 1. Domain Name (Optional but Recommended)

For automatic SSL certificates via Let's Encrypt:

- A domain name you control
- Ability to create DNS A records
- DNS pointing to your server's IP address

**Without a domain:** You can still use Infinity Tools with self-signed certificates or IP-based access, but SSL won't be automatically trusted by browsers.

### 2. Email Address

For SSL certificate notifications and administrative purposes:

- Valid email address (for Let's Encrypt certificate warnings)
- Consider a dedicated email for server administration

### 3. SSH Access

Ensure you can:

- Connect to your server via SSH
- Use sudo/root privileges
- Transfer files if needed (SCP/SFTP)

## Next Steps

Once your server is ready:

1. **SSH into your server**
2. **Download or transfer Infinity Tools installer**
3. **Run the installer** (covered in the next article)

The installation process will:

- Check system readiness
- Install Docker if needed
- Set up Infinity Tools in `/opt/InfinityTools/`
- Create the `infinity-tools` command for easy access

## Quick Reference

**Installation Path:** `/opt/InfinityTools/`  
**Command:** `sudo infinity-tools`  
**Data Directory:** `/opt/speedbits/`  
**Configuration:** `/opt/speedbits/_configuration/`

## Common Considerations

### Firewall Ports

Default ports used by Infinity Tools:

- **80/443** - HTTP/HTTPS (Traefik)
- **22** - SSH
- **Various** - Application-specific ports (configurable)

### Docker Resources

Docker will be installed if not present. Consider:

- Docker daemon configuration
- Storage driver selection
- Network configuration
- Resource limits

### Backup Strategy

Infinity Tools includes Borgmatic for backups, but you should also:

- Plan for backup storage location
- Configure retention policies
- Test restore procedures

## Troubleshooting

### Common Issues

**Port conflicts:** Check for existing services using ports 80/443 or other expected ports.

**Network issues:** Ensure firewall allows necessary traffic and DNS is properly configured.

## Ready to Install?

Once your server meets these prerequisites, proceed to the installation guide which will cover:

- Establishing SSH connection
- Getting Infinity Tools onto your server
- Running the installer
- Initial configuration

---

*Next: Installation and Initial Setup Guide (Article 2)*