Your Name 2de73967a4 Fix: Configure Laravel to use /app/data/storage
- Created laravel-paths.php to override storage path
- Patched bootstrap/app.php to load custom paths
- Removed symlink approach as /app/code is read-only
- Laravel will now use /app/data/storage directly
2025-10-22 09:14:03 -06:00
2025-10-22 08:24:36 -06:00
2025-10-22 08:24:36 -06:00

AnonAddy Cloudron Package

This is a complete Cloudron package for AnonAddy, an open-source anonymous email forwarding service.

Features

  • Anonymous email forwarding with unlimited aliases
  • Custom domain support
  • GPG/OpenPGP email encryption
  • Reply anonymously without revealing your real email
  • MySQL database for data storage
  • Redis for caching and queues
  • Postfix for SMTP email handling
  • Rspamd for spam filtering
  • Laravel queue worker for background jobs
  • Automatic database migrations

Package Contents

  • CloudronManifest.json - Cloudron package manifest
  • Dockerfile - Container image definition
  • start.sh - Initialization and startup script
  • nginx.conf - NGINX web server configuration
  • supervisor.conf - Process supervisor configuration
  • postfix-main.cf - Postfix main configuration
  • postfix-master.cf - Postfix master process configuration

Prerequisites

  1. Cloudron CLI installed and configured
  2. Docker access (handled by Cloudron build service)
  3. Cloudron instance running version 7.0.0 or higher
  4. Domain with proper DNS configuration

Building the Package

Build the package using the Cloudron build service:

cloudron build \
  --set-build-service builder.docker.due.ren \
  --build-service-token e3265de06b1d0e7bb38400539012a8433a74c2c96a17955e \
  --set-repository andreasdueren/anonaddy-cloudron \
  --tag 0.1.0

The build process will:

  1. Create a Docker image based on cloudron/base:5.0.0
  2. Install PHP 8.3, NGINX, Postfix, Rspamd, and other dependencies
  3. Clone AnonAddy v1.3.5 from GitHub
  4. Install Composer dependencies
  5. Build frontend assets
  6. Configure all services

Installation

Install the package on your Cloudron instance:

cloudron install \
  --location anonaddy.yourdomain.com \
  --image andreasdueren/anonaddy-cloudron:0.1.0

Replace anonaddy.yourdomain.com with your desired subdomain.

Post-Installation Setup

1. Initial Login

After installation, you'll see a post-install message with default credentials:

  • Email: admin@example.com
  • Password: password

IMPORTANT: Change this password immediately after first login!

2. DNS Configuration

Configure the following DNS records for your domain:

MX Record

@ IN MX 10 anonaddy.yourdomain.com.

SPF Record

@ IN TXT "v=spf1 mx ~all"

DKIM Keys

  1. Login to AnonAddy
  2. Navigate to Settings → DKIM
  3. Generate DKIM keys
  4. Add the provided DNS TXT record

Example:

default._domainkey IN TXT "v=DKIM1; k=rsa; p=YOUR_PUBLIC_KEY_HERE"
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com"

3. Configure Domain Settings

  1. Login to AnonAddy
  2. Go to Settings → Domains
  3. Add your custom domain(s)
  4. Verify domain ownership

4. Configure Email Recipients

  1. Add recipient email addresses (your real email addresses)
  2. Verify recipient addresses via email confirmation
  3. Set default recipient for new aliases

Usage

Creating Aliases

AnonAddy supports multiple alias formats:

  1. Standard Aliases: anything@yourdomain.com
  2. UUID Aliases: 94960540-f914-42e0-9c50-6fecbe7f5061@yourdomain.com
  3. Custom Aliases: newsletter@yourdomain.com

Replying Anonymously

Reply to forwarded emails directly. AnonAddy will send the reply through the alias, maintaining your anonymity.

Encryption

Enable GPG encryption in Settings to encrypt all incoming emails with your public key.

Architecture

Services

The package runs multiple services via supervisor:

  • NGINX - Web server (port 8000)
  • PHP-FPM - PHP processor
  • Laravel Queue Worker - Background job processing
  • Laravel Scheduler - Cron job handler
  • Postfix - SMTP server (port 25)
  • Rspamd - Spam filtering (port 11334)

Data Persistence

All persistent data is stored in /app/data:

  • /app/data/storage - Laravel storage (logs, cache, sessions)
  • /app/data/dkim - DKIM keys
  • /app/data/postfix - Postfix spool
  • /app/data/rspamd - Rspamd data
  • /app/data/app_key - Laravel application key
  • /app/data/anonaddy_secret - AnonAddy secret for anonymous replies

Database

The package uses:

  • MySQL - Main database (via Cloudron addon)
  • Redis - Cache and queue backend (via Cloudron addon)

Email Integration

  • Inbound: Postfix receives emails on port 25
  • Outbound: Cloudron SMTP addon for sending emails
  • Spam Filtering: Rspamd filters incoming emails
  • Virtual Aliases: Postfix queries Rspamd for alias lookups

Troubleshooting

View Logs

cloudron logs --app anonaddy.yourdomain.com -f

Shell Access

cloudron exec --app anonaddy.yourdomain.com

Common Issues

Emails Not Receiving

  1. Check MX records: dig MX yourdomain.com
  2. Verify port 25 is open on your Cloudron server
  3. Check Postfix logs: cloudron logs --app anonaddy.yourdomain.com | grep postfix
  4. Test SMTP: telnet anonaddy.yourdomain.com 25

Emails Marked as Spam

  1. Ensure SPF record is configured
  2. Add DKIM keys in Settings
  3. Configure DMARC record
  4. Check your server's IP reputation

Queue Not Processing

  1. Check Laravel queue worker: cloudron logs --app anonaddy.yourdomain.com | grep queue
  2. Verify Redis connection
  3. Restart the app: cloudron restart --app anonaddy.yourdomain.com

Application Errors

  1. Check storage permissions in /app/data/storage
  2. Clear cache: cloudron exec --app anonaddy.yourdomain.com 'php artisan cache:clear'
  3. Run migrations: cloudron exec --app anonaddy.yourdomain.com 'php artisan migrate'

Database Migrations

Migrations run automatically on startup. To manually run migrations:

cloudron exec --app anonaddy.yourdomain.com
cd /app/code
php artisan migrate

Clear Cache

cloudron exec --app anonaddy.yourdomain.com
cd /app/code
php artisan cache:clear
php artisan config:clear
php artisan view:clear

Updating

To update to a new version:

  1. Build the new version with updated tag
  2. Uninstall the old version: cloudron uninstall --app anonaddy.yourdomain.com
  3. Install the new version: cloudron install --location anonaddy.yourdomain.com --image andreasdueren/anonaddy-cloudron:NEW_VERSION

Note: Always backup your data before updating!

Development

Local Testing

  1. Clone the repository
  2. Make changes to configuration files
  3. Build locally: cloudron build --tag test
  4. Install for testing: cloudron install --location test.anonaddy.local --image andreasdueren/anonaddy-cloudron:test

File Locations

  • Application code: /app/code
  • Persistent data: /app/data
  • NGINX config: /etc/nginx/sites-available/default
  • PHP-FPM config: /etc/php/8.3/fpm/pool.d/www.conf
  • Postfix config: /etc/postfix/main.cf
  • Supervisor config: /etc/supervisor/conf.d/anonaddy.conf

Security Considerations

  1. Change Default Password: Immediately after installation
  2. HTTPS Only: Cloudron automatically provides SSL/TLS
  3. SPF/DKIM/DMARC: Configure all email authentication records
  4. Firewall: Ensure only necessary ports (80, 443, 25) are open
  5. Updates: Keep AnonAddy updated to latest version
  6. Backups: Regular backups via Cloudron

Resources

License

AnonAddy is open-source software licensed under the MIT license.

Support

For issues with:

Credits

Description
No description provided
Readme 50 KiB
Languages
Shell 54.8%
Dockerfile 41.7%
PHP 3.5%