# Instalacja w kontenerze Docker

{% tabs %}
{% tab title="Docker" %}

## Wdrożenie <a href="#deployment" id="deployment"></a>

1. Aby zainstalować **agenta Xopero ONE** wewnątrz **kontenera Docker**, użyj obrazów dostępnych w serwisie **Docker Hub**:

```docker
docker pull xopero/gitprotect-agent:latest
```

2. Utwórz na hoście katalog dla baz danych kontenera (które wewnątrz kontenera znajdują się w lokalizacji `/app/Xopero`), aby przechowywać je poza kontenerem:

```docker
mkdir -p /opt/gitprotect-agent/data
```

3. Uruchom kontener z prawidłowym montowaniem wolumenu i zmiennymi środowiskowymi, używając poniższego polecenia:

```docker
docker run -v /host/path:/container/path -e ENV_VAR=value image_name
```

```docker
docker run -d \
  --name <container_name> \
  -e ManagementServiceUrl="<your_xopero_one_service_URL>" \
  -e XoperoOverriddenHostName="<device_name>" \
  -v /opt/gitprotect-agent/data:/app/Xopero \
  --restart unless-stopped \
  xopero/gitprotect-agent:latest
```

{% code title="Przykład" overflow="wrap" %}

```docker
docker run -d \
  --name xopero-agent \
  -e ManagementServiceUrl="https://192.168.1.10:28555" \
  -e XoperoOverriddenHostName="Docker_agent" \
  -v /opt/gitprotect-agent/data:/app/Xopero \
  --restart unless-stopped \
  xopero/gitprotect-agent:latest
```

{% endcode %}

4. Sprawdź, czy kontener działa poprawnie, używając następującego polecenia:

```docker
docker ps
```

5. Po wykonaniu wszystkich powyższych kroków agent pojawi się w panelu **XMS** celem aktywacji.
   {% endtab %}

{% tab title="QNAP NAS (CS > 3.0)" %}

<p align="center"><a href="#prerequisites" class="button primary" data-icon="circle-1">Wymagania wstępne</a>    <a href="#environment_setup" class="button primary" data-icon="circle-2">Konfiguracja środowiska</a>    <a href="#deployment-1" class="button primary" data-icon="circle-3">Wdrożenie</a></p>

## Wymagania wstępne <a href="#prerequisites" id="prerequisites"></a>

**QNAP**:

* [x] Procesor x86 lub x64 (architektura ARM <mark style="color:red;">**nie jest obsługiwana**</mark>).
* [x] Minimum 2GB pamięci RAM.
* [x] Aplikacja **Container Station** z **App Center.**

***

## Konfiguracja środowiska <a href="#environment_setup" id="environment_setup"></a>

1. Zaloguj się do **panelu webowego** **QNAP** i otwórz aplikację **App Center**. Przejdź do **QNAP Store** > **All Apps** i wyszukaj **Container Station** (**CS**).
2. Pobierz aplikację **Container Station**. Po pobraniu otwórz ją i wybierz ścieżkę, która będzie używana jako **katalog danych kontenera Docker**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/KIRW2D2w8RdfqVCOluLO/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/dEnKr4A45J0axCXrkPqf/image.png" alt=""><figcaption></figcaption></figure>

3. Kliknij **Start Now**, aby kontynuować.

***

## Wdrożenie <a href="#deployment" id="deployment"></a>

1. W aplikacji **Container Station** otwórz menu **Containers** i kliknij przycisk **Create**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/HhRySNZoRxCyNJgkpfR3/image.png" alt=""><figcaption></figcaption></figure>

2. W sekcji **Image Configuration** wybierz **Advanced mode**. Jako typ obrazu wybierz **Docker image**, a w polu **Image** wklej:

```docker
xopero/gitprotect-agent:latest
```

3. Upewnij się, że opcja **Try pulling the image from the registry before creating the container** jest zaznaczona, a następnie kliknij **Next**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/oOJmswzsMmkkAhRTlsbM/image.png" alt=""><figcaption></figcaption></figure>

4. W karcie **Configure Container**, skonfiguruj kontener **Docker Xopero ONE** i kliknij **Next**, aby kontynuować:

> **Name** — ustaw własną nazwę kontenera.
>
> **Restart policy** — określa, czy kontener powinien uruchamiać się automatycznie (np. po restarcie **QNAP**).

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/P7E9kk83gIzL75SgYLh5/image.png" alt=""><figcaption></figcaption></figure>

5. W tej samej karcie przejdź do ⚙️**Advanced Settings**.
6. Przejdź do sekcji **Environments** section i kliknij **Add New Variable,** aby dodać zmienne środowiskowe o następujących wartościach:

{% code title="ASPNETCORE\_URLS" overflow="wrap" %}

```docker
http://+:80
```

{% endcode %}

{% code title="DOTNET\_RUNNING\_IN\_CONTAINER" overflow="wrap" %}

```docker
true
```

{% endcode %}

{% code title="ManagementServiceUrl" overflow="wrap" %}

```docker
Xopero ONE Management Service address
```

{% endcode %}

{% hint style="warning" %}
Zastąp `Xopero ONE Management Service address` <mark style="color:red;">**własnym adresem**</mark> **Xopero ONE Management Service\***.
{% endhint %}

**‼️\*ManagementServiceUrl** – <mark style="color:red;">**własny adres**</mark> **Xopero ONE Management Service** (**XMS**) w jednym z następujących formatów (w zależności od modelu wdrożenia **XMS**):

> a. `http://ipaddress:port`, np. `http://192.168.0.1:28555`&#x20;
>
> b. `https://XMSID.ads.xopero.com`, np. `https://a00b0dc0-0116-0000-0000-d0000028960e.ads.xopero.com`

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/3dwnA74Yz2Ni2Sq4q5tl/image.png" alt=""><figcaption><p><em>Example of correctly filled environments variables.</em></p></figcaption></figure>

7. Kliknij **Apply,** aby zapisać zmiany.
8. Przejdź do karty **Storage** — tutaj możesz podmontować wolumeny **QNAP** do **kontenera Docker agenta Xopero ONE**.

{% hint style="success" %}
Możesz zamontować wiele katalogów, klikając przycisk **Add Volume** i powtarzając operację.
{% endhint %}

{% hint style="info" %}
Aby wykonywać kopię zapasową danych z **QNAP**, wybierz **Bind Mount Host Path** z menu rozwijanego **Add Volume** — pozwoli to określić, do których danych kontener **Xopero ONE** ma dostęp. Wybierz katalog z hosta i wprowadź ścieżkę, pod którą będzie on widoczny wewnątrz kontenera w polu **Container**.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/BdnZxFPALj3rBLLs8kQV/image.png" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/sDAwPRUA9urR2FC4JtRM/image.png" alt="" width="563"><figcaption></figcaption></figure>

9. Sprawdź ponownie i potwierdź ustawienia, a następnie kliknij **Finish** aby utworzyć kontener.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/1OmhQehwHnWjmiFlOwu6/image.png" alt="" width="563"><figcaption></figcaption></figure>

10. **Container Station** pobierze najnowszy obraz **Xopero ONE** i utworzy na jego podstawie kontener.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/kXfr5TYtbHBh8Tdcgp1P/image.png" alt=""><figcaption></figcaption></figure>

11. Po zakończeniu procesu nowy kontener będzie widoczny w karcie **Container** w **Container Station**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/HN7YODHVwb1VJti9WcbF/image.png" alt=""><figcaption></figcaption></figure>

12. Możesz teraz połączyć się z panelem administracyjnym **Xopero ONE Management Service**, aby aktywować agenta.
    {% endtab %}

{% tab title="QNAP NAS (CS < 3.0)" %}

<p align="center"><a href="#prerequisites-sec" class="button primary" data-icon="circle-1">Wymagania wstępne</a>    <a href="#environment_setup-sec" class="button primary" data-icon="circle-2">Konfiguracja środowiska</a>    <a href="#deployment-sec" class="button primary" data-icon="circle-3">Wdrożenie</a></p>

## Wymagania wstępne <a href="#prerequisites-sec" id="prerequisites-sec"></a>

**QNAP**:

* [x] Procesor x86 lub x64 (architektura ARM <mark style="color:red;">**nie jest obsługiwana**</mark>).
* [x] Minimum 2GB pamięci RAM.
* [x] Aplikacja **Container Station** z **App Center.**

***

## Konfiguracja środowiska <a href="#environment_setup-sec" id="environment_setup-sec"></a>

1. Zaloguj się do **panelu webowego** **QNAP** i otwórz aplikację **App Center**. Przejdź do **QNAP Store** > **All Apps** i wyszukaj **Container Station** (**CS**).
2. Pobierz aplikację **Container Station**. Po pobraniu otwórz ją i wybierz ścieżkę, która będzie używana jako **katalog danych kontenera Docker**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/KIRW2D2w8RdfqVCOluLO/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/dEnKr4A45J0axCXrkPqf/image.png" alt=""><figcaption></figcaption></figure>

3. Kliknij **Start Now**, aby kontynuować.
4. Gdy to zrobisz, pobierz obraz **Docker agenta Xopero ONE**, który jest dostępny na naszym [oficjalnym serwerze](https://xopero.com/download/xopero_one/latest/client-image.tar).

***

## Wdrożenie <a href="#deployment-sec" id="deployment-sec"></a>

1. Otwórz aplikację **Container Station** i przejdź do karty **Import**.
2. Kliknij przycisk ➕**Import** aby przesłać pobrany wcześniej **plik obrazu Docker**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/E1akG4H8FtafDK1QiOIu/Importing%20the%20docker%20file.png" alt="Importing the docker file"><figcaption></figcaption></figure>

3. W oknie **Create Import Task** wybierz typ źródła i ścieżkę do pliku obrazu **agenta Xopero ONE**, a następnie kliknij **Next**.&#x20;

{% hint style="info" %}
Wybranie pliku ze źródła lokalnego umożliwia wybór plików zapisanych na urządzeniu. Alternatywnie możesz użyć opcji **NAS**, aby uzyskać dostęp do plików bezpośrednio z **QNAP**.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/czL4WOvKcwbN2LZckiYA/Creating%20import%20task.png" alt="Creating import task" width="375"><figcaption></figcaption></figure>

4. W karcie **Create Container** formularz zawiera kilka pól, z których najważniejsze to:

> **Name** — tutaj możesz ustawić własną nazwę kontenera.
>
> **Auto start** — określa, czy kontener uruchomi się automatycznie, np. w przypadku restartu QNAP.
>
> **CPU Limit** — pozwala określić procent użycia procesora przydzielony dla kontenera.
>
> **Memory Limit** — limit pamięci RAM dla kontenera.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/rwNoe0H11pUOipDj0ZGc/Creating%20container.png" alt="Creating container"><figcaption></figcaption></figure>

5. Kliknij przycisk ⚙️**Advanced Settings >>** przejdź do sekcji **Environment**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/YSpXbq5wA90LreYWNPYc/image.png" alt=""><figcaption></figcaption></figure>

6. Aby dodać nową zmienną środowiskową, kliknij przycisk **Add**, nazwij ją `ManagementServiceUrl` i ustaw jej wartość na adres usługi **Xopero ONE Management Service\***.

**‼️\*ManagementServiceUrl** – <mark style="color:red;">**własny adres**</mark> **Xopero ONE Management Service** (**XMS**) w jednym z następujących formatów (w zależności od modelu wdrożenia **XMS**):

> a. `http://ipaddress:port`, np. `http://192.168.0.1:28555`&#x20;
>
> b. `https://XMSID.ads.xopero.com`, np. `https://a00b0dc0-0116-0000-0000-d0000028960e.ads.xopero.com`

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/pbZ0KU4yENNe6W4BZNsk/create%20container.png" alt="create container"><figcaption></figcaption></figure>

7. Przejdź do sekcji **Shared Folders** — tutaj możesz podmontować wolumeny **QNAP** do **kontenera Docker agenta Xopero ONE**.

{% hint style="success" %}
Możesz zamontować wiele katalogów, klikając przycisk **Add Volume** i powtarzając operację.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/YhZBTtfZ1G1VBPhvwjgG/Setting%20shared%20folders.png" alt="Setting shared folders"><figcaption></figcaption></figure>

8. by wykonywać kopię zapasową danych z urządzenia **QNAP**, wybierz **Add** w sekcji **Volume from host** — pozwoli to określić, do których danych kontener **Xopero ONE** ma mieć dostęp. Wybierz katalog z hosta w polu **Volume from host** i wprowadź ścieżkę widoczną wewnątrz kontenera w polu **Mount Point**.

{% hint style="info" %}
Na przykład, jeśli chcesz wykonać kopię zapasową katalogu o nazwie `Backup` wewnątrz folderu udostępnionego `Public`, ustaw pole **Volume from the host** na `/Public/Backup`. **Mount Point** może być inny, np. `/Backup`.
{% endhint %}

9. Po wykonaniu powyższych kroków kliknij **Create** aby kontynuować.
10. W oknie **Summary** sprawdź ponownie swoje ustawienia, a następnie kliknij **OK**, aby zakończyć konfigurację.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/3JtFbA8Tb3mONfnn81ir/Summary%20window.png" alt="Summary window"><figcaption></figcaption></figure>

10. Możesz teraz połączyć się z panelem administracyjnym **Xopero ONE Management Service**, aby aktywować agenta.
    {% endtab %}

{% tab title="Synology NAS" %}

## Wdrożenie

{% hint style="warning" %}
Aby wdrożyć **agenta Xopero ONE** na urządzeniu **Synology** za pomocą **Dockera**, użyj aplikacji **Container Manager**. Jeśli nie jest ona zainstalowana, pobierz ją z **Package Center**.
{% endhint %}

1. Przejdź do karty **Container** i kliknij przycisk **Create**. Rozwiń sekcj **Image** i kliknij **Add image**, a następnie wyszukaj obraz: `xopero/gitprotect-agent`.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/moiOFIil9SfvZHfUT8oY/1.PNG" alt="" width="563"><figcaption></figcaption></figure>

2. Wybierz obraz, kliknij **Download**, i wybierz wersję oznaczoną jako [<mark style="color:red;">**latest**</mark>](#user-content-fn-1)[^1]. Kliknij **Select** aby potwierdzić.
3. Gdy obraz zostanie pobrany, wybierz go z menu rozwijanego w polu **Image.**
4. Następnie zdefiniuj własną nazwę dla kontenera. W razie potrzeby skonfiguruj również limity zasobów kontenera.
5. Zaznacz opcję **Enable auto-restart** aby upewnić się, że kontener uruchomi się automatycznie po zrestartowaniu urządzenia, a następnie kliknij **Next**.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/vhDlt71ccccN318YeEhw/2.PNG" alt="" width="563"><figcaption></figcaption></figure>

6. W sekcji **Volume Settings**, kliknij przycisk ➕**Add Folder**, i wybierz katalogi wymagające ochrony. Kontener musi mieć podmontowane katalogi zewnętrzne, aby mieć do nich dostęp podczas wykonywania kopii zapasowych.

{% hint style="info" %}
Aby chronić dane przechowywane w katalogu `Public`, wybierz ten folder i określ <mark style="color:red;">**tę samą ścieżkę**</mark> wewnątrz kontenera, aby zapewnić spójność między systemami plików hosta i kontenera.
{% endhint %}

{% hint style="success" %}
Możesz podmontować wiele katalogów, klikając przycisk ➕ **Add Folder** i powtarzając operację.
{% endhint %}

7. Dodatkowo, aby zapewnić trwałość danych podczas aktualizacji kontenera lub prac konserwacyjnych, zamontuj bazy danych agenta w katalogu zewnętrznym. Bazy te znajdują się w lokalizacji `/app/Xopero` i powinny zostać zmapowane do wyznaczonego miejsca poza kontenerem, aby uniknąć utraty lub niespójności danych.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/2TKXNBFsSWr5e2fiFjAA/3.PNG" alt=""><figcaption></figcaption></figure>

8. W sekcji **Environment** definiuj wymagane zmienne:

> **ManagementServiceUrl** — <mark style="color:red;">**własny adres**</mark> **Xopero ONE Management Service** (**XMS**) w jednym z następujących formatów (w zależności od modelu wdrożenia **XMS**):
>
> a. `http://ipaddress:port`, np. `http://192.168.0.1:28555`&#x20;
>
> b. `https://XMSID.ads.xopero.com`, np. `https://a00b0dc0-0116-0000-0000-d0000028960e.ads.xopero.com`
>
> **XoperoOverriddenHostName** — określ nazwę agenta, aby ułatwić jego identyfikację w systemie.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/kcZ1iTHfBG62vDKuiN1W/4.PNG" alt=""><figcaption></figcaption></figure>

9. Kliknij **Next** aby potwierdzić konfigurację. W oknie **Summary**, prawdź ponownie swoje ustawienia i jeśli wszystko się zgadza, kliknij **Done**, aby sfinalizować proces.

<figure><img src="https://content.gitbook.com/content/wg6DDqlTFok8F9zv6rqa/blobs/VUdKk4kZdIBuhiXx7SHw/5.PNG" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

[^1]: najnowsza


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://helpcenter.xopero.com/xopero-one-en/pl/wdrozenie-i-konfiguracja/xopero-one-agent/instalacja-w-kontenerze-docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
