Overview
gitGost is a lightweight Go service designed for anonymous GitHub contributions. This page outlines the minimum and recommended system requirements for self-hosting.Software Requirements
Go Runtime
Required version: Go 1.22 or highergitGost is built with Go 1.22 as specified in
go.mod. Ensure you have this version or newer installed.Git
Required version: Git 2.x or higherGit must be available in the system PATH for Smart HTTP protocol operations (receive-pack, upload-pack).
Operating System
gitGost runs on any platform that supports Go 1.22:
- Linux (recommended for production)
- macOS
- Windows (via native or WSL2)
- Docker (see Docker Deployment)
Required Environment Variables
GitHub Token
GitHub personal access token with
repo permissions.How to get one:- Visit https://github.com/settings/tokens
- Generate a new token (classic)
- Select the
reposcope (full control of private repositories) - Copy the token and set it as an environment variable
Supabase Configuration (Recommended)
Supabase project URL for persistent statistics storage.Format:
https://your-project.supabase.coGet from: https://supabase.com/dashboardSupabase API key (anon/public key).Note: If Supabase is not configured, gitGost will start with a warning and stats will not be persisted.
Panic Button (Production)
Strong password to activate/deactivate service suspension via
/admin/panic.Critical for production: Set this to a strong, unique password. Never leave it blank.Network Requirements
Ports
- Default port:
8080(configurable viaPORTenvironment variable) - Inbound: Must accept HTTP/HTTPS traffic on the configured port
- Outbound: Must have access to:
github.com(GitHub API, port 443)supabase.co(if using Supabase, port 443)ntfy.sh(if using ntfy notifications, port 443)
Firewall Rules
Storage Requirements
Disk Space
- Minimum: 100 MB (application binary and dependencies)
- Recommended: 1 GB for logs and temporary git operations
- Note: gitGost does not persist repository data. All git operations are handled in memory or temporary directories.
Temporary Storage
- gitGost creates temporary git repositories during push operations
- Maximum repository size: 500 MB (enforced by application)
- Maximum commit size: 10 MB (enforced by application)
- Maximum push size: 100 MB (enforced by middleware)
/tmp or your system’s temporary directory has sufficient space.
Resource Requirements
Minimum Specifications
- CPU: 1 core
- RAM: 512 MB
- Network: 10 Mbps
Recommended Specifications (Production)
- CPU: 2+ cores
- RAM: 2 GB
- Network: 100 Mbps
- Load balancer: For high availability
Rate Limits
By design, gitGost enforces rate limits to prevent abuse:- Push operations: 5 PRs per IP per hour
- Admin endpoints: 10 requests per IP per minute (sliding window)
- GitHub API: Subject to GitHub’s rate limits (5000 requests/hour for authenticated tokens)
GitHub Account Requirements
- Bot account recommended: Use a dedicated GitHub account (e.g.,
gitgost-anonymous) - Repository access: The account will create forks and open PRs on behalf of users
- Public repositories only: gitGost is designed for public repo contributions
- 40,000 repository limit: GitHub enforces a per-user repository cap. Fork repositories created by gitGost should be manually deleted periodically to stay under this limit.
Security Considerations
- TLS/SSL: Always deploy behind a reverse proxy (nginx, Caddy) with HTTPS enabled
- VPN/Tor: Recommended for users seeking stronger anonymity
- IP logging: gitGost does not log IP addresses by default (Gin logging is disabled)
- Trusted proxies: Configure
SetTrustedProxiesininternal/http/router.go:134if behind a known reverse proxy
Next Steps
Configuration
Learn how to configure gitGost with environment variables and config files
Docker Deployment
Deploy gitGost using Docker with compose examples
Environment Variables
Complete reference of all environment variables