Phrase On-Premise Installation
Phrase On-Premise is shipped as a Docker image containing our Ruby application. Phrase On-Premise can be deployed on Docker-compatible host systems or within a compatible virtualized system.
Make sure you have set up the required external services for Phrase On-Premise. In order to run Phrase On-Premise within your organization you need:
- Docker Host on Linux RHEL, Ubuntu or similar system
- MySQL Database
- ElasticSearch Instance
- Redis Server
- SMTP mail server
- Valid Phrase On-Premise license file and Docker image provided by Phrase.
See our FAQ for basic instructions on how to set up these services up separately or on your Docker host.
After purchasing a Phrase On-Premise license from our sales team, you need to provide the Phrase support team with a public GPG-key to encrypt the image and license file with. Also you need to have an account at Docker Hub (hub.docker.com) and provide the username to the Phrase support team.
Generating a GPG-key-pair is fairly easy and explained in the GPG Manual.
You will need the private key you created to decrypt every Phrase update or license that we send to you, so make sure to store it securely. However, you may change your key-pair at any time and we will be able to provide you with freshly encrypted license and image swiftly.
You need some Linux administration skills to set up Phrase On-Premise. Our instructions are aimed at a Linux administrator or a software developer with at least some Linux, DevOp or SysOp experience.
1. Install or order all required external services.
Make sure the external services are installed, configured and accessible from the host system of Phrase On-Premise. Phrase On-Premise logs any missing services or services it cannot connect to when you start its container.
2. Create a Phrase environment configuration file named phraseapp.envcontaining your local configuration
Replace our example environment variable values with your actual configuration, IPs or domain names.
3. Open a terminal and sign in to dockerhub with the user that we authorized to access the phraseapp/enterprise repository
$ docker login
4. Decrypt your license file:
$ gpg phraseapp.lic.gpg
5. Go to the folder, you want to launch the Docker image from, and put the environment file phraseapp.env and your license file phraseapp.lic into the folder. In our example we use our user’s $HOME:
$ ls $HOME
// should output phraseapp.env and phraseapp.lic
You can use any folder, however we would not advise to use /tmp in order to ensure that phraseapp.lic and phraseapp.env are still available when restarting the Docker host machine. Make sure to backup the phraseapp.lic, phraseapp.env and your public/private-key-pair.
6. Run Phrase On-Premise container for the first time. Replace $IMAGE_IDwith the Image ID your Docker host assigned to the imported image.
$ docker run -p 8080:8080 -i -t --env-file phraseapp.env \
-v $HOME/phraseapp.lic:/app/phraseapp-enterprise.lic \
phraseapp/on-premise:<version> # (e.g. phraseapp/on-premise:3.5.0)
When run for the first time, Phrase On-Premise will check for the availability of required services. If all services are available it will create required resources, like the database to use and ElasticSearch indices. If required services are not available, Phrase will print the errors preventing it from installation to the stdout of the container and a small webserver that is reachable through port 8080 on the container will list the issues as well.
If you start Phrase On-Premise with e.g. version 3.5.0 it is not recommended to back to e.g. version 3.4.0 as the new version might have executed database migrations which are not compatible with the older version!
7. After a couple of minutes the Phrase On-Premise Translation Center will be accessible via web browser:
open -a "/Applications/Google Chrome.app" $BASE_URL
Or, simply point your web browser to your installation’s
If all has gone well you should be able to see the Phrase On-Premise login screen. If not, make sure you have connected to the correct IP, domain name and that the Docker container is listening on the correct interface and that this interface is reachable from your client location. Read more about Docker networking in the Docker documentation.