⚠️ DISCLAIMER: This repository is currently fully untested and serves only as a way to gauge interest in Onestack. I'll try my best to address any issues raised and I'll take development more seriously if the repo gets more traction.
⚠️ IMPORTANT NOTE: The current code is messy and still has Stripe payment processing tightly coupled in various places. To use this project without incurring charges, you must enter Stripe testing keys (not production keys) in the configuration. Please do not use production keys unless you fully understand the billing implications.
Visit https://onestack.cloud to learn more about Onestack and see what the application UI looks like!
- 📋 Table of Contents
- 🔍 Overview
- ✨ Features
- 🏗️ Project Structure
- 🚀 Deployment
- 💻 Development
- 🔐 Google OAuth Scopes
⚠️ Current Limitations- 📝 TODO List
- 📄 License
- 🙏 Acknowledgements
Onestack is a unified platform to access and manage various open source tools from a single interface. It simplifies user management, access control, and billing for multiple open source services.
The project streamlines administration by providing:
- Centralized user management across multiple tools
- Simplified onboarding and offboarding processes
- Unified access control and permissions
- Consolidated billing and resource allocation
- Unified Management Interface: Add/remove users across multiple services at once
- Shared Infrastructure: Multiple services running on shared databases to reduce overhead
- Simplified Deployment: Streamlined setup for complex open source tools
- Centralized Authentication: Manage access across tools in one place
Onestack consists of two main components:
- Docker Configurations: All the configurations required to run OSS tools based on shared databases (one PostgreSQL instance, one MariaDB instance, etc.)
- Web Interface: The Onestack management application for administering services and users
# 1. Navigate to the products directory
cd onestack_products
# 2. Make scripts executable
chmod +x *.sh
# 3. Generate environment configuration
bash 1-generate-env.sh
# For server deployment (optional)
# This step copies necessary files to your server
# First, edit the script to configure your server details:
# SSH_USER="your_user"
# SSH_HOST="your.host.tld"
# SSH_KEY="/path/to/your/id_rsa" # optional, if you need a specific key
# REMOTE_PATH="/root"
bash 2-copy-files-to-server.sh
# 4. Deploy all services
bash 3-deploy-all.sh
Coturn needs to be deployed outside of Docker due to limitations with the number of ports required:
# 1. Install Coturn
apt install coturn
# 2. Stop the default service
service coturn stop
# 3. Launch with custom configuration
coturn -c /root/matrix_docker/coturn.conf
To start the Phoenix server:
# Install and setup dependencies
mix setup
# Start the Phoenix endpoint
mix phx.server
# Or start it inside IEx
iex -S mix phx.server
You can then visit localhost:4000
from your browser.
To include a new product in Onestack:
- Determine required database and services for the backend
- Configure backend services if needed
- Implement member management functions:
Onestack.MemberManager.add_member_to_product
Onestack.MemberManager.remove_member_from_product
- Create a new subdirectory with:
- Docker Compose configuration
- Template environment file
- Update
root.env
with any required global variables
The following scopes are required for various integrations:
- Cal:
.../auth/calendar.readonly
.../auth/calendar.events
- Formbricks:
.../auth/spreadsheets
-
Coturn Service: Must be run natively due to Docker limitations with exposing a large number of ports
- This is only required for calls in Matrix
- Can be substituted with another cloud-based TURN server
-
Local Development:
deploy-all.sh
supports a--local
flag for testing services locally, but the local TLS development config hasn't been thoroughly tested yet -
n8n Integration: While configuration files for n8n are included for personal use, it cannot be distributed with Onestack due to licensing restrictions 😊
- Update Coturn/Matrix config to use TLS
- Add
remove_member_from_product
for "matrix" inmember_manager.ex
- Implement handling for reactivation of existing users
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
- Cal.com - Scheduling infrastructure for everyone
- Documenso - The Open Source DocuSign Alternative
- Formbricks - Open-source survey & experience management
- Penpot - Design freedom for teams
- Conduit - A Matrix homeserver written in Rust
- Kimai - Free & open source time-tracking
- Uptime Kuma - Self-hosted monitoring tool
- Plane - Open source project management
- Traefik - Cloud-native application proxy
- Castopod - Open-source podcast hosting platform
- LibreChat - Enhanced ChatGPT clone
- Chatwoot - Open-source customer support platform
- Watchtower - Automating Docker container updates
- Coturn - TURN/STUN server for WebRTC