# 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).