Ultimate guide to self-hosting Tolgee with Content Delivery (CDN)
Feb 17, 2025
·
0 min read

Hello, amazing Tolgee self-hosters 🤟
In this tutorial you will learn how to self-host Tolgee for using with Content Delivery features with S3 bucket (or Azure Blob).
Free self-hosted version allows you to create single Content Delivery configuration, and you will have to stick with single storage configuration per your instance.
To self-host Tolgee, you can use several different deployment options. You can use a simple Docker container, run the Java .jar file or use Kubernetes or other orchestration tools. In this tutorial, we will use docker-compose with a standalone Postgres database.
To follow this tutorial, you can clone this repository, to get started quickly:
The Docker Compose configuration
According to the self-hosting documentation section, this is how your docker-compose.yaml should look like.
The configuration file that is mounted to the container should look like the one below. It's recommended that the configuration be provided via a mounted property file. It's cleaner to read, and it's better for security since the environment variables can be subject to logs.
config.yaml
It's also a good idea to change the POSTGRES_PASSWORD in both files to something more secure.
Setting up S3 bucket
For the simplicity of this tutorial, we will create a public S3 bucket. For optimized configurations, you might want to put Amazon CloudFront in front of it, but I will leave this to you. Providing storage configuration is required to use Content Delivery features on the free self-hosted instance.
Go to AWS S3 Console
Click on
Create bucketFill in the bucket name. I am naming it
tolgee-cdn-bucket-1234Deselect
Block all public accessand acknowledge that the bucket will be public (ignore if you plan to use CloudFront or other)Click
Create bucketIgnore following steps if you plan to use CloudFront or other
Open the bucket by clicking it in the list
Go to permissions and add this
Bucket policyjson and replace the bucket name with your name. This will make your bucket public.
Now. You have your S3 bucket ready.
Great! 🎉 Now you have your S3 bucket ready.
Now we need to create credentials to access this bucket.
Go to AWS IAM Console
Click on
Usersin the left menuClick on
Add userFill in the username. I am naming it
tolgee-cdn-user-1234Go to step 2
Set permissionsClick on
Attach existing policies directlyClick on
Create policyClick on
JSONtab and paste this
Review and create policy. I am naming it TolgeeCdnBucketPolicy
Select this policy in the user creation wizard
Create the user
Go to
Security credentialstab of the new userClick on
Create access keySelect
Third-party serviceorOtherFinish the creation
Store the Access key and Secret key in a safe place. You will need them in the next step.
Cool! Now you have everything ready. You can fill in the config.yaml file with the credentials. I am using the eu-central-1 region.
Don't forget that the
public-url-prefixand one of the storage configurations are required to use Content Delivery features unless are on an advanced self-hosted plan with per-project content storages enabled.
Testing time
Let's run the beast.
When the service is running, you can run this command to obtain the initial admin password stored in data/initial.pwd
Now open your browser on http://localhost:8089 and log in with
username: admin
password:
the initial password obtained in previous step
Then open the demo project and go to the developer settings (</>) section accessible from the menu on the left.
You should see empty list of the content delivery configurations.

Creating new content delivery
Hit the
+ Content deliverybuttonKeep the properties as they are and hit save
Content delivery successfully created!message should be prompted
By now, you should have your project data uploaded to the S3 bucket and made accessible. For my public url prefix, this file can be accessed on
Thanks for reading, Tolgee friends. ❤️



