PhraseApp On-Premise Installation

PhraseApp On-Premise is shipped as a Docker image containing our Ruby application. PhraseApp 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 PhraseApp On-Premise. In order to run PhraseApp On-Premise within your organization you need:

  1. Docker Host on Linux RHEL, Ubuntu or similar system
  2. MySQL Database
  3. ElasticSearch Instance
  4. Redis Server
  5. SMTP mail server
  6. Valid PhraseApp On-Premise license file and Docker image provided by PhraseApp.

See our FAQ for basic instructions on how to set up these services up separately or on your Docker host.

After purchasing a PhraseApp On-Premise license from our sales team, you need to provide the PhraseApp support team with a public GPG-key to encrypt the image and license file with.

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 PhraseApp 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.

Installation steps

You need some Linux administration skills to set up PhraseApp 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.

    See required services for a full list of the services PhraseApp On-Premise requires and their configuration details. Make sure the external services are installed, configured and accessible from the host system of PhraseApp On-Premise. PhraseApp On-Premise logs any missing services or services it cannot connect to when you start its container.

  2. Create a PhraseApp environment configuration file named phraseapp.env containing your local configuration

    Replace our example environment variable values with your actual configuration, IPs or domain names.

  3. Sign in to your Docker host’s command line.

  4. Download the most recent PhraseApp On-Premise Docker image

    $ curl -o phraseapp-enterprise.tgz.gpg $RELEASE_URL

    $RELEASE_URL will be provided to you by the PhraseApp support team. The image is a gzipped tar-archive and will be gpg-encrypted with the public key you provided to our support team. If the private key you use is not available on the Docker host, decrypt the archive on a system where the private key is available and copy the decrypted archive onto the Docker host.

  5. Decrypt the image:

    $ pv phraseapp-enterprise.tgz.gpg | gpg > phraseapp-enterprise.tgz

    You can use the command cat instead of pv if pv is not available on your system. pv will provide you with a progress bar and an ETA of the operation.

  6. Import the image into Docker and note created Docker $IMAGE_ID:

    $ pv phraseapp-enterprise.tgz | docker import - phraseapp/enterprise:20151201

    Docker assigns an $IMAGE_ID to every imported image. Note this 64 character hexadecimal string at the end of the output of the import command. It is later referenced as $IMAGE_ID in this guide. You can list images on your Docker host with the docker images command.

  7. Decrypt your license file:

    $ gpg phraseapp.lic.gpg
  8. 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.

  9. Run PhraseApp On-Premise container for the first time. Replace $IMAGE_ID with the Image ID your Docker host assigned to the imported image.

    $ cd $HOME
    $ docker run -p 8080:8080 -i -t --env-file phraseapp.env \
      -v $HOME/phraseapp.lic:/app/phraseapp-enterprise.lic \
      -w /app $IMAGE_ID \
      /usr/bin/go run /app/pae/pae-entrypoint/pae-entrypoint.go

    When run for the first time, PhraseApp 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, PhraseApp 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.

  10. After a couple of minutes the PhraseApp On-Premise Translation Center will be accessible via web browser:

    $ open -a "/Applications/Google" $BASE_URL

    Or, simply point your web browser to your installation’s $BASE_URL.

    If all has gone well you should be able to see the PhraseApp 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.

Read our first steps guide for PhraseApp On-Premise