> For the complete documentation index, see [llms.txt](https://docs.infotopics.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.infotopics.com/writebackextreme/getting-started/getting-started/containerization/docker-standalone.md).

# Docker standalone

{% hint style="info" %}
Docker for WriteBackExtreme is production ready since version 5.2.0. All versions before are **not** ready for production.
{% endhint %}

First we need to create a Docker volume so we can make the configuration file, SQLite database and logs persistent.

```bash
docker volume create writeback_data
```

Via this method it can be as easy as running the following command

```bash
docker run -it --pull always \
    -v writeback_data:/app_data \
    -p 8899:8080 \
    --name writeback-extreme \
    -e "WBE_LICENSE=..your license here.." \
    -e "WBE_URL=http://localhost:8899" \
    ghcr.io/appsfortableau/writeback-extreme:latest
```

> Don't forget to change the `WBE_URL` to a proper external domain. Current given domain is a example. Be sure it is a proper URL including schema (e.g. https\://), not just the hostname.

```bash
# --pull always will download latest image of `appsfortableau/writeback-extreme:latest`
# -d to detatch command to back, run command in the background.
```

Change `latest` into one of the following to get more control over the version: e.g. `4` or `4.1` or full version `4.2.1`

{% hint style="info" %}
Check out our GitHub [package](https://github.com/orgs/appsfortableau/packages/container/package/writeback-extreme) to find the latest version.
{% endhint %}

Once the container is running, open the URL (e.g. above: `http://localhost:8899`) in your browser and click on "Go to the backend."&#x20;

### Management console username & password

When using SQLite as a repository database, the docker run command will display the initial credentials for the management console.&#x20;

When using a different database (e.g. Postgresql, Mysql or SQL Server) you need to pass the credentials as variables like this:&#x20;

```
    -e "WBE_ADMIN_USERNAME=admin" \
    -e "WBE_ADMIN_PASSWORD=VeryS3cureP@sword" \
    -e "WBE_ADMIN_DISPLAYNAME=Administrator" \ 
```

### After stopping the container

(Re)Start the container after closing the command can done via:

```bash
# start previous ran docker container:
docker start writeback-extreme
```

{% hint style="info" %}
Note: the `docker start` command only works with named (via `--name` in the `docker run` command) containers, otherwise you have to look up the container ID with `docker containers` command.
{% endhint %}

#### Changing accessible port

By default port `8090` is exposed. In certain scenario's port `8090` is not available, the port can be change via the `docker run` command by adding `-p {port}:8090`. Where in port 8090 is the internal application port. Replace `{port}` with the desire port.

{% hint style="info" %}
Read more about port forwarding for Docker containers [here](https://docs.docker.com/reference/cli/docker/container/run/#publish).
{% endhint %}

### Changing repository database

By default WriteBackExtreme Docker is configured to use `sqlite` as repository database. Via environment variables we have been able to support 3 other databases, to be used as repository database:&#x20;

* [MS SQL Server](/writebackextreme/getting-started/getting-started/containerization/repository-database.md#ms-sql-server)
* [PostgreSQL](/writebackextreme/getting-started/getting-started/containerization/repository-database.md#postgresql)
* [MySQL](/writebackextreme/getting-started/getting-started/containerization/repository-database.md#mysql)

Checkout there documentation for setup environment variables to connect with the repository database.

### Update WriteBackExtreme container with a new version

If a new version is available, run the following commands to update:

<pre class="language-bash"><code class="lang-bash"><strong>docker pull ghcr.io/appsfortableau/writeback-extreme:latest
</strong># or when having a targetted version to only fetch patches
docker pull ghcr.io/appsfortableau/writeback-extreme:4.2
# Stop docker container from running
docker stop writeback-extreme
# start docker container
docker start writeback-extreme
</code></pre>

{% hint style="info" %}
All available image versions can be found [here](https://github.com/appsfortableau/writeback-extreme/pkgs/container/writeback-extreme).
{% endhint %}

### Other environment variables

|                   |                                                                                                                                                     |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| WBE\_NUM\_WORKERS | Normally, the number of workers is equal to the number of CPU's. Some environments cannot detect this properly. Then you need to set this manually. |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.infotopics.com/writebackextreme/getting-started/getting-started/containerization/docker-standalone.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
