Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
VGSources
Blog

How to Use Capistrano to Automate Deployments to a VPS

A practical Capistrano 3 guide for deploying Ruby and Rails applications to a VPS, covering SSH preparation, stage configuration, shared files, dry runs, Rails tasks, verification and rollback.
Length12 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Capistrano automates a repeatable SSH deployment to an already provisioned VPS. Add Capistrano 3 to your Ruby application’s development bundle, generate its configuration, define the repository, stage, server, release path and persistent files, then run bundle exec cap production deploy. Capistrano checks prerequisites, creates a timestamped release, links shared data, switches the current symlink and removes old releases.

What Capistrano does on a VPS

Capistrano is a deployment automation framework built on Ruby, Rake and SSH. It runs from your project machine, connects to the VPS, and executes the same deployment tasks in the same order each time. It does not provision a server, install an operating system, create a database, or replace your application’s process manager. You prepare those pieces separately; Capistrano automates the procedure you would otherwise perform manually over SSH.

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.

A Capistrano deployment normally uses three directories below :deploy_to:

Path Purpose What happens during a deployment
current Stable path used by the running service A symlink is moved to the newest successful release only after deployment tasks finish.
releases Versioned application checkouts Each deployment receives a separate release directory; old releases can be retained for rollback.
shared Persistent data outside individual checkouts Configured linked files and directories are stored here and symlinked into every release.

This layout means a fresh checkout does not overwrite uploads, logs, sockets, cache data, Bundler configuration or secrets. It also gives you a fast rollback mechanism: Capistrano can point current at an earlier release instead of rebuilding that release from scratch.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

The deployment lifecycle

  1. Capistrano loads the selected stage and checks its prerequisites.
  2. It connects to the declared VPS roles over SSH.
  3. It creates a new directory under releases and fetches the requested source revision with the configured SCM.
  4. It installs or prepares dependencies and runs application tasks loaded through the Capfile.
  5. It creates links from shared into the new release.
  6. It runs migrations, asset compilation or other configured tasks.
  7. It publishes the release by moving the current symlink.
  8. It removes releases beyond the configured retention count.

If a task fails before publication, the previous current release remains active. A successful task run does not by itself prove that your web server, application process manager or background workers restarted correctly, so check the service after publication.

Prerequisites: prepare the project and VPS

Local machine requirements

  • A Ruby project managed with Bundler and a source-control repository.
  • Ruby 2.5 or newer for the version documented by the official Capistrano quick start. Confirm this requirement against the Capistrano release you actually pin, because supported Ruby versions can change.
  • An SSH client and a key that can authenticate to the deployment account.
  • Permission to modify the project’s development bundle and commit the generated Capistrano files.

VPS requirements

  • A dedicated, non-privileged deployment user rather than a routine login as root.
  • Ruby, Bundler and all runtime dependencies required by the application.
  • The SCM executable used by the project, such as Git, available to the deployment user on the VPS. Capistrano invokes it remotely; having it only on your laptop is not enough.
  • An application parent directory owned or writable by the deployment user, for example /var/www/myapp.
  • SSH public-key authentication and a non-interactive POSIX shell.
  • A process manager, reverse proxy, database and any system packages your application needs, configured independently of Capistrano.

Test the exact account and key before configuring Capistrano:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
ssh [email protected] 'ruby --version && bundle --version && git --version'

The command should complete without a password prompt, interactive confirmation, or a request for terminal input. If a deployment requires interactive sudo, a shell profile that prints text, or a missing host-key confirmation, fix that first. Non-interactive SSH failures are otherwise easy to mistake for Capistrano configuration errors.

SSH and permissions checklist

  • Install the deployment key for the remote user and restrict its permissions locally.
  • Ensure the remote user can read the repository, either through an accessible public repository or a deploy key/agent arrangement appropriate to your SCM.
  • Ensure the remote user owns the application directory and can create releases and shared.
  • Give the running application process read/write access only to the shared paths it needs.
  • Put secrets in a protected shared file or an external secret mechanism; do not commit production credentials to the repository.

Install Capistrano 3 in the project

Add Capistrano to the development group so deployment tooling is available to developers and CI without becoming an application runtime dependency:

group :development do
  gem "capistrano", require: false
end

Pin a version compatible with the application’s Ruby and Bundler versions, then install the bundle:

bundle install

From the project root, generate the standard configuration:

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.
bundle exec cap install

This creates a Capfile, a shared config/deploy.rb, and stage files such as config/deploy/production.rb and config/deploy/staging.rb. Treat generated values as templates. The generated host, repository, user and paths are not automatically correct for your VPS.

Configure the shared deployment settings

Put values common to every stage in config/deploy.rb. A practical starting point is:

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
set :application, "myapp"
set :repo_url, "ssh://git.example.net/team/myapp.git"
set :branch, "main"
set :deploy_to, "/var/www/myapp"

append :linked_dirs,
       "log",
       "tmp/pids",
       "tmp/cache",
       "tmp/sockets",
       "vendor/bundle",
       ".bundle",
       "public/uploads"

append :linked_files,
       "config/database.yml",
       "config/secrets.yml"

Choose the repository and branch policy

:repo_url must be reachable by the remote deployment account using the SCM credentials available on the VPS. :branch can be a fixed branch such as main, or you can override it per stage. A fixed production branch reduces accidental deployments from a developer’s local branch; a release-tag policy can provide stricter change control if your team already uses tags.

Choose the deployment root

:deploy_to is the parent of releases, shared and current. Point your web server and process manager at /var/www/myapp/current, not at a timestamped release directory. That keeps service configuration stable while Capistrano changes the symlink.

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

Configure linked directories

Use append :linked_dirs for data that must survive a new checkout: logs, process IDs, sockets, caches, uploaded files, or a shared Bundler directory. Capistrano creates the corresponding directories under shared and links them into each release. Add only paths that are genuinely persistent. For example, a cache can be shared if its contents are safe across releases; generated build output that must be isolated should remain inside the release instead.

Configure linked files

Use append :linked_files for files that are environment-specific and should not be committed, such as database configuration or application secrets. Create each file under /var/www/myapp/shared before the first deployment, with ownership and permissions that allow the application to read it. A linked-file declaration cannot supply a missing secret; the deployment will fail when Capistrano tries to create a link to a file that does not exist.

Do not blindly copy the Rails examples into a non-Rails application. Select paths from the application’s actual runtime configuration and secret-management design.

Define the production VPS in its stage file

Keep host-specific values in config/deploy/production.rb so staging can use a different machine and settings:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
server "app.example.net",
       user: "deploy",
       roles: %w[app web db],
       primary: true

set :branch, "main"

You can use an IP address instead of a hostname if DNS is not configured. The roles describe which Capistrano tasks may target the server:

  • app identifies the application runtime host.
  • web identifies the host involved in web-facing tasks.
  • db identifies the host on which database tasks, such as migrations, should run.

On a single VPS it is normal for one server declaration to carry all three roles. On separate machines, declare each host and assign only the roles it should receive. Keep production credentials, hostnames and branch overrides out of the shared file when they differ by environment.

Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

Add a staging stage

The generated staging file gives you a safe place to validate the workflow. Give it its own hostname, deployment root and branch, and use staging-specific linked files. A stage is selected by the command name, so production and staging remain explicit:

bundle exec cap staging deploy
bundle exec cap production deploy

Load the integrations your application needs

The Capfile loads Capistrano’s core tasks and optional integrations. A Rails application commonly uses:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
require "capistrano/setup"
require "capistrano/deploy"
require "capistrano/bundler"
require "capistrano/rails"

Use capistrano/rails when you want the Rails integration, including its standard migration and asset tasks. If you need only those pieces, load the narrower assets and migrations integrations instead. For a non-Rails application, omit the Rails require and define the application’s build, restart and health-check tasks yourself.

The Bundler integration runs bundle-related deployment steps. Persist .bundle in linked_dirs only when the application needs a shared Bundler configuration or shared bundle location. Otherwise, use the dependency layout appropriate to your runtime.

Run a dry run, then publish the first release

Inspect prerequisites and task dependencies

From the project root, use the bundle-qualified command so Capistrano and its plugins come from the project’s lockfile:

bundle exec cap production deploy --prereqs

This displays prerequisite relationships and is useful when a custom task appears to run in an unexpected order. To see detailed task execution and a full error backtrace, add --trace.

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.

Perform a no-change check

Run:

bundle exec cap production deploy --dry-run

A dry run lets you inspect the task plan without changing the server. It is useful for confirming that the intended stage loads, the expected roles are selected and custom tasks are present. It does not prove that repository authentication, filesystem permissions, migrations or service restarts will succeed, so treat it as a plan check rather than a deployment test.

Deploy

When the stage and SSH checks are correct, publish the release:

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
bundle exec cap production deploy

Watch for the repository checkout, dependency installation, linked-path creation, application tasks and final publication. If the command stops before the publication step, inspect the reported task and leave the existing service running while you correct the cause. Re-run the deployment after fixing the underlying issue rather than manually editing the current symlink.

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

Verify the running service

After Capistrano reports success, check the application through its normal health endpoint or user-facing URL, inspect the process manager status and review the new release’s logs. A deployment can complete while a process still runs old code, a socket path is wrong, a migration failed in a separate step or a reverse proxy points at the wrong directory. Make service verification part of your release procedure.

Rails deployments: migrations, assets and persistent data

The Rails integration supplies tasks including cap deploy:migrate and cap deploy:compile_assets. Use them only when the application needs them and when the database and asset toolchain are available on the VPS.

Common Rails persistent paths include:

  • log for application logs.
  • tmp/pids for process identifiers.
  • tmp/cache for cache data.
  • tmp/sockets for Unix sockets used by an application server.
  • vendor/bundle or .bundle for a shared dependency configuration.
  • An upload directory such as public/uploads.

Common persistent files include config/database.yml and config/secrets.yml, although newer Rails applications may use encrypted credentials or environment variables instead. Configure the mechanism your application actually reads. A file that exists in shared but is not declared as linked will not appear in the release.

Database migrations are not automatically a substitute for a safe schema rollout. For changes that require old and new application versions to coexist, design a backward-compatible migration sequence and coordinate the process restart separately.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Rollback a bad release

If the newly published release is unusable, use Capistrano’s rollback task:

bundle exec cap production deploy:rollback

The rollback changes current back to a prior release retained under releases. It does not undo a database migration, restore overwritten user data, repair a malformed VPS, recreate a missing shared secret or fix a broken process-manager configuration. Treat database changes and persistent data as separate recovery concerns.

Before relying on rollback, retain enough releases for the recovery window and make sure the previous release still has access to the shared files and directories it expects. After the symlink changes, restart or reload the application process if your runtime requires it, then verify the service and logs.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Troubleshoot common failures

Symptom Likely cause Fix
SSH asks for a password or hangs The key, host key, agent or shell is not usable non-interactively. Test the exact ssh deploy@host command, install the correct public key, accept the host key through your normal provisioning process and remove interactive shell prompts.
Repository checkout fails The VPS lacks the SCM binary or the deployment account cannot read the repository. Install the required SCM on the VPS and test repository access as the deployment user.
Cannot create releases or shared The deploy user does not own or have write permission to :deploy_to. Create the parent directory with the intended owner and correct its permissions; avoid granting unnecessary root access.
Deployment reports a missing linked file A declared file was not created under shared. Create the file with the correct secret contents, owner and mode, then rerun the deployment.
Assets or migrations do not run The relevant plugin is not loaded, dependencies are absent, or the task is not in the expected stage. Check the Capfile, run with --trace, confirm the task name and verify runtime dependencies on the VPS.
New code is deployed but the site serves old code The process manager was not restarted or the proxy points somewhere other than current. Point services at current, add an explicit restart or reload task, and verify the process and proxy configuration.
Rollback appears to work but the app still fails The failure is outside the release symlink, such as an incompatible migration, missing shared data or a service configuration error. Address the database, shared state or service configuration separately; rollback only selects an earlier release.

For an opaque failure, rerun the command with --trace, identify the first failing task rather than the last stack-trace line, and reproduce that task manually as the deployment user. This usually distinguishes SSH, permissions, dependency, application and service-manager problems.

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

Operational practices that make Capistrano dependable

Keep deployment code versioned

Commit the Capfile, config/deploy.rb and stage files with the application or in the deployment repository used by your team. Review changes to hosts, branches, linked paths and restart tasks like production code.

Separate provisioning from deployment

Install operating-system packages, Ruby, Bundler, databases, reverse proxies, process managers and firewall rules through your server-provisioning process. Capistrano assumes those prerequisites exist; mixing one-time provisioning commands into every release makes deployments slower and less predictable.

Limit the release footprint

Retain enough releases to cover your rollback policy, but remove obsolete releases so disk usage does not grow indefinitely. Monitor the filesystem, especially when logs, uploaded files or compiled assets are large.

Make restarts and health checks explicit

Capistrano can run custom tasks for restarting or reloading an application process and for checking a health endpoint. Define those tasks deliberately for your process manager, and place the health check after publication so a failed check stops the release procedure or triggers your recovery path.

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

Protect secrets and uploads

Shared files should be readable only by the accounts that need them. Back up uploads and other persistent data independently of the release directories. A rollback is not a backup strategy.

When Capistrano fits a VPS workflow

Capistrano is a strong fit when you control one VPS or a small set of similarly managed servers, can provide SSH access, and want release directories with symlink-based rollback. Its stage files make production and staging explicit, and its task system lets you encode the exact commands your team already trusts.

It is less suitable when your platform does not permit SSH-based administration, when deployments must run entirely from immutable images or containers, or when server provisioning and fleet scheduling are the primary problem. Capistrano does not automatically provision infrastructure or coordinate a large fleet. In those environments, an artifact- or image-centered pipeline may be a better foundation, with Capistrano retained only where its SSH task model is appropriate.

A repeatable deployment checklist

  1. Confirm the application bundle, Ruby compatibility and pinned Capistrano version.
  2. Verify non-interactive SSH as the dedicated deployment user.
  3. Verify Ruby, Bundler, the SCM binary and application dependencies on the VPS.
  4. Check ownership and write access to :deploy_to.
  5. Review :repo_url, branch and stage roles.
  6. Create every declared linked file under shared and set secure permissions.
  7. Confirm linked directories cover uploads, sockets, logs and other data that must persist.
  8. Run --prereqs, then --dry-run.
  9. Deploy with bundle exec cap production deploy.
  10. Verify the service, logs, migrations, assets and health endpoint.
  11. Keep sufficient releases and know the rollback command before an incident.

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.

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

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 quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

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.