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.
You can self-host calendar and contact synchronization with Baïkal on a Linux VPS by placing its html directory behind Apache or Nginx, connecting PHP to SQLite, MySQL, or PostgreSQL, and publishing the CalDAV and CardDAV discovery paths over HTTPS. The reliable layout is a DNS name such as dav.example.org, a TLS-enabled virtual host, PHP-FPM, and a Baïkal installation kept outside the public web root except for html.
The two details that most often determine whether phones and computers connect are correct web-server redirects from /.well-known/caldav and /.well-known/carddav to /dav.php, and permissions that let the web-server process write Baïkal’s Specific and config directories during setup. The procedure below covers the architecture, installation, discovery, hardening, client enrollment, backups, and failure recovery.
What Baïkal provides
Baïkal is open-source server software for two standards: CalDAV, which synchronizes calendars, and CardDAV, which synchronizes address books and contacts. It is deliberately focused on those data types rather than being a complete file-sharing or collaboration suite. A web administration panel handles account and server administration, while clients continue to use standard DAV protocols.
Running it on a VPS gives you control over the hostname, TLS certificate, database, backups, and upgrade schedule. You are also responsible for operating-system updates, firewalling, certificate renewal, data protection, and restore testing. A VPS is therefore a good fit when you need a small, dedicated calendar/contact service and are comfortable maintaining a Linux server.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.
The reference VPS architecture
A production deployment normally has these components:
| Component | Role | Implementation choices |
|---|---|---|
| DNS name | Stable address that clients use for discovery and synchronization | dav.example.org pointing to the VPS |
| Web server | Terminates HTTPS, serves Baïkal, and routes DAV discovery requests | Apache or Nginx |
| PHP runtime | Executes Baïkal’s PHP application | PHP, commonly through PHP-FPM |
| Database | Stores account and synchronization data | SQLite, MySQL, or PostgreSQL |
| Baïkal web root | Only directory that should be exposed through HTTP | The installation’s html directory |
| Private application data | Configuration and, depending on the database choice, database-related files | Specific and config, denied from direct HTTP access |
Keep the downloaded Baïkal tree outside the virtual host’s public directory. If the archive is unpacked under /var/www/baikal, the virtual host should use /var/www/baikal/html as its document root, not /var/www/baikal itself. This arrangement prevents source files, configuration, and private data from being served accidentally.
Requirements and choices before installation
Software prerequisites
The project installation requirements are PHP, one supported database (MySQL, PostgreSQL, or SQLite), and either Apache or Nginx. Install the versions supplied for your Linux distribution that satisfy the Baïkal release documentation; the available PHP version and extensions vary by distribution and release, so do not assume a version number from another server guide.
Choosing a database
| Database | When it fits | Operational consideration |
|---|---|---|
| SQLite | Small, single-server deployments where a separate database service is unnecessary | The database is a file managed within the Baïkal data area; protect that area and include it in backups |
| MySQL | Deployments that already operate a MySQL service or want the database separated from the web process | Back up the database with a consistent database backup and retain the connection settings securely |
| PostgreSQL | Deployments that standardize on PostgreSQL or place the database on another host | Back up the database independently and verify network access from the VPS |
DNS and TLS
Create the DNS record before testing clients. Use a hostname that will remain stable; changing it later requires updating every client account. Obtain a valid TLS certificate for that hostname and configure HTTPS before enrolling users. DAV credentials and address-book data should not travel over unencrypted HTTP.
Plan the service account and filesystem
Know which operating-system user runs your web server or PHP-FPM pool. You will use that identity when granting write access to Specific and config. Keep broad write permissions out of the deployment: grant ownership or group access to the web process rather than making the entire tree writable by every local user.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Install Baïkal on the VPS
- Provision the host. Create a Linux VPS, apply the provider’s operating-system updates, and point your chosen DNS name at the VPS address. Install Apache or Nginx, PHP with its process manager if you use one, and your selected database engine.
- Download a release archive. Obtain the latest Baïkal release archive from the project’s releases page. Verify that the archive is the release you intend to operate, then transfer it to the VPS over your normal administration channel.
- Unpack outside the public root. Extract the archive into a private application directory. For example, an archive named
baikal-<version>.tar.gzcan be unpacked into a directory such as/var/www/baikal; the literal version depends on the release you downloaded. - Set the virtual-host root to
html. Configure Apache’sDocumentRootor Nginx’srootas/var/www/baikal/html(adjust the path to your installation). Do not point the site at the parent directory. - Grant setup-time write access. Make the
Specificandconfigdirectories writable by the web-server process. A typical ownership operation ischown -R <web-user>:<web-group> Specific configrun from the Baïkal directory, replacing the placeholders with the account used by your distribution. If your policy separates ownership from group access, grant only the directory and file permissions the installer needs. - Configure PHP handling. Connect the virtual host to the PHP-FPM socket or Apache PHP handler supplied by your operating system. Confirm that PHP requests are executed rather than downloaded as source code.
- Configure the database connection. For SQLite, select the local database option in the installer. For MySQL or PostgreSQL, create an empty database and a dedicated database account, then record the host, database name, username, and password for the wizard. Do not reuse a superuser account.
- Enable HTTPS and the DAV redirects. Complete the TLS virtual-host configuration and add the discovery rules described in the next section before testing clients.
- Run the setup wizard. Open the HTTPS hostname in a browser. The wizard writes Baïkal’s configuration and database files, so it must be able to write
Specificandconfig. Create the administrative account and at least one ordinary synchronization account. - Reduce permissions after setup only if your layout permits it. Baïkal must retain the access it needs for normal operation. If you temporarily granted broader write access for installation, replace it with the narrowest ownership and mode arrangement that still lets the service run.
Configure discovery and routing in Apache or Nginx
DAV clients commonly begin with the standardized well-known paths. Baïkal’s sample configurations redirect both paths to its DAV endpoint, /dav.php. If either path is missing, an iPhone, Mac, or other client can report that the account does not exist even though the main site loads.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsNginx essentials
Inside the TLS-enabled server block, use rules equivalent to the following. Merge them with your distribution’s PHP-FPM configuration rather than replacing a working server block wholesale:
root /var/www/baikal/html;
location = /.well-known/caldav {
return 301 /dav.php;
}
location = /.well-known/carddav {
return 301 /dav.php;
}
location ~ ^/(Specific|config|Core)(/|$) {
deny all;
}
location ~ /. {
deny all;
}
The first two locations provide discovery. The deny rules prevent direct requests for Baïkal’s private directories and hidden files. Keep the existing PHP-FPM handler for .php files and ensure the server’s fallback behavior does not bypass those deny rules.
Apache essentials
In the HTTPS virtual host, set DocumentRoot to the html directory and add redirects equivalent to:
Redirect 301 /.well-known/caldav /dav.php
Redirect 301 /.well-known/carddav /dav.php
Use Apache access controls to deny Specific, config, Core, and hidden files. The exact directive form depends on your Apache version and whether overrides are enabled, so validate the configuration with your distribution’s config-test command before reloading the service.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Check the response before adding clients
From any machine that can reach the VPS, run both checks:
curl -I https://dav.example.org/.well-known/caldav
curl -I https://dav.example.org/.well-known/carddav
Each request should return a redirect to /dav.php, not a 404. Follow the redirect with a normal HTTPS request and confirm that the endpoint is handled by Baïkal. A redirect response is expected at the well-known URL; a redirect loop, an HTTP downgrade, or a 404 indicates a virtual-host or routing error.
Finish the web installer safely
Open the HTTPS hostname, not an internal filesystem path, and complete the wizard. Select the database type, provide the dedicated database credentials when applicable, and create the administrator. Then create separate user accounts for people or devices rather than sharing the administrator password.
If the wizard reports that it cannot create configuration or database files, stop and correct ownership or permissions on Specific and config. Check the PHP-FPM or web-server error log for the exact path it could not write. Avoid solving a single permission error by making the whole VPS tree world-writable; that creates a larger security problem.
After the wizard succeeds, sign in to the administration interface, verify that the account exists, and create a test calendar and address book. Use those test objects for the first client enrollment so that discovery and authentication can be verified without risking an existing personal calendar.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Add clients and handle discovery failures
iPhone, iPad, and macOS
In the device’s account settings, choose the option for adding a calendar or contacts account, select the account type that uses CalDAV or CardDAV, and provide the Baïkal hostname and the account credentials. Let the client attempt automatic discovery through the well-known paths. Client labels and menu locations change across operating-system releases, but the required server identity is the same HTTPS hostname you tested with curl.
If automatic discovery fails while the redirects work in a browser, use the client’s manual-server field and enter the full DAV endpoint, for example https://dav.example.org/dav.php, when that field is available. This bypasses discovery and distinguishes a client UI problem from a server-routing problem.
Recommended Free Tools
Android
Android does not provide a universal built-in CalDAV/CardDAV account flow. Install a maintained CalDAV/CardDAV client such as DAVx⁵, add the HTTPS hostname and credentials, and allow it to discover or manually use /dav.php. Calendar and contacts applications then consume the accounts exposed by that synchronization client. Because Android vendor settings vary, verify the labels and permission prompts on the specific Android version in use.
Thunderbird
Thunderbird can subscribe to network calendars. Use its network-calendar workflow, provide the calendar’s DAV address or the server endpoint when prompted, and authenticate with the Baïkal account. Address-book integration depends on the Thunderbird version and installed capabilities, so test both a calendar refresh and a contact synchronization separately.
Windows 10
When Windows 10 clients connect, use Basic authentication over SSL. The Baïkal troubleshooting guidance notes that Windows 10 does not support Digest authentication. Never enable Basic authentication over plain HTTP; the TLS connection is what protects the credentials in transit.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Troubleshoot the failures that matter most
| Symptom | Likely cause | Fix |
|---|---|---|
/.well-known/caldav or /.well-known/carddav returns 404 |
The virtual host has no discovery rule, or the request reached a different virtual host | Add both redirects to /dav.php, verify the DNS name resolves to this VPS, reload the correct web server, and repeat both curl -I tests |
| Client reports that the server cannot be found although the home page loads | Discovery is missing, points to the wrong path, or redirects to HTTP | Check both well-known paths, confirm the redirect target is /dav.php, and keep every hop on HTTPS |
| HTTP 401 during login or synchronization | Wrong username/password or the web server failed to pass the Authorization header to PHP | Re-enter the Baïkal account credentials, inspect the server and PHP logs, and verify that the PHP handler forwards the HTTP Authorization header |
| Installer cannot create files or database | Specific or config is not writable by the web-server process |
Check ownership, group membership, directory execute permission, and the PHP-FPM user; correct the path named in the error and rerun the step |
| Private files appear in a browser | The document root points above html, or deny rules are absent |
Set the root to html, deny Specific, config, and Core, block hidden files, and retest direct URLs |
| Authentication works but no calendars or contacts appear | The account has no collection yet, or the client is using the wrong service type | Create a test calendar and address book in Baïkal, then add CalDAV and CardDAV separately in the client |
| Changes are visible on one device but not another | The second client has stale credentials, an incorrect endpoint, or has not completed a refresh | Confirm both clients use the same hostname and account, trigger a manual refresh, and inspect the server log for requests from the affected client |
When debugging, isolate one layer at a time: DNS and TLS first, then the well-known redirects, then PHP execution, then authentication, and finally collection synchronization. This order prevents a client-side error message from sending you back to a database permission problem that has already been solved.
Free tools Windows power users keep installed
One-click scans. No signup required.
Secure the installation before putting real data on it
- Expose only
html. The parent Baïkal directory contains application and configuration material that should never be downloadable. - Deny private paths explicitly. Block
Specific,config,Core, and hidden files at the web-server layer. TheSpecificdirectory can contain the SQL database in a SQLite deployment. - Require HTTPS. Use a valid certificate and redirect ordinary HTTP to HTTPS if you leave port 80 enabled for certificate issuance or redirection.
- Use separate accounts. Keep the administrator account for administration and create normal synchronization accounts for people and devices.
- Limit database privileges. A dedicated MySQL or PostgreSQL account should have access to Baïkal’s database, not unrestricted rights over the database server.
- Protect the VPS itself. Apply operating-system and PHP updates, restrict administrative SSH access, and allow only the network services you actually operate.
- Review logs. Retain enough web-server, PHP, and database logging to investigate failed authentication and unexpected requests without recording more personal data than your policy allows.
After hardening, request representative private paths from outside the server. They should be denied rather than returning file contents. Also verify that the redirect rules still work after adding deny rules; an overly broad regular expression can accidentally block /.well-known.
Back up data and prove that recovery works
Back up the database and Baïkal’s Specific data directory to storage outside the VPS. For MySQL or PostgreSQL, create a consistent database backup using the engine’s supported backup method; for SQLite, copy the database only when it is in a consistent state. Preserve the Baïkal web-server configuration and TLS renewal configuration as part of your server recovery records.
The official documentation does not prescribe a numeric backup interval, retention period, or recovery-time objective. Set those values from the importance of your calendars and contacts: a heavily used shared calendar deserves more frequent backups and longer retention than a disposable test server. Keep at least one copy unavailable to the VPS account that runs Baïkal, and encrypt backups when your storage system supports it.
Test a restore on a separate host or isolated directory. Confirm that the restored database opens, that Specific is readable by the service, that the web root still points only to html, and that a test client can authenticate and see its collections. A backup that has never produced a working restore is only an assumption.
Outdated 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 matchPC 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 & 11Baïkal compared with broader DAV choices
Baïkal, Radicale, and Nextcloud can all be evaluated against the same operational questions, but they target different scopes:
| Comparison axis | Baïkal | Radicale | Nextcloud |
|---|---|---|---|
| Web administration and account management | Focused DAV server with a web administration panel | Lightweight DAV service; administration workflow depends on its deployment and authentication setup | Full web application with broader administration |
| Database and storage model | Supports SQLite, MySQL, and PostgreSQL | Uses its own lightweight storage and configuration approach | Uses a broader application stack and database configuration |
| Client discovery | Requires the well-known CalDAV and CardDAV redirects to /dav.php |
Uses DAV endpoints configured for that installation | Provides DAV endpoints as part of a larger web platform |
| Operational footprint | Small, focused calendar/contact service | Small DAV-focused service | Larger because file storage and collaboration features are included |
| Sharing and permissions | Concentrates on account and DAV collection administration | Depends on the configured authentication and storage model | Broader sharing and collaboration controls |
| Need for file storage or a suite | Choose it when you primarily need calendars and contacts | Choose a DAV-focused alternative when its deployment model fits | Choose a broader suite only when file storage or integrated collaboration justifies the added complexity |
The right choice is therefore an operational decision, not a protocol decision: all three can speak DAV, but only the focused options keep the service narrowly centered on calendars and contacts. If your requirement is simply reliable synchronization on a VPS, Baïkal’s small scope can reduce the number of components you must maintain.
Ongoing operating checklist
- Renew the TLS certificate before expiry and test HTTPS afterward.
- Apply operating-system, PHP, web-server, database, and Baïkal updates through a change process.
- Re-run both well-known
curl -Ichecks after every web-server configuration change. - Monitor failed logins and unexpected requests for private paths.
- Confirm that database and
Specificbackups completed and that a recent restore test succeeded. - When a client is replaced, revoke or change the associated account credentials rather than leaving an unknown device authorized.
With the public root limited to html, both discovery redirects present, HTTPS enforced, and recoverable backups in place, Baïkal provides a compact self-hosted CalDAV and CardDAV service that standard clients can use without depending on a larger collaboration platform.
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.

