What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
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.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteChoose 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.
#1 Best Overall
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:
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.
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
- 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:
trunkfor the main development line;branchesfor parallel lines of development; andtagsfor named snapshots.
You can create them from an empty local directory and import them:
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →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.
Rank #3
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:
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchsudo 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
- 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.
- Run
svn lswith an allowed account and confirm the expected project directories appear. - Modify a test file in the working copy and run
svn commit -m "Test server write access". - Repeat with an account that should have no access; it should be rejected rather than silently treated as anonymous.
- Try a path covered by a restrictive
authzrule 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.
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:
<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:
Best Value
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.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →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 = nonein the native configuration and requiring valid users in Apache. - Use
authzrules 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
svnserveto a specific interface with--listen-hostwhen 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 --versionandsvnserve --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
authzrules 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.
Recommended Free Tools
Quick Recap
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.




