# Getting Started on Linux

This guide walks through installing a locally accessible FoundationDB server that is suitable for development on Linux.

To install an externally accessible FoundationDB cluster on one or more machines, see Building a Cluster.

## First steps

- Validate your system meets the System requirements.

- Download the FoundationDB packages for your system from Downloads.

- Before upgrading from a previous version of FoundationDB, see Upgrading.

## Installing or upgrading FoundationDB packages

Warning

Unless using the Multi-version client, the installed client and server packages must have the same version. When upgrading a FoundationDB cluster, be sure also to upgrade all clients to the same version.

To install on Ubuntu use the dpkg command:

    user@host$ sudo dpkg -i foundationdb-clients_ON-1_amd64.deb \
    foundationdb-server_ON-1_amd64.deb

To install on RHEL/CentOS 6 use the rpm command:

    user@host$ sudo rpm -Uvh foundationdb-clients-ON-1.el7.x86_64.rpm \
    foundationdb-server-ON-1.el7.x86_64.rpm

To install on RHEL/CentOS 7 use the rpm command:

    user@host$ sudo rpm -Uvh foundationdb-clients-ON-1.el7.x86_64.rpm \
    foundationdb-server-ON-1.el7.x86_64.rpm

FoundationDB installs in a single-server mode appropriate for a development workstation. In this mode data is not replicated, and therefore the database is not failure tolerant. This default database is also configured to use the memory storage engine which, while using the disk for durability, requires data to fit in RAM.

By default FoundationDB uses the loopback IP (`127.0.0.1`). In this configuration all parts of FoundationDB, including client applications, must run on the same machine and communicate via `127.0.0.1`, not via external IPs.

## Testing your FoundationDB installation

To verify that the local FoundationDB database is operational, open the command line interface (`fdbcli`) and use the status command.

    user@host$ fdbcli
    Using cluster file `/etc/foundationdb/fdb.cluster'.

    The database is available.

    Welcome to the fdbcli. For help, type `help'.
    fdb> status

    Configuration:
      Redundancy mode        - single
      Storage engine         - memory
      Coordinators           - 1

    Cluster:
      FoundationDB processes - 1
      Machines               - 1
      Memory availability    - 4.1 GB per process on machine with least available
      Fault Tolerance        - 0 machines
      Server time            - Thu Mar 15 14:41:34 2018

    Data:
      Replication health     - Healthy
      Moving data            - 0.000 GB
      Sum of key-value sizes - 8 MB
      Disk space used        - 103 MB

    Operating space:
      Storage server         - 1.0 GB free on most full server
      Transaction log        - 1.0 GB free on most full server

    Workload:
      Read rate              - 2 Hz
      Write rate             - 0 Hz
      Transactions started   - 2 Hz
      Transactions committed - 0 Hz
      Conflict rate          - 0 Hz

    Backup and DR:
      Running backups        - 0
      Running DRs            - 0

    Client time: Thu Mar 15 14:41:34 2018

If these steps were successful you have installed and validated FoundationDB. You can now start using the database!

Note

If the database is not operational the `status` command will provide diagnostic information to help you resolve the issue.

## Managing the FoundationDB service

- See Starting and stopping.

- See Uninstalling.

## Next steps

- Install the APIs for Ruby, Python, Java or Go if you intend to use those languages. The C API was installed along with the `foundationdb-clients` package above.

- See Tutorials for samples of developing applications with FoundationDB.

- See Developer Guide for information of interest to developers, including common design patterns and performance considerations.

- See Administration for detailed administration information.

- See Known Limitations of the system.

- See Building a Cluster for step-by-step instructions on converting your local single-machine cluster to an externally visible cluster of one or more machines.