Skip to content

Self-host OneDev

updated Aug 2026prices checked · Aug 2026Install verified on Ubuntu 26.04 · Aug 2026 · how we test

A Java forge whose distinguishing trick is code intelligence: language-aware symbol search and navigation at any commit, plus regex code search, all built in rather than bolted on. It bundles a GUI-driven CI/CD engine, package registries and issue boards in one container, and is open core — clustering, audit logging and cross-project search need a paid subscription.

Key facts

CategoryCode hosting
LicenseMIT
StackJava
Min RAM2048 MB
Dockeryes
Difficulty
Our recommendation

Choose OneDev when code intelligence is the feature you are actually shopping for: language-aware symbol search and jump-to-definition at any commit, plus regex search across a repository, built in rather than bolted on. It bundles a CI/CD engine you configure through a GUI instead of hand-written YAML, package registries and issue boards in one container, at a documented 2 GB minimum. Gitea and Forgejo are lighter and have far larger ecosystems; GitLab covers more ground and asks four times the memory. OneDev is the middle option — more in one box than Gitea, without GitLab's weight — as long as the open-core split does not cut through something you need.

What you need

  • Any VPS with at least 2048 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • Under an hour if you've used Docker before

Install

Run these commands on your server:

# OneDev — upstream's documented single-container run
mkdir -p ~/onedev
docker run -d --name onedev --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/onedev:/opt/onedev \
  -p 6610:6610 -p 6611:6611 1dev/server:latest
# the docker socket mount is only for the built-in CI/CD executor —
# drop it if you will not run jobs on this host
# →  http://SERVER_IP:6610 for the setup wizard (6611 is the SSH/Git port)

What you take on

OneDev installs in one command, and the three things you inherit are not visible in that command:

non-negotiableThe documented run mounts the host's Docker socket so the built-in CI/CD executor can start job containers. That is a real privilege grant — anything reaching that socket is effectively root on the machine — so leave the mount out if you will not run jobs on this host, and move to remote agents or a Kubernetes executor once builds matter.
non-negotiableThe open-core split is structural, not a feature flag: the enterprise code lives in a separate server-ee submodule pointing at its own repository. Clustering, cross-project code search, security and compliance scanning, audit logging, time tracking and the CI/CD web terminal all need a subscription. The everyday forge — repositories, pull requests, issues, CI/CD, package registries, SSO and LDAP — does not.
non-negotiableIt runs on the JVM and builds a Lucene index per repository, so the resident footprint sits near whatever heap you give it and grows with repository size. Plan above the 2 GB floor if you host anything large, expose both 6610 (web) and 6611 (Git over SSH), and back up the data directory the container mounts — that one path holds the repositories and the index.

An alternative to

Head-to-head

More in Code hosting

Common questions

What does OneDev do that Gitea does not?

Code intelligence. It indexes symbols per commit, so you can jump to a definition or list every occurrence from the file viewer at any point in history, and search across a repository by regular expression. It also ships a CI/CD engine you configure through a GUI rather than by hand-writing YAML, and package registries for the common ecosystems.

Is OneDev fully open source?

The server in the main repository is MIT, but OneDev is open core: the enterprise code lives in a separate server-ee submodule. High-availability clustering, cross-project code search, security and compliance scanning, audit logging, time tracking, the CI/CD web terminal and Renovate integration all need a subscription. The everyday forge — repositories, pull requests with review policies, issues, CI/CD, package registries, SSO and LDAP — is in the free edition.

Why does the install mount the Docker socket?

So OneDev's built-in CI/CD executor can start job containers on the same host. It is a real privilege grant — anything that can reach that socket is effectively root on the machine — so leave it out if you do not need CI on this box, and use remote agents or a Kubernetes executor once jobs matter.

How much memory does OneDev need?

Upstream asks for at least 2 GB of physical memory, and more if you host large repositories: OneDev caches Git data in memory and builds a Lucene index per repository. That puts it above Gitea and well below GitLab. It runs on the JVM, so expect the resident footprint to sit near whatever heap you give it.

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.