Install and operate

Installing GoProject

The delivery files, server requirements, access to the container registry, configuration and the first start.

You can install GoProject on your own Linux server with Docker Compose. The system is made of two containers: app (the GoProject application) and db (the PostgreSQL 18 database). This guide takes you through the installation step by step: from preparing the files you need to the first sign-in.

Please note: the output of the scripts and the entries of the application log are in English.

The delivery bundle

The installation needs three files:

  • compose.yml - the Docker Compose configuration of both containers;
  • .env.example - the configuration template, with an explanation of every setting;
  • verify-install.sh - a script that checks the installed system and changes nothing.

Keep all three files in one folder. This guide uses the path /data/goproject, but you can choose another location too.

Server requirements

  • Operating system: Linux with Docker Engine and the Docker Compose v2 plugin installed. Use the command docker compose, not docker-compose.
  • Processor architecture: the GoProject container image is published only for the architecture of the GoProject build server. Before you install, check the image's architecture in the registry as described in the next section.
  • Processor and memory: the app container is limited to 2 CPU and 2 GB of RAM, and db to 1.5 CPU and 1 GB of RAM. The server as a whole needs at least 4 GB of RAM, the operating system's needs included.
  • System time: the server's clock must be kept in time with NTP. Sign-in codes and SLA time tracking need the exact time.
  • Disk space: room for the database in the Docker volume goproject_pg_data and for the storage folder, which holds attachments, document files and user avatars. The space needed grows with the amount of data.
  • Network access: the server must be able to open an outgoing HTTPS connection to registry.brivs.lv to download the container image. A connection to goproject.lv is needed only if you switch the portal link on or use Check the link. The containers themselves need no access from outside: your reverse proxy provides the public access.

Signing in to the container registry

The GoProject container image is in a private registry. On the server, sign in with the user name and access token you get in the GoProject customer portal, on the Versions page under Container images:

docker login registry.brivs.lv

Docker keeps the registry sign-in for the server user account that ran the command. So run the later docker compose commands with the same user account too.

Before you go on, check the processor architecture of the version you chose. Replace X.Y.Z with the number of that GoProject version:

docker buildx imagetools inspect registry.brivs.lv/brivs/goproject:X.Y.Z

The Platform value in the output must match the server's architecture. You can check it with the command uname -m:

  • x86_64 matches linux/amd64;
  • aarch64 matches linux/arm64.

Installation folder and configuration

Create the installation folder, put the delivery files into it and make the .env configuration file from the template:

mkdir -p /data/goproject
cd /data/goproject
cp .env.example .env
chmod 640 .env

The .env file also holds the database password, so only its owner and group may read it.

Open .env and fill in the values you need. Docker Compose cannot start the system while any of these settings is empty: TAG, APP_PORT, DB_DATABASE, DB_USERNAME or DB_PASSWORD.

  • TAG: the number of the GoProject version to install, as X.Y.Z, for example 1.4.2. A moving tag such as latest is not used. To update the system, write the number of the new version here.
  • APP_PORT: the server port your reverse proxy forwards requests to.
  • DB_DATABASE and DB_USERNAME: the database name and user name. goproject works for both.
  • DB_PASSWORD: a strong, randomly generated database password. PostgreSQL uses it when the database is first created. If you later change this value only in .env, the application can no longer connect to the database.
  • SITE_URL: the system's public address, also used in the links of e-mail notifications, for example https://goproject.example.com. Do not put a slash at the end.
  • INITIAL_ADMIN_EMAIL: the e-mail address of the first administrator. The administrator account is created the first time the system starts.
  • INITIAL_ADMIN_PASSWORD: the first administrator's password. If you leave it empty, the system generates the password itself (see First start).
  • TZ: the time zone of the scheduled jobs, for example Europe/Riga.

You can generate a strong database password with the command:

openssl rand -base64 24

The GoProject application runs with the user and group ID 10001 and writes files only to the storage folder. Create that folder with the matching ownership:

install -d -o 10001 -g 10001 -m 750 storage

The storage folder also holds the file secret.key, which encrypts the secrets of two-factor authentication. When you make backups or move the installation, keep both the database and the whole storage folder.

First start

Download the container images and start the system:

cd /data/goproject
docker compose pull
docker compose up -d

On the first start the system creates the database tables. This can take up to two minutes.

Then check that both containers are running and that GoProject answers the health check. In the command, replace 9400 with the APP_PORT value from .env:

docker compose ps
curl -fsS http://localhost:9400/healthz

If you left INITIAL_ADMIN_PASSWORD empty, the generated administrator password is written once to the application log. To find it, run:

docker compose logs app | grep -i "initial administrator"

Sign in to GoProject with the e-mail address from INITIAL_ADMIN_EMAIL and the administrator password. Change the password straight after the first sign-in.

If you set the administrator password yourself, remove the INITIAL_ADMIN_PASSWORD value from .env after the first successful sign-in.

Next steps

After the first start, go on with the other installation and operation guides:

  • Reverse proxy and HTTPS: set up secure public access to GoProject.
  • Licence and the portal link: activate the licence and, if needed, link the installation to the customer portal.
  • Checking the installation and logs: check that the system works and find out where to look for diagnostic information.
Installing GoProject | GoProject