4.6 KiB
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:
# 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:
- Use TrueCharts app or custom Docker container
- Allocate dataset for persistent storage
- Configure reverse proxy (optional, for HTTPS)
- 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)