# Git Server Options for TrueNAS ## Overview Options for self-hosting a git server on TrueNAS, with considerations for features, complexity, and resource requirements. --- ## Option 1: Gitea **Type:** Lightweight, self-hosted Git service **Pros:** - Lightweight and fast (written in Go) - GitHub-like web interface - Easy installation via Docker/jail - Built-in CI/CD (Gitea Actions) - User management, organizations, teams - Issue tracking, wiki, pull requests - Low resource usage (~100-200 MB RAM) - Active development and community **Cons:** - Fewer features than GitLab - Smaller plugin ecosystem **Installation:** - TrueNAS Scale: Deploy via TrueCharts or Docker - TrueNAS Core: Install in FreeBSD jail **Best For:** Most home users wanting a full-featured Git platform with minimal overhead --- ## Option 2: GitLab CE (Community Edition) **Type:** Full-featured DevOps platform **Pros:** - Complete DevOps lifecycle (CI/CD, container registry, etc.) - Professional features (protected branches, merge requests) - Excellent documentation - Industry-standard platform - Built-in runners for automation **Cons:** - Resource-heavy (minimum 4GB RAM, recommend 8GB+) - Slower performance on modest hardware - More complex to maintain - Overkill for simple git hosting **Installation:** - TrueNAS Scale: Docker container or VM - Requires dedicated resources **Best For:** Users who want enterprise features and have hardware to spare --- ## Option 3: Plain Git Server (SSH-based) **Type:** Bare-bones git via SSH **Pros:** - Minimal resource usage - Simple and reliable - No web interface complexity - Uses native TrueNAS SSH access - Maximum control **Cons:** - No web UI - No pull requests, issues, or collaboration features - Manual user/permission management - Command-line only workflow **Setup:** ```bash # Create git user and repos directory # Set up SSH keys # Initialize bare repos ``` **Best For:** Solo users or small teams comfortable with CLI-only workflow --- ## Option 4: Gogs **Type:** Painless self-hosted Git service (Gitea's predecessor) **Pros:** - Even lighter than Gitea - Simple and stable - Easy to set up - Web interface for basic operations **Cons:** - Less actively developed (Gitea forked from it) - Fewer features than Gitea - Smaller community **Best For:** Users wanting minimal resource usage with basic web UI --- ## Option 5: cgit + gitolite **Type:** Lightweight web viewer + access control **Pros:** - Extremely lightweight - Fast repository browsing (cgit) - Fine-grained access control (gitolite) - Battle-tested and stable **Cons:** - More complex initial setup - No modern collaboration features - Basic web interface (read-only) - Steeper learning curve **Best For:** Advanced users prioritizing performance and control --- ## Comparison Matrix | Feature | Gitea | GitLab CE | Plain Git | Gogs | cgit+gitolite | |---------|-------|-----------|-----------|------|---------------| | Resource Usage | Low | High | Minimal | Very Low | Minimal | | Web UI | Excellent | Excellent | None | Good | Basic | | Pull Requests | Yes | Yes | No | Yes | No | | CI/CD | Yes | Yes | No | No | No | | Setup Complexity | Easy | Medium | Easy | Easy | Hard | | Active Development | High | High | N/A | Low | Low | --- ## Recommendation **For most home users: Gitea** Reasons: - Best balance of features and resource usage - Modern, intuitive interface - Easy to maintain - Supports collaboration features (PRs, issues) - Works well on modest hardware - Can grow with your needs **Installation on TrueNAS Scale:** 1. Use TrueCharts app or custom Docker container 2. Allocate dataset for persistent storage 3. Configure reverse proxy (optional, for HTTPS) 4. Set up backups of git repositories --- ## Additional Considerations ### Backup Strategy - Git repositories are already distributed backups - Still recommended to backup Gitea database and repos - TrueNAS snapshots + replication to another location ### Access Methods - SSH: Direct git operations - HTTPS: Web interface + git operations - Consider reverse proxy (Nginx/Traefik) for SSL ### Storage Requirements - Minimal for code repos (MBs to low GBs) - LFS (Large File Storage) if storing binaries/media - Plan for growth if hosting many repos ### Security - Keep software updated - Use SSH keys or strong passwords - Consider VPN for external access - Regular backups --- ## Next Steps - [ ] Decide on git server solution - [ ] Plan resource allocation (RAM, CPU, storage) - [ ] Choose access method (local only vs. external) - [ ] Set up TrueNAS dataset for git storage - [ ] Install and configure chosen solution - [ ] Configure backup strategy - [ ] Migrate existing repositories (if any)