7.2 KiB
7.2 KiB
FIREFROST GAMING: Gitea Technical Dossier
Project: Frostwall Protocol - Phase 0.5 Management Layer
Service: Gitea (Version Control System)
Deployment Date: February 8, 2026
Lead Engineer: Michael
Status: ✅ OPERATIONAL
Document Version: 1.0
1. Service Specifications
1.1 Network Configuration
| Parameter | Value |
|---|---|
| Service Name | Gitea |
| Purpose | Git Version Control & Repository Management |
| Dedicated IP | 74.63.218.202 |
| Subnet | 74.63.218.200/29 (Command Center /29 Block) |
| Subdomain | git.firefrostgaming.com |
| Internal Port | 3000 (localhost only) |
| External Ports | 80 (HTTP → HTTPS redirect), 443 (HTTPS) |
| SSH Port | 2222 (Git SSH access) |
1.2 Application Paths
| Component | Path |
|---|---|
| Binary | /usr/local/bin/gitea |
| Home Directory | /var/lib/gitea |
| Data Directory | /var/lib/gitea/data |
| Repository Root | /var/lib/gitea/repositories |
| Git LFS Root | /var/lib/gitea/lfs |
| Log Directory | /var/lib/gitea/log |
| Configuration | /etc/gitea/app.ini |
| Systemd Service | /etc/systemd/system/gitea.service |
| Database | /var/lib/gitea/data/gitea.db (SQLite3) |
1.3 Reverse Proxy & SSL
| Parameter | Value |
|---|---|
| Proxy Software | Nginx 1.24.0 |
| Configuration | /etc/nginx/sites-available/git.firefrostgaming.com |
| SSL Provider | Let's Encrypt |
| Certificate Path | /etc/letsencrypt/live/git.firefrostgaming.com/ |
| Expiration | May 9, 2026 (Auto-renewal enabled) |
2. Deployment Changelog v1.0
2.1 System Preparation
- Created system user
giteawith home directory /var/lib/gitea - Created directory structure: /var/lib/gitea/{custom,data,log}
- Set ownership: gitea:gitea on all application directories
- Set permissions: 750 on application directories
2.2 Gitea Installation
- Downloaded Gitea binary v1.21.5 to /usr/local/bin/gitea
- Initialized SQLite database at /var/lib/gitea/data/gitea.db
- Created base configuration at /etc/gitea/app.ini
2.3 Systemd Service
- Created service file: /etc/systemd/system/gitea.service
- Configured to run as gitea user
- Enabled auto-start on boot
2.4 Nginx Reverse Proxy
- Installed Nginx 1.24.0
- Removed default site to prevent 0.0.0.0:80 binding conflict
- Created site config: /etc/nginx/sites-available/git.firefrostgaming.com
- Configured IP-specific binding: 74.63.218.202:80 and :443
- HTTP→HTTPS redirect enabled
- Proxy pass to localhost:3000
2.5 DNS Configuration
- Added Cloudflare A record: git.firefrostgaming.com → 74.63.218.202
- Proxy status: DNS only (gray cloud)
- Propagation verified via nslookup
2.6 Frostwall (UFW) Configuration
- Installed UFW v0.36.2-6
- Added SSH protection rule (port 22)
- Protected primary gateway IP (63.143.34.217)
- Opened HTTP (80) on 74.63.218.202
- Opened HTTPS (443) on 74.63.218.202
- Enabled firewall
2.7 SSL Certificate
- Installed Certbot with Nginx plugin
- Obtained Let's Encrypt certificate for git.firefrostgaming.com
- Auto-renewal configured via systemd timer
2.8 Gitea Web Installation
- Configured via web installer at https://git.firefrostgaming.com
- Database: SQLite3
- Security: Disabled public registration, require sign-in to view
- Created administrator account: mkrause612
- Locked configuration permissions post-install
2.9 Master Archive Creation
- Initialized local Git repository: /root/firefrost-master-configs
- Created folder structure: management/, nodes/, security/, web/, docs/
- Copied configuration files to repository
- Created .gitignore to protect sensitive files (app.ini)
- Created sanitized template: app.ini.template
- Committed and pushed to Gitea repository
3. Frostwall (UFW) Rules
3.1 Commands Used
# Install UFW
apt install -y ufw
# Prevent SSH lockout
ufw allow 22/tcp
# Protect primary gateway
ufw allow in on ens3 to 63.143.34.217
# Open Gitea HTTP (Let's Encrypt validation & redirect)
ufw allow in on ens3 to 74.63.218.202 port 80 proto tcp
# Open Gitea HTTPS (Web interface)
ufw allow in on ens3 to 74.63.218.202 port 443 proto tcp
# Enable firewall
ufw --force enable
3.2 Active Rules
Status: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
63.143.34.217 on ens3 ALLOW IN Anywhere
74.63.218.202 80/tcp on ens3 ALLOW IN Anywhere
74.63.218.202 443/tcp on ens3 ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
4. Service Management Commands
4.1 Gitea Service
# Start Gitea
systemctl start gitea
# Stop Gitea
systemctl stop gitea
# Restart Gitea
systemctl restart gitea
# Check status
systemctl status gitea
# View logs
journalctl -u gitea -f
4.2 Nginx
# Test configuration
nginx -t
# Reload configuration
systemctl reload nginx
# Restart Nginx
systemctl restart nginx
4.3 SSL Certificate
# Test renewal
certbot renew --dry-run
# Force renewal
certbot renew --force-renewal
# Check certificate status
certbot certificates
# Check auto-renewal timer
systemctl status certbot.timer
5. Security Configuration
5.1 Application Security
- User registration: Disabled (admin-only)
- Public browsing: Disabled (requires sign-in)
- Gravatar: Disabled (privacy)
- Local mode: Enabled (no external CDN)
- Password hashing: pbkdf2
5.2 File Permissions
- Configuration directory: /etc/gitea (750, root:gitea)
- Configuration file: /etc/gitea/app.ini (640, gitea:gitea)
- Application directories: /var/lib/gitea/* (750, gitea:gitea)
5.3 Network Security
- Internal binding: 127.0.0.1:3000 only
- External access: Via Nginx reverse proxy only
- Dedicated IP: 74.63.218.202 (isolated from primary gateway)
6. Backup Procedures
6.1 Configuration Backup
# Backup Gitea config
cp /etc/gitea/app.ini /root/backups/gitea-app.ini.$(date +%Y%m%d)
# Backup Nginx config
cp /etc/nginx/sites-available/git.firefrostgaming.com \
/root/backups/nginx-gitea.$(date +%Y%m%d)
6.2 Repository Backup
# Backup all repositories
tar -czf /root/backups/gitea-repos-$(date +%Y%m%d).tar.gz \
/var/lib/gitea/repositories
# Backup database
cp /var/lib/gitea/data/gitea.db \
/root/backups/gitea.db.$(date +%Y%m%d)
7. Troubleshooting
7.1 Service Not Accessible
Check Gitea service:
systemctl status gitea
Check Nginx binding:
ss -tlnp | grep 74.63.218.202
Check firewall:
ufw status | grep 74.63.218.202
Check DNS:
nslookup git.firefrostgaming.com
7.2 502 Bad Gateway
- Cause: Gitea service not running
- Fix:
systemctl start gitea
7.3 Permission Denied Errors
- Cause: Incorrect file ownership
- Fix:
chown -R gitea:gitea /var/lib/gitea
8. Revision History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-02-08 | Michael | Initial deployment. Gitea 1.21.5 installed on 74.63.218.202 with Nginx reverse proxy, Let's Encrypt SSL, UFW firewall, and Master Archive repository created. |
END OF TECHNICAL DOSSIER