Initial commit: Open sourcing all of the Maple Open Technologies code.

This commit is contained in:
Bartlomiej Mika 2025-12-02 14:33:08 -05:00
commit 755d54a99d
2010 changed files with 448675 additions and 0 deletions

View file

@ -0,0 +1,195 @@
# ==============================================================================
# Maple Open Technologies - Production Infrastructure Configuration Template
# ==============================================================================
#
# INSTRUCTIONS:
# 1. Copy this file to .env: cp .env.template .env
# 2. Replace all CHANGEME values with your actual infrastructure details
# 3. Never commit .env to Git (it's in .gitignore)
# 4. Keep .env file permissions secure: chmod 600 .env
#
# SECURITY WARNING:
# This file will contain sensitive information including:
# - IP addresses
# - API tokens
# - Passwords
# - Join tokens
# Treat it like a password file!
#
# ==============================================================================
# ------------------------------------------------------------------------------
# DigitalOcean API Access
# ------------------------------------------------------------------------------
# Get this from: https://cloud.digitalocean.com/account/api/tokens
DIGITALOCEAN_TOKEN=CHANGEME
# ------------------------------------------------------------------------------
# Infrastructure Region & VPC
# ------------------------------------------------------------------------------
# Region where all resources are deployed (e.g., tor1, nyc1, sfo3)
SWARM_REGION=CHANGEME
# VPC Network name (usually default-[region], e.g., default-tor1)
SWARM_VPC_NAME=CHANGEME
# VPC Private network subnet in CIDR notation (e.g., 10.116.0.0/16)
SWARM_VPC_SUBNET=CHANGEME
# ------------------------------------------------------------------------------
# Docker Swarm - Manager Node
# ------------------------------------------------------------------------------
SWARM_MANAGER_1_HOSTNAME=maplefile-swarm-manager-1-prod
SWARM_MANAGER_1_PUBLIC_IP=CHANGEME
SWARM_MANAGER_1_PRIVATE_IP=CHANGEME
# ------------------------------------------------------------------------------
# Docker Swarm - Worker Nodes
# ------------------------------------------------------------------------------
# Worker 1
SWARM_WORKER_1_HOSTNAME=maplefile-swarm-worker-1-prod
SWARM_WORKER_1_PUBLIC_IP=CHANGEME
SWARM_WORKER_1_PRIVATE_IP=CHANGEME
# Worker 2 (Cassandra Node 1)
SWARM_WORKER_2_HOSTNAME=maplefile-swarm-worker-2-prod
SWARM_WORKER_2_PUBLIC_IP=CHANGEME
SWARM_WORKER_2_PRIVATE_IP=CHANGEME
# Worker 3 (Cassandra Node 2)
SWARM_WORKER_3_HOSTNAME=maplefile-swarm-worker-3-prod
SWARM_WORKER_3_PUBLIC_IP=CHANGEME
SWARM_WORKER_3_PRIVATE_IP=CHANGEME
# Worker 4 (Cassandra Node 3)
SWARM_WORKER_4_HOSTNAME=maplefile-swarm-worker-4-prod
SWARM_WORKER_4_PUBLIC_IP=CHANGEME
SWARM_WORKER_4_PRIVATE_IP=CHANGEME
# Worker 5 (Meilisearch - SHARED by all apps)
SWARM_WORKER_5_HOSTNAME=maplefile-swarm-worker-5-prod
SWARM_WORKER_5_PUBLIC_IP=CHANGEME
SWARM_WORKER_5_PRIVATE_IP=CHANGEME
# Worker 6 (MaplePress Backend + Backend Caddy)
SWARM_WORKER_6_HOSTNAME=maplefile-swarm-worker-6-prod
SWARM_WORKER_6_PUBLIC_IP=CHANGEME
SWARM_WORKER_6_PRIVATE_IP=CHANGEME
# Worker 7 (MaplePress Frontend + Frontend Caddy)
SWARM_WORKER_7_HOSTNAME=maplefile-swarm-worker-7-prod
SWARM_WORKER_7_PUBLIC_IP=CHANGEME
SWARM_WORKER_7_PRIVATE_IP=CHANGEME
# ------------------------------------------------------------------------------
# Docker Swarm - Cluster Configuration
# ------------------------------------------------------------------------------
# Join token for adding new worker nodes
# Get this from manager: docker swarm join-token worker -q
SWARM_JOIN_TOKEN=CHANGEME
# ==============================================================================
# SHARED INFRASTRUCTURE (Used by ALL Apps)
# ==============================================================================
# ------------------------------------------------------------------------------
# Cassandra Configuration (3-node cluster) - SHARED
# ------------------------------------------------------------------------------
# Cluster settings
CASSANDRA_CLUSTER_NAME=CHANGEME
CASSANDRA_DC=CHANGEME
CASSANDRA_REPLICATION_FACTOR=3
# Node IPs (private IPs from workers 2, 3, 4)
CASSANDRA_NODE_1_IP=CHANGEME
CASSANDRA_NODE_2_IP=CHANGEME
CASSANDRA_NODE_3_IP=CHANGEME
# Connection settings
CASSANDRA_CONTACT_POINTS=CHANGEME # Comma-separated: 10.116.0.4,10.116.0.5,10.116.0.6
CASSANDRA_CQL_PORT=9042
# ------------------------------------------------------------------------------
# Redis Configuration - SHARED
# ------------------------------------------------------------------------------
# Generated in 03_redis.md setup guide
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=CHANGEME
# ------------------------------------------------------------------------------
# Meilisearch Configuration - SHARED
# ------------------------------------------------------------------------------
# Generated in 04_app_meilisearch.md setup guide
MEILISEARCH_HOST=meilisearch
MEILISEARCH_PORT=7700
MEILISEARCH_MASTER_KEY=CHANGEME
MEILISEARCH_URL=http://meilisearch:7700
# ------------------------------------------------------------------------------
# DigitalOcean Spaces (S3-Compatible Object Storage) - SHARED
# ------------------------------------------------------------------------------
# Generated in 04.5_spaces.md setup guide
# Access keys from DigitalOcean dashboard: API → Spaces access keys
# Note: Each app can have its own bucket, but shares the same access keys
SPACES_ACCESS_KEY=CHANGEME
SPACES_SECRET_KEY=CHANGEME
SPACES_ENDPOINT=CHANGEME # e.g., nyc3.digitaloceanspaces.com
SPACES_REGION=CHANGEME # e.g., nyc3, sfo3, sgp1
# ==============================================================================
# MAPLEPRESS APPLICATION
# ==============================================================================
# ------------------------------------------------------------------------------
# MaplePress Backend Configuration
# ------------------------------------------------------------------------------
# Generated in 05_backend.md setup guide
# Domain for backend API
MAPLEPRESS_BACKEND_DOMAIN=getmaplepress.ca
# Spaces bucket (app-specific)
MAPLEPRESS_SPACES_BUCKET=maplepress-prod
# JWT Secret (generated via: openssl rand -base64 64 | tr -d '\n')
# Stored as Docker secret: maplepress_jwt_secret
MAPLEPRESS_JWT_SECRET=CHANGEME
# IP Encryption Key (generated via: openssl rand -hex 16)
# Stored as Docker secret: maplepress_ip_encryption_key
MAPLEPRESS_IP_ENCRYPTION_KEY=CHANGEME
# ------------------------------------------------------------------------------
# MaplePress Frontend Configuration
# ------------------------------------------------------------------------------
# Configured in 07_frontend.md setup guide
# Domain for frontend
MAPLEPRESS_FRONTEND_DOMAIN=getmaplepress.com
# API endpoint (backend URL)
MAPLEPRESS_FRONTEND_API_URL=https://getmaplepress.ca
# ==============================================================================
# MAPLEFILE APPLICATION (Future)
# ==============================================================================
# ------------------------------------------------------------------------------
# MapleFile Backend Configuration (Future)
# ------------------------------------------------------------------------------
# MAPLEFILE_BACKEND_DOMAIN=maplefile.ca
# MAPLEFILE_SPACES_BUCKET=maplefile-prod
# MAPLEFILE_JWT_SECRET=CHANGEME
# MAPLEFILE_IP_ENCRYPTION_KEY=CHANGEME
# ------------------------------------------------------------------------------
# MapleFile Frontend Configuration (Future)
# ------------------------------------------------------------------------------
# MAPLEFILE_FRONTEND_DOMAIN=maplefile.com
# MAPLEFILE_FRONTEND_API_URL=https://maplefile.ca
# ==============================================================================
# END OF CONFIGURATION
# ==============================================================================