# Homepage

Modern dashboard for accessing all your self-hosted services.

## Overview

Homepage is a modern, fully static, fast, secure fully configurable application dashboard with integrations for over 100 services. It provides a beautiful and customizable interface to access all your Changemaker Lite services from a single location.

## Features

- **Service Dashboard**: Central hub for all your applications
- **Docker Integration**: Automatic service discovery and monitoring
- **Customizable Layout**: Flexible grid-based layout system
- **Service Widgets**: Live status and metrics for services
- **Quick Search**: Fast navigation with built-in search
- **Bookmarks**: Organize frequently used links
- **Dark/Light Themes**: Multiple color schemes available
- **Responsive Design**: Works on desktop and mobile devices

## Access

- **Default Port**: 3010
- **URL**: `http://localhost:3010`
- **Configuration**: YAML-based configuration files

## Configuration

### Environment Variables

- `HOMEPAGE_PORT`: External port mapping (default: 3010)
- `PUID`: User ID for file permissions (default: 1000)
- `PGID`: Group ID for file permissions (default: 1000)
- `TZ`: Timezone setting (default: Etc/UTC)
- `HOMEPAGE_ALLOWED_HOSTS`: Allowed hosts for the dashboard

### Configuration Files

Homepage uses YAML configuration files located in `./configs/homepage/`:

- `settings.yaml`: Global settings and theme configuration
- `services.yaml`: Service definitions and widgets
- `bookmarks.yaml`: Bookmark categories and links
- `widgets.yaml`: Dashboard widgets configuration
- `docker.yaml`: Docker integration settings

### Volumes

- `./configs/homepage:/app/config`: Configuration files
- `./assets/icons:/app/public/icons`: Custom service icons
- `./assets/images:/app/public/images`: Background images and assets
- `/var/run/docker.sock:/var/run/docker.sock`: Docker socket for container monitoring

## Changemaker Lite Services

Homepage is pre-configured with all Changemaker Lite services:

### Essential Tools
- **Code Server** (Port 8888): VS Code in the browser
- **Listmonk** (Port 9000): Newsletter & mailing list manager
- **NocoDB** (Port 8090): No-code database platform

### Content & Documentation
- **MkDocs** (Port 4000): Live documentation server
- **Static Site** (Port 4001): Built documentation hosting

### Automation & Data
- **n8n** (Port 5678): Workflow automation platform
- **PostgreSQL** (Port 5432): Database backends

## Customization

### Adding Custom Services

Edit `configs/homepage/services.yaml` to add new services:

```yaml
- Custom Category:
    - My Service:
        href: http://localhost:8080
        description: Custom service description
        icon: mdi-application
        widget:
          type: ping
          url: http://localhost:8080
```

### Custom Icons

Add custom icons to `./assets/icons/` directory and reference them in services.yaml:

```yaml
icon: /icons/my-custom-icon.png
```

### Themes and Styling

Modify `configs/homepage/settings.yaml` to customize appearance:

```yaml
theme: dark  # or light
color: purple  # slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose
```

### Widgets

Enable live monitoring widgets in `configs/homepage/services.yaml`:

```yaml
- Service Name:
    widget:
      type: docker
      container: container-name
      server: my-docker
```

## Service Monitoring

Homepage can display real-time status information for your services:

- **Docker Integration**: Container status and resource usage
- **HTTP Ping**: Service availability monitoring
- **Custom APIs**: Integration with service-specific APIs

## Docker Integration

Homepage monitors Docker containers automatically when configured:

1. Ensure Docker socket is mounted (`/var/run/docker.sock`)
2. Configure container mappings in `docker.yaml`
3. Add widget configurations to `services.yaml`

## Security Considerations

- Homepage runs with limited privileges
- Configuration files should have appropriate permissions
- Consider network isolation for production deployments
- Use HTTPS for external access
- Regularly update the Homepage image

## Troubleshooting

### Common Issues

**Configuration not loading**: Check YAML syntax in configuration files
```bash
docker logs homepage-changemaker
```

**Icons not displaying**: Verify icon paths and file permissions
```bash
ls -la ./assets/icons/
```

**Services not reachable**: Verify network connectivity between containers
```bash
docker exec homepage-changemaker ping service-name
```

**Widget data not updating**: Check Docker socket permissions and container access
```bash
docker exec homepage-changemaker ls -la /var/run/docker.sock
```

## Configuration Examples

### Basic Service Widget

```yaml
- Code Server:
    href: http://localhost:8888
    description: VS Code in the browser
    icon: code-server
    widget:
      type: docker
      container: code-server-changemaker
```

### Custom Dashboard Layout

```yaml
# settings.yaml
layout:
  style: columns
  columns: 3
  
# Responsive breakpoints
responsive:
  mobile: 1
  tablet: 2
  desktop: 3
```

## Official Documentation

For comprehensive configuration guides and advanced features:
- [Homepage Documentation](https://gethomepage.dev/)
- [GitHub Repository](https://github.com/gethomepage/homepage)
- [Configuration Examples](https://gethomepage.dev/configs/)
- [Widget Integrations](https://gethomepage.dev/widgets/)
