# 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 ### Cloudron Admin Notes After installing on Cloudron remember to: 1. Open the File Manager for the app, edit `/app/data/config/s3.env` with your object storage endpoint/keys, and restart the app. 2. Add alias domains for `auth.`, `accounts.`, `cast.`, `albums.` and `family.` in the Cloudron **Domains** tab. Create matching DNS records pointing to the primary hostname (for example, if you installed at `ente.cloudron.io`, add `auth.ente.cloudron.io`, `accounts.ente.cloudron.io`, etc.). 3. Use the bundled Ente CLI for admin tasks via `cloudron exec --app -- sudo -u cloudron ente --help`. The CLI stores its state in `/app/data/cli-data` (exposed inside the container at `/cli-data`) and already trusts your app’s API endpoint. Follow the upstream admin guides to [whitelist administrators](https://ente.io/help/self-hosting/administration/users#whitelist-admins) and [adjust user quotas](https://ente.io/help/self-hosting/administration/cli). The main photos UI continues to live on the hostname you selected during installation. ## 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).