What is Forgejo?
Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job. Forgejo is a community-driven fork of Gitea focused on security, privacy, and democratic governance β giving you a self-hosted alternative to GitHub or GitLab that you fully control.
β‘ Key Features of Forgejo
π¦ Git Repository Hosting
Host unlimited public and private git repositories. Full support for Git LFS, large file storage, and repository mirroring from GitHub, GitLab, and more.
π Pull Requests & Code Review
Built-in pull request workflow with inline code review, review assignments, required reviewers, and merge strategies including squash and rebase.
π Issue Tracking
Full-featured issue tracker with labels, milestones, projects board, custom fields, and cross-repository references.
βοΈ Forgejo Actions
Built-in CI/CD engine compatible with GitHub Actions workflows. Use existing GitHub Actions marketplace actions on your self-hosted runner.
π Package Registry
Host your own packages: npm, PyPI, Maven, Docker/OCI images, Debian/RPM packages, Helm charts, and more β all in one place.
π Security & Access Control
Fine-grained permissions, two-factor authentication, OAuth2 provider, LDAP/SAML integration, SSH and HTTPS access, branch protection rules.
π Why Forgejo?
- Self-hosted: Your data stays on your servers, under your control
- Lightweight: Runs on a Raspberry Pi or a $5/month VPS
- Gitea compatible: Drop-in replacement with full API compatibility
- Community-driven: Democratic governance, no corporate lock-in
- GitHub Actions compatible: Reuse existing workflows and marketplace actions
apt upgrade keeps you on the latest version.
π¦ Installation from deb.griffo.io
Step 1: Add Repository
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updateπ There is an always-free mirror. deb-free.griffo.io serves packages free forever β no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries Ghostty, Oh My Posh and Zed; Forgejo is not one of them, so the repository above is the only way to get it today β ask and it can be enrolled.
Step 2: Install Forgejo
# Install latest Forgejo (also installs git and git-lfs)
sudo apt install forgejo
# Verify installation
forgejo --version# Install latest Forgejo (also installs git and git-lfs)
apt install forgejo
# Verify installation
forgejo --versionπ Initial Setup
The package automatically creates the git system user, the /var/lib/forgejo data directory, and the /etc/forgejo config directory. Complete the setup with:
# Start the Forgejo service
sudo systemctl start forgejo
# Open http://localhost:3000 in your browser to complete initial configuration
# (configure database, admin account, domain, etc.)
# After the web setup is complete, enable Forgejo on boot:
sudo systemctl enable forgejo
# Check service status
sudo systemctl status forgejo# Start the Forgejo service
systemctl start forgejo
# Open http://localhost:3000 in your browser to complete initial configuration
# (configure database, admin account, domain, etc.)
# After the web setup is complete, enable Forgejo on boot:
systemctl enable forgejo
# Check service status
systemctl status forgejoπ‘οΈ Post-Configuration Security Hardening
After completing the web-based setup, make the config file read-only for added security:
# Lock down the config directory and app.ini after initial configuration
sudo systemctl stop forgejo
sudo chmod 750 /etc/forgejo
sudo chmod 640 /etc/forgejo/app.ini
sudo systemctl start forgejo# Lock down the config directory and app.ini after initial configuration
systemctl stop forgejo
chmod 750 /etc/forgejo
chmod 640 /etc/forgejo/app.ini
systemctl start forgejoπ§ Command-Line Administration
Forgejo provides a CLI for administration tasks. Run commands as the git user:
# List all users
sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user list
# Create admin user
sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user create \
--username admin --password changeme --email admin@example.com --admin
# Regenerate Git hooks (useful after upgrades)
sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin regenerate hooks# List all users
-u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user list
# Create admin user
-u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user create \
--username admin --password changeme --email admin@example.com --admin
# Regenerate Git hooks (useful after upgrades)
-u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin regenerate hooksπ Why Choose deb.griffo.io?
- Official Ubuntu: No Forgejo package available in official repos
- Manual install: Requires downloading and placing binary manually
- deb.griffo.io: Latest version with proper packaging, postinst setup, and apt update support
- β Latest Security Patches: Always get the newest Forgejo release
- β Automatic Setup: Post-install script creates user, directories, and systemd service
- β Proper Dependencies: git and git-lfs installed automatically
- β
Automatic Updates:
apt upgradekeeps Forgejo current - β Multi-Architecture: Supports amd64, armhf (Raspberry Pi), and arm64
- β Multi-Distribution: Works on Jammy and Noble
π¦ Package Build Repository
The Ubuntu packages are automatically built and maintained in this GitHub repository:
- βοΈ forgejo-debian - Latest release builds
π Related Packages
Also available from deb.griffo.io:
- lazygit - Terminal UI for Git (great companion for git workflows)
- lazydocker - Terminal UI for Docker (useful if running Forgejo in containers)
- eza - Modern ls replacement
π Support This Project
If this repository saves you time and effort, please consider supporting it!