{"id":50359806,"url":"https://github.com/rpuls/my-own-suite","last_synced_at":"2026-05-30T01:01:33.086Z","repository":{"id":347807848,"uuid":"1159613337","full_name":"rpuls/my-own-suite","owner":"rpuls","description":"A curated open-source private cloud suite for replacing Google, Apple, and Microsoft tools with apps you control.","archived":false,"fork":false,"pushed_at":"2026-05-29T17:40:35.000Z","size":9627,"stargazers_count":0,"open_issues_count":18,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T19:16:50.625Z","etag":null,"topics":["cloud","digital-sovereignty","immich","independence","onlyoffice","open-source","privacy","private-cloud","saas","seafile","self-hosted","vaultwarden"],"latest_commit_sha":null,"homepage":"https://myownsuite.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rpuls.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-16T23:56:26.000Z","updated_at":"2026-05-10T22:58:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rpuls/my-own-suite","commit_stats":null,"previous_names":["rpuls/my-own-suite"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/rpuls/my-own-suite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fmy-own-suite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fmy-own-suite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fmy-own-suite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fmy-own-suite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rpuls","download_url":"https://codeload.github.com/rpuls/my-own-suite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fmy-own-suite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33676191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cloud","digital-sovereignty","immich","independence","onlyoffice","open-source","privacy","private-cloud","saas","seafile","self-hosted","vaultwarden"],"created_at":"2026-05-30T01:01:30.505Z","updated_at":"2026-05-30T01:01:33.081Z","avatar_url":"https://github.com/rpuls.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./branding/my-own-suite-mark.png\" alt=\"My Own Suite logo\" width=\"96\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eMy Own Suite\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eYour Big Tech exit kit.\u003c/sub\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://myownsuite.org/\"\u003e\u003cimg alt=\"Website\" src=\"https://img.shields.io/badge/Website-myownsuite.org-0ea5e9?style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://myownsuite.org/docs\"\u003e\u003cimg alt=\"Docs\" src=\"https://img.shields.io/badge/Docs-Read_Now-22c55e?style=for-the-badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nMy Own Suite packages proven self-hosted apps into one setup with a guided first-run flow, a shared dashboard, and deployment paths that let people start simple and move toward more independence over time.\n\nToday the repository is centered on a documented Docker Compose stack, a maintained VPS/local path, and a Railway template path for the easiest hosted start.\n\n![My Own Suite Homepage dashboard](./site/src/assets/screenshots/homepage/my-own-suite-homepage-dashboard-private-cloud-launchpad.png)\n\n## What You Get\n\n- A private cloud you control instead of a consumer SaaS ecosystem that controls you\n- A guided Suite Manager onboarding flow instead of a pile of disconnected containers\n- A Homepage dashboard that makes the suite feel like one product\n- Curated open-source apps for files, office work, photos, passwords, calendars, and PDFs\n- Multiple deployment paths so you can start with convenience and move toward more ownership later\n\n## Included Modules\n\n| Solution | App | Alternative to |\n| --- | --- | --- |\n| Dashboard | \u003cimg src=\"./site/src/assets/logos/homepage.png\" alt=\"Homepage\" width=\"18\" /\u003e **Homepage** | Link hubs, bookmarks |\n| Cloud Storage | \u003cimg src=\"./site/src/assets/logos/seafile.png\" alt=\"Seafile\" width=\"18\" /\u003e **Seafile** | Google Drive, Dropbox, OneDrive |\n| Office Suite | \u003cimg src=\"./site/src/assets/logos/ONLYOFFICE.png\" alt=\"ONLYOFFICE\" width=\"18\" /\u003e **ONLYOFFICE** | Google Docs, Microsoft 365 |\n| Photo Library | \u003cimg src=\"./site/src/assets/logos/immich.png\" alt=\"Immich\" width=\"18\" /\u003e **Immich** | Google Photos, iCloud Photos |\n| Calendar Sync | \u003cimg src=\"./site/src/assets/logos/radicale.png\" alt=\"Radicale\" width=\"18\" /\u003e **Radicale** | Google Calendar, iCloud, Outlook |\n| PDF Tools | \u003cimg src=\"./site/src/assets/logos/stirling-pdf.png\" alt=\"Stirling PDF\" width=\"18\" /\u003e **Stirling PDF** | Adobe Acrobat, Smallpdf |\n| Password Manager | \u003cimg src=\"./site/src/assets/logos/vaultwarden.png\" alt=\"Vaultwarden\" width=\"18\" /\u003e **Vaultwarden** | 1Password, LastPass, Bitwarden cloud |\n| Control Plane | \u003cimg src=\"./branding/my-own-suite-mark.png\" alt=\"My Own Suite\" width=\"18\" /\u003e **Suite Manager** | Guided onboarding, login, and shared entrypoint for the suite |\n\n## Why It Exists\n\nMost people stay inside Google, Apple, and Microsoft because those tools are convenient, connected, and available everywhere. My Own Suite is built for people who want that same kind of everyday usefulness without handing over the app layer, the ecosystem, and the long-term ownership boundary.\n\nThis project is for:\n\n- individuals and families who want a more private cloud setup\n- freelancers and creators who do not want their work folded into platform lock-in\n- people who want open-source alternatives without assembling the whole stack by hand\n- technical users who want a cleaner starting point for a self-hosted personal cloud\n\n## Choose A Deploy Path\n\nThe public docs are organized around three ways to get started:\n\n- [Deploy on Railway](https://myownsuite.org/docs/deploy-on-railway): the easiest hosted starting point\n- [Deploy on a VPS](https://myownsuite.org/docs/deploy-on-vps): the current maintained self-managed path in this repo\n- [Deploy on your own hardware](https://myownsuite.org/docs/deploy-on-your-own-hardware): the most independent path, still earlier in maturity\n\n![My Own Suite Railway service overview](./site/src/assets/screenshots/railway/railway-my-own-suite-hosted-private-cloud-template-service-map-overview.png)\n\nIf you are new to the project and want the smoothest first experience, start with [How to get started](https://myownsuite.org/docs/getting-started).\n\n## Quick Start (Local VPS Stack)\n\nIf you want to run the current repo-managed Docker Compose stack locally or on a VPS:\n\n```bash\ngit clone https://github.com/rpuls/my-own-suite.git\ncd my-own-suite\nnpm run vps:init\n```\n\n`vps:init` now auto-generates required secrets from template expressions in `*.env.template`.\nYou can still customize values in `deploy/vps/**/*.env` before startup.\n\nThen validate and start:\n\n```bash\nnpm run vps:doctor\nnpm run vps:up\n```\n\nIf you need a full destructive reset (removes volumes and data):\n\n```bash\nnpm run vps:rebuild\n```\n\nAfter startup, open `http://suite-manager.localhost/setup/` and continue through the guided onboarding flow.\n\nFor the exact operational details, use [deploy/vps/README.md](./deploy/vps/README.md) as the canonical technical guide for the VPS/local stack.\n\n## Validation\n\nThe repo includes black-box Playwright coverage that boots the real stack, walks the live onboarding flow, and verifies app reachability through Homepage.\n\nCommon commands:\n\n- `npm run e2e:install`\n- `npm run e2e:onboarding`\n- `npm run e2e:apps`\n- `npm run e2e:full`\n\n## E2E Testing\n\nThe repo includes real black-box Playwright tests that boot an isolated Docker stack, exercise the live browser flows, and tear the stack down again after the run.\n\n```bash\nnpm run e2e:install\n```\n\nInstall the Playwright test dependencies and Chromium browser once on your machine.\n\nCommand overview:\n\n- `npm run e2e:onboarding` verifies the first-run onboarding flow itself.\n- `npm run e2e:apps` verifies the suite after onboarding, focusing on Homepage-driven app access and app reachability.\n- `npm run e2e:full` runs both in one E2E stack lifecycle: onboarding first, then app verification.\n- `npm run e2e:onboarding:manual` completes onboarding and then leaves the browser open on Homepage for manual testing.\n\n```bash\nnpm run e2e:full\nnpm run e2e:full:headed\n```\n\nRun the full E2E suite. This starts the isolated test stack once, runs the onboarding spec, then runs the app verification spec against that same stack. Use `e2e:full` for headless CI-style verification or `e2e:full:headed` when you want to watch the whole flow in the browser.\n\n```bash\nnpm run e2e:onboarding\nnpm run e2e:onboarding:headed\nnpm run e2e:onboarding:manual\n```\n\nRun just the onboarding flow. Use `:headed` when you want to watch the browser step through account creation, credential import, and Homepage handoff. Use `:manual` when you want the flow to finish and then leave the browser open on Homepage for hands-on testing.\n\n```bash\nnpm run e2e:apps\nnpm run e2e:apps:headed\n```\n\nRun the post-onboarding app verification flow. This focuses on Homepage-driven app checks for Suite Manager, Vaultwarden, Seafile, Stirling PDF, Immich, and Radicale. When needed, the helper will first bring the suite into a usable post-onboarding state before asserting the app surfaces.\n\nFor the more detailed harness notes, see [tests/e2e/README.md](./tests/e2e/README.md).\n\n## Documentation Map\n\n| Need | Go here |\n| --- | --- |\n| Product story + public docs | [myownsuite.org](https://myownsuite.org/) |\n| Getting started guide | [Docs home](https://myownsuite.org/docs) |\n| Deployment overview | [site/src/content/docs/getting-started.mdx](./site/src/content/docs/getting-started.mdx) |\n| Project documentation ownership | [docs/README.md](./docs/README.md) |\n| Roadmap and future work themes | [docs/roadmap.md](./docs/roadmap.md) |\n| Architecture decision log | [docs/decisions.md](./docs/decisions.md) |\n| Canonical VPS architecture + app onboarding steps | [deploy/vps/README.md](./deploy/vps/README.md) |\n| App code + app-level technical READMEs | `apps/` |\n| Deployment stacks | `deploy/` |\n| Homepage service details | [apps/homepage/README.md](./apps/homepage/README.md) |\n| Suite Manager service details | [apps/suite-manager/README.md](./apps/suite-manager/README.md) |\n| Seafile service details | [apps/seafile/README.md](./apps/seafile/README.md) |\n| ONLYOFFICE service details | [apps/onlyoffice/README.md](./apps/onlyoffice/README.md) |\n| Immich service details | [apps/immich/README.md](./apps/immich/README.md) |\n| Radicale service details | [apps/radicale/README.md](./apps/radicale/README.md) |\n| Stirling PDF service details | [apps/stirling-pdf/README.md](./apps/stirling-pdf/README.md) |\n| Vaultwarden service details | [apps/vaultwarden/README.md](./apps/vaultwarden/README.md) |\n\n## Contributor Note\n\nFor app integration work (especially \"add a new app\"), treat [deploy/vps/README.md](./deploy/vps/README.md) as the canonical step-by-step architecture guide.\n\nFor day-to-day prototyping, use `staging` as the integration branch and reserve `main` for stable release-ready batches.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpuls%2Fmy-own-suite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frpuls%2Fmy-own-suite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpuls%2Fmy-own-suite/lists"}