{"id":18865232,"url":"https://github.com/sndnv/stasis","last_synced_at":"2026-04-10T14:06:49.920Z","repository":{"id":43342249,"uuid":"153169374","full_name":"sndnv/stasis","owner":"sndnv","description":"Backup and recovery system with emphasis on security and privacy","archived":false,"fork":false,"pushed_at":"2025-02-24T22:30:22.000Z","size":5625,"stargazers_count":94,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T05:08:12.181Z","etag":null,"topics":["android","backup","docker","encryption","flutter","kotlin","python","recovery","scala","storage"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sndnv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-15T19:22:28.000Z","updated_at":"2025-03-25T22:08:22.000Z","dependencies_parsed_at":"2024-08-20T14:32:49.794Z","dependency_job_id":"2fa4a781-db34-43ac-87f8-23d4555cbaea","html_url":"https://github.com/sndnv/stasis","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Fstasis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Fstasis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Fstasis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Fstasis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sndnv","download_url":"https://codeload.github.com/sndnv/stasis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608151,"owners_count":20965952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","backup","docker","encryption","flutter","kotlin","python","recovery","scala","storage"],"created_at":"2024-11-08T04:46:24.561Z","updated_at":"2026-04-10T14:06:44.867Z","avatar_url":"https://github.com/sndnv.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# stasis\n\n\u003e A **[stasis](https://en.wikipedia.org/wiki/Stasis_(fiction))** */ˈsteɪsɪs/* or **stasis field**, in science fiction,\n\u003e is a confined area of space in which time has been stopped or the contents have been rendered motionless.\n\n`stasis` is a backup and recovery system with an emphasis on security and privacy; no personal information is collected,\nno unencrypted data leaves a client device and all encryption keys are fully in the control of their owner.\n\n### Linux/macOS Client CLI\n[![asciicast](https://asciinema.org/a/YMIf9oCMfvrbznnMnCrUMfar9.svg)](https://asciinema.org/a/YMIf9oCMfvrbznnMnCrUMfar9?speed=3)\n\n### Linux/macOS Client UI\n| ![Login Screen](assets/screenshots/client_ui_screenshot_1.png)              | ![Home Screen](assets/screenshots/client_ui_screenshot_2.png)     |\n|-----------------------------------------------------------------------------|-------------------------------------------------------------------|\n| ![Backup Definitions Screen](assets/screenshots/client_ui_screenshot_3.png) | ![Recovery Screen](assets/screenshots/client_ui_screenshot_4.png) |\n\n### Android Client\n| ![Bootstrap Screen\"](assets/screenshots/client_android_screenshot_1.png) | ![Login Screen](assets/screenshots/client_android_screenshot_2.png) | ![Navigation Hint](assets/screenshots/client_android_screenshot_3.png)           |\n|--------------------------------------------------------------------------|---------------------------------------------------------------------|----------------------------------------------------------------------------------|\n| ![Help Hint](assets/screenshots/client_android_screenshot_4.png)         | ![Home Screens](assets/screenshots/client_android_screenshot_5.png) | ![Definition Details Screen](assets/screenshots/client_android_screenshot_6.png) |\n\n## Why?\n\n* **Trust Issues** - Do you trust your backup or infrastructure/storage provider with your unencrypted data?\n* **Multi-Device** - How many backup providers would you need to cover all types of devices you own?\n* **Self-Hosted** - What if your backup provider goes out of business?\n\n## Goals\n\n* Recover user data from total failure or device loss\n* Replicate data to local and remote/cloud storage\n* Encrypt data before it leaves a device\n* Manage all device backups from a single service\n\n*Along with [`provision`](https://github.com/sndnv/provision), the goal is to be able to grab a blank/off-the-shelf\ndevice and recover the original system in an automated and repeatable way.*\n\n## Features\n\n* ***[Client-only Encryption](https://github.com/sndnv/stasis/wiki/Architecture-%3A%3A-Encryption)*** -\n  encryption and decryption is done by client applications; the server never deals with unencrypted data or metadata\n* ***[Device-only Secrets](https://github.com/sndnv/stasis/wiki/Architecture-%3A%3A-Secrets)*** -\n  user credentials and device secrets do not leave the device on which they were entered/generated\n* ***[Default Redundancy](https://github.com/sndnv/stasis/wiki/Architecture-%3A%3A-Core-Persistence)*** -\n  copies of a device's encrypted data are sent to multiple nodes by default (local and remote)\n* ***[Hybrid Data Storage](https://github.com/sndnv/stasis/wiki/Architecture-%3A%3A-Data-Stores)*** -\n  various storage backends (**[Slick](https://scala-slick.org/)**, **in-memory**, **file-based**) are supported and used\n* ***Secrets Escrow*** -\n  enables storing encrypted device secrets on the server to simplify recovering of a lost or replaced device\n* ***Serverless Mode*** -\n  (*TODO*) enables creating backups and recovering from them without the presence of a server\n\n## Installation\n\n### Server\nDocker images for `server`, `server-ui`, `identity` and `identity-ui` can be found under [Packages](https://github.com/sndnv?tab=packages\u0026repo_name=stasis).\n\nThe required configuration can be downloaded and prepared by running the installer:\n```\n$ curl -s \"https://raw.githubusercontent.com/sndnv/stasis/master/deployment/production/scripts/server_prepare_deployment.sh\" | bash -s -- --target=/tmp/stasis-server-deployment\n```\n\n\u003e See [deployment/production](deployment/production/README.md) for more information on how to set up and deploy the services.\n\n### Clients\nClient binaries for Linux, macOS and Android can be found for each [release](https://github.com/sndnv/stasis/releases).\n\n#### Linux and macOS\nThe provided installer can be used:\n```\n$ curl -s \"https://raw.githubusercontent.com/sndnv/stasis/master/deployment/production/scripts/client_install.sh\" | bash\n```\n\n###### Removing\nThe Linux and macOS clients can be uninstalled using:\n```\n$ curl -s \"https://raw.githubusercontent.com/sndnv/stasis/master/deployment/production/scripts/client_uninstall.sh\" | bash\n```\n\n###### Updating\nThe Linux and macOS clients can be updated by uninstalling the current version and installing the latest one:\n\n```\n$ curl -s \"https://raw.githubusercontent.com/sndnv/stasis/master/deployment/production/scripts/client_uninstall.sh\" | bash\n$ curl -s \"https://raw.githubusercontent.com/sndnv/stasis/master/deployment/production/scripts/client_install.sh\" | bash\n```\n\n\u003e Secrets, configuration, logs and operation state are NOT removed when uninstalling the client!\n\n#### Android\nOn Android, installing and updating is done by simply downloading the `apk` file and running it.\n\n### Testing\nImages and binaries for testing/development purposes can be created locally using the existing [dev tools](deployment/dev).\n\n## Development\nRefer to the [DEVELOPMENT.md](DEVELOPMENT.md) file for more details.\n\n## Contributing\n\nContributions are always welcome!\n\nRefer to the [CONTRIBUTING.md](CONTRIBUTING.md) file for more details.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning.\n\n## License\n\nThis project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details\n\n\u003e Copyright 2018 https://github.com/sndnv\n\u003e\n\u003e Licensed under the Apache License, Version 2.0 (the \"License\");\n\u003e you may not use this file except in compliance with the License.\n\u003e You may obtain a copy of the License at\n\u003e\n\u003e http://www.apache.org/licenses/LICENSE-2.0\n\u003e\n\u003e Unless required by applicable law or agreed to in writing, software\n\u003e distributed under the License is distributed on an \"AS IS\" BASIS,\n\u003e WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\u003e See the License for the specific language governing permissions and\n\u003e limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsndnv%2Fstasis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsndnv%2Fstasis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsndnv%2Fstasis/lists"}