194 lines
4.6 KiB
Markdown
194 lines
4.6 KiB
Markdown
# 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)
|