For the last year or so, I've been using Syncthing as an alternative to iCloud Drive. It gives me far greater control over my data, supports peer-to-peer sync, and reduces my exposure to large corporate-run accounts. If you've found yourself looking for an alternative to centralized file synchronization, I encourage you to give it a go.
Although there's no official client for iOS, Möbius Sync1 does a surprisingly good job of filling the gap. It uses the somewhat hacky workaround of posting local notifications to ensure it gets sufficient background runtime to remain in sync, but this seems to work flawlessly. It also stores files directly on device rather than acting as an iOS file provider--something I would have previously considered this a poor choice but, due to iOS platform limitations, actually offers far more flexibility as system-wide open-in-place works for directories (unlike with file provider based solutions like Dropbox and Google Drive).
When adding new shares to Möbius Sync, it's important to ensure you correctly set up the ignore patterns as they're not robust enough out-of-the-box. Specifically, iOS doesn't like Unix hidden files (those prefixed with a period), so it's important to ensure these are both ignored and marked as safe to be deleted by other clients. You can do this with the following pattern:
(?d) is crucial as it indicates that the client will not block deletion of a parent directory for files that match the pattern. Without this, it's possible to find yourself in a situation where synchronization never completes on other clients.