# How to run `xds-server` has been designed to easily compile and debug [AGL](https://www.automotivelinux.org/) applications. That's why `xds-server` has been integrated into AGL SDK docker container. >**Note:** For more info about AGL SDK docker container, please refer to [AGL SDK Quick Setup](../../../../../getting_started/reference/getting-started/docker-container-setup.html) ## Start xds-server There are several way to install xds-server and start-up depend of installation type: | Installation type | Supported
host OS | Start-up | Install instructions | |-------------------|-------------------------|---------------------------------------------------|----------------------| | Docker container | Linux or MacOS | Automatic based on systemd user service | [see Installation based on Docker container](../../part-1/server-part.html#docker-container) | | Virtual Machine | Linux, MacOS or Windows | Automatic based on systemd user service | [see Installation based on VirtualBox appliance](../../part-1/server-part.html#virtualbox-appliance) | | Native | Linux | Automatic based on systemd user service or manual | [see Native installation](../../part-1/server-part.html#native) | | Native | MacOS or Windows | Manually | [see Native installation](../../part-1/server-part.html#native) | ### Automatic start-up based on systemd user service XDS server is started as a user service by Systemd. ```bash /usr/lib/systemd/user/xds-server.service ``` Use well-known systemd commands to control `xds-server.service` service. ```bash # Enter in docker container or VM # (optional, depending on installation type) ssh -p 2222 devel@localhost # Status XDS server: systemctl --user status xds-server # Restart XDS server systemctl --user restart xds-server ``` If needed you can change default setting by defining specific environment variables file ```bash ssh -t -p 2222 devel@localhost vim /etc/default/xds-server ``` For example to control log level, just set LOG_LEVEL env variable. knowing that supported *level* are: - panic - fatal - error - warn - info - debug ```bash docker exec ${CONTAINER_NAME} bash -c "echo 'LOG_LEVEL=debug' >> /etc/default/xds-server" ssh -p 2222 devel@localhost -- "systemctl --user restart xds-server" ``` ### Manual start-up On **Linux or MacOS**, simply execute `xds-server` executable: ```bash /opt/AGL/bin/xds-server ``` On **Windows**, simply execute `xds-server` executable: ```batch C:\AGL\bin\xds-server.exe ``` **Note:** Invoke `xds-server --help` to get more details about possible options that allow for example to change logging level or select another configuration file. ## XDS server REST API and Web application `xds-server` exposes a REST API and serves a basic web-application. REST API based url is `http://localhost:8000/api/v1/` when XDS server is running on your host (localhost) and basic web-application is available at `http://localhost:8000`. Just replace `localhost` by the host name or ip when `xds-server` is running on another host. ```bash # Get version using REST API curl http://localhost:8000/api/v1/version # Open browser and local xds-server web-application xdg-open http://localhost:8000 ``` Then follow instructions provided on this page to install and start `xds-agent` that must run locally on your machine. See also [xds-agent documentation](../2_xds-agent/0_abstract.html) for more details. ## SDK cross-toolchain Management ### Setup to add support of a new SDK family **Optional step**: read this chapter only if you plan to add a new SDK family. `xds-server` dynamically detects supported SDKs by scanning sub-directories of `sdkScriptsDir` directory (see [Configuration chapter](2_config.html)). Each sub-directory (usually name is the same as the SDK family) of `sdkScriptsDir` must contain a set of scripts that will be called by `xds-server` to managed SDKs of a specific family. These scripts are: - `add`: used to add/install a new SDK - `db-dump`: returned the list of available and installed SDKs (JSON format) - `db-update`: update SDKs database - `get-family-config`: returned SDK family configuration structure (JSON format) - `get-sdk-info`: extract SDK info (JSON format) from a SDK file/tarball - `remove`: used to remove an existing SDK For example, here 2 SDKs family (`agl` and `zephyr`) are defined: ```bash # > tree ./sdks/ ./sdks/ ├── agl │ ├── add │ ├── db-dump │ ├── db-update │ ├── get-family-config │ ├── get-sdk-info │ └── remove ├── README.md └── zephyr ├── add │ ├── db-dump │ ├── db-update │ ├── get-family-config │ ├── get-sdk-info └── remove ``` On startup `xds-server` will call in order: - `sdks/*/get-family-config` to get configuration of each SDK family. - `sdks/*/db-update` to update database (only when `SdkDbUpdate` is set to ̀`startup`, see [Configuration chapter](2_config.html) for more details) - `sdks/*/db-dump` scripts to get the initial list of available and installed SDKs. Please refer to `sdks/README.md` for more information about scripts definition and to understand how to add support of a new SDK family. ### Install a new SDK Please refer to [Installing AGL SDKs](../../part-1/install-sdk.html) chapter. ### Un-install a SDK from command line Used `sdks` command of `xds-cli` tool to managed SDKs. ```bash # List installed SDKs xds-cli sdks ls List of installed SDKs: ID NAME STATUS VERSION ARCH c39e5998 poky-agl_aarch64_4.0.1 Installed 4.0.1 aarch64 d610bfbf poky-agl-aarch64.current_on_iotbzh_download-3.99.1+snapshot Installed 3.99.1+snapshot aarch64.current_on_iotbzh_download a0ae663d poky-agl-corei7-64-3.99.1+snapshot Installed 3.99.1+snapshot corei7-64 87f0400b AGL-release-dab-3.99.3-m3ulcb-nogfx Installed 3.99.3 aarch64 352c0584 poky-agl-corei7-64-3.99.2+snapshot Installed 3.99.2+snapshot corei7-64 d65fe750 AGL-release-eel-latest-qemux86-64 Installed 4.99.5 corei7-64 # Un-install a SDK xds-cli sdks uninstall d65fe750 SDK ID d65fe750-d3a7-38f5-83d8-3d3806054f8d successfully deleted. ``` ### Un-install a SDK from XDS Dashboard Open XDS-Dashboard in web-browser and select `SDKs` entry in left side menu. If needed, switch to `BASIC SDKS VIEW` view and click on trash icon located in the top-right corner of SDK card.