Running with Docker
Since v2, Tolgee runs PostgreSQL database in its container by default. To disable embedded Postgres, set
tolgee.postgres-autostart.enabled
property to false
. Then you can use external database as
described below.
Running Tolgee in single container (recommended)
To run server locally you should be fine just with running simple Docker image with mounted data volume. Tolgee has embedded PostgresSQL database, so you don't have to manually set it.
docker run -v tolgee_data:/data/ -p 8085:8080 tolgee/tolgee
This will:
- mount tolgee_data volume into it's directory inside the container
- expose tolgee container port on port 8085
- run the image!
Now you should be able to access Tolgee web application on http://localhost:8085
Running with compose
To run it on company infrastructure it is better to use some more optimized database system. Tolgee supports PostgreSQL. You can run it using docker-compose. To start let's create and enter a folder to store Tolgee related files:
mkdir tolgee && cd tolgee
Create a file named docker-compose.yml
containing following content.
version: '3'
services:
app:
image: tolgee/tolgee
volumes:
- ./data:/data
ports:
- '25432:25432' # if you would like to access the DB
- '8080:8080'
Configuring using configuration file
The recommended way of configuring the application is using configuration file.
To do so, you have to create the config.yaml
file containing configuration properties in the same directory as docker-compose.yaml
.
You can find the list of all properties in configuration reference.
version: '3'
services:
app:
image: tolgee/tolgee
volumes:
- ./data:/data
- ./config.yaml:/config.yaml # <--- this line
ports:
- '25432:25432'
- '8080:8080'
environment:
spring.config.additional-location: file:///config.yaml # <--- this line
tolgee:
authentication:
enabled: true
initial-password: admin
initial-username: admin
jwt-secret: my_jwt_secret
machine-translation:
google:
api-key: my_google_api_key
smtp:
auth: true
from: Tolgee <no-reply@mydomain.com>
host: email-smtp.regional-region.amazonaws.com
password: 'omg/my/password'
port: 465
ssl-enabled: true
username: user@company.com
Configuring using environmental variables
You can provide the configuration variables using environment variables or using .env
file.
version: '3'
services:
app:
image: tolgee/tolgee
volumes:
- ./data:/data
- ./config.yaml:/config.yaml
ports:
- '25432:25432'
- '8080:8080'
env_file:
- .env
To provide a configuration, add following .env file.
TOLGEE_AUTHENTICATION_ENABLED=true
TOLGEE_AUTHENTICATION_INITIAL_PASSWORD=admin
TOLGEE_AUTHENTICATION_INITIAL_USERNAME=admin
TOLGEE_AUTHENTICATION_JWT_SECRET=my_jwt_secret
TOLGEE_MACHINE_TRANSLATION_GOOGLE_API_KEY=my_google_api_key
TOLGEE_SMTP_AUTH=true
TOLGEE_SMTP_FROM=Tolgee <no-reply@mydomain.com>
TOLGEE_SMTP_HOST=email-smtp.regional-region.amazonaws.com
TOLGEE_SMTP_PASSWORD=omg/my/password
TOLGEE_SMTP_PORT=465
TOLGEE_SMTP_SSL_ENABLED=true
TOLGEE_SMTP_USERNAME=user@company.com
Similarly, you can define other configuration properties.
Your initial username is admin
. Initial password is automatically generated and stored in /data/initial.pwd file in the
Tolgee container. You can print it by executing this:
cat data/initial.pwd
Running with docker compose with external PostgreSQL database
For some users, running the PostgreSQL database in a separate container is beneficial. Here is how you can do it.
version: '3'
services:
app:
image: tolgee/tolgee:latest
volumes:
- ./data:/data
- ./config.yaml:/config.yaml
ports:
- '8089:8080'
environment:
spring.config.additional-location: file:///config.yaml # <--- this line
deploy:
restart_policy:
condition: on-failure
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- '25432:5432' # <-- If you want to access your postgres from outside of docker network
This configuration creates a separate Postgres 13 container. Now, you have to modify the Tolgee configuration to use this database.
tolgee:
postgres-autostart:
enabled: false
spring:
datasource:
url: jdbc:postgresql://db:5432/postgres
username: postgres
password: postgres
Don't forget to change the POSTGRES_USER
, POSTGRES_PASSWORD
, username
and password
properties to your values.