Compare commits

..

18 Commits

Author SHA1 Message Date
659640836c docs: add comprehensive AI assistant integration guide
- Create AGENT.md with detailed guide for OpenCode, Gemini CLI, and Claude usage
- Document AI-assisted packaging workflow and best practices
- Include prompt templates and context sharing strategies
- Add symbolic links GEMINI.md and CLAUDE.md for easy access
- Update README.md to reference AI assistant documentation

AI Integration Features:
- Phase-specific assistant recommendations (Research→Gemini, Development→Claude, etc.)
- Template-driven development with AI assistance
- Quality assurance workflows with AI review
- Multi-assistant collaborative approaches

This establishes AI-first development approach for the 56-application packaging initiative,
significantly accelerating development while maintaining quality standards.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 08:45:30 -05:00
a0169a2d8a refactor: migrate from master to main branch + implement PR workflow
- Rename master branch to main for inclusive language
- Update all documentation references from master → main
- Implement PR-based workflow with maintainer approval required
- Document tea CLI usage for Gitea pull requests
- Establish clear branch hierarchy: feature → integration → main

Branch Strategy:
- main: Production packages (requires PR approval)
- integration: Staging area for multiple packages
- feature/package-[name]: Individual package development

Workflow Pattern:
1. Create feature/package-[name] from integration
2. Develop package in feature branch
3. Merge feature → integration (direct merge)
4. Create PR integration → main (requires approval)

This provides proper quality gates while enabling parallel development
of the 56 applications with maintainer oversight.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 08:42:37 -05:00
e61d4eb165 docs: comprehensive documentation and workflow overhaul
Create complete project documentation suite for 56-application Cloudron packaging initiative:

New Documentation Files:
- README.md: Comprehensive project overview with quick start guide
- PLAN.md: Strategic roadmap for packaging across 2025 with 4-phase approach
- TASKS.md: Detailed task list with 56 applications prioritized in 4 tiers
- WORKLOG.md: Progress tracking with daily logs and development insights
- GIT_WORKFLOW.md: Complete branching strategy and commit standards

Enhanced Existing Documentation:
- CloudronPackages/README.md: Enhanced package directory with usage instructions
- CloudronPackagingWorkspace/README.md: Comprehensive workspace development guide

Key Features:
- Established feature → integration → master git workflow
- Containerized development environment with tsys-cloudron-packaging
- 4-tier priority system focusing on business-critical applications first
- Quality standards and testing procedures for all packages
- Team coordination tools for parallel development

This foundation supports systematic packaging of all 56 applications with proper
quality control, progress tracking, and team scalability.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 08:38:35 -05:00
4ef3a47e25 Enhance .gitignore for packaging workflow
- Add patterns for temporary packaging directories
- Include Docker container artifacts exclusion
- Add common OS-generated file patterns
- Maintain existing upstream repo exclusions

This supports the container-based packaging workflow for ~100 Cloudron applications while keeping the repository clean.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 07:35:38 -05:00
37d9fae8c9 self hosted patreon.. so excited! 2025-07-10 22:57:12 -05:00
244ac11588 devex cleanup 2025-07-09 11:19:46 -05:00
fd6aa5c0f0 bit of devex cleanup and removed last of the placeholder dirs/files 2025-07-07 17:47:51 -05:00
f512afc53f cleaned up a bunch of placeholders. the tickets are now linked to in the dev setup scripts 2025-07-07 17:21:36 -05:00
b0ca0ef49c Claude super rough first cut of a few packages. Almost certainly entirely unusable... 2025-07-07 17:20:00 -05:00
c315498391 keep the docs in sync... 2025-07-07 17:04:35 -05:00
6e23807a8a refactor.. 2025-07-07 17:03:09 -05:00
2f0fe97933 starting the big push to cloudron all the things we need for COO/CTO orgs 2025-07-07 16:54:32 -05:00
054f6c9e2f and so begins the packaging... 2025-07-07 12:55:40 -05:00
2a26247028 all redmine tickets/repos are now captured 2025-07-07 12:52:25 -05:00
b2cd55b0ca doco.. 2025-07-07 12:39:45 -05:00
60fc1b3aaf packaging all the things 2025-07-07 12:37:29 -05:00
0148db9864 build scripts for the big packaging push of all the apps this month 2025-07-07 12:05:40 -05:00
93775b7375 cleaning up to match redmine milestone. scope of work has changed slightly. 2025-07-07 10:48:05 -05:00
212 changed files with 2185 additions and 824 deletions

20
.gitignore vendored
View File

@@ -1 +1,19 @@
CharlesDevServer/* CloudronPackagingWorkspace/Docker/*
CloudronPackagingWorkspace/NonDocker/*
# Temporary packaging work directories
temp_*
*_package_new/
packaging_temp/
# Docker container artifacts
.dockerignore
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

292
AGENT.md Normal file
View File

@@ -0,0 +1,292 @@
# AI Coding Assistants for Cloudron Packaging
This document outlines how to effectively use AI coding assistants (OpenCode, Gemini CLI, Claude) for developing Cloudron packages in this project.
## 🤖 Available AI Assistants
### OpenCode
- **Purpose**: Local development assistance and code generation
- **Strengths**: Fast local responses, code completion, refactoring
- **Use Cases**: Writing Dockerfiles, bash scripts, configuration files
### Gemini CLI
- **Purpose**: Google's AI assistant via command line
- **Strengths**: Research, documentation analysis, multi-modal capabilities
- **Use Cases**: Understanding upstream applications, generating documentation
### Claude (Claude Code)
- **Purpose**: Advanced reasoning and systematic development
- **Strengths**: Complex problem solving, architectural decisions, comprehensive analysis
- **Use Cases**: Complete package development, workflow design, troubleshooting
## 📋 Packaging Workflow with AI Assistants
### Phase 1: Research & Planning
**Best Assistant**: Gemini CLI or Claude
```bash
# Use Gemini to research application requirements
gemini "Analyze the requirements and architecture of [ApplicationName] for containerization"
# Use Claude for systematic analysis
claude "Research [ApplicationName] and create a packaging plan including dependencies, configuration, and Cloudron integration requirements"
```
**Key Questions to Ask**:
- What are the system dependencies?
- What databases or services are required?
- What ports and networking are needed?
- What are the security considerations?
- What configuration files need customization?
### Phase 2: Package Development
**Best Assistant**: Claude Code or OpenCode
#### CloudronManifest.json Creation
```bash
claude "Create a CloudronManifest.json for [ApplicationName] with these requirements: [list requirements]"
```
#### Dockerfile Development
```bash
opencode "Generate a Dockerfile for [ApplicationName] using cloudron/base:4.2.0 that installs [dependencies] and follows Cloudron conventions"
```
#### Startup Script Creation
```bash
claude "Create a start.sh script for [ApplicationName] that handles Cloudron addon integration, initialization, and proper error handling"
```
### Phase 3: Configuration & Integration
**Best Assistant**: Claude Code
```bash
claude "Help me integrate [ApplicationName] with Cloudron's PostgreSQL and Redis addons, including proper environment variable handling"
```
### Phase 4: Documentation & Validation
**Best Assistant**: Any assistant
```bash
gemini "Generate comprehensive build notes for this [ApplicationName] Cloudron package"
```
## 🛠️ Assistant-Specific Usage Patterns
### OpenCode Usage
Best for rapid iteration and code completion:
```bash
# Quick Dockerfile generation
opencode "Create Dockerfile for Node.js app with nginx proxy"
# Configuration file templates
opencode "Generate nginx.conf for Cloudron app on port 8080"
# Script snippets
opencode "Write bash function to check if PostgreSQL is ready"
```
### Gemini CLI Usage
Best for research and analysis:
```bash
# Application research
gemini "What are the key components and dependencies of Apache APISIX?"
# Documentation analysis
gemini "Analyze this README.md and extract installation requirements"
# Troubleshooting
gemini "Explain this Docker build error: [paste error]"
```
### Claude Usage
Best for comprehensive development:
```bash
# Complete package development
claude "Package [ApplicationName] for Cloudron following our established patterns"
# Complex problem solving
claude "Debug this Cloudron package that fails to start properly"
# Architectural guidance
claude "Design the optimal approach for packaging this multi-service application"
```
## 📚 AI Assistant Integration with Our Workflow
### Template-Driven Development
Each assistant can use our package template:
```bash
# Share the template with any assistant
claude "Use the template in CloudronPackages/PackageTemplate/CloudronPackagePrompt.md to package [ApplicationName]"
gemini "Based on our packaging template, what specific considerations apply to [ApplicationName]?"
```
### Quality Assurance with AI
Before merging to integration:
```bash
# Code review
claude "Review this Cloudron package for security issues, best practices, and completeness"
# Documentation review
gemini "Check this build documentation for completeness and clarity"
# Testing guidance
opencode "Generate test commands to validate this Cloudron package"
```
## 🔄 Multi-Assistant Workflow
### Collaborative Approach
1. **Gemini**: Research application and requirements
2. **Claude**: Develop complete package structure
3. **OpenCode**: Refine and optimize code
4. **Claude**: Final review and documentation
### Context Sharing
When switching between assistants, provide:
```markdown
## Context
- Application: [Name]
- Progress: [Current phase]
- Requirements: [List key requirements]
- Issues: [Any current blockers]
- Files: [List relevant files created]
```
## 🎯 Best Practices
### Prompt Engineering for Packaging
Always include in prompts:
- **Target Platform**: "for Cloudron deployment"
- **Base Image**: "using cloudron/base:4.2.0"
- **Conventions**: "following our established patterns"
- **Quality Standards**: "with proper error handling and logging"
### Version Control Integration
Document AI assistance in commits:
```bash
git commit -m "feat(app): add Cloudron package
Generated with assistance from Claude Code for package structure
and Gemini CLI for application research.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>"
```
### Quality Gates with AI
Before each phase:
- [ ] Ask AI to validate requirements understanding
- [ ] Request security review of generated code
- [ ] Verify Cloudron convention compliance
- [ ] Generate test procedures
## 🔧 Assistant Configuration
### Environment Setup
```bash
# Ensure all assistants are available
which opencode gemini claude
# Set up consistent workspace
export CLOUDRON_PROJECT_ROOT=$(pwd)
export PACKAGING_CONTAINER="tsys-cloudron-packaging"
```
### Context Files
Create context files for each assistant:
**`.ai-context/project-context.md`**:
```markdown
# KNEL Cloudron Packaging Project
- Goal: Package 56 applications for Cloudron
- Current Phase: [update as needed]
- Standards: cloudron/base:4.2.0, proper addon integration
- Workflow: feature → integration → main (PR required)
```
## 📊 AI Assistant Effectiveness Metrics
### Development Velocity
- **Time per Package**: Track packaging time with/without AI assistance
- **Error Reduction**: Monitor build failures and fixes
- **Quality Consistency**: Measure compliance with standards
### Learning and Improvement
- Document which assistant works best for different tasks
- Build prompt libraries for common packaging scenarios
- Share effective prompt patterns across the team
## 🚨 Limitations and Considerations
### Security Review Required
- Never trust AI-generated secrets or credentials
- Always review security configurations manually
- Validate network configurations and exposure
### Testing Still Essential
- AI cannot replace actual testing
- Build and deploy every package manually
- Verify functionality beyond basic container startup
### Context Limitations
- Assistants may not understand latest Cloudron changes
- Always verify against official Cloudron documentation
- Update assistant knowledge with project-specific patterns
## 🎓 Learning Resources
### Improving AI Interactions
- Study effective prompt engineering techniques
- Learn to provide clear context and constraints
- Practice iterative refinement of AI outputs
### Cloudron-Specific Prompts
Build a library of proven prompts:
- Application analysis prompts
- Package generation templates
- Troubleshooting scenarios
- Documentation generation patterns
---
## 📝 Quick Reference
### Common Commands
```bash
# Research phase
gemini "Analyze [app] for Cloudron packaging"
# Development phase
claude "Create complete Cloudron package for [app]"
# Optimization phase
opencode "Optimize this Dockerfile for size and security"
# Review phase
claude "Review this package for production readiness"
```
### Context Sharing Template
```markdown
## AI Assistant Context
- **Application**: [name]
- **Current Task**: [specific task]
- **Requirements**: [list]
- **Previous Work**: [what's already done]
- **Constraints**: [any limitations]
- **Expected Output**: [what you need]
```
---
**Last Updated**: 2025-01-04
**Maintained By**: KNEL/TSYS Development Team
**Part of**: [KNEL Production Containers](README.md) packaging project

1
CLAUDE.md Symbolic link
View File

@@ -0,0 +1 @@
AGENT.md

View File

@@ -1,3 +0,0 @@
# 3d print farm
- https://projects.knownelement.com/issues/280

View File

@@ -1,3 +0,0 @@
# Trading Desk
- https://projects.knownelement.com/issues/226

View File

@@ -1,3 +0,0 @@
# Acme
- https://projects.knownelement.com/issues/177

View File

@@ -1,3 +0,0 @@
# Agency
https://projects.knownelement.com/issues/178

View File

@@ -1,3 +0,0 @@
# APIGW
https://projects.knownelement.com/issues/179

View File

@@ -1,3 +0,0 @@
# ATAK Info
- https://projects.knownelement.com/issues/180

View File

@@ -1,3 +0,0 @@
# Autobom
- https://projects.knownelement.com/issues/278

View File

@@ -1,3 +0,0 @@
# Billing
- https://projects.knownelement.com/issues/181

View File

@@ -1,3 +0,0 @@
# Boinc
- https://projects.knownelement.com/issues/182

View File

@@ -1,3 +0,0 @@
# CanvasLMS
- https://projects.knownelement.com/issues/296

View File

@@ -1,3 +0,0 @@
# CDE
https://projects.knownelement.com/issues/231

View File

@@ -1,3 +0,0 @@
# chirpstack
- https://projects.knownelement.com/issues/184

View File

@@ -1,3 +0,0 @@
# Craig
- https://projects.knownelement.com/issues/185

View File

@@ -1,3 +0,0 @@
# Danswer
- https://projects.knownelement.com/issues/186

View File

@@ -1,3 +0,0 @@
# Dashboard
- https://projects.knownelement.com/issues/54

View File

@@ -1,3 +0,0 @@
# Digital Assets Manager
- https://projects.knownelement.com/issues/275

View File

@@ -1,3 +0,0 @@
# Docassemble
- https://projects.knownelement.com/issues/277

View File

@@ -1,3 +0,0 @@
# Draw.io
- https://projects.knownelement.com/issues/272

View File

@@ -1,3 +0,0 @@
# ElabFTW
- https://projects.knownelement.com/issues/188

View File

@@ -1,3 +0,0 @@
# Errortrack
- https://projects.knownelement.com/issues/220

View File

@@ -1,3 +0,0 @@
# ETL
- https://projects.knownelement.com/issues/301

View File

@@ -1,3 +0,0 @@
# Functions
- https://projects.knownelement.com/issues/232

View File

@@ -1,3 +0,0 @@
# Fuzz
- https://projects.knownelement.com/issues/281

View File

@@ -1,3 +0,0 @@
# Governance
- https://projects.knownelement.com/issues/189

View File

@@ -1,3 +0,0 @@
# Grist
- https://projects.knownelement.com/issues/191

View File

@@ -1,3 +0,0 @@
# Grocy
- https://projects.knownelement.com/issues/193

View File

@@ -1,3 +0,0 @@
# Healthcheck
- https://projects.knownelement.com/issues/192

View File

@@ -1,38 +0,0 @@
{
"id": "software.homebox.cloudronapp",
"title": "Homebox",
"author": "CloudronApp",
"description": "Homebox is an inventory and organization system built for home users. Manage your home inventory with a simple, fast, and lightweight application.",
"tagline": "Simple home inventory management",
"version": "1.0.0",
"healthCheckPath": "/",
"httpPort": 7745,
"addons": {
"localstorage": {
"description": "Data directory for Homebox"
}
},
"manifestVersion": 2,
"website": "https://homebox.software/",
"contactEmail": "support@homebox.software",
"icon": "file://logo.png",
"tags": [
"inventory",
"organization",
"asset-management",
"home"
],
"minBoxVersion": "7.5.0",
"documentationUrl": "https://homebox.software/en/",
"forumUrl": "https://github.com/sysadminsmedia/homebox/discussions",
"postInstallMessage": "Homebox has been successfully installed! The first user to register will be the administrator. You can disable registration after creating the first account.",
"memoryLimit": 256000000,
"targetBoxVersion": "7.5.0",
"changelog": "Initial Cloudron package",
"mediaLinks": [],
"containerOptions": {
"securityContext": {
"allowPrivilegeEscalation": false
}
}
}

View File

@@ -1,46 +0,0 @@
FROM cloudron/base:4.2.0
# Add version specifics
ARG VERSION=latest
ARG DEBIAN_FRONTEND=noninteractive
# Update the system and install dependencies
RUN apt-get update && \
apt-get install -y \
curl \
ca-certificates \
wget \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Set up directory structure following Cloudron filesystem layout
RUN mkdir -p /app/code /app/data /tmp/data
# Set working directory
WORKDIR /app/code
# Download and install the latest Homebox release
RUN if [ "$VERSION" = "latest" ]; then \
DOWNLOAD_URL=$(curl -s https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "browser_download_url.*linux_amd64" | cut -d '"' -f 4); \
else \
DOWNLOAD_URL="https://github.com/sysadminsmedia/homebox/releases/download/v${VERSION}/homebox_${VERSION}_linux_amd64.tar.gz"; \
fi && \
wget -O /tmp/homebox.tar.gz ${DOWNLOAD_URL} && \
tar -xzf /tmp/homebox.tar.gz -C /app/code && \
rm /tmp/homebox.tar.gz && \
chmod +x /app/code/homebox
# Copy initialization template for /app/data
COPY data_init /tmp/data/
# Copy application scripts
COPY start.sh /app/code/
RUN chmod +x /app/code/start.sh
# Copy NGINX configuration
COPY nginx.conf /app/code/
# Set ownership to cloudron user
RUN chown -R cloudron:cloudron /app/code /tmp/data
# Set entrypoint
ENTRYPOINT ["/app/code/start.sh"]

View File

@@ -1,67 +0,0 @@
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
# Mime types
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Logging
access_log /dev/stdout;
error_log /dev/stderr;
# Gzip settings
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# Virtual Host Configs
server {
listen 8000 default_server;
listen [::]:8000 default_server;
server_name _;
# Maximum upload size
client_max_body_size 100M;
# Proxy settings
proxy_buffers 16 16k;
proxy_buffer_size 16k;
location / {
proxy_pass http://127.0.0.1:7745;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# Set timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 300s;
}
}
}

View File

@@ -1,108 +0,0 @@
#!/bin/bash
set -e
# Ensure proper directory structure in /app/data
if [ ! -d "/app/data/.database" ]; then
echo "Initializing data directory structure..."
mkdir -p /app/data/.database
mkdir -p /app/data/uploads
# Copy initialization files if provided
if [ -d "/tmp/data" ]; then
cp -r /tmp/data/* /app/data/
fi
# Fix permissions
chown -R cloudron:cloudron /app/data
chmod -R 750 /app/data
fi
# Set environment variables for Homebox
export HBOX_MODE=production
export HBOX_STORAGE_DATA=/app/data
export HBOX_DATABASE_DRIVER=sqlite3
export HBOX_DATABASE_SQLITE_PATH="/app/data/.database/homebox.db"
export HBOX_WEB_PORT=7745
export HBOX_WEB_HOST=127.0.0.1
export HBOX_LOG_LEVEL=info
export HBOX_LOG_FORMAT=text
export HBOX_WEB_MAX_FILE_UPLOAD=50
# Check if registration should be disabled by default
# If this is a fresh install, we'll allow registration for first user
if [ ! -f "/app/data/.database/homebox.db" ]; then
export HBOX_OPTIONS_ALLOW_REGISTRATION=true
else
export HBOX_OPTIONS_ALLOW_REGISTRATION=false
fi
# Configure NGINX
echo "Configuring NGINX..."
mkdir -p /run/nginx
cat > /app/data/nginx.conf <<EOF
worker_processes auto;
daemon off;
pid /run/nginx/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 50M;
# Logging to stdout for Cloudron to capture
access_log /dev/stdout;
error_log /dev/stderr;
server {
listen 8000;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:7745;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
}
}
}
EOF
# Start Supervisor which will manage our processes
echo "Starting supervisor..."
cat > /etc/supervisor/conf.d/homebox.conf <<EOF
[supervisord]
nodaemon=true
logfile=/dev/null
logfile_maxbytes=0
[program:homebox]
command=/app/code/homebox
directory=/app/code
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
user=cloudron
autostart=true
autorestart=true
priority=10
[program:nginx]
command=nginx -c /app/data/nginx.conf
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
autostart=true
autorestart=true
priority=20
EOF
# Start supervisor
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

View File

@@ -1,3 +0,0 @@
# Homebox
- https://projects.knownelement.com/issues/233

View File

@@ -1,40 +0,0 @@
{
"id": "app.homechart.cloudron",
"title": "HomeChart",
"author": "HomeChart Package Maintainer",
"description": "Your all-in-one household management platform. Organize calendars, budgets, shopping lists, and more in one place. Enjoy features like shared calendars, meal planning, task management, and multilingual support. Secure, private, and ad-free.",
"tagline": "Your Family's Mission Control",
"version": "1.0.0",
"upstreamVersion": "2024.09.0",
"healthCheckPath": "/",
"httpPort": 3000,
"memoryLimit": 512,
"addons": {
"localstorage": {},
"postgresql": {
"version": "16"
}
},
"tags": [
"household",
"family",
"organization",
"calendar",
"budget",
"tasks"
],
"postInstallMessage": "HomeChart has been installed successfully! You can now access your family's mission control panel.\n\nThe default administrator credentials are:\nUsername: admin@example.com\nPassword: changeme\n\nPlease login and change these credentials immediately.",
"manifestVersion": 2,
"website": "https://homechart.app/",
"contactEmail": "support@example.com",
"icon": "file://logo.png",
"minBoxVersion": "5.4.0",
"forumUrl": "https://forum.cloudron.io/",
"documentationUrl": "https://homechart.app/docs/",
"changelog": "Initial Cloudron package for HomeChart",
"configurePath": "/settings",
"oauth": {
"loginRedirectUri": "/oidc",
"scope": "openid email profile"
}
}

View File

@@ -1,45 +0,0 @@
FROM cloudron/base:4.2.0
# Install required dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
supervisor \
nginx \
tzdata \
gosu && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Create the application directory structure
RUN mkdir -p /app/code /app/data /run/nginx
# Create homechart data directories structure
RUN mkdir -p /tmp/data
# Download the latest HomeChart release
RUN curl -L -o /app/code/homechart.tar.gz https://github.com/candiddev/homechart/releases/latest/download/homechart_linux_amd64.tar.gz && \
tar -xzf /app/code/homechart.tar.gz -C /app/code && \
rm /app/code/homechart.tar.gz && \
mv /app/code/homechart_linux_amd64 /app/code/homechart && \
chmod +x /app/code/homechart
# Add NGINX configuration
COPY nginx.conf /etc/nginx/sites-enabled/homechart.conf
RUN rm -f /etc/nginx/sites-enabled/default
# Add Supervisor configuration
COPY supervisor.conf /etc/supervisor/conf.d/homechart.conf
# Add the startup script
COPY start.sh /app/code/
RUN chmod +x /app/code/start.sh
# Set permissions
RUN chown -R cloudron:cloudron /app/code /app/data /run/nginx
# Expose the port (should match the httpPort in the CloudronManifest.json)
EXPOSE 3000
CMD ["/app/code/start.sh"]

View File

@@ -1,107 +0,0 @@
# HomeChart Cloudron Package - Build Notes
This document provides instructions for building, testing, and deploying the HomeChart Cloudron package.
## Prerequisites
1. A running Cloudron instance
2. Docker installed on your local machine
3. Cloudron CLI tool installed (`npm install -g cloudron`)
4. Git for cloning the repository
## Files Overview
- **CloudronManifest.json**: Contains metadata and configuration for the Cloudron app
- **Dockerfile**: Defines how to build the Docker image for HomeChart
- **start.sh**: Startup script that handles initialization and configuration
- **nginx.conf**: NGINX configuration for proxying requests
- **supervisor.conf**: Supervisor configuration for process management
## Building and Deploying
### Step 1: Clone the repository
```bash
git clone https://github.com/yourusername/homechart-cloudron.git
cd homechart-cloudron
```
### Step 2: Build the Docker image
```bash
# Login to Docker Hub if not already logged in
docker login
# Build the image
cloudron build
```
When prompted, enter a repository name in the format `username/homechart` where `username` is your Docker Hub username.
### Step 3: Install on your Cloudron
```bash
# Install the app
cloudron install —image username/homechart:latest
```
Youll be prompted to select a subdomain for the app.
### Step 4: Configure the app
After installation, youll need to:
1. Log in using the default credentials provided in the post-install message
2. Change the default administrator password
3. Set up your household and invite family members
## Updating the App
To update the app after making changes:
```bash
# Rebuild the Docker image
cloudron build
# Update the installed app
cloudron update —app homechart
```
## Authentication
HomeChart is configured to use Cloudrons OIDC provider for authentication. Users from your Cloudron instance can log in to HomeChart using their Cloudron credentials.
## Data Persistence
All HomeChart data is stored in:
- PostgreSQL database (managed by Cloudron)
- `/app/data` directory (backed up by Cloudron)
## Troubleshooting
### View logs
```bash
cloudron logs -f —app homechart
```
### Database access
To access the PostgreSQL database directly:
```bash
cloudron exec —app homechart
psql -U “$CLOUDRON_POSTGRESQL_USERNAME” -h “$CLOUDRON_POSTGRESQL_HOST” “$CLOUDRON_POSTGRESQL_DATABASE
```
### Common Issues
- **OIDC configuration issues**: Ensure the Cloudron environment variables are correctly passed to the app
- **Database connection errors**: Check PostgreSQL connection details in the app config
- **Memory limits**: If the app crashes due to memory issues, increase the memory limit in the CloudronManifest.json
## Resources
- [HomeChart Documentation](https://homechart.app/docs/)
- [Cloudron Documentation](https://docs.cloudron.io/)
- [HomeChart GitHub Repository](https://github.com/candiddev/homechart)

View File

@@ -1,42 +0,0 @@
server {
listen 3000;
server_name localhost;
# Add proper headers for running behind Cloudron's proxy
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
# Custom Cloudron error pages
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 50x /error/50x.html;
location ^~ /error/ {
alias /app/code/public/error/;
internal;
}
# Use Cloudron's runtime directory for nginx (read-only filesystem)
client_body_temp_path /run/nginx/body;
proxy_temp_path /run/nginx/proxy;
fastcgi_temp_path /run/nginx/fastcgi;
uwsgi_temp_path /run/nginx/uwsgi;
scgi_temp_path /run/nginx/scgi;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
# Needed for Cloudron's health checks
location = /healthcheck {
access_log off;
return 200;
}
}

View File

@@ -1,53 +0,0 @@
#!/bin/bash
set -e
# Create required runtime directories
mkdir -p /run/nginx/body /run/nginx/proxy /run/nginx/fastcgi /run/nginx/uwsgi /run/nginx/scgi
chown -R cloudron:cloudron /run/nginx
# Initialize data directory if not existing
if [ ! -d "/app/data/config" ]; then
mkdir -p /app/data/config
chown -R cloudron:cloudron /app/data
fi
# Configuration
CONFIG_FILE="/app/data/config/homechart.json"
if [ ! -f "$CONFIG_FILE" ]; then
echo "Creating initial configuration file..."
cat > "$CONFIG_FILE" <<EOL
{
"app": {
"baseURL": "${CLOUDRON_APP_ORIGIN}",
"proxyAddr": "127.0.0.1, 172.18.0.1"
},
"postgresql": {
"hostname": "${CLOUDRON_POSTGRESQL_HOST}",
"username": "${CLOUDRON_POSTGRESQL_USERNAME}",
"password": "${CLOUDRON_POSTGRESQL_PASSWORD}",
"database": "${CLOUDRON_POSTGRESQL_DATABASE}"
},
"oidc": {
"cloudron": {
"clientID": "${CLOUDRON_OIDC_CLIENT_ID}",
"clientSecret": "${CLOUDRON_OIDC_CLIENT_SECRET}",
"displayName": "Cloudron",
"oidcIssuerURL": "${CLOUDRON_OIDC_ISSUER}"
}
},
"logging": {
"level": "info"
}
}
EOL
chown cloudron:cloudron "$CONFIG_FILE"
fi
# Link HomeChart configuration
export HOMECHART_CONFIG_FILE="$CONFIG_FILE"
# Set the port for HomeChart to run on (internal port)
export HOMECHART_APP_PORT=8000
# Start supervisor which manages nginx and homechart
exec /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf

View File

@@ -1,28 +0,0 @@
[supervisord]
nodaemon=true
logfile=/dev/null
logfile_maxbytes=0
pidfile=/var/run/supervisord.pid
[program:nginx]
priority=10
command=nginx -g "daemon off;"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:homechart]
priority=20
directory=/app/code
command=/app/code/homechart
user=cloudron
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=HOME="/app/data"

View File

@@ -1,3 +0,0 @@
# Homechart
- https://projects.knownelement.com/issues/284

View File

@@ -1,3 +0,0 @@
# Huginn
- https://projects.knownelement.com/issues/194

View File

@@ -1,3 +0,0 @@
# Inventree
- https://projects.knownelement.com/issues/173

View File

@@ -1,3 +0,0 @@
# IT-fleet
- https://projects.knownelement.com/issues/195

View File

@@ -1,3 +0,0 @@
# Jamovi
- https://projects.knownelement.com/issues/196

View File

@@ -1,3 +0,0 @@
# Jenkins
- https://projects.knownelement.com/issues/234

View File

@@ -1,3 +0,0 @@
# Kicad CI
- https://projects.knownelement.com/issues/197

View File

@@ -1,3 +0,0 @@
# Langfuse
- https://projects.knownelement.com/issues/198

View File

@@ -1,3 +0,0 @@
# Lists
- https://projects.knownelement.com/issues/199

View File

@@ -1,3 +0,0 @@
# llm-ops
- https://projects.knownelement.com/issues/304

View File

@@ -1,3 +0,0 @@
# Graylog
- https://projects.knownelement.com/issues/190

View File

@@ -1,3 +0,0 @@
# Mailpiler
- https://projects.knownelement.com/issues/200

View File

@@ -1,3 +0,0 @@
# Maker
- https://projects.knownelement.com/issues/282

View File

@@ -1,3 +0,0 @@
# MLOPS
- https://projects.knownelement.com/issues/305

View File

@@ -1,3 +0,0 @@
# Netbox
- https://projects.knownelement.com/issues/201

View File

@@ -1,3 +0,0 @@
# Netdata
- https://projects.knownelement.com/issues/202

View File

@@ -1,3 +0,0 @@
# Netmon
- https://projects.knownelement.com/issues/203

View File

@@ -1,3 +0,0 @@
# Oncall
- https://projects.knownelement.com/issues/204

View File

@@ -1,3 +0,0 @@
# Onedev
- https://projects.knownelement.com/issues/306

View File

@@ -1,3 +0,0 @@
# Openblocks
- https://projects.knownelement.com/issues/274

View File

@@ -1,3 +0,0 @@
# Openboxes
- https://projects.knownelement.com/issues/205

View File

@@ -1,3 +0,0 @@
# Opensearch
- https://projects.knownelement.com/issues/206

View File

@@ -1,3 +0,0 @@
# Openvas
- https://projects.knownelement.com/issues/207

View File

@@ -1,3 +0,0 @@
# OTA
- https://projects.knownelement.com/issues/300

View File

@@ -1,3 +0,0 @@
#cfssl docker compose for tsys
#git subtree add --prefix upstream/cloudflare-cfssl https://github.com/rjrivero/docker-cfssl.git master --squash

View File

@@ -1,2 +0,0 @@
This directory contains template files for the application at FQDN indidicated by the parent directory. They will be processed using mo (bash mustache).

View File

@@ -1,3 +0,0 @@
This directory contains files from the vendor unmodified. They serve as a base for the input-files sibling directory
https://github.com/Payroll-Engine/PayrollEngine/wiki

View File

@@ -1,3 +0,0 @@
# Payroute
- https://projects.knownelement.com/issues/209

View File

@@ -1,3 +0,0 @@
# Phish Test
- https://projects.knownelement.com/issues/211

View File

@@ -1,3 +0,0 @@
# PHPList
- https://projects.knownelement.com/issues/303

View File

@@ -1,3 +0,0 @@
# Platform
- https://projects.knownelement.com/issues/212

View File

@@ -1,3 +0,0 @@
# PLM
- https://projects.knownelement.com/issues/279

View File

@@ -1,3 +0,0 @@
# Reactive Resume
- https://projects.knownelement.com/issues/249

View File

@@ -1,3 +0,0 @@
# Resgrid
- https://projects.knownelement.com/issues/214

View File

@@ -1,3 +0,0 @@
# Resume Matcher
- https://projects.knownelement.com/issues/170

View File

@@ -1,3 +0,0 @@
# Reviewboard
- https://projects.knownelement.com/issues/216

View File

@@ -1,3 +0,0 @@
# Rundeck
- https://projects.knownelement.com/issues/217

View File

@@ -1,3 +0,0 @@
# Satnogs
- https://projects.knownelement.com/issues/218

View File

@@ -1,3 +0,0 @@
# Sdrangel
- https://projects.knownelement.com/issues/219

View File

@@ -1,3 +0,0 @@
# Wazuh
- https://projects.knownelement.com/issues/229

View File

@@ -1,3 +0,0 @@
# Signoz
- https://projects.knownelement.com/issues/221

View File

@@ -1,3 +0,0 @@
# Slurm
- https://projects.knownelement.com/issues/222

View File

@@ -1,3 +0,0 @@
# SQL Proxy
- https://projects.knownelement.com/issues/273

View File

@@ -1,3 +0,0 @@
# Sqlfluff
- https://projects.knownelement.com/issues/302

View File

@@ -1,3 +0,0 @@
# Talent-test
- https://projects.knownelement.com/issues/223

View File

@@ -1,3 +0,0 @@
# TheThingsNet
- https://projects.knownelement.com/issues/224

View File

@@ -1,3 +0,0 @@
# Tunnel
- https://projects.knownelement.com/issues/225

View File

@@ -1,3 +0,0 @@
# VDI
- https://projects.knownelement.com/issues/286

View File

@@ -1,3 +0,0 @@
# Voiceapps
- https://projects.knownelement.com/issues/227

View File

@@ -1,3 +0,0 @@
# Voting
- https://projects.knownelement.com/issues/174

View File

@@ -1,3 +0,0 @@
# Warp
- https://projects.knownelement.com/issues/228

View File

@@ -1,3 +0,0 @@
# Webhookso
- https://projects.knownelement.com/issues/271

View File

@@ -1,3 +0,0 @@
# Windmill
- https://projects.knownelement.com/issues/285

View File

@@ -1,3 +0,0 @@
# Wireflow
- https://projects.knownelement.com/issues/50

View File

@@ -1,3 +0,0 @@
# Wireviz
- https://projects.knownelement.com/issues/276

Some files were not shown because too many files have changed in this diff Show More