Overview
Discover what makes GitBucket powerful
GitBucket is a self‑hosted Git platform built on the Java Virtual Machine and written in **Scala**. It exposes a web interface that mirrors GitHub’s functionality while remaining lightweight enough to run from a single `gitbucket.war` file or any Servlet 3.0‑compatible container (Jetty, Tomcat, WildFly, etc.). The core application bundles a full Git server, HTTP/SSH transport layers, and a REST‑ful API that is *GitHub‑compatible*, enabling existing CI/CD pipelines or third‑party integrations to interact with it without modification.
Language & Runtime
Web Framework
Persistence
Git Engine
Overview
GitBucket is a self‑hosted Git platform built on the Java Virtual Machine and written in Scala. It exposes a web interface that mirrors GitHub’s functionality while remaining lightweight enough to run from a single gitbucket.war file or any Servlet 3.0‑compatible container (Jetty, Tomcat, WildFly, etc.). The core application bundles a full Git server, HTTP/SSH transport layers, and a REST‑ful API that is GitHub‑compatible, enabling existing CI/CD pipelines or third‑party integrations to interact with it without modification.
Architecture & Technical Stack
- Language & Runtime: Scala 3.x on Java 17+, leveraging Akka HTTP for request handling and Netty for asynchronous networking.
- Web Framework: Built on the Play‑style MVC pattern but without external dependencies beyond the standard library and a few Scala util packages.
- Persistence: Uses an embedded H2 database for metadata (users, groups, repo configs) and stores Git objects in the local filesystem (
HOME/.gitbucket/repositories). - Git Engine: Relies on JGit for Git operations, providing full support for HTTP/HTTPS and SSH access, including Git LFS integration via a dedicated servlet.
- Plugin System: A modular OSGi‑like architecture where JARs dropped into the
pluginsdirectory are scanned at startup. Each plugin can register routes, services, and UI components through a simple API exposed by the core.
Core Capabilities
- Repository Management: Create public or private repos, clone via HTTP(S) or SSH, and manage permissions through per‑repo ACLs.
- Issue Tracking & Pull Requests: Full CRUD for issues, labels, milestones, and pull request reviews with comment threads.
- Wiki & Pages: Markdown‑based wiki pages and static site hosting via the
gitbucket-pages-plugin. - Notifications: Email notifications (SMTP configuration) and webhooks for external services.
- REST API: The GitHub‑compatible REST endpoints cover repositories, commits, issues, pull requests, and more. A GraphQL API is also in the roadmap for advanced queries.
- Authentication: Built‑in LDAP integration, OAuth2 provider support, and session management with JWT fallback for stateless clients.
Deployment & Infrastructure
GitBucket is intentionally lightweight: a single war file runs on any JVM with 512 MB RAM minimum, though production deployments typically allocate 2–4 GB. It is container‑friendly; official Docker images are available, and the application can be orchestrated via Kubernetes or Docker Compose. For high‑availability setups, you can run multiple instances behind a load balancer; the underlying Git objects are stored on shared NFS or object storage, while H2 can be replaced with PostgreSQL for larger metadata workloads. The plugin system allows you to add reverse‑proxy authentication (e.g., via Nginx) or integrate with existing CI tools like Jenkins.
Integration & Extensibility
- Plugin API: Exposes hooks for custom UI widgets, database extensions, and background jobs. Community plugins cover Gist, Emoji reactions, notifications, and static site hosting.
- Webhooks & API: Supports standard GitHub webhooks (push, pull request events) and custom payloads. Developers can write scripts or microservices that consume these events for CI pipelines, issue triage bots, or analytics.
- Custom Authentication: LDAP and OAuth2 can be chained; administrators can also write custom authentication providers by implementing the
AuthProviderinterface. - CLI & Scripting: While no dedicated CLI exists, the REST API can be scripted with
curlor HTTP clients in any language. JGit can also be used programmatically to manipulate repositories directly.
Developer Experience
The project ships with comprehensive ScalaDoc and a developer guide that walks through setting up an IDE (IntelliJ, VS Code), building from source with sbt, and debugging. Community support is active on Gitter and GitHub issues; the plugin ecosystem is growing steadily, providing quick examples of extending functionality. Documentation is kept up‑to‑date with the latest release and includes migration guides for upgrading from older versions.
Use Cases
- Enterprise Code Hosting – Replace GitHub Enterprise with an on‑prem solution that respects internal compliance and audit trails.
- CI/CD Pipelines – Integrate with Jenkins, GitLab Runner, or custom agents via the REST API for pull‑request triggers.
- Educational Platforms – Host student repositories with fine‑grained access control and auto‑graded assignments.
- Open‑Source Projects – Offer a lightweight, self‑hosted alternative to GitHub for projects that require private forks or internal tooling.
Advantages Over Alternatives
- Performance: Scala + Akka HTTP delivers high concurrency with low memory overhead, outperforming many Python or Ruby‑based Git services.
- Licensing: Apache 2.0 allows commercial use without copyleft obligations, unlike GPL‑licensed alternatives.
- Extensibility: The plugin system is more flexible than GitLab’s extension points, enabling rapid feature addition without core code changes.
- GitHub Compatibility: Existing GitHub workflows, bots, and integrations work out of the box, minimizing migration friction.
For developers seeking a fully self‑hosted Git platform that is easy to install, highly extensible
Open SourceReady to get started?
Join the community and start self-hosting GitBucket today
Related Apps in development-tools
Hoppscotch
Fast, lightweight API development tool
code-server
Self-hosted development-tools
AppFlowy
AI-powered workspace for notes, projects, and wikis
Appwrite
All-in-one backend platform for modern apps
PocketBase
Lightweight Go backend in a single file
Gitea
Fast, lightweight self-hosted Git platform
Weekly Views
Repository Health
Information
Explore More Apps
Outline Server
Create and manage your own VPN with ease
HeyForm
Build conversational forms without code
Mikochi
Minimalist remote file browser for self‑hosted servers
Claper
Turn presentations into interactive, real‑time conversations
Password Pusher
Secure, self‑deleting password sharing for teams
Langfuse
Open-source observability for LLM applications and agents
