Taiga project management app

I will share what i have done with pleasure :smiley: But consider that i have already NPM for the reverse proxy, and a domain.

  • First of all, i have created 5 datasets, to contains the volume’s data


    name are just taken from the example yaml volumes. Just care to the permission of the db-data dataset, user:group must be netdata:docker.

  • EDIT Also create manually a taiga.conf file into the designed dataset for later

  • i create my DNS record for taiga and setup the reverse proxy on NPM with the certificate

  • grab the full yaml and the env file

  • i have done a fast search (from env variable) > replace (into the yaml) for every row, to fill the fields i never used the env file directly, sure cleaner way; every volume is mounted like that

    driver: local
    driver_opts:
      type: none
      device: /mnt/***/static-data
      o: bind

network

networks:
  taiga:
      driver: bridge

the only path that i put directly is the taiga.conf, and i do like that

  taiga-gateway:
    image: nginx:1.19-alpine
    ports:
      - "9020:80"
    volumes:
      - /mnt/**mypath***/taiga-gateway/taiga.conf:/etc/nginx/conf.d/default.conf
      - taiga-static-data:/taiga/static
      - taiga-media-data:/taiga/media
    networks:
      - taiga
    depends_on:
      - taiga-front
      - taiga-back
      - taiga-events
  • be sure to bind correct ports not already used (in my case, 9000 and 5432 were already taken from other containers)

  • if you are not sure about how compile the yaml, go with the default value suggested there

  • compile your app, check if all the containers are healthy (especially the postgres one); if all is ok and no error are raised, compile your taiga.conf

server {
    server_name taiga.***.cloud;
    listen 80 default_server;
    client_max_body_size 100M;
    charset utf-8;

    # Frontend
    location / {
        proxy_pass http://taiga-taiga-front-1/;
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
    }

    # API
    location /api/ {
        proxy_pass http://taiga-taiga-back-1:8000/api/;
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
    }

    # Admin
    location /admin/ {
        proxy_pass http://taiga-taiga-back-1:8000/admin/;
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
    }

    # Static
    location /static/ {
        alias /taiga/static/;
    }

    # Media
    location /_protected/ {
        internal;
        alias /taiga/media/;
        add_header Content-disposition "attachment";
    }

    # Unprotected section
    location /media/exports/ {
        alias /taiga/media/exports/;
        add_header Content-disposition "attachment";
    }

    location /media/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://taiga-taiga-protected-1:8003/;
        proxy_redirect off;
    }
}

be sure to change the value of proxy_pass fields with the correct name of containers!!

Hope this helps you :smile:

1 Like