CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system. https://casaos.zimaspace.com
  • Go 90.3%
  • Shell 9.4%
  • HTML 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
老竭力 e099dd6b49
Make demo resets recover safely and clean up orphan instances (#2595)
Hourly demo resets can retain old billable instances because cleanup
selects only the last entry of an unsorted name list. The existing
workflow also switches traffic after the instance reaches `running`,
without checking whether CasaOS is ready.

This change serializes the AWS reset job and identifies the serving
instance from `CasaOS-Demo-IP`. A Python helper waits for Lightsail
operations and checks the candidate's HTTP homepage before moving the
static IP. It verifies the homepage again after cutover. Failures before
a healthy cutover attempt to restore the predecessor and remove the
failed candidate. An incomplete rollback preserves both instances and
reports failure.

After a healthy cutover, cleanup attempts every matching instance
captured before creation, including legacy timestamp names and
candidates left by earlier runs. Each deletion rechecks static-IP
ownership. Individual retirement failures are reported together and
retried by subsequent successful resets, without rolling traffic back
after old hosts may already have been removed.

The workflow uses run ID and attempt for unique names, bounds lifecycle
waits, and runs regression tests before configuring AWS credentials.
Pull requests run validation, with the AWS job restricted to main.
Official checkout and AWS credential actions are pinned to verified
release commits.

## Validation

- 18 standard-library unittest cases passed, covering normal
replacement, historical orphans, API failures after side effects,
pending/failed operations, unhealthy candidates, failed cutovers, failed
rollbacks, protected static IPs, partial retirement, and the next
reset's cleanup retry.
- `actionlint` v1.7.12 passed for `.github/workflows/demo.yml`.
- The new HTTP health predicate passed against the current demo through
`54.212.21.209`, using the `demo.casaos.io` Host header.
- `git diff --check` passed.

## Deployment validation

The create, migration, rollback, and deletion paths were tested with
simulated AWS responses. They still need an end-to-end Lightsail run
after review. The health predicate checks HTTP 200 and the CasaOS HTML
title on `/`.

The existing AWS principal needs the additional read operations used by
the helper, including `lightsail:GetInstance`,
`lightsail:GetInstanceSnapshot`, `lightsail:GetStaticIp`, and
`lightsail:GetOperation`. Forced runner termination can leave a
candidate for a later successful reset to retire.
2026-11-09 17:38:52 +08:00
.github Make demo resets recover safely and clean up orphan instances (#2595) 2026-11-09 17:38:52 +08:00
api feat: add file upload implement to v2 api (#1566) 2023-12-27 16:17:33 +08:00
build Add initial RISC-V support (#2206) 2025-04-16 14:16:50 +08:00
cmd add message-bus-codegen CLI tool for generating a markdown of all event types (#1346) 2023-08-23 18:21:12 +08:00
common update version (#2098) 2024-12-17 15:54:54 +08:00
conf v0.3.7 (#600) 2022-10-20 14:25:26 +08:00
drivers fix: update user info retrieval and clean up unused code (#2101) 2024-12-19 11:14:15 +08:00
interfaces 0.3.6 (#519) 2022-09-06 14:28:49 +08:00
internal Community (#1341) 2023-08-18 15:46:29 +08:00
model Community (#1341) 2023-08-18 15:46:29 +08:00
pkg chore: fix problematic comments (#2030) 2024-12-04 11:04:17 +08:00
route fix: update user info retrieval and clean up unused code (#2101) 2024-12-19 11:14:15 +08:00
service Update system.go 2025-07-01 15:05:40 +08:00
types Send notification changes to message bus (#861) 2023-02-06 15:47:29 +08:00
.all-contributorsrc docs: add llwaini as a contributor for projectManagement, test, tutorial (#379) 2022-07-19 18:10:25 +08:00
.gitignore update go.mod 2023-11-20 08:30:14 +00:00
.gitmodules 🦄 refactor: 2021-09-29 13:50:16 +08:00
.goreleaser.debug.yaml Add initial RISC-V support (#2206) 2025-04-16 14:16:50 +08:00
.goreleaser.yaml Add initial RISC-V support (#2206) 2025-04-16 14:16:50 +08:00
CHANGELOG.md Change changelog (#953) 2023-03-14 14:02:44 +08:00
CODE_OF_CONDUCT.md add CODE_OF_CONDUCT.md (#898) 2023-02-15 16:14:47 -05:00
DEVELOPING.md Adding simple Developing file (#311) 2022-06-21 08:57:55 +08:00
go.mod fix: too much log (#2078) 2024-12-06 15:43:54 +08:00
go.sum fix: too much log (#2078) 2024-12-06 15:43:54 +08:00
LICENSE Create LICENSE 2021-11-19 17:33:57 +08:00
main.go fix: safe cmd (#1921) 2024-07-24 21:46:08 +08:00
Makefile update makefile 2021-09-27 17:22:18 +08:00
package.json Update publish_npm.yaml (#1120) 2023-05-24 13:49:03 +08:00
README.md Update README.md (#2323) 2025-08-06 16:54:02 +08:00
SECURITY.md Create SECURITY.md 2023-03-08 20:07:56 -05:00
snapshot-dark.jpg Create snapshot-dark.jpg 2022-07-18 18:52:50 +08:00
snapshot-light.jpg Create snapshot-light.jpg 2022-07-18 18:52:48 +08:00
snapshot-mobile.png update README.md 2021-11-12 17:52:16 +08:00
snapshot.png update README.md 2021-10-20 11:23:25 +08:00
tsconfig.json ✨ Introducing new features.Incorporating automatic publishin… (#1107) 2023-05-22 16:45:06 +08:00

CasaOS - Your Personal Cloud

CasaOS
Connect with the community, establish autonomy, reduce the cost of SaaS, and MAXIMIZE the potential for a personalized copilot.

CasaOS Version CasaOS License CasaOS Pull Requests CasaOS Issues CasaOS Stargazers
IceWhale Discord CasaOS GitHub Discussions All Contributors YouTube Tutorial Views
twitter ZimaSpace facebook ZimaSpace
Website | Demo | GitHub

CasaOS Snapshot

Why do you need Personal Cloud?

In 2020, the team noticed three important trends:

  • The cost of computing power and storage was decreasing fast.
  • A part of cloud computing was moving towards edge computing.
  • The issue of consumer data asset ownership and attribution had been ignored.

Based on these trends, the team proposed a thought experiment internally: what if personal clouds were available under $100 in next five years? This personal cloud would provide a low-cost data collaboration solution as a personal data center, storing and managing data for creators and small organizations. A distributed collaborative computing network can be formed by personal servers located around the world. It could also control and connect all smart devices, providing cross-ecosystem local intelligent services.

Furthermore, the personal cloud could combine personal data to train personalized AI assistants. The idea is that this technology would be an effective way to solve the issue of consumer data asset ownership and , as well as provide a more affordable and efficient computing solution for individuals and small organizations.

If you think what we are doing is valuable. Please give us a star ⭐ and fork it 🤞!

Features

  • Friendly UI designed for home scenarios
    • No code, no forms, intuitive, design for humanity
  • Multiple hardware and base system support
    • ZimaBoard, NUC, RPi, old computers, whatever is available.
  • Selected apps in the app store, one-click installation
    • Nextcloud, HomeAssistant, AdGuard, Jellyfin, *arr and more!
  • Easily install numerous Docker apps
    • Over 100,000 apps from the Docker ecosystem can be easily installed
  • Elegant drive and file management
    • What you see is what you get. No technical background required.
  • Well-designed system/app widgets
    • What you care about, at a glance. Resource usage, app status, and more!

Getting Started

CasaOS fully supports ZimaBoard, Intel NUC, and Raspberry Pi. Also, more computers and development boards and fully compatible with Ubuntu, Debian, Raspberry Pi OS, and CentOS with one-liner installation.

Hardware Compatibility

  • amd64 / x86-64
  • arm64
  • armv7

System Compatibility

Official Support

  • Debian 12 (✅ Tested, Recommended)
  • Ubuntu Server 20.04 (✅ Tested)
  • Raspberry Pi OS (✅ Tested)

Community Support

  • Elementary 6.1 (✅ Tested)
  • Armbian 22.04 (✅ Tested)
  • Alpine (🚧 Not Fully Tested Yet)
  • OpenWrt (🚧 Not Fully Tested Yet)
  • ArchLinux (🚧 Not Fully Tested Yet)

Quick Setup CasaOS

Freshly install a system from the list above and run this command:

wget -qO- https://get.casaos.io | sudo bash

or

curl -fsSL https://get.casaos.io | sudo bash

Update CasaOS

CasaOS can be updated from the User Interface (UI), via Settings ... Update.

Alternatively it can be updated from a terminal session. To update from a terminal session, it must be done either from a secure shell (ssh) session to the device or from a directly attached terminal and keyboard to the device running CasaOS, this cannot be done from the terminal via the CasaOS User Interface (UI). To update to the latest release of CasaOS from a terminal session run this command:

wget -qO- https://get.casaos.io/update | sudo bash

or

curl -fsSL https://get.casaos.io/update | sudo bash

To determine version of CasaOS from a terminal session run this command:

casaos -v

Uninstall CasaOS

v0.3.3 or newer

casaos-uninstall

Before v0.3.3

curl -fsSL https://get.icewhale.io/casaos-uninstall.sh | sudo bash

Community

The word Casa comes from the Spanish word for "home". Project CasaOS originated as a pre-installed system for the crowdfunded product ZimaBoard on Kickstarter.

After looking at many systems and software on the market, the team found no server system designed for home scenarios, sadly true.

So, we set out to build this open-source project to develop CasaOS with our own hands, everyone in the community, and you.

We believe that through community-driven collaborative innovation and open communication with global developers, we can reshape the digital home experience like never before.

A warm welcome for you to get help or share great ideas in the Discord!

Discord Card

Contributing

CasaOS is a community-driven open source project and the people involved are CasaOS users. That means CasaOS will always need contributions from community members just like you!

Credits

Many thanks to everyone who has helped CasaOS so far!

Everyone's contribution is greatly appreciated. (Emoji Key)


老竭力

💻 📖 🤔 🚇 🚧 📦 💬 👀

link

💻 📖 🤔 🚇 🚧 💬 👀

太戈

💻 📖 🤔 🚇 🚧 🧑‍🏫 🛡️ 💬 👀

Lauren

🤔 🔍 📆 💬 ⚠️

John Guan

📝 🖋 📖 🤔 📋 🧑‍🏫 💬 👀

David Tippett

📖 🤔 💬

Skaya

🧑‍🏫 💬 ✅ 🌍

AuthorShin

⚠️ 🐛 💬 🤔

baptiste313

🌍

DrMxrcy

⚠️ 🤔 💬

Joooost

🤔

Vitaly Potyarkin

🤔

Bjørn Friese

🤔

Protektor

🐛 🤔 💬

llwaini

📆 ⚠️ ✅

CorrectRoadH

💻 📖

zhanghengxin

💻 📖

This project follows the all-contributors specification. Contributions of any kind are welcome!

Changelog

Detailed changes for each release are documented in the release notes.


trackgit-views