Initial Keila Cloudron package

This commit is contained in:
Andreas Dueren
2025-06-20 07:56:11 -06:00
commit 4a1a5129f2
8 changed files with 412 additions and 0 deletions

143
README.md Normal file
View File

@ -0,0 +1,143 @@
# Keila Cloudron Package
This is a Cloudron package for [Keila](https://www.keila.io), an open-source newsletter tool and alternative to Mailchimp and Sendinblue.
## Features
- **Newsletter Campaigns**: Create and send email campaigns
- **Sign-up Forms**: Generate customizable subscription forms
- **Multiple Email Providers**: Support for AWS SES, Sendgrid, Mailgun, Postmark, and SMTP
- **Self-hosted**: Complete control over your data and newsletters
- **PostgreSQL Integration**: Reliable database storage via Cloudron addon
- **SMTP Configuration**: Automatic email sending via Cloudron's mail service
## Installation
### Prerequisites
- Cloudron instance with CLI installed
- Access to build service or local Docker environment
### Build and Install
1. **Build the package**:
```bash
cloudron build --set-build-service builder.docker.due.ren \
--build-service-token e3265de06b1d0e7bb38400539012a8433a74c2c96a17955e \
--set-repository andreasdueren/keila-cloudron \
--tag 0.1.0
```
2. **Install on Cloudron**:
```bash
cloudron install --location keila.yourdomain.com \
--image andreasdueren/keila-cloudron:0.1.0
```
### Local Development Build
```bash
# Clone this repository
git clone <repository-url>
cd keila-cloudron
# Build locally
cloudron build
# Install for testing
cloudron install --location keila.local.dev
```
## Configuration
### Default Settings
- **Admin Account**: `admin@yourdomain.com` (password in `/app/data/root_credentials`)
- **Database**: PostgreSQL via Cloudron addon
- **Email**: Configured via Cloudron SMTP service
- **Registration**: Disabled by default for security
- **Port**: 4000 (proxied via nginx)
### Environment Variables
The following Cloudron environment variables are automatically configured:
- `CLOUDRON_POSTGRESQL_URL` - Database connection
- `CLOUDRON_MAIL_SMTP_*` - Email configuration
- `CLOUDRON_APP_DOMAIN` - Application domain
- `CLOUDRON_MAIL_FROM` - From email address
## Data Persistence
- **Application Data**: `/app/data/keila` - Keila installation
- **Uploads**: `/app/data/uploads` - User-uploaded content
- **Credentials**: `/app/data/root_credentials` - Admin login info
- **Secrets**: `/app/data/secret_key_base` - Application secret
## Troubleshooting
### Common Issues
1. **Database Connection**: Ensure PostgreSQL addon is properly configured
2. **Email Sending**: Verify Cloudron SMTP settings in mail addon
3. **File Permissions**: All files should be owned by `cloudron:cloudron`
### Logs
View application logs:
```bash
cloudron logs
```
### Reset Admin Password
```bash
# Access the container
cloudron exec
# Check current credentials
cat /app/data/root_credentials
# Reset if needed (restart required)
rm /app/data/root_credentials
exit
cloudron restart
```
## Technical Details
### Architecture
- **Base Image**: `cloudron/base:4.2.0`
- **Runtime**: Elixir 1.15 with Phoenix framework
- **Database**: PostgreSQL (via Cloudron addon)
- **Web Server**: Nginx reverse proxy
- **Process Manager**: Direct Elixir application startup
### Security Features
- User registration disabled by default
- Security headers configured in nginx
- File upload restrictions
- Database connection over SSL
- Secret key auto-generation
### File Structure
```
/app/code/ # Application code (read-only)
/app/data/keila/ # Keila installation
/app/data/uploads/ # User uploads
/app/data/ # Persistent data
```
## Support
- **Keila Documentation**: https://www.keila.io/docs
- **Keila GitHub**: https://github.com/pentacent/keila
- **Cloudron Docs**: https://docs.cloudron.io
## License
- **Keila**: AGPLv3 License
- **This Package**: MIT License