Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk11 min

How to Install an SVN Server on Ubuntu (svnserve and Apache Setup)

Install Subversion on Ubuntu, create a repository, configure svnserve authentication and authz, or publish repositories through Apache HTTPS. Includes testing, security, backups, and troubleshooting.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The quickest way to install a Subversion (SVN) server on Ubuntu is to install the subversion package, create a repository with svnadmin, configure authentication and path authorization, then run svnserve on its controlled repository root. For teams that need HTTP(S), Apache authentication, or several repositories behind one web endpoint, install Apache with the Subversion WebDAV module instead.

This guide shows both supported deployment models, the exact repository and access-control files, client tests, security decisions, backups, and the failure modes most likely to appear during setup.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose the Ubuntu SVN server method first

Subversion repositories are normally exposed by one of two different server processes: the small standalone svnserve daemon or Apache httpd with mod_dav_svn. They store and manage the same repository format, but clients connect through different protocols and the administration model is different.

Decision point Native svnserve Apache with mod_dav_svn
Transport Subversion’s svn:// protocol HTTP or HTTPS through WebDAV
Typical URL svn://server.example/myrepo https://server.example/svn/myrepo
Authentication Repository passwd file, with authorization in authz Apache authentication providers such as an AuthUserFile, with authorization enforced by Apache and/or SVN rules
TLS Not supplied by the native protocol itself; protect the network path or use a trusted private network Use HTTPS after configuring TLS in Apache
Firewall exposure Normally TCP port 3690, unless you select another port The ports already used by your HTTP(S) virtual host, usually 80 and 443
Best fit A small, controlled network with a dedicated SVN endpoint An existing web server, centralized login policy, browser-facing infrastructure, or multiple repositories under one URL

For a first installation on an internal network, svnserve has fewer moving parts. For Internet-facing access, Apache over HTTPS is usually the safer operational choice because TLS and web-server authentication can be managed in the same place as the rest of the site.

Prerequisites and a safe starting layout

  • An Ubuntu system with administrative access through sudo.
  • A hostname or IP address that SVN clients can resolve.
  • Enough disk space for the repository and its future revisions. Subversion retains history, so capacity requirements grow over time.
  • A decision about which account will run the server process. That account must be able to read and write the repository, while unrelated users should not receive write access.
  • A firewall policy that permits only the required source networks and port.

The examples below keep repositories below /srv/svn. A parent directory makes it easier to serve several repositories and to apply one backup policy. The repository itself is not an ordinary folder for editing files: clients work through Subversion commands, while the server maintains its internal database.

Install Subversion on Ubuntu

Refresh Ubuntu’s package metadata and install the native client and server package:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo apt update
sudo apt install subversion

Ubuntu’s subversion package includes svnserve. Confirm what was installed and record the package build before continuing:

svn --version
svnserve --version

Package versions vary by Ubuntu release. The Ubuntu Noble manpage identified svnserve as package version 1.14.3-1build4 at the time it was captured; treat that number as release-specific and re-check the target machine rather than assuming every Ubuntu edition has the same build.

If you plan to use Apache, install Apache httpd and Ubuntu’s separate Subversion integration package as well:

sudo apt install apache2 libapache2-mod-svn

The Apache package is not required for a native svn:// deployment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create the repository and its initial layout

1. Create a restricted repository parent

Create the parent directory with permissions that keep it out of the way of ordinary users. The command below makes the directory owned by root and group-owned by Ubuntu’s subversion group:

Rank #2
Sale
GMKtec G3S Mini PC Intel N95 Processor (Up to 3.4GHz) 8GB RAM 256GB M.2 SSD | Mini Desktop Computer with VESA Mount for Office Home Business HTPC Proxmox, Dual 4K Display, WiFi 5, Gigabit Ethernet
  • 12th Intel Alder Lake N95 Processor – The GMKtec G3 S Mini PC is powered by the 12th Gen Intel N95 processor with 4 cores, 4 threads, 6MB cache and a burst frequency up to 3.4GHz. Compared with N100/N5105/N5100/N5095, the N95 delivers up to 36% overall performance improvement. Perfect for routine tasks, office work, and home entertainment, this compact mini desktop is more convenient than traditional bulky PCs.
  • 8GB RAM & 256GB SSD Storage – Pre-installed with 8GB DDR4 memory and a fast 256GB M.2 2242 SSD, the G3 S mini desktop offers quicker startup, smoother multitasking, and faster file transfers. Enjoy seamless performance whether you’re working on multiple applications, browsing, or streaming content.
  • Rich Interfaces & Connectivity – The G3 S mini computer comes equipped with USB 3.2 (up to 10Gbps), dual HDMI 2.0 (4K@60Hz), and a 3.5mm audio jack. With support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet (RJ45 1000MbE), it connects easily with monitors, projectors, printers, office equipment, and other peripherals, making it versatile for both home and business use.
  • Dual 4K Display Support – Featuring upgraded Intel UHD Graphics (up to 1000MHz), the G3 S supports 4K video playback and AV1 decoding for a smooth viewing experience. With dual HDMI outputs, you can connect two 4K@60Hz displays simultaneously, enabling efficient multitasking for work and entertainment.
  • GMKTEC WARRANTY - GMKtec offers a 3-year limited warranty (1 year replacement + 2 years parts replacement) for each mini PC, starting from the date of the purchase effective on all sales starting Oct. 2026. All defects due to design and workmanship are covered. With a professional after sales team always ready to attend to your needs, you can simply relax and enjoy your mini PC
sudo install -d -m 0750 -o root -g subversion /srv/svn

If your chosen server account is not a member of subversion, either add that account to the group according to your site’s access policy or choose an ownership arrangement that gives the process the required read and write access without making the repository world-writable. After changing group membership, start a new login session before testing.

2. Initialize a repository

sudo svnadmin create /srv/svn/myrepo

This creates the repository database and a conf directory containing the files used by native svnserve authentication and authorization. Do not place application files directly into the repository directory or edit Subversion’s internal database files.

3. Use the conventional project directories

Most projects use three top-level directories:

  • trunk for the main development line;
  • branches for parallel lines of development; and
  • tags for named snapshots.

You can create them from an empty local directory and import them:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
mkdir -p ~/myrepo-seed/{trunk,branches,tags}
printf 'Initial repository layoutn' > ~/myrepo-seed/trunk/README.txt
svn import ~/myrepo-seed svn://server.example/myrepo 
  -m "Create trunk, branches, and tags" 
  --username alice

The import command will prompt for the password configured for alice. If you are testing on the server before DNS is ready, substitute the server’s reachable address, but perform a real test from a separate client before calling the installation complete.

Configure native svnserve authentication and authorization

Edit svnserve.conf

Open the repository-specific configuration file:

sudoedit /srv/svn/myrepo/conf/svnserve.conf

Use a configuration like this:

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My Ubuntu SVN Repository

Remove leading whitespace from the settings. Subversion configuration examples are commonly whitespace-sensitive; an indented key can be ignored or produce behavior that looks like an authentication failure. Setting anon-access = none requires a login for reads, while auth-access = write allows authenticated users to write unless the authz file denies the path.

The repository’s conf/svnserve.conf is where svnserve reads these settings unless you start it with a global --config-file override.

Add named users to passwd

Edit the password file:

sudoedit /srv/svn/myrepo/conf/passwd

Add users under the [users] section:

[users]
alice = replace-with-a-long-password
bob = replace-with-another-long-password

This file is simple and convenient for a small, self-contained server. Protect it with filesystem permissions because it contains the credentials used by the repository service. Use unique, long passwords and do not commit this file into the project itself.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Apply least privilege with authz

Edit the authorization file:

sudoedit /srv/svn/myrepo/conf/authz

A minimal policy that gives one group full access and denies everyone else is:

[groups]
developers = alice, bob

[/]
@developers = rw
* =

The [/] rule applies to every path in the repository. An empty value for * is an explicit deny, not a comment. You can grant different rights to different project paths. For example:

[groups]
app-team = alice, bob
docs-team = carol

[/]
@app-team = rw
* = r

[/trunk/documentation]
@docs-team = rw
@developers = r
* =

Rules are evaluated against repository paths, so test both an account that should succeed and one that should be denied. A user who can authenticate but receives an authorization error is reaching the server correctly; the next place to inspect is authz, not the network.

Start svnserve and verify the native endpoint

Start the daemon with the repository parent as its controlled root:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo svnserve -d -r /srv/svn

The -r /srv/svn option means clients address myrepo as a child of that root rather than exposing arbitrary filesystem paths. In daemon mode, svnserve listens on TCP port 3690 by default. Use --listen-host to bind to a specific interface or --listen-port to select a different port when the default is unsuitable.

For a temporary foreground diagnostic run, use:

sudo svnserve -d --foreground -r /srv/svn

Foreground mode is useful while checking startup behavior and permissions. Do not leave two daemons competing for the same port; stop the diagnostic process before starting the normal daemon. For a production host, arrange startup through the service-management method used by your Ubuntu release and document the exact command, account, repository root, and port so the configuration survives a reboot. Always verify the process and listening socket after a restart instead of assuming that a manually launched daemon will return automatically.

Test from a separate SVN client

Testing only with local filesystem access does not prove that the network service, authentication, and authorization work. From another machine, list the repository:

Rank #4
Sale
GMKtec G10 Mini PC Ryzen 5 3500U 1TB SSD 16GB DDR4 Triple 4K Display
  • OFFICE LIGHT GAMING MINI PC - GMKtec Nucbox G10 Series is equipped with the Ryzen 5 3500U, a 64-bit quad-core mid-range performance x86 mobile microprocessor. This processor is based on AMD's Zen+ microarchitecture and is fabricated on a 12 nm process. The 3500U operates at a base frequency of 2.1 GHz with a TDP of 15 W and a Boost frequency of 3.7 GHz. This APU supports up to 32 GB of dual-channel DDR4-2400 memory and incorporates Radeon Vega 8 Graphics operating at up to 1.2 GHz. 35% Performance increase over the similar Intel N-Series N150/N100/N97/N95 processor chips
  • 16GB DDR4 + 1TB SSD - Installed with DDR4 16GB SO-DIMM RAM and a 1TB SSD, the Nucbox G10 mini pc supports memory expansion to 64GB RAM. Featured with Dual M.2 2280 PCIe 3.0 slots, supports dual storage slot expansion to 16TB SSD (2*8TB). (Upgrades not included) This model supports a configurable TDP-down of 12 W and TDP-up of 35 W
  • 2.5GBE ETHERNET FAST NETWORK SPEEDS - Enjoy up to 2500Mbps data transmission speed without worrying about lagging. Ideal for working, gaming, and surfing the internet. Great for Untangle, Pfsense or as a server office PC
  • MINI DESKTOP COMPUTER WITH TRIPLE DISPLAY SCREEN - Nucbox G10 integrates AMD Radeon Vega 8 1200 MHz GPU to deliver powerful graphics processing power to easily handle video editing, and playback, or casual gaming. And it can connect to 3 display screens simultaneously via HDMI 2.1 TMDS/ DPv1.4/ TYPE-C
  • FAST WIRELESS INTERNET WIFI 5 + BT5.0 - Enjoy blazing WiFi 5 & Bluetooth 5.0 alongside a powerhouse selection of ports - dual USB 3.2, USB 2.0, stunning 4K@60Hz HDMI 2.1 TMDS, Full Function USB-C (PD/DP/Data), dedicated DisplayPort, 3.5mm audio, and PD Power Supply for seamless multitasking and premium connectivity
svn ls svn://server.example/myrepo --username alice

Then check out the trunk:

svn checkout svn://server.example/myrepo/trunk working-copy --username alice

Enter the password when prompted. A successful checkout confirms DNS or routing, the port, repository-root mapping, credentials, and read permission. Complete the test with a harmless edit and commit, then test a user or path that should be denied.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Run svn ls with an allowed account and confirm the expected project directories appear.
  2. Modify a test file in the working copy and run svn commit -m "Test server write access".
  3. Repeat with an account that should have no access; it should be rejected rather than silently treated as anonymous.
  4. Try a path covered by a restrictive authz rule and verify that the denied account cannot read or commit there.

If clients cannot connect, confirm that svnserve is listening on the intended interface and port, that the firewall permits TCP 3690 from the client network, and that the hostname resolves to the correct machine. If clients connect but cannot write, inspect repository ownership and the authenticated user’s authz rights.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Serve repositories through Apache and HTTP(S)

Choose Apache when the repository must share an existing web server, use Apache’s authentication ecosystem, or be available through HTTP(S). Apache’s mod_dav_svn speaks WebDAV; it is a different server mechanism from svnserve, not merely another command-line front end.

Install and enable the integration

sudo apt install apache2 libapache2-mod-svn
sudo a2enmod dav dav_svn auth_basic
sudo systemctl restart apache2

Module names and package dependencies can vary slightly by Ubuntu release, so review the enabled-module output if a2enmod reports that a module is already enabled or unavailable.

Configure one or many repositories

Create an Apache site or configuration fragment with a location such as:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
<Location /svn>
    DAV svn
    SVNParentPath /srv/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/subversion/passwd
    Require valid-user
</Location>

SVNParentPath is appropriate when /srv/svn contains multiple repositories, so a client can use a URL such as https://server.example/svn/myrepo. For a single repository, use SVNPath /srv/svn/myrepo instead. Do not configure both directives for the same location.

Create the Apache password file outside the repository. For the first user:

sudo install -d -m 0750 /etc/subversion
sudo htpasswd -c /etc/subversion/passwd alice

For additional users, omit -c so the existing file is preserved:

sudo htpasswd /etc/subversion/passwd bob

Ensure the Apache worker account can read and write the repository while unrelated accounts cannot. A configuration that authenticates correctly but returns permission errors usually has a filesystem ownership or group problem under /srv/svn.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use TLS before exposing Apache publicly

Basic authentication sends credentials in a form that must be protected by TLS. Configure a valid certificate and an HTTPS virtual host, then give clients an https:// repository URL. Do not expose unauthenticated write access, and do not treat an internal-looking hostname as proof that traffic is private. Restrict access by firewall or network policy where possible, even when HTTPS is enabled.

Secure the installation

  • Disable anonymous access for repositories that contain private code by setting anon-access = none in the native configuration and requiring valid users in Apache.
  • Use authz rules to grant only the paths each team needs. A user who does not need repository-wide read access should not receive it by default.
  • Open only the required firewall port. For native access, that is normally TCP 3690; for Apache, allow only the HTTP(S) ports and source networks your policy requires.
  • Bind svnserve to a specific interface with --listen-host when the server has public and private network interfaces.
  • Keep passwd, authz, and Apache credential files readable only by the service and administrators.
  • Use HTTPS for Internet-facing Apache access and avoid sending native svn:// traffic across an untrusted network without an appropriate protected network path.
  • Record who owns the repository, which account runs the server, which port is exposed, and how to restore the data.

Back up and restore the repository

A repository backup must preserve Subversion’s history, not just the current checked-out files. Back up the repository directory with the same care you would apply to any database, and document where the backup is stored and how restoration is tested.

For a portable logical backup, create a dump:

sudo svnadmin dump /srv/svn/myrepo > myrepo-$(date +%F).dump

Restore into a newly initialized repository:

sudo svnadmin create /srv/svn/myrepo-restored
sudo svnadmin load /srv/svn/myrepo-restored < myrepo-2026-10-15.dump

Replace the example date with the date of the dump you actually created. Apply the same ownership, svnserve.conf, passwd, and authz policy to the restored repository, then test checkout and commit from a separate client. Keep at least one backup copy away from the server and perform a restore drill; a file that has never been restored is an assumption, not a recovery plan.

Troubleshoot common failures

Symptom Likely cause What to check
Connection refused or timed out Daemon is stopped, bound to another interface, wrong port, or blocked by a firewall Check the running process, listening socket, --listen-host/--listen-port, DNS, and the firewall rule.
“Authentication failed” Wrong username/password, malformed passwd, or the repository is reading a different configuration file Confirm the [users] section, remove accidental indentation, and verify the repository path and any --config-file override.
Login succeeds but checkout is denied authz does not grant the requested path Check the exact repository path in the rule, group spelling, and the catch-all * = line.
Commit fails with a filesystem permission error The account running svnserve or Apache cannot write the repository Inspect ownership and group permissions on /srv/svn and the repository, then retest using the actual service account.
Apache returns a generic 500 error Module, location directive, repository path, or filesystem permissions are wrong Check Apache’s error log, confirm dav_svn is enabled, choose either SVNPath or SVNParentPath, and verify access to the repository.
Clients see an unexpected repository name The server was started with an incorrect -r root or the Apache location maps to the wrong parent Compare the URL with the filesystem mapping and restart the intended server process.

Operational checks before calling it production-ready

  • Run svn --version and svnserve --version; record the Ubuntu release and installed package build.
  • Confirm that the expected process is listening on the expected address and port after a reboot or service restart.
  • Perform checkout, update, commit, and denied-access tests from a separate client.
  • Test both repository-wide and path-specific authz rules with representative accounts.
  • Verify ownership and group permissions for the account that actually serves requests, not just for your administrative login.
  • Create a backup and complete a restoration test before storing important history in the repository.
  • Document the repository URL, firewall scope, authentication source, backup location, and recovery procedure.

Which setup should you keep?

Keep native svnserve when you want a small, direct Subversion service on a controlled network and are comfortable managing its repository-local credential and authorization files. Keep Apache when users need HTTPS, your organization already operates Apache authentication and TLS, or several repositories should live below one web URL. Whichever transport you select, the essentials are the same: a correctly initialized repository, explicit authentication, least-privilege authorization, service-account filesystem access, restricted network exposure, and a backup that has been restored successfully.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.