Goodwork is a simple, open source and self-hosted project management and collaboration tool used by software teams. It aims at creating a single point of access for all the components required a project to run smoothly. Goodwork organizes everything in one place and everyone within the organization knows what to do and where to find the necessary information.

There are various ways of installing Goodwork and we are going discuss them as below: For my installation, I am using Ubuntu 20.04.

Method 1. Install Goodwork Using Single File Installer (Easy)

In this installation, we are going to run a single executable file to install Goodwork. We, however, need to install Docker CE and Docker Compose which are required for the installation of Goodwork.

Install Docker CE on Ubuntu 20.04

First install dependency packages with the below command

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Add docker GPG key and docker repository to your system with the following commands:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Now update system packages and install Docker CE on Ubuntu 20.04:

sudo apt update
sudo apt install docker-ce

Once done, add your user to docker group:

sudo usermod -aG docker $USER
newgrp docker

Install Docker Compose on Ubuntu 20.04

To install Docker Compose on Ubuntu 20.04, we are going to download the latest version from Github repository. Run the command below:

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-Linux-x86_64 | cut -d '"' -f 4 | wget -qi -

Move and rename the file:

sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

Now set the correct permissions to make Docker Compose executable

sudo chmod a+x /usr/local/bin/docker-compose

Once you have installed Docker CE and Docker Compose, clone Goodwork from Github with the below command:

git clone https://github.com/iluminar/goodwork.git

Change to Goodwork directory and copy .env.example to .env

cd goodwork
cp .env.example .env

Now define your variables accordingly in .env file. Open the file with your preferred editor and set app port, DB credentials, mail driver credentials, SSL_CERT_DOMAIN and ssl certificate path. SSL information is required for a production installation and optional for local installation.

$ vim .env

Sample configurations that you can modify to suit your deployement.

APP_ENV=local 
APP_KEY= 
APP_DEBUG=true 
APP_LOG_LEVEL=debug 
APP_URL=http://goodwork.techviewleo.com # Use correct DNS domain name 
APP_PORT=80 
APP_NAME=Goodwork 
APP_PROTOCOL=http
APP_LOCALE=en 

DB_CONNECTION=mysql 
DB_HOST=db 
DB_PORT=3306 
DB_DATABASE=goodwork 
DB_USERNAME=root 
DB_PASSWORD=StrongDBPassw0rd 
DB_ROOT_PASSWORD=StrongrootDBPassw0rd

BROADCAST_DRIVER=pusher 
CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=redis 

REDIS_HOST=redis 
REDIS_PASSWORD=null 
REDIS_PORT=6379 
REDIS_CLIENT=predis 

MAIL_MAILER=smtp 
MAIL_DRIVER=smtp 
MAIL_HOST=mailtrap.io 
MAIL_PORT=2525 
MAIL_USERNAME=null 
MAIL_PASSWORD=null 
MAIL_ENCRYPTION=null 
MAIL_FROM_ADDRESS= 
MAIL_FROM_NAME= 

PUSHER_APP_ID=23123123 
PUSHER_APP_KEY=SASHDASDASD 
PUSHER_APP_SECRET=AUSDASDSDSSDW 
PUSHER_APP_CLUSTER= 

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 

COMPANY_NAME= 

TELESCOPE_ENABLED=false 

NOTIFICATION_CHANNELS="broadcast,mail,database" 

# mobile login 
CLIENT_ID= 
CLIENT_SECRET=

Now install Goodwork by running the installation script in Goodwork directory. Choose whether you want to install for production or local.

$ chmod +x install.sh
$ ./install.sh 
Install for production environment? (Y/n):n

-------
Installation complete. 

Your application is running at :
http://goodwork.techviewleo.com # Use correct DNS domain name

Check containers started by docker compose:

$ ./cmd
        Name                      Command               State                         Ports
------------------------------------------------------------------------------------------------------------------
goodwork_caddy_1       caddy run --config /etc/ca ...   Up      2019/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
goodwork_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp
goodwork_php_1         docker-php-entrypoint php-fpm    Up      9000/tcp
goodwork_redis_1       docker-entrypoint.sh redis ...   Up      6379/tcp
goodwork_websocket_1   docker-php-entrypoint bash ...   Up      6001/tcp
goodwork_worker_1      docker-php-entrypoint bash ...   Up

Now you have successfully installed Goodwork and web app should be running as expected. On your browser open https://goodwork.techviewleo.com (depending on the url and port you configured). You should see a page as below:

You should be able to login with the set username and password.

To stop the server run:

./cmd stop

To start the server run:

./cmd start

Removing Goodwork

The docker-compose command line tool can be used to uninstall Goodwork components as well.

$ ./cmd kill
Killing goodwork_caddy_1  ... done
Killing goodwork_worker_1 ... done
Killing goodwork_php_1    ... done
Killing goodwork_redis_1  ... done
Killing goodwork_db_1     ... done

$ ./cmd down
Removing goodwork_caddy_1     ... done
Removing goodwork_worker_1    ... done
Removing goodwork_websocket_1 ... done
Removing goodwork_php_1       ... done
Removing goodwork_redis_1     ... done
Removing goodwork_db_1        ... done
Removing network goodwork_default

Method 2. Setup Goodwork Manually with Docker

Ensure to have installed Docker CE and Docker Compose as explained above. Then go ahead to clone Goodwork repository.

git clone https://github.com/iluminar/goodwork.git

Change into goodwork directory and copy .env.example to .env

cd goodwork
sudo cp .env.example .env

Open .env file with your preferred editor and configure the following:

  • APP_PORT= (whatever port you want to run the app)
  • DB_HOST=db (Value should be db)
  • DB_DATABASE= (Add value as you wish)
  • DB_USERNAME= (Add value as you wish)
  • DB_PASSWORD= (Add value as you wish)
  • DB_ROOT_PASSWORD= (Add value as you wish)
  • REDIS_HOST=redis (Value should be redis)

Next, we build php image

sudo ./cmd build php

Install Laravel dependencies

sudo ./cmd composer install

Now run below command to start app server for the first time

sudo ./cmd up -d

Generate app key and migrate db and seed

sudo ./cmd art key:generate
sudo ./cmd art migrate --seed

Visit the app on your browser specifying the port you have set, for example,http://goodwork.local (Again depending on your set url and port).

To stop and start the web app, use the commands below:

sudo ./cmd stop
sudo ./cmd start

Goodwork Shortcuts for running Certain command

Here are some of the useful shortcuts for managing Goodwork

  • To run an artisan command
./cmd art "your command"
  • To run a composer command
./cmd composer "your command"
  • To run a phpunit command
./cmd test "your command"
  • To run a mysql command
./cmd mysql "your command

Method 3. Install Goodwork Manually Without Using Docker

If you prefer not to use Docker, you can manually install Goodwork Management and Collaboration tool manually by running the following steps:

## using ssh
git clone [email protected]:iluminar/goodwork.git

## or you can use https
git clone https://github.com/iluminar/goodwork.git

For outside collaborator

git clone [email protected]:{yourusername}/goodwork.git

Configure remotes

cd goodwork
git remote add origin [email protected]:iluminar/goodwork.git

Now set up the application

$ git checkout master # use dev branch for local development
$ git pull origin master # use dev branch for local development
$ composer install
$ cp .env.example .env
$ php artisan key:generate
$ php artisan storage:link
$ php artisan migrate --seed
$ php artisan passport:install
$ npm install

Run Redis server

// install redis on your machine
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make
// run redis server
$ redis-server

Run Laravel Websocket Server

php artisan websocket:serve

Finally run queue worker

php artisan queue:work redis --sleep=1 --tries=1

This has been the installation of Goodwork Project Management and Collaboration Tool on Ubuntu 20.04. I hope the guide will be helpful to you and have fun using the tool. Check more interesting guides below:

LEAVE A REPLY

Please enter your comment!
Please enter your name here