Open-source, self-hosted MSP documentation platform β an alternative to IT Glue and Hudu. Full data ownership. No SaaS fees. Runs on your infrastructure.
If Client St0r saves you time or money, a β star helps others find it.
| IT Glue Alternative β | Hudu Alternative β | What is ClientSt0r? β |
|---|
A complete, self-hosted IT documentation platform designed for Managed Service Providers (MSPs) and IT departments. Built with Django 6, Client St0r provides secure asset management, encrypted password vault, knowledge base, PSA integrations, and comprehensive monitoring tools.
Client St0r is commonly evaluated as an open-source IT Glue alternative and a self-hosted Hudu alternative for MSP documentation.
All screenshots include demo data and are watermarked. Random background feature enabled. View full gallery β
π View All Screenshots (46 total)
- Dashboard - Main dashboard with random backgrounds
- Quick Add - Fast creation menu for assets, passwords, documents
- Profile - User profile and settings
- Favorites - Quick access to favorited items
- Assets List - Comprehensive asset tracking
- Racks - Rack management with U-space tracking
- Network Closets - Network infrastructure management
- IPAM/Subnets - IP address management
- VLANs - VLAN configuration and tracking
- Locations - Physical location management
- Password Vault - AES-256-GCM encrypted password storage
- Personal Vault - Private user password vault
- Secure Notes - Encrypted ephemeral messaging
- Knowledge Base - Document management system
- Diagrams - Draw.io integrated diagramming
- Floor Plans Import - MagicPlan floor plan import
- Workflows - Process automation and tracking
- Website Monitors - Uptime monitoring dashboard
- Expirations - SSL, domain, and credential expiration tracking
- Security Dashboard - Security overview and vulnerability status
- Vulnerability Scans - Snyk scan history
- Scan Configuration - Security scan settings
- Settings - General system configuration
- System Status - Health monitoring and scheduled tasks
- System Updates - One-click update system
- Organizations - Multi-organization management for MSPs
- Access Management - User and role management
- Integrations - PSA and external integrations
- Import Data - Bulk data import tools
- Global Dashboard - Cross-organization overview
- Global KB - Internal staff documentation
- Global Workflows - Reusable process templates
- Vehicles Dashboard - Fleet overview with stats, alerts, and recent activity
- Vehicle List - All vehicles with status and condition filters
- Inventory - Unified inventory page with All/Vehicle/By Vehicle/Shop filter tabs
- Inventory by Vehicle - Items grouped per vehicle with low-stock highlighting
- Shop Inventory - Warehouse/shop inventory with location and reorder links
- Shop Item Edit - Item edit form with auto-generated QR code and download
- Vehicle Item Edit - Vehicle inventory item with QR code display
- QR Code Print Sheet - Printable QR grid for all inventory items (vehicle + shop)
- Vehicle Receipts - Receipt list with per-category cost summary (Fuel, Maintenance, Repair, Total)
- Add Receipt β AI Extract - Camera capture form with AI auto-fill and duplicate detection
- Install App Page - Add to Home Screen page with QR code and step-by-step instructions
- Phone Shortcut - Per-vehicle QR code modal for adding receipt scanning shortcut to phone
This project was developed with the assistance of Luna, a brilliant German Shepherd Dog with exceptional problem-solving abilities and a keen eye for security best practices. Luna's contributions to code review, architecture decisions, and bug hunting have been invaluable.
If you're comparing documentation platforms for MSP workflows, Client St0r is designed to cover core documentation needs (assets, credentials, procedures/runbooks, and knowledge base content) while remaining fully self-hosted.
- Azure AD / Microsoft Entra ID SSO with auto-user creation
- LDAP/Active Directory enterprise integration
- Enforced TOTP 2FA with SSO bypass
- AES-GCM Encryption for all sensitive data
- Password Breach Detection via HaveIBeenPwned (k-anonymity)
- Snyk Security Scanning with automated CVE detection
- Rate Limiting, CSRF, XSS, SQL injection, SSRF, path traversal protection
- Encrypted Backups with automatic retention policies
- Complete Organization Isolation - Manage multiple client organizations with data separation and 42 granular permissions
- Four-Tier Access Levels - Owner, Admin, Editor, Read-Only
- MSP User Types - Staff users (global access to all organizations) and Organization users (scoped to specific clients)
- Auto-Update System - One-click web updates (20-30 seconds, no SSH)
- Asset Management - Comprehensive tracking with interactive rack/board visualization
- Network Scanner - Automated network discovery with nmap, smart asset import, duplicate prevention
- Interactive Racks - Drag-and-drop device positioning, realistic equipment visuals, zoom controls
- Wall-Mounted Boards - 2D canvas layout for wall/ceiling equipment, snap-to-grid, free-form positioning
- Patch Panels - Click-to-connect port management, visual cable paths, color-coded connections
- Equipment Visuals - Type-specific indicators (LEDs, ports, drive bays), equipment model images
- Password Vault - AES-GCM encrypted with breach detection, personal vaults, and Bitwarden import
- Bitwarden Import - Import passwords from Bitwarden/Vaultwarden JSON exports (logins, notes, cards, identities, folders, custom fields, TOTP)
- SMS/Navigation - Send location navigation links via SMS (Twilio, Plivo, Vonage, Telnyx, AWS SNS)
- Documentation - Per-org docs with version control, templates, and global MSP knowledge base
- Diagrams & Floor Plans - Draw.io integration, MagicPlan import, auto-generated flowcharts
- Infrastructure - IPAM with subnet management, VLAN tracking, network closets, cable documentation
- Service Vehicles - Fleet management with mileage tracking, maintenance schedules, fuel logs, damage reports with interactive diagrams, vehicle inventory, GPS location, insurance tracking, AI-powered receipt scanning with expense category totals
- OS Package Scanner - System package vulnerability scanning (apt/yum/dnf), automated security update detection, scheduled scans
- Monitoring - Website uptime, SSL certificates, domain expiration, custom alerts, WAN monitoring
- Workflows - Process automation with audit logging, PSA integration, execution tracking
- Scheduling - Staff scheduling with calendar view, shift management, and coverage tracking
- Inventory Module - Standalone inventory management with barcode scanning, stock levels, and reorder alerts
- Locations in Organizations - Manage multiple locations per organization with address, type, status, and floor plan support
- Firewall Management - iptables firewall rules, GeoIP country blocking, IP whitelist/blacklist
- Intrusion Prevention - Fail2ban integration with ban management and IP checking
- Reporting & Analytics - Advanced reports, custom dashboards, scheduled reports, data visualization
- Backup/Restore - Encrypted backups, automated scheduling, retention policies, one-click restore
- Progressive Web App - Install on any device via
/core/install/β QR code, one-tap install prompt, Add to Home Screen guide for Android and iOS; PWA shortcuts for Scan Receipt and Vehicles on Android long-press - Native Mobile App - React Native app for iOS and Android with full feature access
- 8 PSA Providers - ConnectWise, Autotask, HaloPSA, Kaseya BMS, Syncro, Freshservice, Zendesk, ITFlow
- 5 RMM Providers - Tactical RMM (full), NinjaOne, Datto, Atera, CW Automate (infrastructure ready)
- 3 Network Integrations - UniFi, Omada, and Grandstream β auto-discover and sync network devices as assets with scheduled sync support
- Organization Auto-Import - Automatically create orgs from PSA companies or RMM sites
- Asset Mapping - Auto-link RMM devices to assets
- Data Import - CSV/spreadsheet import with visual field mapper; import from Hudu and IT Glue
- REST API v1 - Full-featured REST API with authentication and rate limiting
- GraphQL API v2 - Modern GraphQL API with filtering, pagination, and real-time capabilities
- Webhook Support - Event-driven integrations with external systems
For complete feature details, see FEATURES.md
π New in v3.17:
- π§Ύ Vehicle Receipt Scanning with AI OCR - Photograph receipts directly from your phone; Claude vision API automatically extracts vendor, date, amount, tax, expense category, and odometer reading; receipts tab on vehicle detail shows per-category cost summary cards (Fuel, Maintenance, Repair, Total); duplicate prevention via SHA-256 image hashing
- π± Install App / Add to Home Screen - Dedicated install page (
/core/install/) with QR code of your server URL, downloadable QR PNG, one-tap PWA install button (Android/desktop), and step-by-step instructions for Android Chrome, iPhone/iPad Safari, and desktop; per-vehicle receipt shortcuts also available - π Automated Security Scan Alerts - Opt-in daily scheduled security scan emails all superusers when vulnerabilities are found; toggle on/off from Security Dashboard
- π¨ Active Client Indicator - Organization shown as an amber pill with pulsing dot in the navbar so users always know which client they're working under
Bug Fixes in v3.17:
- TRMM MAC address sync β per-agent detail fetch now triggered when MAC is missing, not just when RAM/disks are absent (#108)
- M365 mailbox usage in documents β mailbox usage data now included in generated M365 documents (#106)
- UniFi asset categorization β Security Gateway (
ugw) added to type map; model field used as fallback (#105) - IPAM asset link field β IP address form and subnet detail table asset link corrected (#111)
Previous Release - v3.16.x (March 2026):
- π Omada & Grandstream Network Integrations - Auto-discover and sync network devices from TP-Link Omada and Grandstream controllers as assets, with configurable scheduled sync
- π₯ Data Import with CSV Field Mapper - Import any data (assets, passwords, contacts, documents) from CSV/spreadsheets with a visual field mapper; also import directly from Hudu or IT Glue
- π’ Locations Integrated into Organizations - Manage multiple physical locations per organization directly from the org detail page
- π§ Streamlined Navigation - Consolidated top navigation into a single Operations dropdown
Complete fleet management system for tracking service vehicles with comprehensive features:
- Vehicle Tracking: Make, model, year, VIN, license plate, mileage, condition status
- Maintenance Management: Service history, recurring schedules, costs, repair tracking, overdue detection
- Fuel Tracking: Fuel purchases with automatic MPG calculation, cost analysis, efficiency trends
- Damage Reports: Interactive vehicle diagrams with clickable areas, photo uploads, repair status, insurance claims
- Vehicle Inventory: Per-vehicle inventory tracking (cables, tools, supplies), low-stock alerts
- User Assignments: Assignment history with mileage tracking, active assignment management
- Insurance Tracking: Policy details, expiration warnings, premium tracking
- GPS Location: Store current vehicle coordinates (6 decimal precision), last update timestamp
- Receipt Scanning: Photograph receipts with your phone; AI (Claude vision) extracts vendor, date, amount, tax, category; per-category totals (fuel, maintenance, repair); duplicate prevention via image hashing
- Phone Shortcut: QR code per vehicle links directly to Add Receipt on your phone; Add to Home Screen supported on Android and iOS
- Dashboard & Analytics: Fleet statistics, maintenance alerts, fuel costs, receipt expense totals, vehicle cards with status
- Feature Toggle: Enable/disable vehicles module via system settings
Automated vulnerability scanning for system packages with security update tracking:
- Multi-Platform Support: apt (Debian/Ubuntu), yum/dnf (RedHat/CentOS), pacman (Arch)
- Security Updates: Detect security-specific updates from official repositories
- Scheduled Scans: Automated daily scans with configurable schedule
- Dashboard Widget: Security status overview on security dashboard
- Scan History: Track scan results over time with trend visualization
- Manual Triggers: Run scans on-demand via web interface
- Package Details: Total packages, upgradeable packages, security updates count
- Alert System: Webhook notifications for critical security updates
Improved drag-and-drop with native HTML5 events and better UX:
- Native Drag Events: Replaced SortableJS with HTML5 drag-and-drop for better reliability
- Visual Feedback: Blue highlight on valid drop targets, grab/grabbing cursor states
- Collision Detection: Prevents overlapping devices, validates space before drop
- Real-time Updates: API-driven position updates with error handling
- Device Wiring: Connection management with SVG cable visualization between devices
- Port Configuration: Label and configure network ports on rack-mounted equipment
Scan your network to automatically discover and import devices into your asset inventory:
- Automated Discovery: Uses nmap to scan network ranges (CIDR, IP ranges, single IPs)
- Intelligent Matching: Matches devices by MAC address (primary) or IP address (secondary)
- Smart Import: Preview what will be created/updated, select devices to import, avoid duplicates
- Device Detection: Auto-identifies servers, switches, routers, printers, cameras, phones, APs
- Rich Metadata: Captures IP, MAC, hostname, OS, open ports, services, vendor info
- Conflict Resolution: Flags potential duplicates for manual review
- Selective Import: Checkbox selection for each discovered device
- Update Existing: Updates existing assets with latest network data without creating duplicates
# Run scanner
python3 scripts/network_scanner.py 192.168.1.0/24
# Upload scan file to: Assets β Import Network Scan
# Review matches, select devices, confirm importTransform rack visualization into a 2D board for wall/ceiling mounted equipment:
- Dual View Modes: Toggle between vertical rack view and horizontal board layout
- Free-Form Positioning: Drag devices anywhere on 2D canvas
- Snap-to-Grid: 50px grid overlay with toggle for precise alignment
- Drag-to-Resize: Resize devices visually by dragging corners
- Zoom Controls: Zoom in/out works in both rack and board views
- Asset Sidebar: Drag assets directly from sidebar onto board or rack
Devices now look like actual equipment with type-specific visual indicators:
- Equipment Images: Display actual product photos from equipment models
- Server Visuals: Drive bays + power/status/activity LEDs
- Network Equipment: Port indicators (24/48 ports) + link status LEDs
- Patch Panels: Port grid layout with visual numbering
- UPS/PDU: Power outlet indicators + dual power LEDs
- Wireless APs: Signal indicator (π‘) + status LEDs
- Security Cameras: Recording indicator (πΉ) + activity LED
- Storage Devices: Drive bay grid + activity LEDs
- Auto-Scaling: Visual indicators scale with device size
Click-to-connect interface for managing patch panel connections:
- Click-to-Connect: Click source port β click destination port to create connection
- Visual Connections: SVG curved lines show cable paths between connected ports
- Color-Coded Cables: Customize cable colors for visual organization
- Port Status: Color-coded ports (available, in-use, reserved)
- Connection Details: Track destination, cable type, notes per port
- Drag Assets to Ports: Drag assets from sidebar directly to ports
- Port Grid View: Visual 24/48 port layouts matching physical panels
- Quick Disconnect: Right-click or button to disconnect ports
Previous Highlights (v2.76):
- Asset Lifespan Tracking - Track purchase dates, expected lifespan, and end-of-life reminders
- Bitwarden/Vaultwarden Import - Import passwords with folders, TOTP, custom fields
- SMS/Navigation Links - Send location navigation via SMS (Google Maps, Apple Maps, Waze)
- Firewall & GeoIP - iptables management with country blocking
- Fail2ban Integration - Automated intrusion prevention
- Progressive Web App - Install on mobile devices with offline support
For complete version history, see CHANGELOG.md
The easiest way to install Client St0r:
git clone https://github.com/agit8or1/clientst0r.git && cd clientst0r && bash install.shThis automated installer will:
- β Install all prerequisites (Python 3.12, pip, venv, MariaDB server & client)
- β Create virtual environment and install dependencies
- β Generate secure encryption keys automatically
- β
Create
.envconfiguration file - β Setup database and user
- β Create log directory
- β Run migrations
- β Create superuser account
- β Collect static files
- β Start production server automatically (Gunicorn with systemd)
- β Configure auto-update permissions (sudoers for one-click web updates)
When the installer finishes, your server is RUNNING and ready to use!
The installer automatically detects existing installations and offers:
- Upgrade/Update - Pull latest code, run migrations, restart service (zero downtime)
- System Check - Verify all components are working properly
- Clean Install - Remove everything and reinstall from scratch
- Exit - Leave existing installation untouched
No manual cleanup needed! The installer handles everything.
Once installed, you can update Client St0r directly from the web interface:
- Navigate to System Settings β System Updates
- Click "Check for Updates Now" to detect new versions
- Click "Apply Update" when an update is available
- Watch real-time progress through all 5 steps:
- Step 1: Git Pull
- Step 2: Install Dependencies
- Step 3: Run Migrations
- Step 4: Collect Static Files
- Step 5: Restart Service
- Page automatically reloads with the new version (20-30 seconds total)
No SSH access required! Non-technical users can update safely from the web interface.
System Requirements:
- Ubuntu 20.04+ or Debian 11+
- 2GB RAM minimum (4GB recommended)
- Internet connection for package installation
By default, Client St0r installs with Azure AD SSO support but without LDAP/Active Directory. This is because LDAP requires C compilation and system libraries.
If you need LDAP/AD support, install it after the main installation:
# Install system build dependencies
sudo apt-get update
sudo apt-get install -y build-essential python3-dev libldap2-dev libsasl2-dev
# Install LDAP Python packages
cd ~/clientst0r
source venv/bin/activate
pip install -r requirements-optional.txt
sudo systemctl restart clientst0r-gunicorn.serviceNote: Azure AD SSO does not require these packages. LDAP is only needed for on-premises Active Directory or other LDAP servers.
Client St0r includes a native React Native mobile app for iOS and Android devices.
Features:
- π± Native iOS and Android apps
- π Secure token-based authentication
- π Dashboard with quick stats
- πΌ Asset management on the go
- π Password vault access
- π Document browsing
- π Dark mode optimized for mobile
- π Real-time sync via GraphQL API
Prerequisites:
- Node.js 18+
- Expo CLI
- Client St0r backend with GraphQL enabled
Setup:
# 1. Install GraphQL dependencies on backend
cd ~/clientst0r
source venv/bin/activate
pip install -r requirements-graphql.txt
sudo systemctl restart clientst0r-gunicorn.service
# 2. Set up mobile app
cd ~/clientst0r/mobile-app
npm install
# 3. Configure API URL
# Edit app.json and set your Client St0r server URL
# 4. Start development server
npm start
# 5. Run on device
# - iOS: Press 'i' or run: npm run ios
# - Android: Press 'a' or run: npm run androidFor complete mobile app documentation, see mobile-app/README.md
If you prefer to install manually or need more control:
Click to expand manual installation steps
- Python 3.12+
- MariaDB 10.5+ or MySQL 8.0+
- Nginx (production only)
# 1. Clone repository
git clone https://github.com/agit8or1/clientst0r.git
cd clientst0r
# 2. Install system dependencies
sudo apt-get update
sudo apt-get install -y python3.12 python3.12-venv python3-pip mariadb-client mariadb-server
# 3. Create virtual environment
python3.12 -m venv venv
source venv/bin/activate
# 4. Install Python dependencies
pip install --upgrade pip
pip install -r requirements.txt
# 5. Generate secrets
python3 -c "from cryptography.fernet import Fernet; print('APP_MASTER_KEY=' + Fernet.generate_key().decode())"
python3 -c "import secrets; print('SECRET_KEY=' + secrets.token_urlsafe(50))"
python3 -c "import secrets; print('API_KEY_SECRET=' + secrets.token_urlsafe(50))"
# 6. Create .env file
# Copy the generated secrets from step 5 into this file
cat > .env << 'EOF'
DEBUG=True
SECRET_KEY=<paste_secret_key_here>
ALLOWED_HOSTS=localhost,127.0.0.1
DB_NAME=clientst0r
DB_USER=clientst0r
DB_PASSWORD=your_secure_password
DB_HOST=localhost
DB_PORT=3306
APP_MASTER_KEY=<paste_master_key_here>
API_KEY_SECRET=<paste_api_key_secret_here>
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
SITE_NAME=Client St0r
SITE_URL=http://localhost:8000
EOF
# 7. Start MariaDB and create database
sudo systemctl start mariadb
sudo mysql << 'EOSQL'
CREATE DATABASE clientst0r CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'clientst0r'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON clientst0r.* TO 'clientst0r'@'localhost';
FLUSH PRIVILEGES;
EOSQL
# 8. Run migrations
python3 manage.py migrate
# 9. Create superuser
python3 manage.py createsuperuser
# 10. Collect static files
python3 manage.py collectstatic --noinput
# 11. Run development server
python3 manage.py runserver 0.0.0.0:8000Visit http://localhost:8000 and log in with the credentials you created in step 9.
Installation:
- INSTALL.md - Complete installation guide (quick start, upgrade, troubleshooting)
Core Documentation:
- ORGANIZATIONS.md - Complete guide to organizations, user types, roles, and permissions
- SECURITY.md - Security best practices and vulnerability disclosure
- CONTRIBUTING.md - Development and contribution guidelines
- CHANGELOG.md - Version history and release notes
- deploy/ - Production deployment configs (Nginx, Gunicorn, systemd services)
- Framework: Django 6.0
- API: Django REST Framework 3.15
- Database: MariaDB 10.5+ (MySQL 8.0+ supported)
- Web Server: Nginx + Gunicorn
- Authentication: django-two-factor-auth (TOTP)
- Encryption: Python cryptography (AES-GCM)
- Password Hashing: Argon2
- Frontend: Bootstrap 5, vanilla JavaScript
- β Flexible Deployment - Pure systemd deployment OR optional Docker
- β No Redis - systemd timers for scheduling (Redis optional for Docker)
- β Minimal Dependencies - Only essential packages
- β Security First - Built with security in mind
- β Self-Hosted - Complete data control
- β Mobile-First - Responsive design with PWA support
- β API-Driven - REST and GraphQL APIs for integrations
Client St0r has undergone comprehensive security auditing and continuous vulnerability monitoring:
- β Automated CVE Scanning - Codebase scanned for known vulnerabilities and CVEs
- β AI-Assisted Detection - Pattern matching for SQL injection, XSS, CSRF, path traversal
- β Dependency Monitoring - Python packages checked against security advisories
- β Weekly Manual Audits - Regular security reviews by development team
- β Alert-Only System - No automated code changes, human verification required
- β SQL Injection - Parameterized queries and identifier quoting
- β SSRF - URL validation with IP blacklisting
- β Path Traversal - Strict file path validation
- β IDOR - Object access verification
- β Insecure File Uploads - Type, size, and extension validation
- β Hardcoded Secrets - Environment variable enforcement
- β Weak Encryption - AES-GCM with validated keys
- β CSRF Protection - Multi-domain support
- All passwords encrypted with AES-GCM
- API keys hashed with HMAC-SHA256
- Rate limiting on all endpoints
- Brute-force protection
- Security headers (CSP, HSTS)
- Private file serving
- Audit logging
- Password breach detection (HaveIBeenPwned integration)
Security Disclosure: If you discover a vulnerability, please email agit8or@agit8or.net. See SECURITY.md for details.
We welcome contributions! Here's how you can help:
Have an idea for a new feature? We use a community-driven voting system:
- Start with a Discussion β Share your idea
- Vote on existing ideas β Browse and upvote (π reactions)
- Track the Roadmap β View what's being built
Popular ideas (high votes + alignment with project goals) are promoted to Feature Request issues and added to the Roadmap.
π Read the full guide: docs/FEATURE_REQUESTS.md
Found a bug? Report it here
Ready to contribute code? See CONTRIBUTING.md for guidelines.
# 1. Fork and clone
git clone https://github.com/agit8or1/clientst0r.git
cd clientst0r
# 2. Create feature branch
git checkout -b feature/amazing-feature
# 3. Make changes and test
python3 manage.py test
# 4. Commit and push
git commit -m 'Add amazing feature'
git push origin feature/amazing-feature
# 5. Open Pull RequestThis project is licensed under the MIT License - see the LICENSE file for details.
- Luna the GSD - Development assistance, security review, and bug hunting
- Django & DRF - Excellent web framework
- Bootstrap 5 - Beautiful, responsive UI
- Font Awesome - Icon library
- Community - All contributors and users
- Version: 3.16.5
- Release Date: March 2026
- Status: Production Ready
- Maintained: Yes
- Security: Continuous monitoring, automated scanning, HaveIBeenPwned integrated
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: See SECURITY.md for vulnerability disclosure
If you find Client St0r useful for your MSP or IT department, please consider supporting the developer's business: MSP Reboot - Professional MSP services and consulting.
Your support allows me to continue developing open-source tools like Client St0r and contribute to the MSP community. Thank you!
- Mobile-responsive UI improvements β
- Advanced reporting and analytics β
- Backup/restore functionality β
- Docker deployment option (optional) β
- Additional PSA/RMM integrations β
- API v2 with GraphQL β
- MagicPlan floor plan integration β
- Mobile app (development plan complete) β
- Handles 1000+ assets per organization
- Sub-second page load times
- Efficient database queries
- Optimized for low-resource environments
- Horizontal scaling support
Made with β€οΈ and π by the Client St0r Team and Luna the German Shepherd
Open-source IT Glue alternative Β· Self-hosted Hudu alternative Β· MSP documentation platform Β· IT documentation system Β· MSP knowledge base Β· self-hosted IT documentation























