Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
8343b4376e | |||
188764b705 | |||
d6f5a62bcc | |||
1cfa7f1327 | |||
002d7d768f | |||
172d049c25 | |||
b54d6ce48b | |||
12b1fcc7a5 | |||
93d53a932a | |||
950faf332d | |||
9279cbb0f7 | |||
e7be530e48 | |||
9bc246d9c5 | |||
4b107230c1 | |||
8c3ee7bc1a | |||
da69c18ab7 | |||
f12cf021fa | |||
69582d36e0 | |||
1a2f3b2cc0 | |||
0dfd8ae14e | |||
557b7feada | |||
670c3eaeb9 | |||
065f5270f5 | |||
9cd322bc17 | |||
8b9b9d9ed4 |
@@ -1,247 +0,0 @@
|
||||
**Executive Summary**
|
||||
---------------------
|
||||
|
||||
At Bespoke Clouds, our mission is to empower individuals and small businesses to take charge of their digital lives by providing custom, open-source solutions that prioritize security, privacy, and collaboration. Our goal is to help customers grow and prosper without sacrificing their personal data or privacy.
|
||||
|
||||
### **Company Description**
|
||||
|
||||
Bespoke Clouds will operate as a \[insert legal structure\] with the following background:
|
||||
|
||||
* Business name: Bespoke Clouds
|
||||
* Founding date: \[Insert founding date\]
|
||||
* Current ownership structure: \[Insert ownership structure\]
|
||||
|
||||
### **Market Analysis**
|
||||
|
||||
The market for bespoke cloud solutions is growing rapidly, driven by increasing concerns about data privacy and security. Our target market includes:
|
||||
|
||||
* Small businesses (1-50 employees) seeking flexible, affordable IT solutions
|
||||
* Remote workers and individuals looking to regain control over their digital lives
|
||||
* Entrepreneurs and innovators who value collaboration, customization, and open-source innovation
|
||||
|
||||
**Products/Services**
|
||||
---------------------
|
||||
|
||||
Bespoke Clouds will offer the following products and services:
|
||||
|
||||
### **Retail Products**
|
||||
|
||||
Bespoke Clouds will offer the following retail products:
|
||||
|
||||
1. **Security Accessories:**
|
||||
* YubiKey-compatible security keys
|
||||
* Security cameras and other security-related products
|
||||
These accessories will be sold at retail prices with a standard markup.
|
||||
2. **Pre-built Computers:**
|
||||
* General-productivity computers for everyday use
|
||||
* High-performance workstations for demanding tasks
|
||||
* Home or small business server solutions for centralized storage and management
|
||||
These systems will be sold at retail prices with a standard markup.
|
||||
3. **Bespoke Clouds Startup Kit:**
|
||||
* A package including:
|
||||
* Security key (e.g., YubiKey)
|
||||
* USB drive loaded with documentation, tooling, and guidance to help customers initiate using Bespoke Clouds' other products and services
|
||||
* The startup kit will be sold at cost, with the intention of leading to additional product or service purchases.
|
||||
|
||||
#### **Retail Pricing Strategy**
|
||||
|
||||
Bespoke Clouds will employ a retail pricing strategy that balances profitability with customer value. We'll set prices based on the costs of production, market conditions, and target profit margins. Our goal is to create a competitive offering that appeals to customers seeking high-quality, security-focused products.
|
||||
|
||||
#### **Marketing and Sales Strategy for Retail Products**
|
||||
|
||||
To effectively promote and sell our retail products, we'll:
|
||||
|
||||
1. **Online Presence:** Develop an e-commerce platform or integrate with existing online marketplaces (e.g., Amazon, Newegg) to showcase and sell our products.
|
||||
2. **Social Media Marketing:** Utilize platforms like Facebook, Twitter, and LinkedIn to engage with potential customers, share product information, and promote special offers.
|
||||
3. **Content Marketing:** Create informative blog posts, whitepapers, and eBooks that highlight the benefits of Bespoke Clouds' retail products and services.
|
||||
4. **Referral Programs:** Implement referral programs for satisfied customers to encourage word-of-mouth marketing and drive sales.
|
||||
|
||||
#### **Operations and Logistics**
|
||||
|
||||
To ensure efficient order fulfillment and customer satisfaction, we'll:
|
||||
|
||||
1. **Partnerships with Suppliers:** Establish relationships with reputable suppliers for our security accessories and pre-built computers.
|
||||
2. **Inventory Management:** Implement an inventory management system to track stock levels, monitor product availability, and optimize reordering.
|
||||
3. **Shipping and Fulfillment:** Partner with a reliable shipping provider to ensure timely delivery of products to customers.
|
||||
|
||||
### **Open-source Products**
|
||||
|
||||
#### **Bespoke Clouds OS**
|
||||
|
||||
Your Linux-based operating system, Bespoke Clouds OS, is designed to be opinionated in its design, focusing on:
|
||||
|
||||
* Accessibility: Easy-to-use interface for users of all skill levels
|
||||
* Usability: Tight integration with local or remote management tools
|
||||
* Multi-user support: Allow multiple users to access the same system securely
|
||||
* Encryption by default: Protect user data and systems from unauthorized access
|
||||
* Container and clustering capabilities: Enable scaling, high availability, and fail-over
|
||||
* Automated data backups: Regularly back up important files and settings
|
||||
* Image creation: Create restore points for easy system recovery
|
||||
|
||||
The operating system will support extension with "flavors" that enable specific capabilities, such as:
|
||||
|
||||
* Gaming: Tailored for gaming performance and compatibility
|
||||
* Development: Optimized for development tools and workflows
|
||||
* Application serving: For running web applications or services
|
||||
|
||||
#### **Bespoke Clouds IT Assistant**
|
||||
|
||||
Your Bespoke Clouds IT Assistant is an application designed to guide users in setting up the right computer hardware or services to add or modify capabilities, such as:
|
||||
|
||||
* Setting up remote backup hosting with Bespoke Clouds Backups (a paid archival backup service)
|
||||
* Configuring network storage for collaborative projects
|
||||
* Enabling secure remote access and management
|
||||
|
||||
The IT Assistant will be pre-loaded on the Bespoke Clouds Startup Kit USB drive and available for download. This tool will help users make informed decisions about their technology infrastructure, while also showcasing Bespoke Clouds' expertise and services.
|
||||
|
||||
#### **Marketing and Sales Strategy for Free and Open-Source Products**
|
||||
|
||||
To effectively promote and utilize your free and open-source products, you'll:
|
||||
|
||||
1. **Community Engagement:** Foster a community around your products by engaging with users, providing support, and sharing knowledge.
|
||||
2. **Documentation and Tutorials:** Create comprehensive documentation and tutorials to help users get started with your products.
|
||||
3. **Free Resources:** Offer free resources, such as e-books, webinars, or online courses, that demonstrate the value of your products.
|
||||
4. **Paid Services:** Offer paid services, like Bespoke Clouds Backups, that build upon the foundation of your free and open-source products.
|
||||
|
||||
By providing high-quality, free, and open-source products, you'll establish credibility, attract users who appreciate your expertise and values, and create opportunities for upselling or cross-selling paid services.
|
||||
|
||||
### **Bespoke Clouds Managed Services**
|
||||
|
||||
Your managed services offerings include:
|
||||
|
||||
1. **Application Deployment:** Bespoke Clouds will help configure and deploy software or a "stack" of software to:
|
||||
* On-premise Bespoke Cloud deployments
|
||||
* Bespoke Cloud Hosting Services (a cloud-based hosting solution)
|
||||
2. **Systems Administration:**
|
||||
* Expertise in running high-available systems to ensure critical systems remain operational
|
||||
* Testing of configuration and software updates to prevent issues
|
||||
* Monitoring of security systems, providing reports, and assisting with operational requirements such as:
|
||||
* Employee on-boarding or exits
|
||||
3. **On-premise Support:**
|
||||
* On-site repair and issue investigation for any Bespoke Clouds systems
|
||||
* Emergency response services to quickly resolve critical system issues
|
||||
|
||||
These managed services are quoted and billed separately from your free and open-source products, with a satisfaction guarantee to ensure customer satisfaction.
|
||||
|
||||
#### **Benefits of Bespoke Clouds Managed Services**
|
||||
|
||||
By offering these managed services, you'll:
|
||||
|
||||
1. **Increase Customer Retention:** By providing ongoing support and maintenance, you'll increase the likelihood that customers will continue to do business with you.
|
||||
2. **Differentiate Yourself:** Your managed services offerings will set you apart from competitors who may only provide product sales or limited support.
|
||||
3. **Create Recurring Revenue:** Managed services can generate recurring revenue streams, providing a stable source of income for your business.
|
||||
|
||||
### **Bespoke Clouds Hosting Service**
|
||||
|
||||
Your Bespoke Clouds Hosting Service offers:
|
||||
|
||||
1. **Virtual Machine (VM) Hosting:** Run custom workloads on world-class, highly-available infrastructure, located close to your business and customers, providing top-tier performance.
|
||||
2. **Machine Types:**
|
||||
* Shared-resource nodes: Share resources with other VMs for cost-effective and efficient hosting.
|
||||
* Dedicated nodes: Reserve a dedicated node for exclusive use, ensuring optimal performance and security.
|
||||
* Accelerated nodes: Leverage high-performance acceleration technologies for demanding workloads.
|
||||
3. **Billing:** Billing is based on usage of:
|
||||
* Network usage
|
||||
* CPU usage
|
||||
* Accelerator usage (if applicable)
|
||||
* Storage usage
|
||||
|
||||
This flexible hosting service allows customers to:
|
||||
|
||||
1. **Scale On-Premise Environments:** Add additional resources to meet peak demand periods or support business-critical workflows.
|
||||
2. **Add Redundancy:** Ensure high availability and reduce downtime risks by adding redundant infrastructure elements.
|
||||
|
||||
#### **Benefits of Bespoke Clouds Hosting Service**
|
||||
|
||||
By offering this hosting service, you'll:
|
||||
|
||||
1. **Provide Flexibility:** Allow customers to scale their workloads up or down as needed, without worrying about hardware limitations.
|
||||
2. **Offer Cost-Effectiveness:** Provide a cost-effective way for customers to host their workloads in the cloud, reducing capital expenditures and operational overhead.
|
||||
3. **Ensure High Availability:** Offer a highly available infrastructure that ensures minimal downtime and maximum uptime for critical business applications.
|
||||
|
||||
### **Bespoke Clouds Consulting Services**
|
||||
|
||||
Your consulting services include:
|
||||
|
||||
1. **Custom IT Deployments:** Provide guidance on designing and deploying custom IT solutions that meet specific business needs.
|
||||
2. **Security Assessments:** Conduct thorough security assessments to identify vulnerabilities and provide recommendations for improving overall security posture.
|
||||
3. **Software Development:** Offer software development services to create customized applications or integrations with other systems.
|
||||
|
||||
#### **How Consulting Services Work**
|
||||
|
||||
When a customer engages your consulting services, you'll:
|
||||
|
||||
1. **Conduct an Initial Assessment:** Gather information about the customer's current IT infrastructure and business needs.
|
||||
2. **Develop a Customized Solution:** Create a comprehensive plan for implementing a custom solution that meets the customer's specific needs.
|
||||
3. **Provide a Proposal:** Deliver a proposal outlining the recommended solution, including quotes for any necessary Bespoke Clouds products or services.
|
||||
|
||||
#### **Billing**
|
||||
|
||||
Consulting services are billed hourly, with the creation of comprehensive reports on findings and recommendations. This allows customers to have a clear understanding of the scope and cost of the project before committing.
|
||||
|
||||
#### **Specialty: Low-Cost Solutions**
|
||||
|
||||
You specialize in finding low-cost solutions to meet customer needs, which sets you apart from other consulting firms that may focus on more expensive or complex solutions.
|
||||
|
||||
By offering consulting services, you'll be able to:
|
||||
|
||||
1. **Increase Customer Satisfaction:** By providing customized solutions that meet specific business needs, customers are more likely to be satisfied with the results.
|
||||
2. **Increase Revenue Streams:** Consulting services can generate additional revenue streams for your company, as customers pay for the value of the recommendations and guidance provided.
|
||||
|
||||
### **Bespoke Clouds Custom Development Solutions**
|
||||
|
||||
Your custom development solutions include:
|
||||
|
||||
1. **Software Design Assistance:** Bespoke Clouds' experienced staff can assist in the creation of software designs that meet specific business needs.
|
||||
2. **Custom Software Development:** Develop customized software applications or integrations with other systems to meet unique customer requirements.
|
||||
|
||||
#### **How Custom Development Works**
|
||||
|
||||
When a customer engages your custom development services, you'll:
|
||||
|
||||
1. **Provide Time Estimations:** Offer detailed time estimates for the project, so customers can plan accordingly.
|
||||
2. **Regular Client Involvement:** Keep customers informed throughout the development process through regular updates and progress reports.
|
||||
3. **Billed Monthly:** Bill customers on a monthly basis until the project is satisfactorily deployed.
|
||||
|
||||
#### **Benefits of Custom Development**
|
||||
|
||||
By offering custom development solutions, you'll:
|
||||
|
||||
1. **Increase Customer Satisfaction:** By creating customized software applications that meet specific business needs, customers are more likely to be satisfied with the results.
|
||||
2. **Provide Unique Value Proposition:** Differentiate yourself from competitors by offering bespoke development services that cater to unique customer requirements.
|
||||
3. **Generate Additional Revenue Streams:** Custom development projects can generate additional revenue streams for your company.
|
||||
|
||||
With this comprehensive suite of products and services, you'll be well-positioned to help customers achieve their technology goals while differentiating yourselves in the market.
|
||||
|
||||
**Marketing and Sales Strategy**
|
||||
--------------------------------
|
||||
|
||||
To reach our target market, we'll employ the following marketing and sales strategies:
|
||||
|
||||
* Online presence: Develop a strong website showcasing our products and services
|
||||
* Social media marketing: Utilize platforms like LinkedIn, Twitter, and Facebook to engage with potential clients
|
||||
* Content marketing: Create informative blog posts, whitepapers, and eBooks on topics related to data security, privacy, and collaboration
|
||||
* Referral programs: Implement referral programs for satisfied clients and partners
|
||||
|
||||
**Operations and Management**
|
||||
-----------------------------
|
||||
|
||||
To ensure the smooth operation of our business, we'll:
|
||||
|
||||
* Establish a team of experienced IT professionals with expertise in custom cloud solutions, open-source software development, and IT consulting
|
||||
* Develop partnerships with reputable cloud hosting providers to offer scalable solutions
|
||||
* Implement a robust project management system for managing client projects and internal operations
|
||||
|
||||
**Financial Projections**
|
||||
-------------------------
|
||||
|
||||
Let's provide some financial projections for our business:
|
||||
|
||||
* Revenue projections by year:
|
||||
* Year 1: $250,000
|
||||
* Year 2: $500,000
|
||||
* Year 3: $750,000
|
||||
* Expense breakdown (fixed and variable):
|
||||
* Salaries and benefits: $120,000 (Year 1), increasing annually
|
||||
* Marketing expenses: $50,000 (Year 1), increasing annually
|
||||
* Cloud hosting costs: $30,000 (Year 1), increasing annually
|
@@ -47,10 +47,6 @@ This analysis will cover:
|
||||
|
||||
The primary focus of this analysis is on the initial hardware costs and compute efficiency for building a home lab and small data center. The performance per initial dollar metric is based on the initial purchase price of the hardware and does not account for ongoing operational costs, such as energy consumption. Different hardware systems have varying energy consumption rates, which can significantly impact the total cost of ownership over time. While this analysis does not include detailed energy consumption metrics, it is important to acknowledge that energy efficiency is a critical factor for long-term operational costs. Future evaluations should consider including energy consumption metrics to provide a more comprehensive cost analysis.
|
||||
|
||||
### Hardware Roles
|
||||
|
||||
Mini PCs are a great **compute** node (cores and ram). **AI** nodes and **storage** nodes will benefit from more traditional form factors. **Network** roles will benefit from network port expandibility. For clustered Mini-PCs, the more ports the better. Dual Thunderbolt-4 / USB-4 ports will allow for a 40Gbps ring network topology, and 2.5G ports for external connectivity.
|
||||
|
||||
### Metric Calculation
|
||||
|
||||
The main metrics used in this analysis are:
|
||||
@@ -107,8 +103,6 @@ The startup aims to leverage the low-cost, high-speed internet available to its
|
||||
- **Modular:** Easy to scale by adding more units as needed.
|
||||
- **Energy Efficient:** Lower power consumption compared to large servers.
|
||||
- **Flexibility:** Capable of integrating with external GPUs for enhanced AI capabilities.
|
||||
- **Scalable:** Mini PCs offer a more granular scalability being more cost effective.
|
||||
- **Clustring:** High-availability is based on an odd node membership starting at 3.
|
||||
|
||||
### Initial Custom Build
|
||||
|
180
README.md
Normal file
180
README.md
Normal file
@@ -0,0 +1,180 @@
|
||||
### Step 1: Roadmap for Deployment, Testing, and Evaluation
|
||||
|
||||
#### Overview:
|
||||
This roadmap will outline the steps to set up a Proxmox cluster, deploy various services, and test and evaluate the system’s performance. It will include setting up Proxmox on the old laptops and mini PCs, deploying services, and capturing knowledge and issues encountered.
|
||||
|
||||
#### Roadmap:
|
||||
|
||||
1. **Initial Setup and Configuration**:
|
||||
- **Week 1**:
|
||||
1. Gather hardware: 3 old laptops, 2 mini PCs (one for Opnsense firewall, one for hosting the website), and 2x16TB drives.
|
||||
2. Install Proxmox VE on the old laptops and mini PCs.
|
||||
3. Configure basic Proxmox settings and network.
|
||||
|
||||
2. **Basic Cluster Setup**:
|
||||
- **Week 2**:
|
||||
1. Create a Proxmox cluster with the old laptops.
|
||||
2. Add the mini PCs to the cluster.
|
||||
3. Set up storage with the 16TB drives for backups and shared storage.
|
||||
|
||||
3. **Service Deployment**:
|
||||
- **Week 3-4**:
|
||||
1. Deploy Opnsense firewall on one mini PC.
|
||||
2. Set up a website hosting environment on the other mini PC.
|
||||
3. Deploy various open-source services (e.g., Nextcloud, Home Assistant) for testing.
|
||||
|
||||
4. **High Availability Cluster Setup**:
|
||||
- **Month 2**:
|
||||
1. Purchase and set up 2 MINISFORUM UM690S Mini PCs.
|
||||
2. Integrate these mini PCs into the Proxmox cluster.
|
||||
3. Configure high availability settings and test failover capabilities.
|
||||
|
||||
5. **Benchmarking and Testing**:
|
||||
- **Month 3**:
|
||||
1. Perform initial benchmarks for compute, storage, and network performance.
|
||||
2. Deploy small LLMs and perform load testing.
|
||||
3. Capture performance metrics and analyze results.
|
||||
|
||||
6. **Documentation and Knowledge Capture**:
|
||||
- **Ongoing**:
|
||||
1. Document each step of the setup process.
|
||||
2. Record any issues encountered and their resolutions.
|
||||
3. Maintain a detailed log of configurations and settings.
|
||||
|
||||
### Detailed Directions for Initial Setup
|
||||
|
||||
#### Week 1: Gather Hardware and Install Proxmox
|
||||
|
||||
1. **Hardware Preparation**:
|
||||
- Ensure all old laptops and mini PCs are functional.
|
||||
- Format and prepare the 16TB drives for use as shared storage.
|
||||
|
||||
2. **Install Proxmox VE**:
|
||||
- Download the latest Proxmox VE ISO from the official website.
|
||||
- Create a bootable USB drive using a tool like Rufus.
|
||||
- Boot each laptop and mini PC from the USB drive and follow the installation prompts to install Proxmox VE.
|
||||
- Configure each installation with a unique hostname and appropriate network settings.
|
||||
|
||||
3. **Initial Configuration**:
|
||||
- Access the Proxmox web interface on each device by navigating to `https://<IP_ADDRESS>:8006`.
|
||||
- Set up user accounts and configure basic settings.
|
||||
- Ensure all devices are on the same network and can communicate with each other.
|
||||
|
||||
#### Week 2: Create Proxmox Cluster
|
||||
|
||||
1. **Create a Proxmox Cluster**:
|
||||
- On the primary Proxmox node (one of the laptops), create a new cluster:
|
||||
```bash
|
||||
pvecm create <cluster_name>
|
||||
```
|
||||
- On the other laptops and mini PCs, join the cluster:
|
||||
```bash
|
||||
pvecm add <IP_ADDRESS_OF_PRIMARY_NODE>
|
||||
```
|
||||
|
||||
2. **Configure Shared Storage**:
|
||||
- Add the 16TB drives to the Proxmox cluster as shared storage.
|
||||
- Navigate to the Datacenter -> Storage in the Proxmox web interface and add the storage.
|
||||
|
||||
3. **Verify Cluster Setup**:
|
||||
- Ensure all nodes appear in the cluster in the Proxmox web interface.
|
||||
- Test basic functionality by creating and migrating a VM or container between nodes.
|
||||
|
||||
### Step 2: Project Plan and Sprint
|
||||
|
||||
#### Sprint 1: Initial Setup and Basic Cluster Configuration
|
||||
|
||||
- **Duration**: 2 Weeks
|
||||
- **Goals**:
|
||||
- Install Proxmox on all hardware.
|
||||
- Configure basic settings and network.
|
||||
- Create and verify the Proxmox cluster.
|
||||
|
||||
#### Sprint 2: Service Deployment
|
||||
|
||||
- **Duration**: 2 Weeks
|
||||
- **Goals**:
|
||||
- Deploy Opnsense firewall and website hosting environment.
|
||||
- Set up and test various open-source services.
|
||||
- Document configurations and issues.
|
||||
|
||||
#### Sprint 3: High Availability Cluster Setup
|
||||
|
||||
- **Duration**: 1 Month
|
||||
- **Goals**:
|
||||
- Purchase and set up MINISFORUM UM690S Mini PCs.
|
||||
- Integrate new hardware into the cluster.
|
||||
- Configure and test high availability settings.
|
||||
|
||||
#### Sprint 4: Benchmarking and Testing
|
||||
|
||||
- **Duration**: 1 Month
|
||||
- **Goals**:
|
||||
- Perform benchmarks for compute, storage, and network performance.
|
||||
- Deploy and test small LLMs.
|
||||
- Capture and analyze performance metrics.
|
||||
|
||||
### Step 3: Git Structure
|
||||
|
||||
# Home Lab and Small Data Center Project
|
||||
|
||||
## Goals and Objectives
|
||||
|
||||
This project aims to build a cost-effective, scalable home lab and small data center to support a startup offering localized IT services. The infrastructure will host various services, including network management, data backups, home automation, security monitoring, and AI workloads.
|
||||
|
||||
## Objectives
|
||||
- Set up a Proxmox cluster using old laptops and mini PCs.
|
||||
- Deploy and test various open-source services.
|
||||
- Benchmark and evaluate compute, storage, and network performance.
|
||||
- Scale the infrastructure by adding MINISFORUM UM690S Mini PCs.
|
||||
- Ensure high availability and robustness of the system.
|
||||
|
||||
## Project Plan
|
||||
- **Sprint 1**: Initial Setup and Basic Cluster Configuration
|
||||
- **Sprint 2**: Service Deployment
|
||||
- **Sprint 3**: High Availability Cluster Setup
|
||||
- **Sprint 4**: Benchmarking and Testing
|
||||
|
||||
## Getting Started
|
||||
1. **Install Proxmox VE** on all hardware.
|
||||
2. **Create a Proxmox Cluster** and add all nodes.
|
||||
3. **Deploy Services** and test functionality.
|
||||
4. **Configure High Availability** and test failover.
|
||||
5. **Benchmark and Evaluate** performance.
|
||||
|
||||
## Repository Structure
|
||||
```
|
||||
home-lab-project/
|
||||
├── README.md
|
||||
├── docs/
|
||||
│ ├── setup/
|
||||
│ │ ├── proxmox_installation.md
|
||||
│ │ ├── cluster_configuration.md
|
||||
│ │ └── service_deployment.md
|
||||
│ ├── benchmarks/
|
||||
│ │ ├── compute.md
|
||||
│ │ ├── storage.md
|
||||
│ │ └── network.md
|
||||
│ ├── issues/
|
||||
│ │ └── issue_log.md
|
||||
│ └── future_expansion.md
|
||||
├── scripts/
|
||||
│ ├── benchmarks/
|
||||
│ │ ├── compute_benchmark.sh
|
||||
│ │ ├── storage_benchmark.sh
|
||||
│ │ └── network_benchmark.sh
|
||||
│ └── deployment/
|
||||
│ ├── deploy_services.sh
|
||||
│ └── configure_ha.sh
|
||||
└── logs/
|
||||
└── setup_log.md
|
||||
```
|
||||
|
||||
1. **docs/**: Documentation for setup, configuration, benchmarks, and future expansion.
|
||||
2. **scripts/**: Scripts for benchmarking and service deployment.
|
||||
3. **logs/**: Logs of setup steps, configurations, and issues encountered.
|
||||
|
||||
### Next Steps
|
||||
1. **Review and refine** the roadmap, project plan, and README structure.
|
||||
2. **Start with Sprint 1**: Initial Setup and Basic Cluster Configuration.
|
||||
3. **Document** each step thoroughly and capture any issues encountered.
|
1
assets/assets_list.md
Normal file
1
assets/assets_list.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/benchmarks/compute.md
Normal file
1
docs/benchmarks/compute.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/benchmarks/network.md
Normal file
1
docs/benchmarks/network.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/benchmarks/storage.md
Normal file
1
docs/benchmarks/storage.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/future_expansion.md
Normal file
1
docs/future_expansion.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/issues/issue_log.md
Normal file
1
docs/issues/issue_log.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
42
docs/project_planning/project_plan.md
Normal file
42
docs/project_planning/project_plan.md
Normal file
@@ -0,0 +1,42 @@
|
||||
## Project Plan
|
||||
|
||||
#### Overview:
|
||||
This section outlines the project plan and sprint structure for deploying the Proxmox cluster, setting up the necessary hardware and software, and performing initial testing and evaluation.
|
||||
|
||||
#### Project Plan
|
||||
|
||||
1. **Project Initiation**:
|
||||
- **Week 1**:
|
||||
- Define project goals and objectives.
|
||||
- Gather and prepare hardware.
|
||||
- Set up initial Proxmox environment.
|
||||
|
||||
2. **Sprint 1: Initial Setup and Basic Cluster Configuration**:
|
||||
- **Week 2-3**:
|
||||
- Install Proxmox VE on all hardware.
|
||||
- Configure basic settings and network.
|
||||
- Create and verify the Proxmox cluster.
|
||||
- Document setup steps and configurations.
|
||||
|
||||
3. **Sprint 2: Service Deployment**:
|
||||
- **Week 4-5**:
|
||||
- Deploy Opnsense firewall and website hosting environment.
|
||||
- Set up and test various open-source services.
|
||||
- Document configurations and issues encountered.
|
||||
|
||||
4. **Sprint 3: High Availability Cluster Setup**:
|
||||
- **Week 6-9**:
|
||||
- Purchase and set up MINISFORUM UM690S Mini PCs.
|
||||
- Integrate new hardware into the Proxmox cluster.
|
||||
- Configure and test high availability settings.
|
||||
- Document setup steps and configurations.
|
||||
|
||||
5. **Sprint 4: Benchmarking and Testing**:
|
||||
- **Week 10-13**:
|
||||
- Perform benchmarks for compute, storage, and network performance.
|
||||
- Deploy and test small LLMs.
|
||||
- Capture and analyze performance metrics.
|
||||
- Document benchmark results and analysis.
|
||||
|
||||
|
||||
|
67
docs/project_planning/sprint_breakdown.md
Normal file
67
docs/project_planning/sprint_breakdown.md
Normal file
@@ -0,0 +1,67 @@
|
||||
#### Sprint Breakdown
|
||||
|
||||
##### Sprint 1: Initial Setup and Basic Cluster Configuration
|
||||
|
||||
- **Goals**:
|
||||
- Install Proxmox on all hardware.
|
||||
- Configure basic settings and network.
|
||||
- Create and verify the Proxmox cluster.
|
||||
|
||||
- **Tasks**:
|
||||
1. Install Proxmox VE on old laptops and mini PCs.
|
||||
2. Configure basic Proxmox settings and network.
|
||||
3. Create a Proxmox cluster.
|
||||
4. Add all nodes to the cluster.
|
||||
5. Verify cluster setup by creating and migrating VMs.
|
||||
|
||||
- **Deliverables**:
|
||||
- Functional Proxmox cluster.
|
||||
- Documentation of setup steps and configurations.
|
||||
|
||||
##### Sprint 2: Service Deployment
|
||||
|
||||
- **Goals**:
|
||||
- Deploy and configure core services.
|
||||
- Test service functionality.
|
||||
|
||||
- **Tasks**:
|
||||
1. Deploy Opnsense firewall.
|
||||
2. Set up a website hosting environment.
|
||||
3. Deploy and configure additional open-source services (e.g., Nextcloud, Home Assistant).
|
||||
4. Test and verify service functionality.
|
||||
|
||||
- **Deliverables**:
|
||||
- Deployed and functional services.
|
||||
- Documentation of configurations and issues encountered.
|
||||
|
||||
##### Sprint 3: High Availability Cluster Setup
|
||||
|
||||
- **Goals**:
|
||||
- Integrate new hardware into the cluster.
|
||||
- Configure and test high availability settings.
|
||||
|
||||
- **Tasks**:
|
||||
1. Purchase and set up MINISFORUM UM690S Mini PCs.
|
||||
2. Integrate new mini PCs into the Proxmox cluster.
|
||||
3. Configure high availability settings.
|
||||
4. Test failover capabilities.
|
||||
|
||||
- **Deliverables**:
|
||||
- High availability cluster.
|
||||
- Documentation of setup steps and configurations.
|
||||
|
||||
##### Sprint 4: Benchmarking and Testing
|
||||
|
||||
- **Goals**:
|
||||
- Benchmark and evaluate system performance.
|
||||
- Test AI workloads and other services.
|
||||
|
||||
- **Tasks**:
|
||||
1. Perform compute, storage, and network benchmarks.
|
||||
2. Deploy and test small LLMs.
|
||||
3. Capture performance metrics.
|
||||
4. Analyze and document results.
|
||||
|
||||
- **Deliverables**:
|
||||
- Benchmark results and analysis.
|
||||
- Documentation of performance metrics and analysis.
|
1
docs/setup/cluster_configuration.md
Normal file
1
docs/setup/cluster_configuration.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/setup/proxmox_installation.md
Normal file
1
docs/setup/proxmox_installation.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
docs/setup/service_deployement.md
Normal file
1
docs/setup/service_deployement.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
logs/setup_log.md
Normal file
1
logs/setup_log.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
103
scripts/admin/screen_off_laptop_servers/screen_off_scripts.md
Normal file
103
scripts/admin/screen_off_laptop_servers/screen_off_scripts.md
Normal file
@@ -0,0 +1,103 @@
|
||||
### Step 1: Setting Up SSH Access
|
||||
|
||||
Ensure you have SSH access set up between your central node and all laptops. You should be able to SSH into each laptop without needing to enter a password (using SSH keys).
|
||||
|
||||
### Step 2: Create the Configuration File
|
||||
|
||||
Create the configuration file `/usr/local/bin/manage-displays.conf` on the central node with the following content:
|
||||
|
||||
```bash
|
||||
# Configuration for different laptops
|
||||
# Format: "NodeName:Host:InternalDisplay:ExternalDisplay"
|
||||
|
||||
LAPTOPS=(
|
||||
"Laptop1:192.168.1.101:eDP-1:HDMI-1"
|
||||
"Laptop2:192.168.1.102:eDP-1:HDMI-1"
|
||||
"Laptop3:192.168.1.103:eDP-1:HDMI-1"
|
||||
)
|
||||
```
|
||||
|
||||
### Step 3: Create the Main Script to Turn Off the Screens
|
||||
|
||||
Save the following script as `/usr/local/bin/manage-displays-off.sh` on the central node:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
CONFIG_FILE="/usr/local/bin/manage-displays.conf"
|
||||
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
echo "Config file not found! Please create a config file at $CONFIG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $CONFIG_FILE
|
||||
|
||||
for LAPTOP in "${LAPTOPS[@]}"; do
|
||||
IFS=":" read -r NODE HOST INTERNAL_DISPLAY EXTERNAL_DISPLAY <<< "$LAPTOP"
|
||||
echo "Do you want to turn off the screen for $NODE ($HOST) and prepare it for server use? (yes/y to confirm)"
|
||||
read answer
|
||||
if [[ "$answer" == "yes" || "$answer" == "y" ]]; then
|
||||
ssh $HOST "xrandr --output $INTERNAL_DISPLAY --off && xrandr --output $EXTERNAL_DISPLAY --auto"
|
||||
echo "$NODE ($HOST) screen turned off."
|
||||
else
|
||||
echo "Operation cancelled for $NODE ($HOST)."
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
### Step 4: Create the Main Script to Turn On the Screens
|
||||
|
||||
Save the following script as `/usr/local/bin/manage-displays-on.sh` on the central node:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
CONFIG_FILE="/usr/local/bin/manage-displays.conf"
|
||||
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
echo "Config file not found! Please create a config file at $CONFIG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $CONFIG_FILE
|
||||
|
||||
for LAPTOP in "${LAPTOPS[@]}"; do
|
||||
IFS=":" read -r NODE HOST INTERNAL_DISPLAY EXTERNAL_DISPLAY <<< "$LAPTOP"
|
||||
echo "Do you want to turn on the screen for $NODE ($HOST)? (yes/y to confirm)"
|
||||
read answer
|
||||
if [[ "$answer" == "yes" || "$answer" == "y" ]]; then
|
||||
ssh $HOST "xrandr --output $INTERNAL_DISPLAY --auto"
|
||||
echo "$NODE ($HOST) screen turned on."
|
||||
else
|
||||
echo "Operation cancelled for $NODE ($HOST)."
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
### Step 5: Make the Scripts Executable
|
||||
|
||||
Make both scripts executable:
|
||||
|
||||
```bash
|
||||
sudo chmod +x /usr/local/bin/manage-displays-off.sh
|
||||
sudo chmod +x /usr/local/bin/manage-displays-on.sh
|
||||
```
|
||||
|
||||
### Step 6: Set Up the Alias
|
||||
|
||||
Add the following aliases to your shell configuration file (`.bashrc` or `.zshrc`):
|
||||
|
||||
```bash
|
||||
# Aliases for manage-displays scripts
|
||||
alias screens-off='/usr/local/bin/manage-displays-off.sh'
|
||||
alias screens-on='/usr/local/bin/manage-displays-on.sh'
|
||||
```
|
||||
|
||||
Reload the shell configuration to apply the aliases:
|
||||
|
||||
```bash
|
||||
source ~/.bashrc # or source ~/.zshrc
|
||||
```
|
||||
|
||||
With these steps, you can now use the aliases `screens-off` and `screens-on` on the central node to control the screens of all laptops in the cluster. The scripts will prompt you for confirmation before turning the screens off or on.
|
1
scripts/benchmarks/compute_benchmarks.md
Normal file
1
scripts/benchmarks/compute_benchmarks.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
scripts/benchmarks/network_benchmarks.md
Normal file
1
scripts/benchmarks/network_benchmarks.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
1
scripts/benchmarks/storage_bechmarks.md
Normal file
1
scripts/benchmarks/storage_bechmarks.md
Normal file
@@ -0,0 +1 @@
|
||||
TBD
|
2
scripts/deployment/configure_ha.sh
Normal file
2
scripts/deployment/configure_ha.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
# Place holder
|
||||
|
1
scripts/deployment/deploy_services.sh
Normal file
1
scripts/deployment/deploy_services.sh
Normal file
@@ -0,0 +1 @@
|
||||
# Place holder
|
172
scripts/graphs/analysis_graphs_py_inst.md
Normal file
172
scripts/graphs/analysis_graphs_py_inst.md
Normal file
@@ -0,0 +1,172 @@
|
||||
This script will generate the required charts and save them as `performance_per_dollar_recommended.png` and `combined_scores_recommended.png` in the same directory as the script.
|
||||
|
||||
### Updated Python Script:
|
||||
|
||||
```python
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Data for Performance per Initial Dollar
|
||||
systems = [
|
||||
"Custom Built Server",
|
||||
"MINISFORUM UM690S",
|
||||
"MINISFORUM UM790 Pro",
|
||||
"MINISFORUM UM690 Pro",
|
||||
"Beelink SER5",
|
||||
"CyberGeek Mini PC",
|
||||
"KAMRUI Mini PC"
|
||||
]
|
||||
performance_per_dollar = [
|
||||
19.08, 39.82, 29.08, 36.13, 34.66, 31.25, 32.58
|
||||
]
|
||||
|
||||
# Data for Total Combined Score
|
||||
combined_scores = [
|
||||
27_004.6, 62_419.6, 34_209.8, 46_814.7, 57_024.5, 45_619.6, 45_619.6
|
||||
]
|
||||
|
||||
# Recommended system
|
||||
recommended_system = "MINISFORUM UM690S"
|
||||
|
||||
# Plot Performance per Initial Dollar
|
||||
plt.figure(figsize=(10, 6))
|
||||
bars = plt.barh(systems, performance_per_dollar, color='skyblue', height=0.5)
|
||||
plt.xlabel('Performance per Initial Dollar')
|
||||
plt.title('Performance per Initial Dollar for Each System')
|
||||
plt.grid(True, axis='x', linestyle='--', alpha=0.7)
|
||||
plt.gca().invert_yaxis()
|
||||
plt.tight_layout()
|
||||
|
||||
# Add the actual numbers at the end of the bars
|
||||
for bar, value in zip(bars, performance_per_dollar):
|
||||
plt.text(value, bar.get_y() + bar.get_height()/2, f'{value:.2f}', va='center')
|
||||
|
||||
# Highlight the recommended system
|
||||
for bar, system in zip(bars, systems):
|
||||
if system == recommended_system:
|
||||
bar.set_color('lightgreen')
|
||||
|
||||
plt.savefig('performance_per_dollar_recommended.png')
|
||||
plt.show()
|
||||
|
||||
# Plot Total Combined Score
|
||||
plt.figure(figsize=(10, 6))
|
||||
bars = plt.barh(systems, combined_scores, color='lightgreen', height=0.5)
|
||||
plt.xlabel('Total Combined Score')
|
||||
plt.title('Total Combined Score for Each System')
|
||||
plt.grid(True, axis='x', linestyle='--', alpha=0.7)
|
||||
plt.gca().invert_yaxis()
|
||||
plt.tight_layout()
|
||||
|
||||
# Add the actual numbers at the end of the bars
|
||||
for bar, value in zip(bars, combined_scores):
|
||||
plt.text(value, bar.get_y() + bar.get_height()/2, f'{value:.1f}', va='center')
|
||||
|
||||
# Highlight the recommended system
|
||||
for bar, system in zip(bars, systems):
|
||||
if system == recommended_system:
|
||||
bar.set_color('skyblue')
|
||||
|
||||
plt.savefig('combined_scores_recommended.png')
|
||||
plt.show()
|
||||
```
|
||||
|
||||
If `pip` is not recognized as a command, it might be because it is not installed or not added to your system's PATH. Here are steps to address this:
|
||||
|
||||
1. **Ensure Python and pip are installed**:
|
||||
- If you are on Windows, you can download the Python installer from [python.org](https://www.python.org/downloads/). During installation, make sure to check the option to "Add Python to PATH".
|
||||
- If you are on macOS or Linux, Python might already be installed. You can check by running `python --version` or `python3 --version` in the terminal.
|
||||
|
||||
2. **Installing pip**:
|
||||
- If Python is installed but pip is not, you can install pip manually. Download `get-pip.py` by running:
|
||||
```bash
|
||||
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
|
||||
```
|
||||
- Then run the following command to install pip:
|
||||
```bash
|
||||
python get-pip.py
|
||||
```
|
||||
|
||||
3. **Using pip3**:
|
||||
- On some systems, especially if both Python 2 and Python 3 are installed, you might need to use `pip3` instead of `pip`. You can install matplotlib using:
|
||||
```bash
|
||||
pip3 install matplotlib
|
||||
```
|
||||
|
||||
4. **Verify the installation**:
|
||||
- After installing pip, you can verify the installation by running:
|
||||
```bash
|
||||
pip --version
|
||||
```
|
||||
- If you had to use `pip3` to install, verify with:
|
||||
```bash
|
||||
pip3 --version
|
||||
```
|
||||
|
||||
5. **Installing matplotlib with pip**:
|
||||
- Once pip is available, you can install matplotlib by running:
|
||||
```bash
|
||||
pip install matplotlib
|
||||
```
|
||||
- Or if you used `pip3`:
|
||||
```bash
|
||||
pip3 install matplotlib
|
||||
```
|
||||
|
||||
6. **Running the script**:
|
||||
- After installing matplotlib, create the `generate_charts.py` file as described previously, and run it with:
|
||||
```bash
|
||||
python generate_charts.py
|
||||
```
|
||||
- Or if you need to use Python 3 explicitly:
|
||||
```bash
|
||||
python3 generate_charts.py
|
||||
```
|
||||
|
||||
If you run into any specific issues or errors during these steps, please let me know so I can help troubleshoot further.
|
||||
|
||||
### Instructions to run the script:
|
||||
It looks like `pip` was installed in a directory that is not included in your system's PATH. To resolve this, you can add the directory to your PATH temporarily or permanently.
|
||||
|
||||
### Temporary Solution:
|
||||
1. **Temporarily add the directory to your PATH**:
|
||||
```bash
|
||||
export PATH=$PATH:/home/datawarrior/.local/bin
|
||||
```
|
||||
2. **Verify pip is now accessible**:
|
||||
```bash
|
||||
pip --version
|
||||
```
|
||||
|
||||
### Permanent Solution:
|
||||
1. **Open your `.bashrc` file** (or `.bash_profile` or `.profile` depending on your system configuration) in a text editor:
|
||||
```bash
|
||||
nano ~/.bashrc
|
||||
```
|
||||
2. **Add the following line** at the end of the file:
|
||||
```bash
|
||||
export PATH=$PATH:/home/datawarrior/.local/bin
|
||||
```
|
||||
3. **Save the file and exit the text editor**.
|
||||
4. **Apply the changes**:
|
||||
```bash
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
### Installing matplotlib:
|
||||
After adding the directory to your PATH, you can proceed with installing matplotlib:
|
||||
```bash
|
||||
pip install matplotlib
|
||||
```
|
||||
|
||||
### Running the Python script:
|
||||
Once matplotlib is installed, you can create the `generate_charts.py` script and run it:
|
||||
```bash
|
||||
python3 generate_charts.py
|
||||
```
|
||||
|
||||
Here’s a quick summary of commands for the temporary solution:
|
||||
```bash
|
||||
export PATH=$PATH:/home/datawarrior/.local/bin
|
||||
pip install matplotlib
|
||||
```
|
||||
|
Reference in New Issue
Block a user