One subscription, one interface, one click.
Manage open source alternatives to your SaaS tools from a single dashboard.
Onestack replaces expensive SaaS subscriptions with self-hosted open source alternatives, managed through a single web interface. Instead of paying per-user fees to Slack, Linear, Figma, Calendly and others, you deploy their open source equivalents on your own infrastructure and manage everything from one place.
For teams, Onestack handles:
- Adding and removing users across all tools at once
- Shared infrastructure (one Postgres, one Redis) to reduce overhead
- Optional Stripe billing with graduated per-feature pricing
- Role-based access control and team management
For self-hosters, Onestack provides:
- Pre-configured Docker Compose files for each tool
- A unified Traefik reverse proxy setup with automatic TLS
- A web dashboard to manage it all, no Stripe required
| Tool | Replaces | Category |
|---|---|---|
| Plane | Linear, Jira | Project management |
| Cal.com | Calendly | Scheduling |
| Penpot | Figma | Design |
| Chatwoot | Intercom | Customer support |
| Matrix (Conduit) | Slack | Team chat |
| Formbricks | Typeform | Forms and surveys |
| Documenso | DocuSign | Document signing |
| Kimai | Toggl | Time tracking |
| Castopod | Buzzsprout | Podcast hosting |
| LibreChat | ChatGPT | AI chat |
| Infisical | Doppler | Secrets management |
| Uptime Kuma | Pingdom | Uptime monitoring |
Each tool has a ready-to-deploy Docker Compose configuration in onestack_products/.
- Backend: Elixir, Phoenix Framework, Phoenix LiveView
- Database: SQLite (dev), PostgreSQL (production)
- Frontend: Tailwind CSS, DaisyUI, Alpine.js
- Infrastructure: Docker Compose, Traefik v3, Let's Encrypt
- Payments: Stripe (optional)
- Elixir 1.17+ and Erlang/OTP 26+
- Node.js 18+ (for asset compilation)
- SQLite3 (for local development)
# Clone the repository
git clone https://github.com/Onestack-cloud/onestack.git
cd onestack
# Copy environment config (Stripe keys are optional)
cp .env.example .env
# Install dependencies, create database and compile assets
mix setup
# Start the development server
mix phx.serverVisit localhost:4000 to see the app.
Onestack works without Stripe. If
STRIPE_API_KEYis not set, billing features are automatically disabled and you can manage products and users directly.
mix test # Run all tests
mix test --failed # Re-run only failed tests Internet
|
[ Traefik ] ← automatic TLS via Let's Encrypt
|
┌──────────────┼──────────────┐
| | |
[ Onestack ] [ Plane ] [ Cal.com ] ...
| | |
└──────┬───────┴──────────────┘
|
[ PostgreSQL ] [ Redis ] [ MariaDB ]
All services sit behind a single Traefik instance on the traefik_default Docker network. Each app gets a subdomain (e.g. plane.yourdomain.com) with automatic HTTPS certificates.
# 1. Copy environment config and fill in your values
cp .env.example .env
# 2. Start shared infrastructure first
cd onestack_products/traefik_docker && docker compose up -d
cd ../databases/postgres && docker compose up -d
cd ../valkey_redis && docker compose up -d
# 3. Start individual services
cd ../../plane_docker && docker compose up -d
cd ../calcom_docker && docker compose up -d
# ... repeat for each tool you want to run
# 4. Start the Onestack management app
cd ../onestack_docker && docker compose up -dEach product directory contains:
docker-compose.ymlwith Traefik labels for automatic routing.env.examplewith the required configuration variables
See .env.example for the full list. Key variables:
| Variable | Required | Description |
|---|---|---|
SECRET_KEY_BASE |
Yes | Phoenix session encryption. Generate with mix phx.gen.secret |
PHX_HOST |
Yes | Your domain (e.g. onestack.cloud) |
DATABASE_PATH |
Production | Path to the SQLite database file |
STRIPE_API_KEY |
No | Enables billing features when set |
STRIPE_PUBLIC_KEY |
No | Stripe publishable key for the checkout UI |
STRIPE_WEBHOOK_SECRET |
No | Stripe webhook signing secret |
onestack/
├── lib/
│ ├── onestack/ # Business logic (contexts)
│ │ ├── accounts.ex # User authentication
│ │ ├── teams.ex # Team and organisation management
│ │ ├── catalog_monthly.ex # Product catalogue
│ │ ├── member_manager.ex # Cross-product user provisioning
│ │ └── subscriptions.ex # Stripe subscription handling
│ └── onestack_web/ # Web layer
│ ├── live/ # LiveView pages
│ ├── components/ # Reusable UI components
│ └── controllers/ # Traditional controllers
├── onestack_products/ # Docker configs for each tool
│ ├── traefik_docker/ # Reverse proxy
│ ├── databases/ # Shared PostgreSQL, Redis, MariaDB
│ ├── plane_docker/ # Project management
│ ├── calcom_docker/ # Scheduling
│ ├── infisical_docker/ # Secrets management
│ └── ... # One directory per tool
├── infrastructure/ # Ansible playbooks and scripts
├── config/ # Phoenix configuration
└── priv/ # Migrations, seeds, static assets
- Create a directory in
onestack_products/with adocker-compose.ymland.env.example - Use Traefik labels for routing (see any existing product for the pattern)
- Connect to the shared databases on the
traefik_defaultnetwork, or bundle your own - Add a database migration to insert the product into
products_central - Implement
add_member_to_productandremove_member_from_productinOnestack.MemberManager
Issues and pull requests are welcome. If you'd like to add a new tool integration, open an issue first to discuss the approach.
# Fork and clone the repo, then:
mix setup
mix test # Make sure everything passes
mix phx.server # Start developingGNU Affero General Public Licence v3.0. See LICENCE for details.
Onestack is built on top of these excellent open source projects:
Cal.com · Castopod · Chatwoot · Conduit · Coturn · Documenso · Formbricks · Infisical · Kimai · LibreChat · Penpot · Plane · Traefik · Uptime Kuma · Watchtower
