# Ente Cloudron App

This repository contains the Cloudron packaging for [Ente](https://ente.io), an open-source, end-to-end encrypted alternative to Google Photos and Apple Photos.

## Features

- Self-host your own encrypted photo backup service
- Automatically integrates with Cloudron's PostgreSQL database
- Configured to use Cloudron's mail service for sending emails
- Easy to deploy and manage through the Cloudron interface

## Requirements

### Browser Compatibility

Ente uses modern web technologies for its end-to-end encryption:

- **WebAssembly**: Required for cryptographic operations
- **IndexedDB**: Required for client-side data storage

Most modern browsers support these features, but they may be blocked by:
- Browser privacy settings
- Content Security Policies
- Certain browser extensions

This package includes custom Caddy configuration with appropriate security headers to ensure these features work correctly.

### S3-Compatible Storage

Ente requires an S3-compatible object storage service. You can use:
- Cloudron's built-in object storage
- External services like AWS S3, Wasabi, or MinIO

## Building and Installing

### Option 1: Build and Install Manually

1. Clone this repository:
   ```
   git clone https://github.com/yourusername/ente-cloudron.git
   cd ente-cloudron
   ```

2. Download the Cloudron CLI:
   ```
   npm install -g cloudron
   ```

3. Build the app:
   ```
   cloudron build
   ```

4. Install the app:
   ```
   cloudron install --app ente.yourdomain.com
   ```

### Option 2: Install from the Cloudron App Store

Once this app is accepted into the Cloudron App Store, you can install it directly:

1. Go to your Cloudron dashboard
2. Click "App Store"
3. Search for "Ente"
4. Click "Install"

## Configuration

The app is configured automatically using Cloudron's environment variables for:

- PostgreSQL database connection
- SMTP mail service
- App origin URL

### Additional Configuration

The package includes several enhancements to ensure proper functionality:

1. **Security Headers**: Custom Content-Security-Policy headers that allow WebAssembly and IndexedDB
2. **API Configuration**: Dynamic runtime configuration to ensure the frontend connects to the correct API endpoint
3. **CORS Headers**: Proper CORS configuration for API access

You need to manually set up and configure:

- S3-compatible object storage

## Usage

### Web Client

After installation, you can access the Ente web client at your app's URL. Create an admin account on first use.

### Mobile Apps

You can use the official Ente mobile apps with your self-hosted server:

1. Download the Ente app from the [App Store](https://apps.apple.com/app/id1542026904) or [Google Play](https://play.google.com/store/apps/details?id=io.ente.photos)
2. During login, choose "Custom Server"
3. Enter your Cloudron app URL (e.g., `https://ente.yourdomain.com`)

## Updating

To update to a newer version:

```
cloudron update --app ente.yourdomain.com
```

## Troubleshooting

### Common Issues

1. **"Failed to fetch" errors**: Check if your browser is blocking API requests to your domain
2. **WebAssembly errors**: Ensure your browser supports and allows WebAssembly (try using Chrome or Firefox)
3. **IndexedDB errors**: Make sure your browser allows IndexedDB (not in private/incognito mode)

For issues specific to the Cloudron packaging, please open an issue in this repository.

For issues with Ente itself, please refer to the [main Ente repository](https://github.com/ente-io/ente).

## License

This Cloudron package is licensed under the same license as Ente (Apache 2.0).