iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
Install Ubuntu’s subversion package, create a repository under a controlled directory, configure svnserve authentication and path permissions, then test from a separate client. For browser-friendly or Internet-facing access, use Apache httpd with mod_dav_svn and HTTPS instead of exposing the native svn:// protocol directly.
What an Ubuntu SVN server does
Subversion (SVN) stores versioned files in a repository and lets clients check out working copies, commit changes, inspect history, and create branches or tags. Installing the client alone is not enough for remote access: the server must expose the repository through one of Subversion’s two server mechanisms.
svnserve is the small, standalone server that speaks Subversion’s custom svn:// protocol. Apache httpd with mod_dav_svn exposes repositories through HTTP or HTTPS using WebDAV. The repository data is the same; the transport, authentication integration, firewall rules, and operational model differ.
Choose svnserve or Apache before installing
| Consideration | Native svnserve | Apache with mod_dav_svn |
|---|---|---|
| Transport | Subversion’s custom svn:// protocol |
HTTP/WebDAV, normally http:// or https:// |
| Best fit | A small, dedicated SVN service with a simple network boundary | An existing web server, centralized Apache authentication, or HTTPS access |
| Authentication | Repository-local passwd and authz files, unless a global configuration is supplied |
Apache authentication, such as an AuthUserFile, plus repository authorization |
| TLS | Not provided by the basic daemon command; protect the network by other means | Configure TLS in Apache and use an https:// URL |
| Firewall exposure | TCP port 3690 by default | Apache’s HTTP or HTTPS ports |
| Repository URL shape | svn://server.example/myrepo |
For example, https://server.example/svn/myrepo |
| Several repositories | One controlled repository root can contain many repositories | SVNParentPath publishes multiple repositories below one URL prefix |
Use svnserve when you control the clients and want the smallest moving part. Use Apache when HTTPS, web-server operations, or existing Apache identity controls are requirements. Do not assume that changing the URL scheme alone adds encryption: the native daemon command does not create TLS.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Prerequisites and a safe layout
- An Ubuntu system that remains reachable by clients and has administrative
sudoaccess. - A hostname or IP address that clients can resolve, such as
server.example. - A decision about which account will run the server process and which group can read and write repository files.
- A firewall policy that allows only the chosen service and trusted source addresses.
- A backup location and a written restore procedure before production commits begin.
The examples use /srv/svn as the repository root and myrepo as the first repository. Keeping repositories outside user home directories makes ownership, backups, and service permissions easier to reason about.
Install Subversion on Ubuntu
-
Refresh package metadata:
sudo apt update -
Install the native client and server package:
sudo apt install subversionUbuntu’s Subversion package includes
svnserve. Check the installed build and confirm that the expected binaries are present:The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.svn --version -
If you chose Apache, install Apache httpd and Ubuntu’s separate package that provides the
mod_dav_svnintegration for your release. The integration package is distinct from the basesubversionpackage; verify the package name offered by the target Ubuntu release before installing it.
Package versions change with Ubuntu updates. The Ubuntu Noble manpage identified svnserve as version 1.14.3-1build4 at the time it was checked; treat that number as release-specific and re-check your own system with svn --version.
Create the repository
-
Create a dedicated root with restrictive initial permissions and the
subversiongroup:sudo install -d -m 0750 -o root -g subversion /srv/svn -
Initialize the repository:
sudo svnadmin create /srv/svn/myrepo -
Inspect the generated tree. It contains the repository database and a
confdirectory with the files used bysvnserve:Recommended: PC Feels Slow? A Free Scan Shows What's Dragging Windows Down →Recommended: Crashes or Glitches? A Free Driver Scan Usually Finds the Culprit →Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.Rank #2
SaleAnker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
sudo ls -la /srv/svn/myrepo/conf
A new repository does not automatically contain project directories. The conventional project layout is trunk for the main line, branches for parallel lines of development, and tags for named snapshots. Create that layout through an SVN client after the server is reachable, or import an existing project into those paths. The layout is a convention rather than a requirement; authorization rules must match whatever paths you actually use.
Configure svnserve authentication and authorization
Edit /srv/svn/myrepo/conf/svnserve.conf. The configuration format is whitespace-sensitive in common Ubuntu examples, so remove leading whitespace from the settings shown below.
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My Ubuntu SVN Repository
This configuration disables anonymous access, allows authenticated users to write, and tells svnserve to read credentials from the repository’s conf/passwd file and path rules from conf/authz. The realm is the name clients display when asking whether to cache credentials.
Add repository users
Edit /srv/svn/myrepo/conf/passwd and add users under the [users] section:
Free tools Windows power users keep installed
One-click scans. No signup required.
[users]
alice = replace-with-a-long-password
Replace the example password with a unique, long secret. This file is a simple repository-local credential database; protect its filesystem permissions and do not reuse these credentials for operating-system accounts.
Restrict paths with authz
Edit /srv/svn/myrepo/conf/authz. A least-privilege example that grants Alice access to the whole repository is:
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
[groups]
developers = alice
[/]
@developers = rw
* =
The [groups] section makes future membership changes easier. In the path section, rw grants read and write access to the named group, while * = denies everyone else. For separate projects, add path sections such as [/project-a] and assign only the groups that need those paths. Test both an allowed path and a path that should be denied; a typo in a section name can produce an unexpectedly broad or unexpectedly blocked permission.
By default, svnserve reads the repository’s conf/svnserve.conf. An administrator can instead provide a global configuration with --config-file; if you use that option, document which file is authoritative so later edits do not target the wrong configuration.
Start svnserve
Start a daemon rooted at /srv/svn:
sudo svnserve -d -r /srv/svn
The -r option makes the supplied directory the server’s repository root. Clients therefore address myrepo, not the server’s full filesystem path. In daemon mode, svnserve listens on TCP port 3690 by default.
When binding to a particular interface or using a non-default port, supply --listen-host or --listen-port. Restricting the listening address is useful when only an internal interface should accept SVN traffic.
For a temporary foreground diagnostic run, use:
sudo svnserve -d --foreground -r /srv/svn
Run that diagnostic only while investigating startup or connection behavior. For a long-lived deployment, ensure the process is managed by your chosen service mechanism and runs with an account that has the required repository permissions. Verify ownership and group access for that account rather than assuming that the account launching the command will always be the account serving requests.
Test from a separate client
Testing over the network catches DNS, firewall, authentication, and permissions problems that a local filesystem check will miss.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
-
List the repository as the configured user:
svn ls svn://server.example/myrepo --username aliceThe client should prompt for Alice’s password unless credentials are already cached. A successful empty listing is still a useful result: it proves the repository can be reached and authenticated even if no project directories exist yet.
-
Check out the conventional trunk path:
svn checkout svn://server.example/myrepo/trunk working-copy --username alice -
Make a harmless file change, run
svn status, and commit withsvn committo verify write access. Use a disposable test path if the repository is already in use. -
Repeat the test with a user who should be denied, and test a path covered by a restrictive
authzrule. Confirm that unauthorized reads and commits fail rather than relying on the successful-user test alone.
On the server, confirm that the expected process is listening and that the firewall exposes only the intended port. Check the installed build with svn --version on both sides when client/server compatibility is in question.
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 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteSecure the native protocol
- Do not enable anonymous writes. Keep
anon-access = noneunless you have a narrowly defined, read-only use case. - Limit network reachability. Open TCP 3690 only to trusted addresses, or choose a different port and bind to an internal interface with
--listen-host. - Use path authorization. Repository access is not the same as permission to every project path. Maintain explicit
authzgroups and test denials after changes. - Protect credential files. The repository’s
conf/passwdandconf/authzfiles should be readable only by the service account or administrative group that needs them. - Prefer TLS for Internet-facing service. The basic
svnservecommand does not provide HTTPS-style encryption. Put an Internet-facing deployment behind an approved encrypted access design, or use Apache with TLS. - Back up before production use. Back up the repository directory, retain more than one recovery copy, and document how a restored directory will be made available with the correct owner and group.
Serve repositories through Apache and HTTPS
Apache httpd with mod_dav_svn is the alternative server process. It speaks WebDAV over HTTP and can use Apache’s authentication and TLS features. Choose it when repositories should share an existing web-server URL space, when several repositories need one common prefix, or when clients must connect through HTTPS.
Install Apache and the Ubuntu package that supplies mod_dav_svn for your release, enable the required modules, and place a site or configuration fragment similar to this:
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
<Location /svn>
DAV svn
SVNParentPath /srv/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/subversion/passwd
Require valid-user
</Location>
SVNParentPath means that each repository directly below /srv/svn is available beneath /svn; for example, /svn/myrepo. If you are publishing exactly one repository, Apache can use SVNPath instead, pointing directly at that repository. Ubuntu’s Apache guidance supports both forms.
The example uses HTTP Basic authentication, so configure TLS before exposing it beyond a trusted network and use an https:// URL. Keep Apache’s password file separate from the repository-local passwd file unless you intentionally design a shared identity system. Apache still needs filesystem access to the repository and its authorization data; verify those permissions under the account that runs Apache.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
After reloading Apache, test a listing and checkout with the HTTPS URL, then test a rejected login and a denied path. A valid web-server response does not prove that repository authorization is correct.
Common failures and fixes
Connection refused or timeout
- Check that the
svnserveprocess is running and listening on the expected interface and port. - Confirm that the client hostname resolves to the intended server.
- Review firewall rules on the server and any network firewall between client and server.
- If you changed the port, make sure clients use the matching URL and port.
Authentication fails for a user that exists
- Recheck the username and password in the repository’s
conf/passwd. - Confirm that
password-db = passwdis present in the activesvnserve.conf. - Remove accidental leading whitespace from configuration keys.
- Ensure the running process can read the repository’s configuration files.
Login succeeds but a checkout or commit is denied
- Inspect the matching
authzpath section and group membership. - Remember that
* =explicitly denies users who are not granted access elsewhere. - Check filesystem ownership and group permissions for the account serving the repository.
- Test the exact repository path, including case and spelling.
Apache returns an error or the repository is not found
- Use
SVNPathfor one repository orSVNParentPathfor a directory containing multiple repositories; using the wrong directive changes URL resolution. - Verify that the
mod_dav_svnintegration is installed and enabled. - Check the Apache authentication file and ensure
Require valid-usermatches your intended policy. - Confirm Apache can read and write the repository with its own service account.
- For remote use, test the TLS URL and certificate configuration rather than falling back to unencrypted HTTP.
Production checklist
svn --versionreports the expected client/server build.- The repository exists under the planned root and has the intended owner, group, and mode.
- Anonymous access is disabled unless deliberately required.
- Users and groups are defined in
passwdandauthz, with explicit denied paths tested. - The daemon or Apache process is listening on the expected interface and port.
- A separate client has completed an authenticated listing and checkout.
- A controlled commit has verified write access.
- An unauthorized user or path has been shown to fail.
- Only the required firewall ports and source addresses are allowed.
- Internet-facing access uses TLS through Apache or another approved encrypted design.
- Repository backups and restoration steps are documented and periodically checked.
Frequently Asked Questions
What port does svnserve use on Ubuntu?
Daemon mode uses TCP port 3690 by default. You can select another port with --listen-port and should allow only the required port through the firewall.
Can I host more than one repository?
Yes. Put repositories below the controlled root passed with -r. With Apache, use SVNParentPath when several repositories share one URL prefix.
Does svnserve encrypt passwords and repository traffic?
The basic native daemon command does not provide HTTPS-style TLS. For Internet-facing access, prefer Apache with TLS or another encrypted network design, and never enable unauthenticated write access.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsWhy does authz appear to ignore my rule?
Check the exact repository path, group membership, and configuration syntax. Remove leading whitespace from svnserve.conf settings, confirm that authz-db = authz is active, and test both an allowed and a denied path.
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.

