.. _getting-started:

Getting Started
===============

Xandikos can either be run in a container (e.g. in docker or Kubernetes) or
outside of a container.

It is recommended that you run it behind a reverse proxy, since Xandikos by
itself does not provide authentication support. See :ref:`reverse-proxy` for
details.

Running from systemd
--------------------

Xandikos supports socket activation through systemd. To use systemd, run something like:

.. code-block:: shell

   cp examples/xandikos.{socket,service} /etc/systemd/system
   systemctl daemon-reload
   systemctl enable xandikos.socket

Running from docker
-------------------

There is a docker image that gets regularly updated at
``ghcr.io/jelmer/xandikos``.

If you use docker-compose, see the example configuration in
``examples/docker-compose.yml``.

To run in docker interactively, try something like:

.. code-block:: shell

   mkdir /tmp/xandikos
   docker run -it -v /tmp/xandikos:/data -p8000:8000 ghcr.io/jelmer/xandikos

The following environment variables are supported by the docker image:

 * ``CURRENT_USER_PRINCIPAL``: path to current user principal; defaults to "/$USER"
 * ``AUTOCREATE``: whether to automatically create missing directories ("defaults", "empty")
 * ``ROUTE_PREFIX``: HTTP prefix under which Xandikos should run

Running from kubernetes
-----------------------

Here is an example configuration for running Xandikos in kubernetes:

.. literalinclude:: ../../examples/xandikos.k8s.yaml
   :language: yaml

If you're using the prometheus operator, you may want also want to use this service monitor:

.. literalinclude:: ../../examples/xandikos-servicemonitor.k8s.yaml
   :language: yaml
