Update 2025 — Corso is archived, Alcion was acquired by Veeam. The Corso GitHub repository has been officially archived with no further security updates. The team behind it shifted to their commercial product Alcion, which was then acquired by Veeam in September 2024 — Alcion's technology now powers Veeam Data Cloud for Microsoft 365. Both corsobackup.io and alcion.ai redirect to Veeam today. Running Corso in production is no longer advisable. The guide below is kept as a reference for the self-hosted approach.

As an IT company constantly navigating the complexities of digital security and data management, we recently embarked on a quest to fortify our Microsoft 365 environment. Our journey led us to Corsobackup.io, a solution that not only met our criteria for cost-effectiveness and simplicity but also instilled a profound sense of trust through its Open Source Software (OSS) framework. Corsobackup's compatibility with various storage backends like AWS S3 and iDrive e2 exemplified the flexibility and reliability we sought.
Utilizing one of our Kubernetes clusters, we implemented incremental backups for OneDrive and Exchange through scheduled Cronjobs. The efficiency of Corsobackup is notable; it operates seamlessly within our system, ensuring that both mailbox and OneDrive backups are executed without perceptible resource consumption or impact on our system's performance. Here, we aim to share a detailed walkthrough on setting up backups swiftly using our Helm chart.
Why Consider Additional Backup for Microsoft 365?
- Enhanced Security: Microsoft's built-in protection often falls short of covering all potential data loss scenarios.
- Cost Efficiency: Startups and small businesses, where every dollar counts, find most market solutions prohibitively expensive.
- Leveraging Existing Infrastructure: Why not utilize your infrastructure at no additional cost if it's already there?
- Compliance and Trust Issues: Granting full data access to providers can conflict with compliance regulations.
For those not constrained by these concerns, Corsobackup developers offer a premium service with an intuitive UI at Alcion.ai, catering to those seeking a hassle-free experience at a fair price.
iDrive e2: A Cost-Effective Storage Solution
We recommend iDrive e2 for budget-conscious users. Its compatibility and zero-cost for request operations on buckets enable frequent backups without worrying about hidden fees — only the used storage space is billed.
Getting Started with Corsobackup
The setup requires:
- An S3 Bucket with credentials.
- Azure access and permission to create an Azure AD application.
- Local setup of Helm 3.0+.
- A Kubernetes cluster version 1.19 or above.
- Pods in your cluster that can establish connections to your S3 service and Azure.
- A namespace, such as "corsobackup," for your Cronjobs.
- Configured
kubectlto manually trigger a cron job.
Let's Install a Cronjob
1. Azure AD Application Creation
Brace yourself — this is typically the most intricate part of the setup process and may require a bit of patience and, dare we say, a substantial amount of coffee. Setting up the Azure AD application is a critical step, but it can be complex and time-consuming. It's essential to approach this stage with a calm mindset and allow yourself the time to navigate through it carefully.
Follow the tutorial from the Corsobackup docs to setup Azure AD and note down the required Azure credentials.
2. S3 Compatible Bucket Creation
We assume access to AWS, iDrive e2, BackBlaze or your own MinIO to create a bucket. Note down the necessary AWS keys and the bucket details.
3. Prepare Chart Values
Customize the values file, setting at least the environment secrets for Azure and the S3 Bucket. Ensure to generate and save a strong CORSO_PASSPHRASE for backup encryption!
Use this template — by default the chart backs up all Exchange mailboxes and OneDrive users once a night. Details about the Corso commands are explained in the official documentation.
name: 'corsobackup'
jobs:
- name: "exchange"
schedule: "0 1 * * *"
task: ["backup", "create", "exchange", "--mailbox", "*"]
- name: "onedrive"
schedule: "0 2 * * *"
task: ["backup", "create", "onedrive", "--user", "*"]
image:
repository: 'ghcr.io/alcionai/corso'
tag: 'v0.19.0'
pullPolicy: IfNotPresent
repository:
bucket: "corsobackup"
endpoint: ""
envSecrets:
AWS_SECRET_ACCESS_KEY: "XXXXX"
AWS_ACCESS_KEY_ID: "XXXXX"
AZURE_TENANT_ID: "XXXXX"
AZURE_CLIENT_SECRET: "XXXXX"
AZURE_CLIENT_ID: "XXXXX"
CORSO_PASSPHRASE: "XXXXX"
persistence:
size: 1Gi
accessModes:
- ReadWriteOnce
endpoint is required if you don't use an AWS S3 bucket. Replace the XXXXX values with your credentials.
4. Installation
Add the THEKROLL Helm chart repository and install the cronjobs using the created values file.
helm repo add thekroll https://helmcharts.gitlab.io/stable
helm install my-corsobackup thekroll/corsobackup --values ./values.yaml
5. Trigger an Initial Backup
Initiating your first backup is a crucial step towards securing your Microsoft 365 data. In the following example, replace <job_name> with the name of the job defined in your values.yaml, and <namespace> with your designated namespace. By default, this could be onedrive for the job and corsobackup for the namespace.
kubectl create job --from=cronjob/corsobackup-1.0.1-<job_name>-cron-job corsobackup-1.0.1-<job_name>-cron-job-initial -n <namespace>
If executed successfully, you should now be able to see a job that, depending on the amount of data, has completed successfully after a short or longer period.
kubectl -n corsobackup get jobs
Expected output:
NAME COMPLETIONS DURATION AGE
corsobackup-1.0.1-onedrive-cron-job-initial 1/1 26s 1s
This step marks the beginning of your journey towards a resilient backup strategy, ensuring your data's safety against unforeseen incidents.
Restore and Monitoring
Monitoring and restoration processes are crucial steps to ensure data integrity. We plan to cover the detailed restoration process in a forthcoming article, guiding through the nuances of effectively managing and recovering your Microsoft 365 data with Corsobackup.
Thank You!
We hope this guide has illuminated the path to leveraging Corsobackup for safeguarding your Microsoft 365 ecosystem. Establishing a robust, cost-effective backup plan is key to maintaining the integrity and security of your business data in today's digital world. Our team is on standby, eager to field your queries and assist you as you embark on the journey toward a more secure and resilient IT framework.
As you dive into setting up your backups, remember to keep your cool, especially when navigating the Azure AD application setup — it's a breeze once you get the hang of it! May your backups run smoothly, and your recovery processes be swift and painless.
Best of luck with your backup strategy implementation. Remember, a stitch in time saves nine, and the right preparations today can spare you a multitude of headaches tomorrow. For any more info or a helping hand, feel free to reach out. Stay safe, and here's to a productive and securely backed-up future!
Cheers and chill vibes, Sven