# Standalone Application

## Overview

This standalone application is based on Electron which encapsulates the whole
docker-registry-ui in a single executable, that can be run on your local
computer.

## Building
* Check out or download the repository, open a terminal at the checkout
  directory, download the dependencies and build the web app:
    ```bash
    npm install
    npm run build
    ```
* After building the web application, navigate to the ```electron``` directory
  and execute following commands to build the executable:
    ```bash
    cd electron
    npm install
    npm run dist
    ```
If you encounter any issues, please check the troubleshooting below.


## Password Protected Registries
If you want to interact with password protected Docker Registries, this
application will use the keystore of your system to gather the credentials for
accessing the Registry.

This is accomplished with the [keytar](https://www.npmjs.com/package/keytar)
package. In concjunction with keytar, the integrated credential
helper supports you with managing the credentials to the Registries.

![alt Authentication on macOS](./doc/assets/authentication.gif)


## Troubleshooting
*   Problem: The application does not start with ```npm start``` and exits with following message:
    ```
    [7742:0509/001117.199224:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that ./node_modules/electron dist/chrome-sandbox is owned by root and has mode 4755.
    ```

    Solution: Add proper rights to the chrome-sanbox
    ```bash
    sudo chown root ./node_modules/electron/dist/chrome-sandbox
    sudo chmod 4755 ./node_modules/electron/dist/chrome-sandbox
    ```

* Problem: I am on Linux and to not have any password wallet for keytar.

  Solution: Install following dependencies according to the official [setup instructions](https://atom.github.io/node-keytar/) for keytar on Linux:
    * Debian/Ubuntu: ```sudo apt-get install libsecret-1-dev```
    * Red Hat-based: ```sudo yum install libsecret-devel```
    * Arch Linux: ```sudo pacman -S libsecret```


