freealberta/mkdocs/site/search/search_index.json

1 line
54 KiB
JSON

{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome to Changemaker Lite","text":"<p>A streamlined, self-hosted platform for documentation and development.</p>"},{"location":"#quick-start","title":"Quick Start","text":"<p>Get up and running in minutes:</p> <pre><code># Clone the repository\ngit clone https://gitea.bnkops.com/admin/Changemaker.git\ncd changemaker.lite\n\n# Configure environment\n./config.sh\n\n# Start all services\ndocker compose up -d\n</code></pre>"},{"location":"#services","title":"Services","text":"<p>Changemaker Lite includes these essential services:</p> <ul> <li>Homepage (Port 3010) - Service dashboard and monitoring</li> <li>Code Server (Port 8888) - VS Code in your browser</li> <li>MkDocs (Port 4000) - Documentation with live preview </li> <li>Static Server (Port 4001) - Built site hosting</li> <li>Waypoint Editor (Port 3020) - Visual page editor</li> <li>Listmonk (Port 9000) - Newsletter management</li> <li>PostgreSQL (Port 5432) - Database backend</li> <li>n8n (Port 5678) - Workflow automation</li> <li>NocoDB (Port 8090) - No-code database platform</li> </ul>"},{"location":"#getting-started","title":"Getting Started","text":"<ol> <li>Documentation: Start writing in Code Server</li> <li>Preview: See live changes at MkDocs</li> <li>Production: View built site at Static Server</li> <li>Email: Set up campaigns with Listmonk</li> <li>Automation: Create workflows in n8n</li> </ol>"},{"location":"#project-structure","title":"Project Structure","text":"<pre><code>changemaker.lite/\n\u251c\u2500\u2500 docker-compose.yml # Service definitions\n\u251c\u2500\u2500 config.sh # Setup script\n\u251c\u2500\u2500 mkdocs/ # Documentation source\n\u2502 \u251c\u2500\u2500 docs/ # Markdown files\n\u2502 \u2514\u2500\u2500 mkdocs.yml # Configuration\n\u251c\u2500\u2500 configs/ # Service configurations\n\u2514\u2500\u2500 assets/ # Shared assets\n</code></pre>"},{"location":"#learn-more","title":"Learn More","text":"<ul> <li>Services Overview - Detailed service documentation</li> <li>Blog - Updates and tutorials</li> <li>GitHub Repository - Source code and issues</li> </ul>"},{"location":"getting-started/","title":"Getting Started","text":"<p>Welcome to Changemaker Lite! This guide will help you get up and running quickly.</p>"},{"location":"getting-started/#prerequisites","title":"Prerequisites","text":"<p>Before starting, ensure you have:</p> <ul> <li>Docker installed</li> <li>Docker Compose installed</li> <li>Git for cloning the repository</li> <li>Basic familiarity with terminal/command line</li> </ul>"},{"location":"getting-started/#installation","title":"Installation","text":""},{"location":"getting-started/#1-clone-repository","title":"1. Clone Repository","text":"<pre><code>git clone https://gitea.bnkops.com/admin/Changemaker.git\ncd changemaker.lite\n</code></pre>"},{"location":"getting-started/#2-configuration","title":"2. Configuration","text":"<p>Run the configuration script to set up environment variables:</p> <pre><code>./config.sh\n</code></pre> <p>This creates a <code>.env</code> file with default settings. You can edit this file to customize: - Service ports - Database credentials - User/group IDs - Domain settings</p>"},{"location":"getting-started/#3-start-services","title":"3. Start Services","text":"<p>Launch all services with Docker Compose:</p> <pre><code>docker compose up -d\n</code></pre> <p>Wait a few minutes for all services to start, especially on first run as Docker images need to be downloaded.</p>"},{"location":"getting-started/#4-verify-installation","title":"4. Verify Installation","text":"<p>Check that services are running:</p> <pre><code>docker compose ps\n</code></pre> <p>All services should show as \"Up\" status.</p>"},{"location":"getting-started/#first-steps","title":"First Steps","text":""},{"location":"getting-started/#access-the-dashboard","title":"Access the Dashboard","text":"<p>Start with the Homepage Dashboard: http://localhost:3010 - Central hub for all services - Live status monitoring - Quick access to all applications</p>"},{"location":"getting-started/#access-documentation","title":"Access Documentation","text":"<ol> <li>Development Server: http://localhost:4000</li> <li>Live preview with auto-reload</li> <li> <p>Used while writing documentation</p> </li> <li> <p>Production Server: http://localhost:4001 </p> </li> <li>Serves built static site</li> <li>Optimized for performance</li> </ol>"},{"location":"getting-started/#start-coding","title":"Start Coding","text":"<ol> <li>Open Code Server: http://localhost:8888</li> <li>Navigate to <code>/home/coder/mkdocs/</code> workspace</li> <li>Edit documentation files in <code>docs/</code> directory</li> <li>See changes instantly in development server</li> </ol>"},{"location":"getting-started/#set-up-email-campaigns","title":"Set Up Email Campaigns","text":"<ol> <li>Access Listmonk: http://localhost:9000</li> <li>Log in with admin credentials (set in config)</li> <li>Configure SMTP settings</li> <li>Create your first mailing list</li> </ol>"},{"location":"getting-started/#create-workflows","title":"Create Workflows","text":"<ol> <li>Open n8n: http://localhost:5678</li> <li>Log in with admin credentials</li> <li>Create your first workflow</li> <li>Connect different services together</li> </ol>"},{"location":"getting-started/#manage-data-with-nocodb","title":"Manage Data with NocoDB","text":"<ol> <li>Access NocoDB: http://localhost:8090</li> <li>Complete the initial setup</li> <li>Create your first project</li> <li>Import data or create new tables</li> </ol>"},{"location":"getting-started/#access-all-services-via-homepage","title":"Access All Services via Homepage","text":"<ol> <li>Open Homepage: http://localhost:3010</li> <li>View all services in one dashboard</li> <li>Monitor service status</li> <li>Quick access to all applications</li> </ol>"},{"location":"getting-started/#configuration-details","title":"Configuration Details","text":""},{"location":"getting-started/#environment-variables","title":"Environment Variables","text":"<p>Key settings in <code>.env</code> file:</p> <pre><code># Service Ports\nHOMEPAGE_PORT=3010\nCODE_SERVER_PORT=8888\nMKDOCS_PORT=4000\nMKDOCS_SITE_SERVER_PORT=4001\nLISTMONK_PORT=9000\nN8N_PORT=5678\nNOCODB_PORT=8090\n\n# Database\nPOSTGRES_USER=listmonk\nPOSTGRES_PASSWORD=your_secure_password\nPOSTGRES_DB=listmonk\n\n# User/Group IDs (match your system)\nUSER_ID=1000\nGROUP_ID=1000\n</code></pre>"},{"location":"getting-started/#volume-mounts","title":"Volume Mounts","text":"<p>Important directories:</p> <ul> <li><code>./mkdocs/</code>: Documentation source files</li> <li><code>./configs/</code>: Service configurations</li> <li><code>./assets/</code>: Shared assets and uploads</li> <li>Docker volumes for persistent data</li> </ul>"},{"location":"getting-started/#common-tasks","title":"Common Tasks","text":""},{"location":"getting-started/#writing-documentation","title":"Writing Documentation","text":"<ol> <li>Edit files in <code>mkdocs/docs/</code> using Code Server</li> <li>Preview changes at http://localhost:4000</li> <li>Build static site: <code>docker exec mkdocs-changemaker mkdocs build</code></li> <li>View built site at http://localhost:4001</li> </ol>"},{"location":"getting-started/#managing-services","title":"Managing Services","text":"<pre><code># View logs\ndocker compose logs [service-name]\n\n# Restart service\ndocker compose restart [service-name]\n\n# Stop all services\ndocker compose down\n\n# Update services\ndocker compose pull &amp;&amp; docker compose up -d\n</code></pre>"},{"location":"getting-started/#backup-important-data","title":"Backup Important Data","text":"<ul> <li>Export n8n workflows</li> <li>Backup PostgreSQL database</li> <li>Version control your documentation files</li> <li>Save service configurations</li> </ul>"},{"location":"getting-started/#troubleshooting","title":"Troubleshooting","text":""},{"location":"getting-started/#port-conflicts","title":"Port Conflicts","text":"<p>If ports are already in use, edit <code>.env</code> file:</p> <pre><code>CODE_SERVER_PORT=8889 # Change from 8888\nMKDOCS_PORT=4002 # Change from 4000\n</code></pre> <p>Then restart: <code>docker compose down &amp;&amp; docker compose up -d</code></p>"},{"location":"getting-started/#permission-issues","title":"Permission Issues","text":"<p>Ensure correct user/group IDs in <code>.env</code>:</p> <pre><code># Get your user ID\nid -u\n\n# Get your group ID \nid -g\n</code></pre> <p>Update <code>.env</code> with these values and restart services.</p>"},{"location":"getting-started/#service-wont-start","title":"Service Won't Start","text":"<p>Check logs for specific errors:</p> <pre><code>docker compose logs [service-name]\n</code></pre> <p>Common issues: - Port conflicts - Permission problems - Missing environment variables - Network connectivity</p>"},{"location":"getting-started/#next-steps","title":"Next Steps","text":"<ul> <li>Explore the Services documentation</li> <li>Set up your first n8n workflow</li> <li>Configure Listmonk for email campaigns</li> <li>Customize your MkDocs theme and content</li> </ul>"},{"location":"getting-started/#getting-help","title":"Getting Help","text":"<ul> <li>Check service-specific documentation</li> <li>Review Docker container logs</li> <li>Verify environment configuration</li> <li>Test network connectivity between services</li> </ul>"},{"location":"services/","title":"Services","text":"<p>Changemaker Lite includes several powerful services that work together to provide a complete documentation and development platform. Each service is containerized and can be accessed through its dedicated port.</p>"},{"location":"services/#available-services","title":"Available Services","text":""},{"location":"services/#code-server","title":"Code Server","text":"<p>Port: 8888 | Visual Studio Code in your browser for remote development - Full IDE experience - Extensions support - Git integration - Terminal access</p>"},{"location":"services/#listmonk","title":"Listmonk","text":"<p>Port: 9000 | Self-hosted newsletter and mailing list manager - Email campaigns - Subscriber management - Analytics - Template system</p>"},{"location":"services/#postgresql","title":"PostgreSQL","text":"<p>Port: 5432 | Reliable database backend - Data persistence for Listmonk - ACID compliance - High performance - Backup and restore capabilities</p>"},{"location":"services/#mkdocs-material","title":"MkDocs Material","text":"<p>Port: 4000 | Documentation site generator with live preview - Material Design theme - Live reload - Search functionality - Markdown support</p>"},{"location":"services/#static-site-server","title":"Static Site Server","text":"<p>Port: 4001 | Nginx-powered static site hosting - High-performance serving - Built documentation hosting - Caching and compression - Security headers</p>"},{"location":"services/#n8n","title":"n8n","text":"<p>Port: 5678 | Workflow automation tool - Visual workflow editor - 400+ integrations - Custom code execution - Webhook support</p>"},{"location":"services/#nocodb","title":"NocoDB","text":"<p>Port: 8090 | No-code database platform - Smart spreadsheet interface - Form builder and API generation - Real-time collaboration - Multi-database support</p>"},{"location":"services/#homepage","title":"Homepage","text":"<p>Port: 3010 | Modern dashboard for all services - Service dashboard and monitoring - Docker integration - Customizable layout - Quick search and bookmarks</p>"},{"location":"services/#service-architecture","title":"Service Architecture","text":"<pre><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Homepage \u2502 \u2502 Code Server \u2502 \u2502 MkDocs \u2502\n\u2502 :3010 \u2502 \u2502 :8888 \u2502 \u2502 :4000 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Static Server \u2502 \u2502 Listmonk \u2502 \u2502 n8n \u2502\n\u2502 :4001 \u2502 \u2502 :9000 \u2502 \u2502 :5678 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 NocoDB \u2502 \u2502 PostgreSQL \u2502 \u2502 PostgreSQL \u2502\n\u2502 :8090 \u2502 \u2502 (listmonk-db) \u2502 \u2502 (root_db) \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 :5432 \u2502 \u2502 :5432 \u2502\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n</code></pre>"},{"location":"services/#getting-started","title":"Getting Started","text":"<ol> <li>Start all services: <code>docker compose up -d</code></li> <li>Check service status: <code>docker compose ps</code></li> <li>View logs: <code>docker compose logs [service-name]</code></li> <li>Stop services: <code>docker compose down</code></li> </ol>"},{"location":"services/#service-dependencies","title":"Service Dependencies","text":"<ul> <li>Listmonk depends on PostgreSQL (listmonk-db)</li> <li>NocoDB depends on PostgreSQL (root_db)</li> <li>Static Server serves content built by MkDocs</li> <li>n8n can integrate with all other services</li> <li>All services share the <code>changemaker</code> network</li> </ul>"},{"location":"services/#environment-configuration","title":"Environment Configuration","text":"<p>Services are configured through environment variables in your <code>.env</code> file:</p> <pre><code># Port configurations\nCODE_SERVER_PORT=8888\nLISTMONK_PORT=9000\nLISTMONK_DB_PORT=5432\nMKDOCS_PORT=4000\nMKDOCS_SITE_SERVER_PORT=4001\nN8N_PORT=5678\n\n# User and group IDs\nUSER_ID=1000\nGROUP_ID=1000\n\n# Database configuration\nPOSTGRES_USER=listmonk\nPOSTGRES_PASSWORD=your_password\nPOSTGRES_DB=listmonk\n\n# n8n configuration\nN8N_ENCRYPTION_KEY=your_encryption_key\nN8N_USER_EMAIL=admin@example.com\nN8N_USER_PASSWORD=your_password\n</code></pre>"},{"location":"services/#monitoring-and-maintenance","title":"Monitoring and Maintenance","text":""},{"location":"services/#health-checks","title":"Health Checks","text":"<pre><code># Check all services\ndocker compose ps\n\n# Check specific service logs\ndocker compose logs listmonk-app\ndocker compose logs code-server\n</code></pre>"},{"location":"services/#updates","title":"Updates","text":"<pre><code># Pull latest images\ndocker compose pull\n\n# Restart with new images\ndocker compose down &amp;&amp; docker compose up -d\n</code></pre>"},{"location":"services/#backups","title":"Backups","text":"<ul> <li>PostgreSQL: Regular database backups</li> <li>n8n: Export workflows and credentials</li> <li>Code Server: Backup configuration and workspace</li> <li>MkDocs: Version control your documentation</li> </ul>"},{"location":"services/#troubleshooting","title":"Troubleshooting","text":""},{"location":"services/#common-issues","title":"Common Issues","text":"<ol> <li>Port Conflicts: Ensure ports are not used by other applications</li> <li>Permission Issues: Check <code>USER_ID</code> and <code>GROUP_ID</code> settings</li> <li>Network Issues: Verify services can communicate through the <code>changemaker</code> network</li> <li>Data Persistence: Ensure volumes are properly mounted</li> </ol>"},{"location":"services/#getting-help","title":"Getting Help","text":"<ul> <li>Check individual service documentation</li> <li>Review container logs for error messages</li> <li>Verify environment variable configuration</li> <li>Test network connectivity between services</li> </ul>"},{"location":"services/code-server/","title":"Code Server","text":"<p>Visual Studio Code in your browser for remote development.</p>"},{"location":"services/code-server/#overview","title":"Overview","text":"<p>Code Server provides a full Visual Studio Code experience in your web browser, allowing you to develop from any device. It runs on your server and provides access to your development environment through a web interface.</p>"},{"location":"services/code-server/#features","title":"Features","text":"<ul> <li>Full VS Code experience in the browser</li> <li>Extensions support</li> <li>Terminal access</li> <li>Git integration</li> <li>File editing and management</li> <li>Multi-language support</li> </ul>"},{"location":"services/code-server/#access","title":"Access","text":"<ul> <li>Default Port: 8888</li> <li>URL: <code>http://localhost:8888</code></li> <li>Default Workspace: <code>/home/coder/mkdocs/</code></li> </ul>"},{"location":"services/code-server/#configuration","title":"Configuration","text":""},{"location":"services/code-server/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>DOCKER_USER</code>: The user to run code-server as (default: <code>coder</code>)</li> <li><code>DEFAULT_WORKSPACE</code>: Default workspace directory</li> <li><code>USER_ID</code>: User ID for file permissions</li> <li><code>GROUP_ID</code>: Group ID for file permissions</li> </ul>"},{"location":"services/code-server/#volumes","title":"Volumes","text":"<ul> <li><code>./configs/code-server/.config</code>: VS Code configuration</li> <li><code>./configs/code-server/.local</code>: Local data</li> <li><code>./mkdocs</code>: Main workspace directory</li> </ul>"},{"location":"services/code-server/#usage","title":"Usage","text":"<ol> <li>Access Code Server at <code>http://localhost:8888</code></li> <li>Open the <code>/home/coder/mkdocs/</code> workspace</li> <li>Start editing your documentation files</li> <li>Install extensions as needed</li> <li>Use the integrated terminal for commands</li> </ol>"},{"location":"services/code-server/#useful-extensions","title":"Useful Extensions","text":"<p>Consider installing these extensions for better documentation work:</p> <ul> <li>Markdown All in One</li> <li>Material Design Icons</li> <li>GitLens</li> <li>Docker</li> <li>YAML</li> </ul>"},{"location":"services/code-server/#official-documentation","title":"Official Documentation","text":"<p>For more detailed information, visit the official Code Server documentation.</p>"},{"location":"services/homepage/","title":"Homepage","text":"<p>Modern dashboard for accessing all your self-hosted services.</p>"},{"location":"services/homepage/#overview","title":"Overview","text":"<p>Homepage is a modern, fully static, fast, secure fully configurable application dashboard with integrations for over 100 services. It provides a beautiful and customizable interface to access all your Changemaker Lite services from a single location.</p>"},{"location":"services/homepage/#features","title":"Features","text":"<ul> <li>Service Dashboard: Central hub for all your applications</li> <li>Docker Integration: Automatic service discovery and monitoring</li> <li>Customizable Layout: Flexible grid-based layout system</li> <li>Service Widgets: Live status and metrics for services</li> <li>Quick Search: Fast navigation with built-in search</li> <li>Bookmarks: Organize frequently used links</li> <li>Dark/Light Themes: Multiple color schemes available</li> <li>Responsive Design: Works on desktop and mobile devices</li> </ul>"},{"location":"services/homepage/#access","title":"Access","text":"<ul> <li>Default Port: 3010</li> <li>URL: <code>http://localhost:3010</code></li> <li>Configuration: YAML-based configuration files</li> </ul>"},{"location":"services/homepage/#configuration","title":"Configuration","text":""},{"location":"services/homepage/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>HOMEPAGE_PORT</code>: External port mapping (default: 3010)</li> <li><code>PUID</code>: User ID for file permissions (default: 1000)</li> <li><code>PGID</code>: Group ID for file permissions (default: 1000)</li> <li><code>TZ</code>: Timezone setting (default: Etc/UTC)</li> <li><code>HOMEPAGE_ALLOWED_HOSTS</code>: Allowed hosts for the dashboard</li> </ul>"},{"location":"services/homepage/#configuration-files","title":"Configuration Files","text":"<p>Homepage uses YAML configuration files located in <code>./configs/homepage/</code>:</p> <ul> <li><code>settings.yaml</code>: Global settings and theme configuration</li> <li><code>services.yaml</code>: Service definitions and widgets</li> <li><code>bookmarks.yaml</code>: Bookmark categories and links</li> <li><code>widgets.yaml</code>: Dashboard widgets configuration</li> <li><code>docker.yaml</code>: Docker integration settings</li> </ul>"},{"location":"services/homepage/#volumes","title":"Volumes","text":"<ul> <li><code>./configs/homepage:/app/config</code>: Configuration files</li> <li><code>./assets/icons:/app/public/icons</code>: Custom service icons</li> <li><code>./assets/images:/app/public/images</code>: Background images and assets</li> <li><code>/var/run/docker.sock:/var/run/docker.sock</code>: Docker socket for container monitoring</li> </ul>"},{"location":"services/homepage/#changemaker-lite-services","title":"Changemaker Lite Services","text":"<p>Homepage is pre-configured with all Changemaker Lite services:</p>"},{"location":"services/homepage/#essential-tools","title":"Essential Tools","text":"<ul> <li>Code Server (Port 8888): VS Code in the browser</li> <li>Listmonk (Port 9000): Newsletter &amp; mailing list manager</li> <li>NocoDB (Port 8090): No-code database platform</li> </ul>"},{"location":"services/homepage/#content-documentation","title":"Content &amp; Documentation","text":"<ul> <li>MkDocs (Port 4000): Live documentation server</li> <li>Static Site (Port 4001): Built documentation hosting</li> </ul>"},{"location":"services/homepage/#automation-data","title":"Automation &amp; Data","text":"<ul> <li>n8n (Port 5678): Workflow automation platform</li> <li>PostgreSQL (Port 5432): Database backends</li> </ul>"},{"location":"services/homepage/#customization","title":"Customization","text":""},{"location":"services/homepage/#adding-custom-services","title":"Adding Custom Services","text":"<p>Edit <code>configs/homepage/services.yaml</code> to add new services:</p> <pre><code>- Custom Category:\n - My Service:\n href: http://localhost:8080\n description: Custom service description\n icon: mdi-application\n widget:\n type: ping\n url: http://localhost:8080\n</code></pre>"},{"location":"services/homepage/#custom-icons","title":"Custom Icons","text":"<p>Add custom icons to <code>./assets/icons/</code> directory and reference them in services.yaml:</p> <pre><code>icon: /icons/my-custom-icon.png\n</code></pre>"},{"location":"services/homepage/#themes-and-styling","title":"Themes and Styling","text":"<p>Modify <code>configs/homepage/settings.yaml</code> to customize appearance:</p> <pre><code>theme: dark # or light\ncolor: purple # slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose\n</code></pre>"},{"location":"services/homepage/#widgets","title":"Widgets","text":"<p>Enable live monitoring widgets in <code>configs/homepage/services.yaml</code>:</p> <pre><code>- Service Name:\n widget:\n type: docker\n container: container-name\n server: my-docker\n</code></pre>"},{"location":"services/homepage/#service-monitoring","title":"Service Monitoring","text":"<p>Homepage can display real-time status information for your services:</p> <ul> <li>Docker Integration: Container status and resource usage</li> <li>HTTP Ping: Service availability monitoring</li> <li>Custom APIs: Integration with service-specific APIs</li> </ul>"},{"location":"services/homepage/#docker-integration","title":"Docker Integration","text":"<p>Homepage monitors Docker containers automatically when configured:</p> <ol> <li>Ensure Docker socket is mounted (<code>/var/run/docker.sock</code>)</li> <li>Configure container mappings in <code>docker.yaml</code></li> <li>Add widget configurations to <code>services.yaml</code></li> </ol>"},{"location":"services/homepage/#security-considerations","title":"Security Considerations","text":"<ul> <li>Homepage runs with limited privileges</li> <li>Configuration files should have appropriate permissions</li> <li>Consider network isolation for production deployments</li> <li>Use HTTPS for external access</li> <li>Regularly update the Homepage image</li> </ul>"},{"location":"services/homepage/#troubleshooting","title":"Troubleshooting","text":""},{"location":"services/homepage/#common-issues","title":"Common Issues","text":"<p>Configuration not loading: Check YAML syntax in configuration files <pre><code>docker logs homepage-changemaker\n</code></pre></p> <p>Icons not displaying: Verify icon paths and file permissions <pre><code>ls -la ./assets/icons/\n</code></pre></p> <p>Services not reachable: Verify network connectivity between containers <pre><code>docker exec homepage-changemaker ping service-name\n</code></pre></p> <p>Widget data not updating: Check Docker socket permissions and container access <pre><code>docker exec homepage-changemaker ls -la /var/run/docker.sock\n</code></pre></p>"},{"location":"services/homepage/#configuration-examples","title":"Configuration Examples","text":""},{"location":"services/homepage/#basic-service-widget","title":"Basic Service Widget","text":"<pre><code>- Code Server:\n href: http://localhost:8888\n description: VS Code in the browser\n icon: code-server\n widget:\n type: docker\n container: code-server-changemaker\n</code></pre>"},{"location":"services/homepage/#custom-dashboard-layout","title":"Custom Dashboard Layout","text":"<pre><code># settings.yaml\nlayout:\n style: columns\n columns: 3\n\n# Responsive breakpoints\nresponsive:\n mobile: 1\n tablet: 2\n desktop: 3\n</code></pre>"},{"location":"services/homepage/#official-documentation","title":"Official Documentation","text":"<p>For comprehensive configuration guides and advanced features: - Homepage Documentation - GitHub Repository - Configuration Examples - Widget Integrations</p>"},{"location":"services/listmonk/","title":"Listmonk","text":"<p>Self-hosted newsletter and mailing list manager.</p>"},{"location":"services/listmonk/#overview","title":"Overview","text":"<p>Listmonk is a modern, feature-rich newsletter and mailing list manager designed for high performance and easy management. It provides a complete solution for email campaigns, subscriber management, and analytics.</p>"},{"location":"services/listmonk/#features","title":"Features","text":"<ul> <li>Newsletter and email campaign management</li> <li>Subscriber list management</li> <li>Template system with HTML/markdown support</li> <li>Campaign analytics and tracking</li> <li>API for integration</li> <li>Multi-list support</li> <li>Bounce handling</li> <li>Privacy-focused design</li> </ul>"},{"location":"services/listmonk/#access","title":"Access","text":"<ul> <li>Default Port: 9000</li> <li>URL: <code>http://localhost:9000</code></li> <li>Admin User: Set via <code>LISTMONK_ADMIN_USER</code> environment variable</li> <li>Admin Password: Set via <code>LISTMONK_ADMIN_PASSWORD</code> environment variable</li> </ul>"},{"location":"services/listmonk/#configuration","title":"Configuration","text":""},{"location":"services/listmonk/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>LISTMONK_ADMIN_USER</code>: Admin username</li> <li><code>LISTMONK_ADMIN_PASSWORD</code>: Admin password</li> <li><code>POSTGRES_USER</code>: Database username</li> <li><code>POSTGRES_PASSWORD</code>: Database password</li> <li><code>POSTGRES_DB</code>: Database name</li> </ul>"},{"location":"services/listmonk/#database","title":"Database","text":"<p>Listmonk uses PostgreSQL as its backend database. The database is automatically configured through the docker-compose setup.</p>"},{"location":"services/listmonk/#uploads","title":"Uploads","text":"<ul> <li>Upload directory: <code>./assets/uploads</code></li> <li>Used for media files, templates, and attachments</li> </ul>"},{"location":"services/listmonk/#getting-started","title":"Getting Started","text":"<ol> <li>Access Listmonk at <code>http://localhost:9000</code></li> <li>Log in with your admin credentials</li> <li>Set up your first mailing list</li> <li>Configure SMTP settings for sending emails</li> <li>Import subscribers or create subscription forms</li> <li>Create your first campaign</li> </ol>"},{"location":"services/listmonk/#important-notes","title":"Important Notes","text":"<ul> <li>Configure SMTP settings before sending emails</li> <li>Set up proper domain authentication (SPF, DKIM) for better deliverability</li> <li>Regularly backup your subscriber data and campaigns</li> <li>Monitor bounce rates and maintain list hygiene</li> </ul>"},{"location":"services/listmonk/#official-documentation","title":"Official Documentation","text":"<p>For comprehensive guides and API documentation, visit: - Listmonk Documentation - GitHub Repository</p>"},{"location":"services/mkdocs/","title":"MkDocs Material","text":"<p>Modern documentation site generator with live preview.</p>"},{"location":"services/mkdocs/#overview","title":"Overview","text":"<p>MkDocs Material is a powerful documentation framework built on top of MkDocs, providing a beautiful Material Design theme and advanced features for creating professional documentation sites.</p>"},{"location":"services/mkdocs/#features","title":"Features","text":"<ul> <li>Material Design theme</li> <li>Live preview during development</li> <li>Search functionality</li> <li>Navigation and organization</li> <li>Code syntax highlighting</li> <li>Mathematical expressions support</li> <li>Responsive design</li> <li>Customizable themes and colors</li> </ul>"},{"location":"services/mkdocs/#access","title":"Access","text":"<ul> <li>Development Port: 4000</li> <li>Development URL: <code>http://localhost:4000</code></li> <li>Live Reload: Automatically refreshes on file changes</li> </ul>"},{"location":"services/mkdocs/#configuration","title":"Configuration","text":""},{"location":"services/mkdocs/#main-configuration","title":"Main Configuration","text":"<p>Configuration is managed through <code>mkdocs.yml</code> in the project root.</p>"},{"location":"services/mkdocs/#volumes","title":"Volumes","text":"<ul> <li><code>./mkdocs</code>: Documentation source files</li> <li><code>./assets/images</code>: Shared images directory</li> </ul>"},{"location":"services/mkdocs/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>SITE_URL</code>: Base domain for the site</li> <li><code>USER_ID</code>: User ID for file permissions</li> <li><code>GROUP_ID</code>: Group ID for file permissions</li> </ul>"},{"location":"services/mkdocs/#directory-structure","title":"Directory Structure","text":"<pre><code>mkdocs/\n\u251c\u2500\u2500 mkdocs.yml # Configuration file\n\u251c\u2500\u2500 docs/ # Documentation source\n\u2502 \u251c\u2500\u2500 index.md # Homepage\n\u2502 \u251c\u2500\u2500 services/ # Service documentation\n\u2502 \u251c\u2500\u2500 blog/ # Blog posts\n\u2502 \u2514\u2500\u2500 overrides/ # Template overrides\n\u2514\u2500\u2500 site/ # Built static site\n</code></pre>"},{"location":"services/mkdocs/#writing-documentation","title":"Writing Documentation","text":""},{"location":"services/mkdocs/#markdown-basics","title":"Markdown Basics","text":"<ul> <li>Use standard Markdown syntax</li> <li>Support for tables, code blocks, and links</li> <li>Mathematical expressions with MathJax</li> <li>Admonitions for notes and warnings</li> </ul>"},{"location":"services/mkdocs/#example-page","title":"Example Page","text":"<pre><code># Page Title\n\nThis is a sample documentation page.\n\n## Section\n\nContent goes here with **bold** and *italic* text.\n\n### Code Example\n\n```python\ndef hello_world():\n print(\"Hello, World!\")\n</code></pre> <p>Note</p> <p>This is an informational note.</p> <pre><code>## Building and Deployment\n\n### Development\n\nThe development server runs automatically with live reload.\n\n### Building Static Site\n\n```bash\ndocker exec mkdocs-changemaker mkdocs build\n</code></pre> <p>The built site will be available in the <code>mkdocs/site/</code> directory.</p>"},{"location":"services/mkdocs/#customization","title":"Customization","text":""},{"location":"services/mkdocs/#themes-and-colors","title":"Themes and Colors","text":"<p>Customize appearance in <code>mkdocs.yml</code>:</p> <pre><code>theme:\n name: material\n palette:\n primary: blue\n accent: indigo\n</code></pre>"},{"location":"services/mkdocs/#custom-css","title":"Custom CSS","text":"<p>Add custom styles in <code>docs/stylesheets/extra.css</code>.</p>"},{"location":"services/mkdocs/#official-documentation","title":"Official Documentation","text":"<p>For comprehensive MkDocs Material documentation: - MkDocs Material - MkDocs Documentation - Markdown Guide</p>"},{"location":"services/n8n/","title":"n8n","text":"<p>Workflow automation tool for connecting services and automating tasks.</p>"},{"location":"services/n8n/#overview","title":"Overview","text":"<p>n8n is a powerful workflow automation tool that allows you to connect various apps and services together. It provides a visual interface for creating automated workflows, making it easy to integrate different systems and automate repetitive tasks.</p>"},{"location":"services/n8n/#features","title":"Features","text":"<ul> <li>Visual workflow editor</li> <li>400+ integrations</li> <li>Custom code execution (JavaScript/Python)</li> <li>Webhook support</li> <li>Scheduled workflows</li> <li>Error handling and retries</li> <li>User management</li> <li>API access</li> <li>Self-hosted and privacy-focused</li> </ul>"},{"location":"services/n8n/#access","title":"Access","text":"<ul> <li>Default Port: 5678</li> <li>URL: <code>http://localhost:5678</code></li> <li>Default User Email: Set via <code>N8N_DEFAULT_USER_EMAIL</code></li> <li>Default User Password: Set via <code>N8N_DEFAULT_USER_PASSWORD</code></li> </ul>"},{"location":"services/n8n/#configuration","title":"Configuration","text":""},{"location":"services/n8n/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>N8N_HOST</code>: Hostname for n8n (default: <code>n8n.${DOMAIN}</code>)</li> <li><code>N8N_PORT</code>: Internal port (5678)</li> <li><code>N8N_PROTOCOL</code>: Protocol for webhooks (https)</li> <li><code>NODE_ENV</code>: Environment (production)</li> <li><code>WEBHOOK_URL</code>: Base URL for webhooks</li> <li><code>GENERIC_TIMEZONE</code>: Timezone setting</li> <li><code>N8N_ENCRYPTION_KEY</code>: Encryption key for credentials</li> <li><code>N8N_USER_MANAGEMENT_DISABLED</code>: Enable/disable user management</li> <li><code>N8N_DEFAULT_USER_EMAIL</code>: Default admin email</li> <li><code>N8N_DEFAULT_USER_PASSWORD</code>: Default admin password</li> </ul>"},{"location":"services/n8n/#volumes","title":"Volumes","text":"<ul> <li><code>n8n_data</code>: Persistent data storage</li> <li><code>./local-files</code>: Local file access for workflows</li> </ul>"},{"location":"services/n8n/#getting-started","title":"Getting Started","text":"<ol> <li>Access n8n at <code>http://localhost:5678</code></li> <li>Log in with your admin credentials</li> <li>Create your first workflow</li> <li>Add nodes for different services</li> <li>Configure connections between nodes</li> <li>Test and activate your workflow</li> </ol>"},{"location":"services/n8n/#common-use-cases","title":"Common Use Cases","text":""},{"location":"services/n8n/#documentation-automation","title":"Documentation Automation","text":"<ul> <li>Auto-generate documentation from code comments</li> <li>Sync documentation between different platforms</li> <li>Notify team when documentation is updated</li> </ul>"},{"location":"services/n8n/#email-campaign-integration","title":"Email Campaign Integration","text":"<ul> <li>Connect Listmonk with external data sources</li> <li>Automate subscriber management</li> <li>Trigger campaigns based on events</li> </ul>"},{"location":"services/n8n/#database-management-with-nocodb","title":"Database Management with NocoDB","text":"<ul> <li>Sync data between NocoDB and external APIs</li> <li>Automate data entry and validation</li> <li>Create backup workflows for database content</li> <li>Generate reports from NocoDB data</li> </ul>"},{"location":"services/n8n/#development-workflows","title":"Development Workflows","text":"<ul> <li>Auto-deploy documentation on git push</li> <li>Sync code changes with documentation</li> <li>Backup automation</li> </ul>"},{"location":"services/n8n/#data-processing","title":"Data Processing","text":"<ul> <li>Process CSV files and import to databases</li> <li>Transform data between different formats</li> <li>Schedule regular data updates</li> </ul>"},{"location":"services/n8n/#example-workflows","title":"Example Workflows","text":""},{"location":"services/n8n/#simple-webhook-to-email","title":"Simple Webhook to Email","text":"<pre><code>Webhook \u2192 Email\n</code></pre>"},{"location":"services/n8n/#scheduled-documentation-backup","title":"Scheduled Documentation Backup","text":"<pre><code>Schedule \u2192 Read Files \u2192 Compress \u2192 Upload to Storage\n</code></pre>"},{"location":"services/n8n/#git-integration","title":"Git Integration","text":"<pre><code>Git Webhook \u2192 Process Changes \u2192 Update Documentation \u2192 Notify Team\n</code></pre>"},{"location":"services/n8n/#security-considerations","title":"Security Considerations","text":"<ul> <li>Use strong encryption keys</li> <li>Secure webhook URLs</li> <li>Regularly update credentials</li> <li>Monitor workflow executions</li> <li>Implement proper error handling</li> </ul>"},{"location":"services/n8n/#integration-with-other-services","title":"Integration with Other Services","text":"<p>n8n can integrate with all services in your Changemaker Lite setup: - Listmonk: Manage subscribers and campaigns - PostgreSQL: Read/write database operations - Code Server: File operations and git integration - MkDocs: Documentation generation and updates</p>"},{"location":"services/n8n/#troubleshooting","title":"Troubleshooting","text":""},{"location":"services/n8n/#common-issues","title":"Common Issues","text":"<ul> <li>Workflow Execution Errors: Check node configurations and credentials</li> <li>Webhook Issues: Verify URLs and authentication</li> <li>Connection Problems: Check network connectivity between services</li> </ul>"},{"location":"services/n8n/#debugging","title":"Debugging","text":"<pre><code># Check container logs\ndocker logs n8n-changemaker\n\n# Access container shell\ndocker exec -it n8n-changemaker sh\n\n# Check workflow executions in the UI\n# Visit http://localhost:5678 \u2192 Executions\n</code></pre>"},{"location":"services/n8n/#official-documentation","title":"Official Documentation","text":"<p>For comprehensive n8n documentation: - n8n Documentation - Community Workflows - Node Reference - GitHub Repository</p>"},{"location":"services/nocodb/","title":"NocoDB","text":"<p>No-code database platform that turns any database into a smart spreadsheet.</p>"},{"location":"services/nocodb/#overview","title":"Overview","text":"<p>NocoDB is an open-source no-code platform that transforms any database into a smart spreadsheet interface. It provides a user-friendly way to manage data, create forms, build APIs, and collaborate on database operations without requiring extensive technical knowledge.</p>"},{"location":"services/nocodb/#features","title":"Features","text":"<ul> <li>Smart Spreadsheet Interface: Transform databases into intuitive spreadsheets</li> <li>Form Builder: Create custom forms for data entry</li> <li>API Generation: Auto-generated REST APIs for all tables</li> <li>Collaboration: Real-time collaboration with team members</li> <li>Access Control: Role-based permissions and sharing</li> <li>Data Visualization: Charts and dashboard creation</li> <li>Webhooks: Integration with external services</li> <li>Import/Export: Support for CSV, Excel, and other formats</li> <li>Multi-Database Support: Works with PostgreSQL, MySQL, SQLite, and more</li> </ul>"},{"location":"services/nocodb/#access","title":"Access","text":"<ul> <li>Default Port: 8090</li> <li>URL: <code>http://localhost:8090</code></li> <li>Database: PostgreSQL (dedicated <code>root_db</code> instance)</li> </ul>"},{"location":"services/nocodb/#configuration","title":"Configuration","text":""},{"location":"services/nocodb/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>NOCODB_PORT</code>: External port mapping (default: 8090)</li> <li><code>NC_DB</code>: Database connection string for PostgreSQL backend</li> </ul>"},{"location":"services/nocodb/#database-backend","title":"Database Backend","text":"<p>NocoDB uses a dedicated PostgreSQL instance (<code>root_db</code>) with the following configuration: - Database Name: <code>root_db</code> - Username: <code>postgres</code> - Password: <code>password</code> - Host: <code>root_db</code> (internal container name)</p>"},{"location":"services/nocodb/#volumes","title":"Volumes","text":"<ul> <li><code>nc_data</code>: Application data and configuration storage</li> <li><code>db_data</code>: PostgreSQL database files</li> </ul>"},{"location":"services/nocodb/#getting-started","title":"Getting Started","text":"<ol> <li>Access NocoDB: Navigate to <code>http://localhost:8090</code></li> <li>Initial Setup: Complete the onboarding process</li> <li>Create Project: Start with a new project or connect existing databases</li> <li>Add Tables: Import data or create new tables</li> <li>Configure Views: Set up different views (Grid, Form, Gallery, etc.)</li> <li>Set Permissions: Configure user access and sharing settings</li> </ol>"},{"location":"services/nocodb/#common-use-cases","title":"Common Use Cases","text":""},{"location":"services/nocodb/#content-management","title":"Content Management","text":"<ul> <li>Create content databases for blogs and websites</li> <li>Manage product catalogs and inventories</li> <li>Track customer information and interactions</li> </ul>"},{"location":"services/nocodb/#project-management","title":"Project Management","text":"<ul> <li>Task and project tracking systems</li> <li>Team collaboration workspaces</li> <li>Resource and timeline management</li> </ul>"},{"location":"services/nocodb/#data-collection","title":"Data Collection","text":"<ul> <li>Custom forms for surveys and feedback</li> <li>Event registration and management</li> <li>Lead capture and CRM systems</li> </ul>"},{"location":"services/nocodb/#integration-with-other-services","title":"Integration with Other Services","text":"<p>NocoDB can integrate well with other Changemaker Lite services:</p> <ul> <li>n8n Integration: Use NocoDB as a data source/destination in automation workflows</li> <li>Listmonk Integration: Manage subscriber lists and campaign data</li> <li>Documentation: Store and manage documentation metadata</li> </ul>"},{"location":"services/nocodb/#api-usage","title":"API Usage","text":"<p>NocoDB automatically generates REST APIs for all your tables:</p> <pre><code># Get all records from a table\nGET http://localhost:8090/api/v1/db/data/v1/{project}/table/{table}\n\n# Create a new record\nPOST http://localhost:8090/api/v1/db/data/v1/{project}/table/{table}\n\n# Update a record\nPATCH http://localhost:8090/api/v1/db/data/v1/{project}/table/{table}/{id}\n</code></pre>"},{"location":"services/nocodb/#backup-and-data-management","title":"Backup and Data Management","text":""},{"location":"services/nocodb/#database-backup","title":"Database Backup","text":"<p>Since NocoDB uses PostgreSQL, you can backup the database:</p> <pre><code># Backup NocoDB database\ndocker exec root_db pg_dump -U postgres root_db &gt; nocodb_backup.sql\n\n# Restore from backup\ndocker exec -i root_db psql -U postgres root_db &lt; nocodb_backup.sql\n</code></pre>"},{"location":"services/nocodb/#application-data","title":"Application Data","text":"<p>Application settings and metadata are stored in the <code>nc_data</code> volume.</p>"},{"location":"services/nocodb/#security-considerations","title":"Security Considerations","text":"<ul> <li>Change default database credentials in production</li> <li>Configure proper access controls within NocoDB</li> <li>Use HTTPS for production deployments</li> <li>Regularly backup both database and application data</li> <li>Monitor access logs and user activities</li> </ul>"},{"location":"services/nocodb/#performance-tips","title":"Performance Tips","text":"<ul> <li>Regular database maintenance and optimization</li> <li>Monitor memory usage for large datasets</li> <li>Use appropriate indexing for frequently queried fields</li> <li>Consider database connection pooling for high-traffic scenarios</li> </ul>"},{"location":"services/nocodb/#troubleshooting","title":"Troubleshooting","text":""},{"location":"services/nocodb/#common-issues","title":"Common Issues","text":"<p>Service won't start: Check if the PostgreSQL database is healthy <pre><code>docker logs root_db\n</code></pre></p> <p>Database connection errors: Verify database credentials and network connectivity <pre><code>docker exec nocodb nc_data nc\n</code></pre></p> <p>Performance issues: Monitor resource usage and optimize queries <pre><code>docker stats nocodb root_db\n</code></pre></p>"},{"location":"services/nocodb/#official-documentation","title":"Official Documentation","text":"<p>For comprehensive guides and advanced features: - NocoDB Documentation - GitHub Repository - Community Forum</p>"},{"location":"services/postgresql/","title":"PostgreSQL Database","text":"<p>Reliable database backend for applications.</p>"},{"location":"services/postgresql/#overview","title":"Overview","text":"<p>PostgreSQL is a powerful, open-source relational database system. In Changemaker Lite, it serves as the backend database for Listmonk and can be used by other applications requiring persistent data storage.</p>"},{"location":"services/postgresql/#features","title":"Features","text":"<ul> <li>ACID compliance</li> <li>Advanced SQL features</li> <li>JSON/JSONB support</li> <li>Full-text search</li> <li>Extensibility</li> <li>High performance</li> <li>Reliability and data integrity</li> </ul>"},{"location":"services/postgresql/#access","title":"Access","text":"<ul> <li>Default Port: 5432</li> <li>Host: <code>listmonk-db</code> (internal container name)</li> <li>Database: Set via <code>POSTGRES_DB</code> environment variable</li> <li>Username: Set via <code>POSTGRES_USER</code> environment variable</li> <li>Password: Set via <code>POSTGRES_PASSWORD</code> environment variable</li> </ul>"},{"location":"services/postgresql/#configuration","title":"Configuration","text":""},{"location":"services/postgresql/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>POSTGRES_USER</code>: Database username</li> <li><code>POSTGRES_PASSWORD</code>: Database password </li> <li><code>POSTGRES_DB</code>: Database name</li> </ul>"},{"location":"services/postgresql/#health-checks","title":"Health Checks","text":"<p>The PostgreSQL container includes health checks to ensure the database is ready before dependent services start.</p>"},{"location":"services/postgresql/#data-persistence","title":"Data Persistence","text":"<p>Database data is stored in a Docker volume (<code>listmonk-data</code>) to ensure persistence across container restarts.</p>"},{"location":"services/postgresql/#connecting-to-the-database","title":"Connecting to the Database","text":""},{"location":"services/postgresql/#from-host-machine","title":"From Host Machine","text":"<p>You can connect to PostgreSQL from your host machine using:</p> <pre><code>psql -h localhost -p 5432 -U [username] -d [database]\n</code></pre>"},{"location":"services/postgresql/#from-other-containers","title":"From Other Containers","text":"<p>Other containers can connect using the internal hostname <code>listmonk-db</code> on port 5432.</p>"},{"location":"services/postgresql/#backup-and-restore","title":"Backup and Restore","text":""},{"location":"services/postgresql/#backup","title":"Backup","text":"<pre><code>docker exec listmonk-db pg_dump -U [username] [database] &gt; backup.sql\n</code></pre>"},{"location":"services/postgresql/#restore","title":"Restore","text":"<pre><code>docker exec -i listmonk-db psql -U [username] [database] &lt; backup.sql\n</code></pre>"},{"location":"services/postgresql/#monitoring","title":"Monitoring","text":"<p>Monitor database health and performance through: - Container logs: <code>docker logs listmonk-db</code> - Database metrics and queries - Connection monitoring</p>"},{"location":"services/postgresql/#security-considerations","title":"Security Considerations","text":"<ul> <li>Use strong passwords</li> <li>Regularly update PostgreSQL version</li> <li>Monitor access logs</li> <li>Implement regular backups</li> <li>Consider network isolation</li> </ul>"},{"location":"services/postgresql/#official-documentation","title":"Official Documentation","text":"<p>For comprehensive PostgreSQL documentation: - PostgreSQL Documentation - Docker PostgreSQL Image</p>"},{"location":"services/static-server/","title":"Static Site Server","text":"<p>Nginx-powered static site server for hosting built documentation and websites.</p>"},{"location":"services/static-server/#overview","title":"Overview","text":"<p>The Static Site Server uses Nginx to serve your built documentation and static websites. It's configured to serve the built MkDocs site and other static content with high performance and reliability.</p>"},{"location":"services/static-server/#features","title":"Features","text":"<ul> <li>High-performance static file serving</li> <li>Automatic index file handling</li> <li>Gzip compression</li> <li>Caching headers</li> <li>Security headers</li> <li>Custom error pages</li> <li>URL rewriting support</li> </ul>"},{"location":"services/static-server/#access","title":"Access","text":"<ul> <li>Default Port: 4001</li> <li>URL: <code>http://localhost:4001</code></li> <li>Document Root: <code>/config/www</code> (mounted from <code>./mkdocs/site</code>)</li> </ul>"},{"location":"services/static-server/#configuration","title":"Configuration","text":""},{"location":"services/static-server/#environment-variables","title":"Environment Variables","text":"<ul> <li><code>PUID</code>: User ID for file permissions (default: 1000)</li> <li><code>PGID</code>: Group ID for file permissions (default: 1000)</li> <li><code>TZ</code>: Timezone setting (default: Etc/UTC)</li> </ul>"},{"location":"services/static-server/#volumes","title":"Volumes","text":"<ul> <li><code>./mkdocs/site:/config/www</code>: Static site files</li> <li>Built MkDocs site is automatically served</li> </ul>"},{"location":"services/static-server/#usage","title":"Usage","text":"<ol> <li>Build your MkDocs site: <code>docker exec mkdocs-changemaker mkdocs build</code></li> <li>The built site is automatically available at <code>http://localhost:4001</code></li> <li>Any files in <code>./mkdocs/site/</code> will be served statically</li> </ol>"},{"location":"services/static-server/#file-structure","title":"File Structure","text":"<pre><code>mkdocs/site/ # Served at /\n\u251c\u2500\u2500 index.html # Homepage\n\u251c\u2500\u2500 assets/ # CSS, JS, images\n\u251c\u2500\u2500 services/ # Service documentation\n\u2514\u2500\u2500 search/ # Search functionality\n</code></pre>"},{"location":"services/static-server/#performance-features","title":"Performance Features","text":"<ul> <li>Gzip Compression: Automatic compression for text files</li> <li>Browser Caching: Optimized cache headers</li> <li>Fast Static Serving: Nginx optimized for static content</li> <li>Security Headers: Basic security header configuration</li> </ul>"},{"location":"services/static-server/#custom-configuration","title":"Custom Configuration","text":"<p>For advanced Nginx configuration, you can: 1. Create custom Nginx config files 2. Mount them as volumes 3. Restart the container</p>"},{"location":"services/static-server/#monitoring","title":"Monitoring","text":"<p>Monitor the static site server through: - Container logs: <code>docker logs mkdocs-site-server-changemaker</code> - Access logs for traffic analysis - Performance metrics</p>"},{"location":"services/static-server/#troubleshooting","title":"Troubleshooting","text":""},{"location":"services/static-server/#common-issues","title":"Common Issues","text":"<ul> <li>404 Errors: Ensure MkDocs site is built and files exist in <code>./mkdocs/site/</code></li> <li>Permission Issues: Check <code>PUID</code> and <code>PGID</code> settings</li> <li>File Not Found: Verify file paths and case sensitivity</li> </ul>"},{"location":"services/static-server/#debugging","title":"Debugging","text":"<pre><code># Check container logs\ndocker logs mkdocs-site-server-changemaker\n\n# Verify files are present\ndocker exec mkdocs-site-server-changemaker ls -la /config/www\n\n# Test file serving\ncurl -I http://localhost:4001\n</code></pre>"},{"location":"services/static-server/#official-documentation","title":"Official Documentation","text":"<p>For more information about the underlying Nginx server: - LinuxServer.io Nginx - Nginx Documentation</p>"}]}