From iCloud to OwnCloud — building my own private photo sync that grows with me.

Why I Migrated My iCloud Photos to My OwnCloud Server

Tech Nov 16, 2025

The Realization: iCloud Isn’t Really “Yours”

Like most iPhone users, I once trusted iCloud with all my photos, WhatsApp backups, and device data — until that dreaded notification appeared:

💡
“Your iCloud storage is full. Upgrade to continue syncing your photos.”

We all start with 5GB of free storage. It sounds fair until you realize how fast it fills up — between iPhone photos, iPad syncs, and random app data, it disappears in days.
At some point, I realized I was paying just to store my own memories on someone else’s server.
So, I decided to stop renting space — and build my own.

Building My OwnCloud

Instead of paying monthly for more iCloud space, I set up OwnCloud inside my home lab. It’s a simple, open-source cloud platform that lets you host your own storage — completely private, expandable, and subscription-free.

Here’s my setup in a nutshell:

  • Host: Ubuntu server (running Portainer)
  • Deployment: OwnCloud via Docker stack
  • Access: Reverse proxy through Cloudflare ZTNA
  • Storage: Backed up to my local NAS
  • Devices: iPhone, iPad, and desktop client synced seamlessly

It runs quietly alongside my other stacks like Oxidized, Uptime Kuma, and Streamlit dashboards — just another member of my home-lab ecosystem.

How It Syncs: Photos Straight from iPhone

OwnCloud’s iOS app makes the experience feel surprisingly Apple-like. Once configured, every new photo I take is automatically uploaded to my OwnCloud storage through the app’s Media Upload feature.

From there:

  • I can review and delete unwanted shots directly in the OwnCloud app.
  • It automatically uploads screenshots, videos, and images from my gallery.
  • My desktop instantly syncs the same folder for easy retrieval when writing blog posts or editing images.

No iCloud needed. No middleman. Just my own cloud — syncing in real time.

Setup Guide: How I Built It

If you’d like to replicate this, here’s how my stack looks under Portainer:

1. Create a Docker Stack in Portainer

Under your Portainer dashboard, create a new stack and paste this:

version: "3.8"

services:
  owncloud:
    image: owncloud/server:latest
    container_name: owncloud
    restart: always
    ports:
      - "8080:8080"  
    environment:
      - OWNCLOUD_DOMAIN=localhost:7003
      - OWNCLOUD_TRUSTED_DOMAINS=cloud.hak1m.me,192.168.2.20:7003
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_HOST=192.168.2.20:32768
      - OWNCLOUD_DB_NAME=owncloud
      - OWNCLOUD_DB_USERNAME=user
      - OWNCLOUD_DB_PASSWORD=password
      # first-time bootstrap (optional)
      - OWNCLOUD_ADMIN_USERNAME=admin
      - OWNCLOUD_ADMIN_PASSWORD=password
    volumes:
      - owncloud_data:/mnt/data

volumes:
  owncloud_data:

Deploy it, and you’ll have your own cloud instance running at http://yourserverip:8080.

2. Add a Reverse Proxy via Cloudflare ZTNA

I connected it securely using Cloudflare Tunnel (ZTNA).
This lets me access https://cloud.awalhakim.com from anywhere in the world without opening any ports on my home router.
If you don’t have a domain yet, you can use a Cloudflare subdomain for free and still enjoy secure HTTPS.

3. Connect Your Storage

For me, the storage path (/opt/owncloud/data) is mounted directly to my NAS.
That means all my photos are automatically backed up locally — and if I ever expand my NAS capacity, my cloud grows with it.
This setup is fully scalable:

  • Add more drives to expand your storage.
  • Or, deploy it on any VPS if you don’t have a home lab.

4. Sync from Your iPhone

  1. Download the OwnCloud app from the App Store.
  2. Log in with your domain (e.g., cloud.awalhakim.com).
  3. Go to Settings → Media Upload and enable:
    • Upload new photos automatically
    • Include videos and screenshots (optional)

That’s it. Every new photo will now sync automatically to your OwnCloud server — just like iCloud, but without the subscription wall.

Why This Matters

It’s not about rebelling against Apple.
It’s about owning what’s yours — your data, your photos, your digital life.

Self-hosting puts you in control. No hidden terms, no pricing tiers.
If I ever need more space, I just plug in another hard drive.

For me, OwnCloud became more than storage — it’s a personal ecosystem that grows with me.

While OwnCloud gives you a powerful self-hosted cloud with internet access, some readers prefer a local-only photo backup solution — one that never touches the internet at all. In that case, I walk through a simpler OpenMediaVault + PhotoSync setup in my other article:My Local-Only iCloud Alternative: OpenMediaVault + PhotoSync Without Internet Exposure

Final Thoughts

Owning your cloud feels different. It’s not as polished as iCloud, but it’s personal, private, and limitless.
And when I take a photo today, I know exactly where it lives — on my own hardware, in my own network, under my own control.

If you’re tired of paying rent to store your memories, maybe it’s time to build your own too.

Tags