Keep your Apple ecosystem. Keep your data yours.
A lightweight, privacy-first, self-hosted iCloud alternative for Apple users.
Pineapple Cloud lets you sync natively:
- π Apple Notes
- ποΈ Calendar
- β Reminders
- π€ Contacts
across macOS and iOS using a minimal Docker stack powered by:
- CalDAV
- CardDAV
- Local IMAP
Designed for:
- Raspberry Pi
- Synology NAS
- Mini PCs
- Homelabs
- Privacy-conscious Apple users
All while using under 100MB of idle RAM.
Most self-hosted collaboration platforms are massive.
| Platform | Typical RAM Usage |
|---|---|
| Nextcloud | 1GB+ |
| Full mail suites | Heavy |
| Enterprise groupware | Complex |
| Pineapple Cloud | <100MB |
Pineapple Cloud was built for people who want:
- native Apple app compatibility
- self-hosted privacy
- ultra-lightweight infrastructure
- simple Docker deployment
- zero vendor lock-in
No Electron apps. No bloated dashboards. No subscriptions. No telemetry.
Just native Apple apps syncing directly with infrastructure you control.
Pineapple Cloud keeps your data:
- on your hardware
- inside your network
- under your control
No third-party cloud sync providers. No analytics. No forced accounts. No external dependency chains.
Your Notes, Calendars, Contacts, and Reminders stay yours.
- π Native Apple Notes sync using local IMAP
- ποΈ Native Apple Calendar & Reminders sync via CalDAV
- π€ Native Apple Contacts sync via CardDAV
- πͺΆ Ultra-lightweight architecture (<100MB idle RAM)
- π³ Simple Docker Compose deployment
- π Optimized for Raspberry Pi and NAS systems
- π¦ Portable volume-based storage
- π Local-first privacy-focused design
- β‘ Fast startup and low CPU overhead
Apple uses multiple sync systems internally:
| Apple Service | Protocol |
|---|---|
| Calendar | CalDAV |
| Reminders | CalDAV |
| Contacts | CardDAV |
| Apple Notes | IMAP |
Pineapple Cloud combines:
- Radicale β CalDAV + CardDAV
- Local IMAP Mail Server β Apple Notes syncing
inside a lightweight isolated Docker stack.
macOS / iPhone / iPad
β
ββββββββββββββββ΄βββββββββββββββ
β β
Radicale Container IMAP Container
(Calendar / Contacts) (Apple Notes)
β β
βββββββ Docker Network ββββββββ
git clone https://github.com/jaganganesh/pineapple-cloud.git
cd pineapple-cloudmkdir -p \
data/mail-data \
data/mail-config \
data/radicale-data \
data/radicale-config \
data/radicale-certsservices:
# Apple Notes (IMAP)
imap-server:
image: mailserver/docker-mailserver:latest
container_name: apple-imap
ports:
- "143:143"
environment:
OVERRIDE_HOSTNAME: pineapple.cloud
ENABLE_POP3: "0"
ENABLE_SMTP: "0"
ENABLE_SPAMASSASSIN: "0"
ENABLE_CLAMAV: "0"
ENABLE_FAIL2BAN: "0"
ONE_DIR: "1"
cap_add:
- NET_ADMIN
volumes:
- ./data/mail-data:/var/mail
- ./data/mail-config:/tmp/docker-mailserver
restart: unless-stopped
# Contacts / Calendars / Reminders (CardDAV, CalDav)
radicale:
image: tomsquest/docker-radicale:latest
container_name: apple-dav
ports:
- "5232:5232"
volumes:
- ./data/radicale-data:/data
- ./data/radicale-config:/config:ro
- ./data/radicale-certs:/certs:ro
restart: unless-stoppeddocker compose up -dApple Notes sync requires a local IMAP mailbox.
docker exec -it apple-imap /bin/bashsetup email add your_name@pineapple.cloudThen enter your password when prompted.
Exit the container afterward:
exitApple devices strongly prefer encrypted connections.
Generate certificates locally:
openssl req -x509 \
-newkey rsa:4096 \
-keyout ./data/radicale-certs/server.key \
-out ./data/radicale-certs/server.cert \
-sha256 \
-days 3650 \
-nodes \
-subj "/CN=127.0.0.1"On macOS:
- Open
server.cert - Launch Keychain Access
- Set certificate trust to:
- Always Trust
If running exclusively on:
- localhost
- isolated LAN
- private homelab subnet
you may choose to skip TLS.
macOS and iOS will display warning prompts during setup.
Open:
System Settings β Internet Accounts
Navigate to:
Add Account β Add Other Account β CardDAV Account
Use:
| Field | Value |
|---|---|
| Account Type | Manual |
| Username | Your Radicale username |
| Password | Your password |
| Server Address | 127.0.0.1 |
| Port | 5232 |
| Server Path | / |
If using HTTP:
- Disable SSL
If using certificates:
- Enable SSL
Navigate to:
Add Account β Add Other Account β CalDAV Account
Use the same credentials configured in Radicale.
Navigate to:
Add Account β Add Other Account β Mail Account
Use:
| Field | Value |
|---|---|
| your_name@pineapple.cloud | |
| Incoming Mail Server | 127.0.0.1 |
| Outgoing Mail Server | 127.0.0.1 |
When setup completes:
- β Disable Mail
- β Enable Notes
Apple Notes over IMAP is more limited than native iCloud Notes.
The following features are reduced or unavailable:
- β advanced typography styles
- β rich heading templates
- β interactive checklists
- β inline sketches
- β advanced embedded objects
For best compatibility:
- use standard text
- use bold/italics
- use markdown-style lists
Basic note synchronization works reliably.
Pineapple Cloud is intentionally engineered for low-resource systems.
Perfect for:
- Raspberry Pi Zero 2 W, 3 Model B/B+, 400, 4 Model B, 5
- Synology J-series
- Intel N100 mini PCs
- Low-power NAS systems
Designed to minimize:
- RAM usage
- disk writes
- CPU overhead
- thermal load
Ideal for always-on homelab deployments.
- β macOS
- β iOS
- β Apple Silicon Macs
- β Raspberry Pi OS
- β Ubuntu Server
- β Docker
- β Synology NAS
All persistent data lives inside:
./data
This makes migrations extremely simple.
Move your stack between machines by copying:
./data
and redeploying the containers.
| Feature | Pineapple Cloud | Nextcloud | iCloud |
|---|---|---|---|
| Apple Notes Sync | β | β | β |
| Native Apple Apps | β | Partial | β |
| Self-Hosted | β | β | β |
| Lightweight | β | β | N/A |
| Raspberry Pi Friendly | β | β | |
| Docker Compose | β | β | β |
| Vendor Lock-In | β | β | β |
| Privacy First | β | β |
Cloud convenience should not require surrendering ownership of your personal data.
Pineapple Cloud gives Apple users a way to preserve the native experience they already love while moving synchronization back onto infrastructure they control.
Your server. Your rules. Your data.
Contributions are welcome.
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature- Commit your changes
git commit -m "feat: add amazing feature"- Push to your branch
git push origin feature/amazing-feature- Open a Pull Request
If Pineapple Cloud helped you reclaim ownership of your Apple data:
- β Star the repository
- π΄ Fork the project
- π§ Share it with the self-hosted community
- π οΈ Contribute improvements
Helping others discover the project makes a huge difference.
Licensed under the GNU GPLv3 License.
See:
LICENSE
for details.



