├── .env ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── config.yml │ └── feature-request.md └── stale.yml ├── .gitignore ├── AUTHORS.rst ├── CHANGELOG.md ├── CONTRIBUTING.md ├── DCOLICENSE ├── LICENSE ├── README.md ├── VERSION.md ├── docker-compose-inits.yml ├── docker-compose.yml ├── imgs ├── penpot.jpg └── taiga.jpg ├── launch-taiga.sh ├── taiga-gateway └── taiga.conf └── taiga-manage.sh /.env: -------------------------------------------------------------------------------- 1 | 2 | # Taiga's URLs - Variables to define where Taiga should be served 3 | TAIGA_SCHEME=http # serve Taiga using "http" or "https" (secured) connection 4 | TAIGA_DOMAIN=localhost:9000 # Taiga's base URL 5 | SUBPATH="" # it'll be appended to the TAIGA_DOMAIN (use either "" or a "/subpath") 6 | WEBSOCKETS_SCHEME=ws # events connection protocol (use either "ws" or "wss") 7 | 8 | # Taiga's Secret Key - Variable to provide cryptographic signing 9 | SECRET_KEY="taiga-secret-key" # Please, change it to an unpredictable value!! 10 | 11 | # Taiga's Database settings - Variables to create the Taiga database and connect to it 12 | POSTGRES_USER=taiga # user to connect to PostgreSQL 13 | POSTGRES_PASSWORD=taiga # database user's password 14 | 15 | # Taiga's SMTP settings - Variables to send Taiga's emails to the users 16 | EMAIL_BACKEND=console # use an SMTP server or display the emails in the console (either "smtp" or "console") 17 | EMAIL_HOST=smtp.host.example.com # SMTP server address 18 | EMAIL_PORT=587 # default SMTP port 19 | EMAIL_HOST_USER=user # user to connect the SMTP server 20 | EMAIL_HOST_PASSWORD=password # SMTP user's password 21 | EMAIL_DEFAULT_FROM=changeme@example.com # default email address for the automated emails 22 | # EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive (only set one of those to True) 23 | EMAIL_USE_TLS=True # use TLS (secure) connection with the SMTP server 24 | EMAIL_USE_SSL=False # use implicit TLS (secure) connection with the SMTP server 25 | 26 | # Taiga's RabbitMQ settings - Variables to leave messages for the realtime and asynchronous events 27 | RABBITMQ_USER=taiga # user to connect to RabbitMQ 28 | RABBITMQ_PASS=taiga # RabbitMQ user's password 29 | RABBITMQ_VHOST=taiga # RabbitMQ container name 30 | RABBITMQ_ERLANG_COOKIE=secret-erlang-cookie # unique value shared by any connected instance of RabbitMQ 31 | 32 | # Taiga's Attachments - Variable to define how long the attachments will be accesible 33 | ATTACHMENTS_MAX_AGE=360 # token expiration date (in seconds) 34 | 35 | # Taiga's Telemetry - Variable to enable or disable the anonymous telemetry 36 | ENABLE_TELEMETRY=True 37 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F41E Bug report" 3 | about: Create a report to help us improve 4 | title: '[BUG] ' 5 | labels: bug 6 | assignees: '' 7 | --- 8 | 12 | 13 | **Describe the bug** 14 | 17 | 18 | **How can we reproduce the behavior** 19 | 22 | 23 | **Workarounds** 24 | 27 | 28 | **Screenshots** 29 | 32 | 33 | **Taiga environment** 34 | 38 | 39 | **Desktop (please complete the following information):** 40 | - **OS:** 41 | - **Browser:** 42 | - **Version:** 43 | 44 | **Additional context** 45 | 46 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: ❓ Support Question 4 | url: https://community.taiga.io/c/technical/8 5 | about: Questions and requests for support -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F680 Feature request" 3 | about: Suggest an idea for this project 4 | title: '[FR] ' 5 | labels: feature_request 6 | assignees: '' 7 | --- 8 | > **READ THIS FIRST!**: We recently announced Taiga plans for the future and they greatly affect how we manage this repository and the current Taiga 6 release. Check it [here](https://blog.taiga.io/announcing_taiganext.html).chore: readme announce taiga-next 9 | 12 | 13 | **Please describe the problem / need you are trying to solve.** 14 | 17 | 18 | **Describe the feature or the improvement you'd like and what are you trying to achieve.** 19 | 22 | 23 | **Describe alternatives you've considered** 24 | 27 | 28 | **Additional context** 29 | 32 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # 6 months of inactivity before an issue becomes stale 2 | daysUntilStale: 180 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | # exemptLabels: 7 | # - pinned 8 | # - security 9 | # Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) 10 | onlyLabels: 11 | - bug 12 | - question 13 | - feature_request 14 | - needs_info 15 | - needs-info 16 | - incomplete 17 | # Label to use when marking an issue as stale 18 | staleLabel: stale 19 | # Comment to post when marking an issue as stale. Set to `false` to disable 20 | markComment: > 21 | This issue has been automatically marked as stale because it has not had 22 | recent activity. It will be closed if no further activity occurs. Thank you 23 | for your contributions. 24 | # Comment to post when closing a stale issue. Set to `false` to disable 25 | closeComment: false 26 | 27 | only: issues 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | db-data 2 | static-data 3 | -------------------------------------------------------------------------------- /AUTHORS.rst: -------------------------------------------------------------------------------- 1 | Currently, PRIMARY AUTHORS are: 2 | 3 | - Carlos Goce 4 | - Carlos Letamendia 5 | - David Barragán Merino 6 | - Daniel Herrero 7 | - Juanfran Alcántara 8 | - Miguel González 9 | - Miryam González 10 | - Natacha Menjibar 11 | - Pablo Ruiz 12 | - Ramiro Sánchez 13 | - Teresa de la Torre 14 | - Xavi Julian 15 | - Yamila Moreno 16 | 17 | Other previous core team members: 18 | 19 | - Alejandro Alonso 20 | - Alex Hermida 21 | - Andrey Antukh 22 | - Anler Hernández 23 | - Daniel García 24 | - Esther Moreno 25 | - Jesus Espino Garcia 26 | 27 | Special thanks to `Kaleidos Open Source S.L. `_ for providing time for Taiga development. 28 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 6.8.1 (Unreleased) 4 | 5 | - ... 6 | 7 | ## 6.8.0 (2024-04-03) 8 | 9 | - Compatible with Taiga 6.8.0 10 | 11 | ## 6.7.2 (2024-02-12) 12 | 13 | - Add some missed settings (email service and instance domain) to docker-compose-inits.yml 14 | 15 | ## 6.7.1 (2023-08-08) 16 | 17 | - Fixes high CPU peaks for rabbitmq services 18 | 19 | ## 6.7.0 (2023-06-12) 20 | 21 | - Compatible with Taiga 6.7.0 22 | 23 | ## 6.6.0 (2023-03-06) 24 | 25 | - New .env based configuration docker 26 | - Control services startup based on healthchecks 27 | - Thanks to @tibroc for adding hostnames to rabbitmq services 28 | - Thanks to @ralfyang for updating shell scripts to use latest docker version 29 | 30 | ## 6.5.0 (2022-01-24) 31 | 32 | - Compatible with Taiga 6.5.0 33 | 34 | ## 6.4.0 (2021-09-06) 35 | 36 | - Serve Taiga in subpath 37 | 38 | ## 6.3.0 (2021-08-10) 39 | 40 | - Temporary fix specifying latest valid image of RabbitMQ (issue #tg-4700) 41 | 42 | ## 6.2.2 (2021-07-15) 43 | 44 | - Compatible with Taiga 6.2.2 45 | 46 | ## 6.2.1 (2021-06-22) 47 | 48 | - Compatible with Taiga 6.2.1 49 | 50 | ## 6.2.0 (2021-06-09) 51 | 52 | - Compatible with Taiga 6.2.0 53 | 54 | ## 6.1.1 (2021-05-18) 55 | 56 | - Compatible with Taiga 6.1.1 57 | 58 | ## 6.1.0 (2021-05-04) 59 | 60 | - Update github templates 61 | 62 | ## 6.0.4 (2021-04-06) 63 | 64 | - Add named volumes for rabbit services 65 | - Improve docker configuration with `POSTGRES_PORT`. 66 | 67 | ## 6.0.3 (2021-02-22) 68 | 69 | - Improve docker configuration with `EVENTS_PUSH_BACKEND_URL` and `CELERY_BROKER_URL` variables. Thanks to @ginuerzh. 70 | - Simplify and improve docker configuration 71 | 72 | ## 6.0.2 (2021-02-15) 73 | 74 | Add `ENABLE_SLACK`, `ENABLE_GITHUB_AUTH` and `ENABLE_GITLAB_AUTH` environment variables 75 | 76 | 77 | ## 6.0.1 (2021-02-08) 78 | 79 | Adatp to latest 80 | 81 | 82 | ## 6.0.0 (2021-02-02) 83 | 84 | ### Features 85 | 86 | - main `docker-compose.yml` for Taiga installation 87 | 88 | - `docker-compose-inits.yml` to run `python manage.py` with docker-compose 89 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How can I contribute to Taiga? 2 | 3 | Thank you for your interest in contributing to Taiga. As a contributor, here are the guidelines we would like you to follow. For more information check out our [Taiga community page](https://community.taiga.io/t/how-can-i-contribute/159). 4 | 5 | ## Code of Conduct 6 | 7 | Help us keep the Taiga Community open and inclusive. Please read and follow our [Code of Conduct](https://www.taiga.io/code-of-conduct). 8 | 9 | ## Code patches, enhacements 10 | 11 | There are many different ways to contribute to Taiga's platform, from patches, to documentation and enhancements, just find the one that best fits with your skills. Check out our detailed [contribution guide](https://community.taiga.io/t/how-can-i-contribute/159#code-patches-enhacements-3). 12 | 13 | ## Issues 14 | 15 | If you find a bug in the source code, you can help us by [submitting an issue](https://github.com/taigaio/taiga-docker/issues/new/choose). Even better, you can submit a Pull Request with a fix. 16 | 17 | ## Commit Message Guidelines 18 | 19 | Taiga follows the [conventional commits format](https://www.conventionalcommits.org/en/v1.0.0/). 20 | 21 | ## Developer Certificate of Origin + License 22 | 23 | By contributing to Kaleidos INC, You accept and agree to the following terms and conditions for Your present and future Contributions submitted to Kaleidos INC Except for the license granted herein to Kaleidos INC and recipients of software distributed by Kaleidos INC, You reserve all right, title, and interest in and to Your Contributions. 24 | 25 | All Contributions are subject to the following DCO + License terms. 26 | 27 | [DCO + License](DCOLICENSE) 28 | 29 | ## Translation 30 | 31 | Access our team of translators with the link below, set up an account in Transifex and start contributing. Join us to make sure your language is covered! [Help Taiga to translate content](https://hosted.weblate.org/projects/taiga/) 32 | 33 | Localization Bugs: Taiga use Weblate to manage the i18n files so don’t submit a pull request to those files (except -en.json). To fix a translation, just access our team of translators, set up an account in the Taiga Weblate project and start contributing. 34 | -------------------------------------------------------------------------------- /DCOLICENSE: -------------------------------------------------------------------------------- 1 | Developer's Certificate of Origin 1.1 2 | 3 | By making a contribution to this project, I certify that: 4 | 5 | (a) The contribution was created in whole or in part by me and I have the right 6 | to submit it under the open source license indicated in the file; or 7 | 8 | (b) The contribution is based upon previous work that, to the best of my 9 | knowledge, is covered under an appropriate open source license and I have the 10 | right under that license to submit that work with modifications, whether 11 | created in whole or in part by me, under the same open source license 12 | (unless I am permitted to submit under a different license), as indicated 13 | in the file; or 14 | 15 | (c) The contribution was provided directly to me by some other person who 16 | certified (a), (b) or (c) and I have not modified it. 17 | 18 | (d) I understand and agree that this project and the contribution are public 19 | and that a record of the contribution (including all personal information I 20 | submit with it, including my sign-off) is maintained indefinitely and may be 21 | redistributed consistent with this project or the open source license(s) 22 | involved. 23 | 24 | All Contributions to this project are licensed under the following license: 25 | 26 | Mozilla Public License Version 2.0 27 | ================================== 28 | 29 | 1. Definitions 30 | -------------- 31 | 32 | 1.1. "Contributor" 33 | means each individual or legal entity that creates, contributes to 34 | the creation of, or owns Covered Software. 35 | 36 | 1.2. "Contributor Version" 37 | means the combination of the Contributions of others (if any) used 38 | by a Contributor and that particular Contributor's Contribution. 39 | 40 | 1.3. "Contribution" 41 | means Covered Software of a particular Contributor. 42 | 43 | 1.4. "Covered Software" 44 | means Source Code Form to which the initial Contributor has attached 45 | the notice in Exhibit A, the Executable Form of such Source Code 46 | Form, and Modifications of such Source Code Form, in each case 47 | including portions thereof. 48 | 49 | 1.5. "Incompatible With Secondary Licenses" 50 | means 51 | 52 | (a) that the initial Contributor has attached the notice described 53 | in Exhibit B to the Covered Software; or 54 | 55 | (b) that the Covered Software was made available under the terms of 56 | version 1.1 or earlier of the License, but not also under the 57 | terms of a Secondary License. 58 | 59 | 1.6. "Executable Form" 60 | means any form of the work other than Source Code Form. 61 | 62 | 1.7. "Larger Work" 63 | means a work that combines Covered Software with other material, in 64 | a separate file or files, that is not Covered Software. 65 | 66 | 1.8. "License" 67 | means this document. 68 | 69 | 1.9. "Licensable" 70 | means having the right to grant, to the maximum extent possible, 71 | whether at the time of the initial grant or subsequently, any and 72 | all of the rights conveyed by this License. 73 | 74 | 1.10. "Modifications" 75 | means any of the following: 76 | 77 | (a) any file in Source Code Form that results from an addition to, 78 | deletion from, or modification of the contents of Covered 79 | Software; or 80 | 81 | (b) any new file in Source Code Form that contains any Covered 82 | Software. 83 | 84 | 1.11. "Patent Claims" of a Contributor 85 | means any patent claim(s), including without limitation, method, 86 | process, and apparatus claims, in any patent Licensable by such 87 | Contributor that would be infringed, but for the grant of the 88 | License, by the making, using, selling, offering for sale, having 89 | made, import, or transfer of either its Contributions or its 90 | Contributor Version. 91 | 92 | 1.12. "Secondary License" 93 | means either the GNU General Public License, Version 2.0, the GNU 94 | Lesser General Public License, Version 2.1, the GNU Affero General 95 | Public License, Version 3.0, or any later versions of those 96 | licenses. 97 | 98 | 1.13. "Source Code Form" 99 | means the form of the work preferred for making modifications. 100 | 101 | 1.14. "You" (or "Your") 102 | means an individual or a legal entity exercising rights under this 103 | License. For legal entities, "You" includes any entity that 104 | controls, is controlled by, or is under common control with You. For 105 | purposes of this definition, "control" means (a) the power, direct 106 | or indirect, to cause the direction or management of such entity, 107 | whether by contract or otherwise, or (b) ownership of more than 108 | fifty percent (50%) of the outstanding shares or beneficial 109 | ownership of such entity. 110 | 111 | 2. License Grants and Conditions 112 | -------------------------------- 113 | 114 | 2.1. Grants 115 | 116 | Each Contributor hereby grants You a world-wide, royalty-free, 117 | non-exclusive license: 118 | 119 | (a) under intellectual property rights (other than patent or trademark) 120 | Licensable by such Contributor to use, reproduce, make available, 121 | modify, display, perform, distribute, and otherwise exploit its 122 | Contributions, either on an unmodified basis, with Modifications, or 123 | as part of a Larger Work; and 124 | 125 | (b) under Patent Claims of such Contributor to make, use, sell, offer 126 | for sale, have made, import, and otherwise transfer either its 127 | Contributions or its Contributor Version. 128 | 129 | 2.2. Effective Date 130 | 131 | The licenses granted in Section 2.1 with respect to any Contribution 132 | become effective for each Contribution on the date the Contributor first 133 | distributes such Contribution. 134 | 135 | 2.3. Limitations on Grant Scope 136 | 137 | The licenses granted in this Section 2 are the only rights granted under 138 | this License. No additional rights or licenses will be implied from the 139 | distribution or licensing of Covered Software under this License. 140 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 141 | Contributor: 142 | 143 | (a) for any code that a Contributor has removed from Covered Software; 144 | or 145 | 146 | (b) for infringements caused by: (i) Your and any other third party's 147 | modifications of Covered Software, or (ii) the combination of its 148 | Contributions with other software (except as part of its Contributor 149 | Version); or 150 | 151 | (c) under Patent Claims infringed by Covered Software in the absence of 152 | its Contributions. 153 | 154 | This License does not grant any rights in the trademarks, service marks, 155 | or logos of any Contributor (except as may be necessary to comply with 156 | the notice requirements in Section 3.4). 157 | 158 | 2.4. Subsequent Licenses 159 | 160 | No Contributor makes additional grants as a result of Your choice to 161 | distribute the Covered Software under a subsequent version of this 162 | License (see Section 10.2) or under the terms of a Secondary License (if 163 | permitted under the terms of Section 3.3). 164 | 165 | 2.5. Representation 166 | 167 | Each Contributor represents that the Contributor believes its 168 | Contributions are its original creation(s) or it has sufficient rights 169 | to grant the rights to its Contributions conveyed by this License. 170 | 171 | 2.6. Fair Use 172 | 173 | This License is not intended to limit any rights You have under 174 | applicable copyright doctrines of fair use, fair dealing, or other 175 | equivalents. 176 | 177 | 2.7. Conditions 178 | 179 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 180 | in Section 2.1. 181 | 182 | 3. Responsibilities 183 | ------------------- 184 | 185 | 3.1. Distribution of Source Form 186 | 187 | All distribution of Covered Software in Source Code Form, including any 188 | Modifications that You create or to which You contribute, must be under 189 | the terms of this License. You must inform recipients that the Source 190 | Code Form of the Covered Software is governed by the terms of this 191 | License, and how they can obtain a copy of this License. You may not 192 | attempt to alter or restrict the recipients' rights in the Source Code 193 | Form. 194 | 195 | 3.2. Distribution of Executable Form 196 | 197 | If You distribute Covered Software in Executable Form then: 198 | 199 | (a) such Covered Software must also be made available in Source Code 200 | Form, as described in Section 3.1, and You must inform recipients of 201 | the Executable Form how they can obtain a copy of such Source Code 202 | Form by reasonable means in a timely manner, at a charge no more 203 | than the cost of distribution to the recipient; and 204 | 205 | (b) You may distribute such Executable Form under the terms of this 206 | License, or sublicense it under different terms, provided that the 207 | license for the Executable Form does not attempt to limit or alter 208 | the recipients' rights in the Source Code Form under this License. 209 | 210 | 3.3. Distribution of a Larger Work 211 | 212 | You may create and distribute a Larger Work under terms of Your choice, 213 | provided that You also comply with the requirements of this License for 214 | the Covered Software. If the Larger Work is a combination of Covered 215 | Software with a work governed by one or more Secondary Licenses, and the 216 | Covered Software is not Incompatible With Secondary Licenses, this 217 | License permits You to additionally distribute such Covered Software 218 | under the terms of such Secondary License(s), so that the recipient of 219 | the Larger Work may, at their option, further distribute the Covered 220 | Software under the terms of either this License or such Secondary 221 | License(s). 222 | 223 | 3.4. Notices 224 | 225 | You may not remove or alter the substance of any license notices 226 | (including copyright notices, patent notices, disclaimers of warranty, 227 | or limitations of liability) contained within the Source Code Form of 228 | the Covered Software, except that You may alter any license notices to 229 | the extent required to remedy known factual inaccuracies. 230 | 231 | 3.5. Application of Additional Terms 232 | 233 | You may choose to offer, and to charge a fee for, warranty, support, 234 | indemnity or liability obligations to one or more recipients of Covered 235 | Software. However, You may do so only on Your own behalf, and not on 236 | behalf of any Contributor. You must make it absolutely clear that any 237 | such warranty, support, indemnity, or liability obligation is offered by 238 | You alone, and You hereby agree to indemnify every Contributor for any 239 | liability incurred by such Contributor as a result of warranty, support, 240 | indemnity or liability terms You offer. You may include additional 241 | disclaimers of warranty and limitations of liability specific to any 242 | jurisdiction. 243 | 244 | 4. Inability to Comply Due to Statute or Regulation 245 | --------------------------------------------------- 246 | 247 | If it is impossible for You to comply with any of the terms of this 248 | License with respect to some or all of the Covered Software due to 249 | statute, judicial order, or regulation then You must: (a) comply with 250 | the terms of this License to the maximum extent possible; and (b) 251 | describe the limitations and the code they affect. Such description must 252 | be placed in a text file included with all distributions of the Covered 253 | Software under this License. Except to the extent prohibited by statute 254 | or regulation, such description must be sufficiently detailed for a 255 | recipient of ordinary skill to be able to understand it. 256 | 257 | 5. Termination 258 | -------------- 259 | 260 | 5.1. The rights granted under this License will terminate automatically 261 | if You fail to comply with any of its terms. However, if You become 262 | compliant, then the rights granted under this License from a particular 263 | Contributor are reinstated (a) provisionally, unless and until such 264 | Contributor explicitly and finally terminates Your grants, and (b) on an 265 | ongoing basis, if such Contributor fails to notify You of the 266 | non-compliance by some reasonable means prior to 60 days after You have 267 | come back into compliance. Moreover, Your grants from a particular 268 | Contributor are reinstated on an ongoing basis if such Contributor 269 | notifies You of the non-compliance by some reasonable means, this is the 270 | first time You have received notice of non-compliance with this License 271 | from such Contributor, and You become compliant prior to 30 days after 272 | Your receipt of the notice. 273 | 274 | 5.2. If You initiate litigation against any entity by asserting a patent 275 | infringement claim (excluding declaratory judgment actions, 276 | counter-claims, and cross-claims) alleging that a Contributor Version 277 | directly or indirectly infringes any patent, then the rights granted to 278 | You by any and all Contributors for the Covered Software under Section 279 | 2.1 of this License shall terminate. 280 | 281 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all 282 | end user license agreements (excluding distributors and resellers) which 283 | have been validly granted by You or Your distributors under this License 284 | prior to termination shall survive termination. 285 | 286 | ************************************************************************ 287 | * * 288 | * 6. Disclaimer of Warranty * 289 | * ------------------------- * 290 | * * 291 | * Covered Software is provided under this License on an "as is" * 292 | * basis, without warranty of any kind, either expressed, implied, or * 293 | * statutory, including, without limitation, warranties that the * 294 | * Covered Software is free of defects, merchantable, fit for a * 295 | * particular purpose or non-infringing. The entire risk as to the * 296 | * quality and performance of the Covered Software is with You. * 297 | * Should any Covered Software prove defective in any respect, You * 298 | * (not any Contributor) assume the cost of any necessary servicing, * 299 | * repair, or correction. This disclaimer of warranty constitutes an * 300 | * essential part of this License. No use of any Covered Software is * 301 | * authorized under this License except under this disclaimer. * 302 | * * 303 | ************************************************************************ 304 | 305 | ************************************************************************ 306 | * * 307 | * 7. Limitation of Liability * 308 | * -------------------------- * 309 | * * 310 | * Under no circumstances and under no legal theory, whether tort * 311 | * (including negligence), contract, or otherwise, shall any * 312 | * Contributor, or anyone who distributes Covered Software as * 313 | * permitted above, be liable to You for any direct, indirect, * 314 | * special, incidental, or consequential damages of any character * 315 | * including, without limitation, damages for lost profits, loss of * 316 | * goodwill, work stoppage, computer failure or malfunction, or any * 317 | * and all other commercial damages or losses, even if such party * 318 | * shall have been informed of the possibility of such damages. This * 319 | * limitation of liability shall not apply to liability for death or * 320 | * personal injury resulting from such party's negligence to the * 321 | * extent applicable law prohibits such limitation. Some * 322 | * jurisdictions do not allow the exclusion or limitation of * 323 | * incidental or consequential damages, so this exclusion and * 324 | * limitation may not apply to You. * 325 | * * 326 | ************************************************************************ 327 | 328 | 8. Litigation 329 | ------------- 330 | 331 | Any litigation relating to this License may be brought only in the 332 | courts of a jurisdiction where the defendant maintains its principal 333 | place of business and such litigation shall be governed by laws of that 334 | jurisdiction, without reference to its conflict-of-law provisions. 335 | Nothing in this Section shall prevent a party's ability to bring 336 | cross-claims or counter-claims. 337 | 338 | 9. Miscellaneous 339 | ---------------- 340 | 341 | This License represents the complete agreement concerning the subject 342 | matter hereof. If any provision of this License is held to be 343 | unenforceable, such provision shall be reformed only to the extent 344 | necessary to make it enforceable. Any law or regulation which provides 345 | that the language of a contract shall be construed against the drafter 346 | shall not be used to construe this License against a Contributor. 347 | 348 | 10. Versions of the License 349 | --------------------------- 350 | 351 | 10.1. New Versions 352 | 353 | Mozilla Foundation is the license steward. Except as provided in Section 354 | 10.3, no one other than the license steward has the right to modify or 355 | publish new versions of this License. Each version will be given a 356 | distinguishing version number. 357 | 358 | 10.2. Effect of New Versions 359 | 360 | You may distribute the Covered Software under the terms of the version 361 | of the License under which You originally received the Covered Software, 362 | or under the terms of any subsequent version published by the license 363 | steward. 364 | 365 | 10.3. Modified Versions 366 | 367 | If you create software not governed by this License, and you want to 368 | create a new license for such software, you may create and use a 369 | modified version of this License if you rename the license and remove 370 | any references to the name of the license steward (except to note that 371 | such modified license differs from this License). 372 | 373 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 374 | Licenses 375 | 376 | If You choose to distribute Source Code Form that is Incompatible With 377 | Secondary Licenses under the terms of this version of the License, the 378 | notice described in Exhibit B of this License must be attached. 379 | 380 | Exhibit A - Source Code Form License Notice 381 | ------------------------------------------- 382 | 383 | This Source Code Form is subject to the terms of the Mozilla Public 384 | License, v. 2.0. If a copy of the MPL was not distributed with this 385 | file, You can obtain one at http://mozilla.org/MPL/2.0/. 386 | 387 | If it is not possible or desirable to put the notice in a particular 388 | file, then You may include the notice in a location (such as a LICENSE 389 | file in a relevant directory) where a recipient would be likely to look 390 | for such a notice. 391 | 392 | You may add additional accurate notices of copyright ownership. 393 | 394 | Exhibit B - "Incompatible With Secondary Licenses" Notice 395 | --------------------------------------------------------- 396 | 397 | This Source Code Form is "Incompatible With Secondary Licenses", as 398 | defined by the Mozilla Public License, v. 2.0. 399 | 400 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Mozilla Public License Version 2.0 2 | ================================== 3 | 4 | 1. Definitions 5 | -------------- 6 | 7 | 1.1. "Contributor" 8 | means each individual or legal entity that creates, contributes to 9 | the creation of, or owns Covered Software. 10 | 11 | 1.2. "Contributor Version" 12 | means the combination of the Contributions of others (if any) used 13 | by a Contributor and that particular Contributor's Contribution. 14 | 15 | 1.3. "Contribution" 16 | means Covered Software of a particular Contributor. 17 | 18 | 1.4. "Covered Software" 19 | means Source Code Form to which the initial Contributor has attached 20 | the notice in Exhibit A, the Executable Form of such Source Code 21 | Form, and Modifications of such Source Code Form, in each case 22 | including portions thereof. 23 | 24 | 1.5. "Incompatible With Secondary Licenses" 25 | means 26 | 27 | (a) that the initial Contributor has attached the notice described 28 | in Exhibit B to the Covered Software; or 29 | 30 | (b) that the Covered Software was made available under the terms of 31 | version 1.1 or earlier of the License, but not also under the 32 | terms of a Secondary License. 33 | 34 | 1.6. "Executable Form" 35 | means any form of the work other than Source Code Form. 36 | 37 | 1.7. "Larger Work" 38 | means a work that combines Covered Software with other material, in 39 | a separate file or files, that is not Covered Software. 40 | 41 | 1.8. "License" 42 | means this document. 43 | 44 | 1.9. "Licensable" 45 | means having the right to grant, to the maximum extent possible, 46 | whether at the time of the initial grant or subsequently, any and 47 | all of the rights conveyed by this License. 48 | 49 | 1.10. "Modifications" 50 | means any of the following: 51 | 52 | (a) any file in Source Code Form that results from an addition to, 53 | deletion from, or modification of the contents of Covered 54 | Software; or 55 | 56 | (b) any new file in Source Code Form that contains any Covered 57 | Software. 58 | 59 | 1.11. "Patent Claims" of a Contributor 60 | means any patent claim(s), including without limitation, method, 61 | process, and apparatus claims, in any patent Licensable by such 62 | Contributor that would be infringed, but for the grant of the 63 | License, by the making, using, selling, offering for sale, having 64 | made, import, or transfer of either its Contributions or its 65 | Contributor Version. 66 | 67 | 1.12. "Secondary License" 68 | means either the GNU General Public License, Version 2.0, the GNU 69 | Lesser General Public License, Version 2.1, the GNU Affero General 70 | Public License, Version 3.0, or any later versions of those 71 | licenses. 72 | 73 | 1.13. "Source Code Form" 74 | means the form of the work preferred for making modifications. 75 | 76 | 1.14. "You" (or "Your") 77 | means an individual or a legal entity exercising rights under this 78 | License. For legal entities, "You" includes any entity that 79 | controls, is controlled by, or is under common control with You. For 80 | purposes of this definition, "control" means (a) the power, direct 81 | or indirect, to cause the direction or management of such entity, 82 | whether by contract or otherwise, or (b) ownership of more than 83 | fifty percent (50%) of the outstanding shares or beneficial 84 | ownership of such entity. 85 | 86 | 2. License Grants and Conditions 87 | -------------------------------- 88 | 89 | 2.1. Grants 90 | 91 | Each Contributor hereby grants You a world-wide, royalty-free, 92 | non-exclusive license: 93 | 94 | (a) under intellectual property rights (other than patent or trademark) 95 | Licensable by such Contributor to use, reproduce, make available, 96 | modify, display, perform, distribute, and otherwise exploit its 97 | Contributions, either on an unmodified basis, with Modifications, or 98 | as part of a Larger Work; and 99 | 100 | (b) under Patent Claims of such Contributor to make, use, sell, offer 101 | for sale, have made, import, and otherwise transfer either its 102 | Contributions or its Contributor Version. 103 | 104 | 2.2. Effective Date 105 | 106 | The licenses granted in Section 2.1 with respect to any Contribution 107 | become effective for each Contribution on the date the Contributor first 108 | distributes such Contribution. 109 | 110 | 2.3. Limitations on Grant Scope 111 | 112 | The licenses granted in this Section 2 are the only rights granted under 113 | this License. No additional rights or licenses will be implied from the 114 | distribution or licensing of Covered Software under this License. 115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 116 | Contributor: 117 | 118 | (a) for any code that a Contributor has removed from Covered Software; 119 | or 120 | 121 | (b) for infringements caused by: (i) Your and any other third party's 122 | modifications of Covered Software, or (ii) the combination of its 123 | Contributions with other software (except as part of its Contributor 124 | Version); or 125 | 126 | (c) under Patent Claims infringed by Covered Software in the absence of 127 | its Contributions. 128 | 129 | This License does not grant any rights in the trademarks, service marks, 130 | or logos of any Contributor (except as may be necessary to comply with 131 | the notice requirements in Section 3.4). 132 | 133 | 2.4. Subsequent Licenses 134 | 135 | No Contributor makes additional grants as a result of Your choice to 136 | distribute the Covered Software under a subsequent version of this 137 | License (see Section 10.2) or under the terms of a Secondary License (if 138 | permitted under the terms of Section 3.3). 139 | 140 | 2.5. Representation 141 | 142 | Each Contributor represents that the Contributor believes its 143 | Contributions are its original creation(s) or it has sufficient rights 144 | to grant the rights to its Contributions conveyed by this License. 145 | 146 | 2.6. Fair Use 147 | 148 | This License is not intended to limit any rights You have under 149 | applicable copyright doctrines of fair use, fair dealing, or other 150 | equivalents. 151 | 152 | 2.7. Conditions 153 | 154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 155 | in Section 2.1. 156 | 157 | 3. Responsibilities 158 | ------------------- 159 | 160 | 3.1. Distribution of Source Form 161 | 162 | All distribution of Covered Software in Source Code Form, including any 163 | Modifications that You create or to which You contribute, must be under 164 | the terms of this License. You must inform recipients that the Source 165 | Code Form of the Covered Software is governed by the terms of this 166 | License, and how they can obtain a copy of this License. You may not 167 | attempt to alter or restrict the recipients' rights in the Source Code 168 | Form. 169 | 170 | 3.2. Distribution of Executable Form 171 | 172 | If You distribute Covered Software in Executable Form then: 173 | 174 | (a) such Covered Software must also be made available in Source Code 175 | Form, as described in Section 3.1, and You must inform recipients of 176 | the Executable Form how they can obtain a copy of such Source Code 177 | Form by reasonable means in a timely manner, at a charge no more 178 | than the cost of distribution to the recipient; and 179 | 180 | (b) You may distribute such Executable Form under the terms of this 181 | License, or sublicense it under different terms, provided that the 182 | license for the Executable Form does not attempt to limit or alter 183 | the recipients' rights in the Source Code Form under this License. 184 | 185 | 3.3. Distribution of a Larger Work 186 | 187 | You may create and distribute a Larger Work under terms of Your choice, 188 | provided that You also comply with the requirements of this License for 189 | the Covered Software. If the Larger Work is a combination of Covered 190 | Software with a work governed by one or more Secondary Licenses, and the 191 | Covered Software is not Incompatible With Secondary Licenses, this 192 | License permits You to additionally distribute such Covered Software 193 | under the terms of such Secondary License(s), so that the recipient of 194 | the Larger Work may, at their option, further distribute the Covered 195 | Software under the terms of either this License or such Secondary 196 | License(s). 197 | 198 | 3.4. Notices 199 | 200 | You may not remove or alter the substance of any license notices 201 | (including copyright notices, patent notices, disclaimers of warranty, 202 | or limitations of liability) contained within the Source Code Form of 203 | the Covered Software, except that You may alter any license notices to 204 | the extent required to remedy known factual inaccuracies. 205 | 206 | 3.5. Application of Additional Terms 207 | 208 | You may choose to offer, and to charge a fee for, warranty, support, 209 | indemnity or liability obligations to one or more recipients of Covered 210 | Software. However, You may do so only on Your own behalf, and not on 211 | behalf of any Contributor. You must make it absolutely clear that any 212 | such warranty, support, indemnity, or liability obligation is offered by 213 | You alone, and You hereby agree to indemnify every Contributor for any 214 | liability incurred by such Contributor as a result of warranty, support, 215 | indemnity or liability terms You offer. You may include additional 216 | disclaimers of warranty and limitations of liability specific to any 217 | jurisdiction. 218 | 219 | 4. Inability to Comply Due to Statute or Regulation 220 | --------------------------------------------------- 221 | 222 | If it is impossible for You to comply with any of the terms of this 223 | License with respect to some or all of the Covered Software due to 224 | statute, judicial order, or regulation then You must: (a) comply with 225 | the terms of this License to the maximum extent possible; and (b) 226 | describe the limitations and the code they affect. Such description must 227 | be placed in a text file included with all distributions of the Covered 228 | Software under this License. Except to the extent prohibited by statute 229 | or regulation, such description must be sufficiently detailed for a 230 | recipient of ordinary skill to be able to understand it. 231 | 232 | 5. Termination 233 | -------------- 234 | 235 | 5.1. The rights granted under this License will terminate automatically 236 | if You fail to comply with any of its terms. However, if You become 237 | compliant, then the rights granted under this License from a particular 238 | Contributor are reinstated (a) provisionally, unless and until such 239 | Contributor explicitly and finally terminates Your grants, and (b) on an 240 | ongoing basis, if such Contributor fails to notify You of the 241 | non-compliance by some reasonable means prior to 60 days after You have 242 | come back into compliance. Moreover, Your grants from a particular 243 | Contributor are reinstated on an ongoing basis if such Contributor 244 | notifies You of the non-compliance by some reasonable means, this is the 245 | first time You have received notice of non-compliance with this License 246 | from such Contributor, and You become compliant prior to 30 days after 247 | Your receipt of the notice. 248 | 249 | 5.2. If You initiate litigation against any entity by asserting a patent 250 | infringement claim (excluding declaratory judgment actions, 251 | counter-claims, and cross-claims) alleging that a Contributor Version 252 | directly or indirectly infringes any patent, then the rights granted to 253 | You by any and all Contributors for the Covered Software under Section 254 | 2.1 of this License shall terminate. 255 | 256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all 257 | end user license agreements (excluding distributors and resellers) which 258 | have been validly granted by You or Your distributors under this License 259 | prior to termination shall survive termination. 260 | 261 | ************************************************************************ 262 | * * 263 | * 6. Disclaimer of Warranty * 264 | * ------------------------- * 265 | * * 266 | * Covered Software is provided under this License on an "as is" * 267 | * basis, without warranty of any kind, either expressed, implied, or * 268 | * statutory, including, without limitation, warranties that the * 269 | * Covered Software is free of defects, merchantable, fit for a * 270 | * particular purpose or non-infringing. The entire risk as to the * 271 | * quality and performance of the Covered Software is with You. * 272 | * Should any Covered Software prove defective in any respect, You * 273 | * (not any Contributor) assume the cost of any necessary servicing, * 274 | * repair, or correction. This disclaimer of warranty constitutes an * 275 | * essential part of this License. No use of any Covered Software is * 276 | * authorized under this License except under this disclaimer. * 277 | * * 278 | ************************************************************************ 279 | 280 | ************************************************************************ 281 | * * 282 | * 7. Limitation of Liability * 283 | * -------------------------- * 284 | * * 285 | * Under no circumstances and under no legal theory, whether tort * 286 | * (including negligence), contract, or otherwise, shall any * 287 | * Contributor, or anyone who distributes Covered Software as * 288 | * permitted above, be liable to You for any direct, indirect, * 289 | * special, incidental, or consequential damages of any character * 290 | * including, without limitation, damages for lost profits, loss of * 291 | * goodwill, work stoppage, computer failure or malfunction, or any * 292 | * and all other commercial damages or losses, even if such party * 293 | * shall have been informed of the possibility of such damages. This * 294 | * limitation of liability shall not apply to liability for death or * 295 | * personal injury resulting from such party's negligence to the * 296 | * extent applicable law prohibits such limitation. Some * 297 | * jurisdictions do not allow the exclusion or limitation of * 298 | * incidental or consequential damages, so this exclusion and * 299 | * limitation may not apply to You. * 300 | * * 301 | ************************************************************************ 302 | 303 | 8. Litigation 304 | ------------- 305 | 306 | Any litigation relating to this License may be brought only in the 307 | courts of a jurisdiction where the defendant maintains its principal 308 | place of business and such litigation shall be governed by laws of that 309 | jurisdiction, without reference to its conflict-of-law provisions. 310 | Nothing in this Section shall prevent a party's ability to bring 311 | cross-claims or counter-claims. 312 | 313 | 9. Miscellaneous 314 | ---------------- 315 | 316 | This License represents the complete agreement concerning the subject 317 | matter hereof. If any provision of this License is held to be 318 | unenforceable, such provision shall be reformed only to the extent 319 | necessary to make it enforceable. Any law or regulation which provides 320 | that the language of a contract shall be construed against the drafter 321 | shall not be used to construe this License against a Contributor. 322 | 323 | 10. Versions of the License 324 | --------------------------- 325 | 326 | 10.1. New Versions 327 | 328 | Mozilla Foundation is the license steward. Except as provided in Section 329 | 10.3, no one other than the license steward has the right to modify or 330 | publish new versions of this License. Each version will be given a 331 | distinguishing version number. 332 | 333 | 10.2. Effect of New Versions 334 | 335 | You may distribute the Covered Software under the terms of the version 336 | of the License under which You originally received the Covered Software, 337 | or under the terms of any subsequent version published by the license 338 | steward. 339 | 340 | 10.3. Modified Versions 341 | 342 | If you create software not governed by this License, and you want to 343 | create a new license for such software, you may create and use a 344 | modified version of this License if you rename the license and remove 345 | any references to the name of the license steward (except to note that 346 | such modified license differs from this License). 347 | 348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 349 | Licenses 350 | 351 | If You choose to distribute Source Code Form that is Incompatible With 352 | Secondary Licenses under the terms of this version of the License, the 353 | notice described in Exhibit B of this License must be attached. 354 | 355 | Exhibit A - Source Code Form License Notice 356 | ------------------------------------------- 357 | 358 | This Source Code Form is subject to the terms of the Mozilla Public 359 | License, v. 2.0. If a copy of the MPL was not distributed with this 360 | file, You can obtain one at http://mozilla.org/MPL/2.0/. 361 | 362 | If it is not possible or desirable to put the notice in a particular 363 | file, then You may include the notice in a location (such as a LICENSE 364 | file in a relevant directory) where a recipient would be likely to look 365 | for such a notice. 366 | 367 | You may add additional accurate notices of copyright ownership. 368 | 369 | Exhibit B - "Incompatible With Secondary Licenses" Notice 370 | --------------------------------------------------------- 371 | 372 | This Source Code Form is "Incompatible With Secondary Licenses", as 373 | defined by the Mozilla Public License, v. 2.0. 374 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Taiga Docker 2 | 3 | | :information_source: | If you're already using taiga-docker, follow this [migration guide](https://docs.taiga.io/upgrades-docker-migrate.html) to use the new `.env` based deployment. | 4 | |---------------|:----| 5 | 6 | > **Note:** 7 | > You can access the [older docker installation guide](https://docs.taiga.io/setup-production.old.html#setup-prod-with-docker-old) for documentation purposes, intended just for earlier versions of Taiga (prior to ver. 6.6.0) 8 | 9 | 10 | ## Getting Started 11 | 12 | This section intends to explain how to get Taiga up and running in a simple two steps, using **docker** and **docker compose**. 13 | 14 | If you don't have docker installed, please follow installation instructions from [docker.com](https://docs.docker.com/engine/install/) (**version 19.03.0+**) 15 | 16 | Additionally, it's necessary to have familiarity with Docker, docker compose and Docker repositories. 17 | 18 | > **Note** 19 | > branch `stable` should be used to deploy Taiga in production and `main` branch for development purposes. 20 | 21 | ### Start the application 22 | 23 | ```sh 24 | $ ./launch-taiga.sh 25 | ``` 26 | 27 | After some instants, when the application is started you can proceed to create the superuser with the following script: 28 | 29 | ```sh 30 | $ ./taiga-manage.sh createsuperuser 31 | ``` 32 | 33 | The `taiga-manage.sh` script lets launch manage.py commands on the 34 | back instance: 35 | 36 | ```sh 37 | $ ./taiga-manage.sh [COMMAND] 38 | ``` 39 | 40 | If you're testing it in your own machine, you can access the application in **http://localhost:9000**. If you're deploying in a server, you'll need to configure hosts and nginx as described later. 41 | 42 | ![Taiga screenshot](imgs/taiga.jpg) 43 | 44 | ## Documentation 45 | 46 | Currently, we have authored three main documentation hubs: 47 | 48 | - **[API](https://docs.taiga.io/api.html)**: Our API documentation and reference for developing from Taiga API. 49 | - **[Documentation](https://docs.taiga.io/)**: If you need to install Taiga on your own server, this is the place to find some guides. 50 | - **[Taiga Community](https://community.taiga.io/)**: This page is intended to be the support reference page for the users. 51 | 52 | ## Bug reports 53 | 54 | If you **find a bug** in Taiga you can always report it: 55 | 56 | - in [Taiga issues](https://tree.taiga.io/project/taiga/issues). **This is the preferred way** 57 | - in [Github issues](https://github.com/taigaio/taiga-docker/issues) 58 | - send us a mail to support@taiga.io if is a bug related to [tree.taiga.io](https://tree.taiga.io) 59 | - send us a mail to security@taiga.io if is a **security bug** 60 | 61 | One of our fellow Taiga developers will search, find and hunt it as soon as possible. 62 | 63 | Please, before reporting a bug, write down how can we reproduce it, your operating system, your browser and version, and if it's possible, a screenshot. Sometimes it takes less time to fix a bug if the developer knows how to find it. 64 | 65 | ## Community 66 | 67 | If you **need help to setup Taiga**, want to **talk about some cool enhancemnt** or you have **some questions**, please go to [Taiga community](https://community.taiga.io/). 68 | 69 | If you want to be up to date about announcements of releases, important changes and so on, you can subscribe to our newsletter (you will find it by scrolling down at [https://taiga.io](https://www.taiga.io/)) and follow [@taigaio](https://twitter.com/taigaio) on Twitter. 70 | 71 | ## Contribute to Taiga 72 | 73 | There are many different ways to contribute to Taiga's platform, from patches, to documentation and UI enhancements, just find the one that best fits with your skills. Check out our detailed [contribution guide](https://community.taiga.io/t/how-can-i-contribute/159#code-patches-enhacements-3). 74 | 75 | ## Code of Conduct 76 | 77 | Help us keep the Taiga Community open and inclusive. Please read and follow our [Code of Conduct](https://github.com/taigaio/code-of-conduct/blob/main/CODE_OF_CONDUCT.md). 78 | 79 | ## License 80 | 81 | Every code patch accepted in Taiga codebase is licensed under [MPL 2.0](LICENSE). You must be careful to not include any code that can not be licensed under this license. 82 | 83 | Please read carefully [our license](LICENSE) and ask us if you have any questions as well as the [Contribution policy](https://github.com/taigaio/taiga-docker/blob/main/CONTRIBUTING.md). 84 | 85 | ## Configuration 86 | 87 | We've exposed the **Basic configuration** settings in Taiga to an `.env` file. We strongly recommend you to change it, or at least review its content, to avoid using the default values. 88 | 89 | Both `docker-compose.yml` and `docker-compose-inits.yml` will read from this file to populate their environment variables, so, initially you don't need to change them. Edit these files just in case you require to enable **Additional customization**, or an **Advanced configuration**. 90 | 91 | Refer to these sections for further information. 92 | 93 | ## Basic Configuration 94 | 95 | You will find basic **configuration variables** in the `.env` file. As stated before, we encourage you to edit these values, especially those affecting the security. 96 | 97 | ### Database settings 98 | 99 | These vars are used to create the database for Taiga and connect to it. 100 | 101 | ```bash 102 | POSTGRES_USER=taiga # user to connect to PostgreSQL 103 | POSTGRES_PASSWORD=taiga # database user's password 104 | ``` 105 | 106 | ### URLs settings 107 | 108 | These vars set where your Taiga instance should be served, and the security protocols to use in the communication layer. 109 | 110 | ```bash 111 | TAIGA_SCHEME=http # serve Taiga using "http" or "https" (secured) connection 112 | TAIGA_DOMAIN=localhost:9000 # Taiga's base URL 113 | SUBPATH="" # it'll be appended to the TAIGA_DOMAIN (use either "" or a "/subpath") 114 | WEBSOCKETS_SCHEME=ws # events connection protocol (use either "ws" or "wss") 115 | ``` 116 | 117 | The default configuration assumes Taiga is being served in a **subdomain**. For example: 118 | 119 | ```bash 120 | TAIGA_SCHEME=https 121 | TAIGA_DOMAIN=taiga.mycompany.com 122 | SUBPATH="" 123 | WEBSOCKETS_SCHEME=wss 124 | ``` 125 | 126 | If Taiga is being served in a **subpath**, instead of a subdomain, the configuration should be something like this: 127 | 128 | ```bash 129 | TAIGA_SCHEME=https 130 | TAIGA_DOMAIN=mycompany.com 131 | SUBPATH="/taiga" 132 | WEBSOCKETS_SCHEME=wss 133 | ``` 134 | 135 | ### Secret Key settings 136 | 137 | This variable allows you to set the secret key in Taiga, used in the cryptographic signing. 138 | 139 | ```bash 140 | SECRET_KEY="taiga-secret-key" # Please, change it to an unpredictable value! 141 | ``` 142 | 143 | ### Email Settings 144 | 145 | By default, emails will be printed in the standard output (`EMAIL_BACKEND=console`). If you have your own SMTP service, change it to `EMAIL_BACKEND=smtp` and configure the rest of these variables with the values supplied by your SMTP provider: 146 | 147 | ```bash 148 | EMAIL_BACKEND=console # use an SMTP server or display the emails in the console (either "smtp" or "console") 149 | EMAIL_HOST=smtp.host.example.com # SMTP server address 150 | EMAIL_PORT=587 # default SMTP port 151 | EMAIL_HOST_USER=user # user to connect the SMTP server 152 | EMAIL_HOST_PASSWORD=password # SMTP user's password 153 | EMAIL_DEFAULT_FROM=changeme@example.com # email address for the automated emails 154 | 155 | # EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive (only set one of those to True) 156 | EMAIL_USE_TLS=True # use TLS (secure) connection with the SMTP server 157 | EMAIL_USE_SSL=False # use implicit TLS (secure) connection with the SMTP server 158 | ``` 159 | 160 | ### Queue manager settings 161 | 162 | These variables are used to leave messages in the rabbitmq services. 163 | 164 | ```bash 165 | RABBITMQ_USER=taiga # user to connect to RabbitMQ 166 | RABBITMQ_PASS=taiga # RabbitMQ user's password 167 | RABBITMQ_VHOST=taiga # RabbitMQ container name 168 | RABBITMQ_ERLANG_COOKIE=secret-erlang-cookie # unique value shared by any connected instance of RabbitMQ 169 | ``` 170 | 171 | ### Attachments settings 172 | 173 | You can configure how long the attachments will be accessible by changing the token expiration timer. After that amount of seconds the token will expire, but you can always get a new attachment url with an active token. 174 | 175 | ```bash 176 | ATTACHMENTS_MAX_AGE=360 # token expiration date (in seconds) 177 | ``` 178 | 179 | ### Telemetry Settings 180 | 181 | Telemetry anonymous data is collected in order to learn about the use of Taiga and improve the platform based on real scenarios. You may want to enable this to help us shape future Taiga. 182 | 183 | ```bash 184 | ENABLE_TELEMETRY=True 185 | ``` 186 | 187 | You can opt out by setting this variable to False. By default, it's True. 188 | 189 | ## Additional customization 190 | 191 | All these customization options are by default disabled and require you to edit `docker-compose.yml`. 192 | 193 | You should add the corresponding environment variables in the proper services (or in `&default-back-environment` group) with a valid value in order to enable them. Please, do not modify it unless you know what you’re doing. 194 | 195 | ### Session cookies in Django Admin 196 | 197 | Taiga doesn't use session cookies in its API as it stateless. However, the Django Admin (`/admin/`) uses session cookie for authentication. By default, Taiga is configured to work behind HTTPS. If you're using HTTP (despite the strong recommendations against it), you'll need to configure the following environment variables so you can access the Admin: 198 | 199 | Add to `&default-back-environment` environments 200 | ```yml 201 | SESSION_COOKIE_SECURE: "False" 202 | CSRF_COOKIE_SECURE: "False" 203 | ``` 204 | 205 | More info about those variables can be found [here](https://docs.djangoproject.com/en/3.1/ref/settings/#csrf-cookie-secure). 206 | 207 | ### Public registration 208 | 209 | Public registration is disabled by default. If you want to allow a public register, you have to enable public registration on both, frontend and backend. 210 | 211 | > **Note** 212 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 213 | 214 | 215 | Add to `&default-back-environment` environments 216 | ```yml 217 | PUBLIC_REGISTER_ENABLED: "True" 218 | ``` 219 | 220 | Add to `taiga-front` service environments 221 | ```yml 222 | PUBLIC_REGISTER_ENABLED: "true" 223 | ``` 224 | 225 | > **Important**: 226 | > 227 | > Taiga (in its default configuration) disables both Gitlab or Github oauth buttons whenever the public registration option hasn't been activated. To be able to use Github/Gitlab login/registration, make sure you have public registration activated on your Taiga instance. 228 | 229 | ### GitHub OAuth login 230 | 231 | Used for login with Github. This feature is disabled by default. 232 | 233 | Follow the documentation ([GitHub - Creating an OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app)) in Github, when save application Github displays the ID and Secret. 234 | 235 | > **Note** 236 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 237 | 238 | > **Note** 239 | > `GITHUB_API_CLIENT_ID / GITHUB_CLIENT_ID` should have the same value. 240 | 241 | 242 | Add to `&default-back-environment` environments 243 | ```yml 244 | ENABLE_GITHUB_AUTH: "True" 245 | GITHUB_API_CLIENT_ID: "github-client-id" 246 | GITHUB_API_CLIENT_SECRET: "github-client-secret" 247 | PUBLIC_REGISTER_ENABLED: "True" 248 | ``` 249 | 250 | Add to `taiga-front` service environments 251 | ```yml 252 | ENABLE_GITHUB_AUTH: "true" 253 | GITHUB_CLIENT_ID: "github-client-id" 254 | PUBLIC_REGISTER_ENABLED: "true" 255 | ```` 256 | 257 | ### Gitlab OAuth login 258 | 259 | Used for login with GitLab. This feature is disabled by default. 260 | 261 | Follow the documentation ([Configure GitLab as an OAuth 2.0 authentication identity provider](https://docs.gitlab.com/ee/integration/oauth_provider.html)) in Gitlab to get the _gitlab-client-id_ and the _gitlab-client-secret_. 262 | 263 | > **Note** 264 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 265 | 266 | > **Note** 267 | > `GITLAB_API_CLIENT_ID / GITLAB_CLIENT_ID` and `GITLAB_URL` should have the same value. 268 | 269 | Add to `&default-back-environment` environments 270 | ```yml 271 | ENABLE_GITLAB_AUTH: "True" 272 | GITLAB_API_CLIENT_ID: "gitlab-client-id" 273 | GITLAB_API_CLIENT_SECRET: "gitlab-client-secret" 274 | GITLAB_URL: "gitlab-url" 275 | PUBLIC_REGISTER_ENABLED: "True" 276 | ``` 277 | 278 | Add to `taiga-front` service environments 279 | ```yml 280 | ENABLE_GITLAB_AUTH: "true" 281 | GITLAB_CLIENT_ID: "gitlab-client-id" 282 | GITLAB_URL: "gitlab-url" 283 | PUBLIC_REGISTER_ENABLED: "true" 284 | ``` 285 | 286 | ### Slack integration 287 | 288 | Enable Slack integration in your Taiga instance. This feature is disabled by default. 289 | 290 | > **Note** 291 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 292 | 293 | Add to `&default-back-environment` environments 294 | ```yml 295 | ENABLE_SLACK: "True" 296 | ``` 297 | 298 | Add to `taiga-front` service environments 299 | ```yml 300 | ENABLE_SLACK: "true" 301 | ``` 302 | 303 | ### GitHub importer 304 | 305 | Activating this feature, you will be able to import projects from GitHub. 306 | 307 | Follow this documentation ([GitHub - Creating an OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app)) to obtain the _client id_ and the _client secret_ from GitHun. 308 | 309 | > **Note** 310 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 311 | 312 | Add to `&default-back-environment` environments 313 | ```yml 314 | ENABLE_GITHUB_IMPORTER: "True" 315 | GITHUB_IMPORTER_CLIENT_ID: "client-id-from-github" 316 | GITHUB_IMPORTER_CLIENT_SECRET: "client-secret-from-github" 317 | ``` 318 | 319 | Add to `taiga-front` service environments 320 | ```yml 321 | ENABLE_GITHUB_IMPORTER: "true" 322 | ``` 323 | 324 | ### Jira Importer 325 | 326 | Activating this feature, you will be able to import projects from Jira. 327 | 328 | Follow this documentation ([Jira - OAuth 1.0a for REST APIs](https://developer.atlassian.com/cloud/jira/platform/jira-rest-api-oauth-authentication/)) to obtain the _consumer key_ and the _public/private certificate key_. 329 | 330 | 331 | > **Note** 332 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 333 | 334 | Add to `&default-back-environment` environments 335 | ```yml 336 | ENABLE_JIRA_IMPORTER: "True" 337 | JIRA_IMPORTER_CONSUMER_KEY: "consumer-key-from-jira" 338 | JIRA_IMPORTER_CERT: "cert-from-jira" 339 | JIRA_IMPORTER_PUB_CERT: "pub-cert-from-jira" 340 | ``` 341 | 342 | Add to `taiga-front` service environments 343 | ```yml 344 | ENABLE_JIRA_IMPORTER: "true" 345 | ``` 346 | 347 | ### Trello importer 348 | 349 | Activating this feature, you will be able to import projects from Trello. 350 | 351 | For configure Trello, you have two options: 352 | - go to [https://trello.com/app-key](https://trello.com/app-key) (you must login first) and obtaing your development _API key_ and your _secret key_. 353 | - or with the new method, [create a new Power-Up](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#managing-your-api-key) and generate an _API key_ and a _secret key_ 354 | 355 | > **Note** 356 | > Be careful with the upper and lower case in these settiings. We will use 'True' for the backend and 'true' for the frontend (this is not a typo, otherwise it won't work). 357 | 358 | Add to `&default-back-environment` environments 359 | ```yml 360 | ENABLE_TRELLO_IMPORTER: "True" 361 | TRELLO_IMPORTER_API_KEY: "api-key-from-trello" 362 | TRELLO_IMPORTER_SECRET_KEY: "secret-key-from-trello" 363 | ``` 364 | 365 | Add to `taiga-front` service environments 366 | ```yml 367 | ENABLE_TRELLO_IMPORTER: "true" 368 | ``` 369 | 370 | ## Advanced configuration 371 | 372 | The advanced configuration **will ignore** the environment variables in `docker-compose.yml` or `docker-compose-inits.yml`. Skip this section if you're using env vars. 373 | 374 | It requires you to map the configuration files of `taiga-back` and `taiga-front` services to local files in order to unlock further configuration options. 375 | 376 | **Map a `config.py` file** 377 | 378 | From [taiga-back](https://github.com/taigaio/taiga-back) download the file `settings/config.py.prod.example` and rename it: 379 | 380 | ```bash 381 | mv settings/config.py.prod.example settings/config.py 382 | ``` 383 | 384 | Edit `config.py` with your own configuration: 385 | 386 | - Taiga secret key: **it's important** to change it. It must have the same value as the secret key in `taiga-events` and `taiga-protected` 387 | - Taiga urls: configure where Taiga would be served using `TAIGA_URL`, `SITES` and `FORCE_SCRIPT_NAME` (see examples below) 388 | - Connection to PostgreSQL; check `DATABASES` section in the file 389 | - Connection to RabbitMQ for `taiga-events`; check "EVENTS" section in the file 390 | - Connection to RabbitMQ for `taiga-async`; check "TAIGA ASYNC" section in the file 391 | - Credentials for email; check "EMAIL" section in the file 392 | - Enable/disable anonymous telemetry; check "TELEMETRY" section in the file 393 | 394 | Example to configure Taiga in **subdomain**: 395 | ```python 396 | TAIGA_SITES_SCHEME = "https" 397 | TAIGA_SITES_DOMAIN = "taiga.mycompany.com" 398 | FORCE_SCRIPT_NAME = "" 399 | ``` 400 | 401 | Example to configure Taiga in **subpath**: 402 | ```python 403 | TAIGA_SITES_SCHEME = "https" 404 | TAIGA_SITES_DOMAIN = "taiga.mycompany.com" 405 | FORCE_SCRIPT_NAME = "/taiga" 406 | ``` 407 | 408 | Check as well the rest of the configuration if you need to enable some advanced features. 409 | 410 | Map the file into `/taiga-back/settings/config.py`. Have in mind that you have to map it both in `docker-compose.yml` and `docker-compose-inits.yml`. You can check the `x-volumes` section in docker-compose.yml with an example. 411 | 412 | **Map a `conf.json` file** 413 | 414 | From [taiga-front](https://github.com/taigaio/taiga-front) download the file `dist/conf.example.json` and rename it: 415 | 416 | ```bash 417 | mv dist/conf.example.json dist/conf.json 418 | ``` 419 | 420 | Edit it with your own configuration: 421 | 422 | - Taiga urls: configure where Taiga would be served using `api`, `eventsUrl` and `baseHref` (see examples below) 423 | 424 | Example of `conf.json` to serve Taiga in a **subdomain**: 425 | ```json 426 | { 427 | "api": "https://taiga.mycompany.com/api/v1/", 428 | "eventsUrl": "wss://taiga.mycompany.com/events", 429 | "baseHref": "/", 430 | ``` 431 | 432 | Example of `conf.json` to serve Taiga in **subpath**: 433 | ```json 434 | { 435 | "api": "https://mycompany.com/taiga/api/v1/", 436 | "eventsUrl": "wss://mycompany.com/taiga/events", 437 | "baseHref": "/taiga/", 438 | ``` 439 | 440 | Check as well the rest of the configuration if you need to enable some advanced features. 441 | 442 | Map the file into `/taiga-front/dist/config.py`. 443 | 444 | ## Configure an admin user 445 | 446 | ```bash 447 | $ docker compose up -d 448 | 449 | $ docker compose -f docker-compose.yml -f docker-compose-inits.yml run --rm taiga-manage createsuperuser 450 | ``` 451 | 452 | ## Up and running 453 | 454 | Once everything has been installed, launch all the services and check the result: 455 | 456 | ```bash 457 | $ docker compose up -d 458 | ``` 459 | 460 | ## Configure the proxy 461 | 462 | Your host configuration needs to make a proxy to `http://localhost:9000`. 463 | 464 | If Taiga is being served in a **subdomain**: 465 | ``` 466 | server { 467 | server_name taiga.mycompany.com; 468 | 469 | location / { 470 | proxy_set_header Host $http_host; 471 | proxy_set_header X-Real-IP $remote_addr; 472 | proxy_set_header X-Scheme $scheme; 473 | proxy_set_header X-Forwarded-Proto $scheme; 474 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 475 | proxy_redirect off; 476 | proxy_pass http://localhost:9000/; 477 | } 478 | 479 | # Events 480 | location /events { 481 | proxy_pass http://localhost:9000/events; 482 | proxy_http_version 1.1; 483 | proxy_set_header Upgrade $http_upgrade; 484 | proxy_set_header Connection "upgrade"; 485 | proxy_set_header Host $host; 486 | proxy_connect_timeout 7d; 487 | proxy_send_timeout 7d; 488 | proxy_read_timeout 7d; 489 | } 490 | 491 | # TLS: Configure your TLS following the best practices inside your company 492 | # Logs and other configurations 493 | } 494 | ``` 495 | 496 | If Taiga is being served in a **subpath** instead of a subdomain, the configuration should be something like: 497 | ``` 498 | server { 499 | server_name mycompany.com; 500 | 501 | location /taiga/ { 502 | proxy_set_header Host $http_host; 503 | proxy_set_header X-Real-IP $remote_addr; 504 | proxy_set_header X-Scheme $scheme; 505 | proxy_set_header X-Forwarded-Proto $scheme; 506 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 507 | proxy_redirect off; 508 | proxy_pass http://localhost:9000/; 509 | } 510 | 511 | # Events 512 | location /taiga/events { 513 | proxy_pass http://localhost:9000/events; 514 | proxy_http_version 1.1; 515 | proxy_set_header Upgrade $http_upgrade; 516 | proxy_set_header Connection "upgrade"; 517 | proxy_set_header Host $host; 518 | proxy_connect_timeout 7d; 519 | proxy_send_timeout 7d; 520 | proxy_read_timeout 7d; 521 | } 522 | 523 | # TLS: Configure your TLS following the best practices inside your company 524 | # Logs and other configurations 525 | } 526 | ``` 527 | 528 | ## Change between subpath and subdomain 529 | 530 | If you're changing Taiga configuration from default subdomain (https://taiga.mycompany.com) to subpath (http://mycompany.com/subpath) or vice versa, on top of adjusting the configuration as said above, you should consider changing the TAIGA_SECRET_KEY so the refresh works properly for the end user. 531 | -------------------------------------------------------------------------------- /VERSION.md: -------------------------------------------------------------------------------- 1 | 6.8.0 2 | -------------------------------------------------------------------------------- /docker-compose-inits.yml: -------------------------------------------------------------------------------- 1 | version: "3.5" 2 | 3 | x-environment: 4 | &default-back-environment 5 | POSTGRES_DB: "taiga" 6 | POSTGRES_USER: "${POSTGRES_USER}" 7 | POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" 8 | POSTGRES_HOST: "taiga-db" 9 | 10 | TAIGA_SECRET_KEY: "${SECRET_KEY}" 11 | TAIGA_SITES_SCHEME: "${TAIGA_SCHEME}" 12 | TAIGA_SITES_DOMAIN: "${TAIGA_DOMAIN}" 13 | 14 | EMAIL_BACKEND: "django.core.mail.backends.${EMAIL_BACKEND}.EmailBackend" 15 | DEFAULT_FROM_EMAIL: "${EMAIL_DEFAULT_FROM}" 16 | EMAIL_USE_TLS: "${EMAIL_USE_TLS}" 17 | EMAIL_USE_SSL: "${EMAIL_USE_SSL}" 18 | EMAIL_HOST: "${EMAIL_HOST}" 19 | EMAIL_PORT: "${EMAIL_PORT}" 20 | EMAIL_HOST_USER: "${EMAIL_HOST_USER}" 21 | EMAIL_HOST_PASSWORD: "${EMAIL_HOST_PASSWORD}" 22 | 23 | RABBITMQ_USER: "${RABBITMQ_USER}" 24 | RABBITMQ_PASS: "${RABBITMQ_PASS}" 25 | CELERY_ENABLED: "False" 26 | 27 | x-volumes: 28 | &default-back-volumes 29 | - taiga-static-data:/taiga-back/static 30 | - taiga-media-data:/taiga-back/media 31 | # - ./config.py:/taiga-back/settings/config.py 32 | 33 | services: 34 | taiga-manage: 35 | image: taigaio/taiga-back:latest 36 | environment: *default-back-environment 37 | depends_on: 38 | - taiga-db 39 | entrypoint: "python manage.py" 40 | volumes: *default-back-volumes 41 | networks: 42 | - taiga 43 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.5" 2 | 3 | x-environment: 4 | &default-back-environment 5 | # These environment variables will be used by taiga-back and taiga-async. 6 | # Database settings 7 | POSTGRES_DB: "taiga" 8 | POSTGRES_USER: "${POSTGRES_USER}" 9 | POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" 10 | POSTGRES_HOST: "taiga-db" 11 | # Taiga settings 12 | TAIGA_SECRET_KEY: "${SECRET_KEY}" 13 | TAIGA_SITES_SCHEME: "${TAIGA_SCHEME}" 14 | TAIGA_SITES_DOMAIN: "${TAIGA_DOMAIN}" 15 | TAIGA_SUBPATH: "${SUBPATH}" 16 | # Email settings. 17 | EMAIL_BACKEND: "django.core.mail.backends.${EMAIL_BACKEND}.EmailBackend" 18 | DEFAULT_FROM_EMAIL: "${EMAIL_DEFAULT_FROM}" 19 | EMAIL_USE_TLS: "${EMAIL_USE_TLS}" 20 | EMAIL_USE_SSL: "${EMAIL_USE_SSL}" 21 | EMAIL_HOST: "${EMAIL_HOST}" 22 | EMAIL_PORT: "${EMAIL_PORT}" 23 | EMAIL_HOST_USER: "${EMAIL_HOST_USER}" 24 | EMAIL_HOST_PASSWORD: "${EMAIL_HOST_PASSWORD}" 25 | # Rabbitmq settings 26 | RABBITMQ_USER: "${RABBITMQ_USER}" 27 | RABBITMQ_PASS: "${RABBITMQ_PASS}" 28 | # Telemetry settings 29 | ENABLE_TELEMETRY: "${ENABLE_TELEMETRY}" 30 | # ...your customizations go here 31 | 32 | x-volumes: 33 | &default-back-volumes 34 | # These volumens will be used by taiga-back and taiga-async. 35 | - taiga-static-data:/taiga-back/static 36 | - taiga-media-data:/taiga-back/media 37 | # - ./config.py:/taiga-back/settings/config.py 38 | 39 | services: 40 | taiga-db: 41 | image: postgres:12.3 42 | environment: 43 | POSTGRES_DB: "taiga" 44 | POSTGRES_USER: "${POSTGRES_USER}" 45 | POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" 46 | healthcheck: 47 | test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] 48 | interval: 2s 49 | timeout: 15s 50 | retries: 5 51 | start_period: 3s 52 | volumes: 53 | - taiga-db-data:/var/lib/postgresql/data 54 | networks: 55 | - taiga 56 | 57 | taiga-back: 58 | image: taigaio/taiga-back:latest 59 | environment: *default-back-environment 60 | volumes: *default-back-volumes 61 | networks: 62 | - taiga 63 | depends_on: 64 | taiga-db: 65 | condition: service_healthy 66 | taiga-events-rabbitmq: 67 | condition: service_started 68 | taiga-async-rabbitmq: 69 | condition: service_started 70 | 71 | taiga-async: 72 | image: taigaio/taiga-back:latest 73 | entrypoint: ["/taiga-back/docker/async_entrypoint.sh"] 74 | environment: *default-back-environment 75 | volumes: *default-back-volumes 76 | networks: 77 | - taiga 78 | depends_on: 79 | taiga-db: 80 | condition: service_healthy 81 | taiga-events-rabbitmq: 82 | condition: service_started 83 | taiga-async-rabbitmq: 84 | condition: service_started 85 | 86 | taiga-async-rabbitmq: 87 | image: rabbitmq:3.8-management-alpine 88 | environment: 89 | RABBITMQ_ERLANG_COOKIE: "${RABBITMQ_ERLANG_COOKIE}" 90 | RABBITMQ_DEFAULT_USER: "${RABBITMQ_USER}" 91 | RABBITMQ_DEFAULT_PASS: "${RABBITMQ_PASS}" 92 | RABBITMQ_DEFAULT_VHOST: "${RABBITMQ_VHOST}" 93 | hostname: "taiga-async-rabbitmq" 94 | volumes: 95 | - taiga-async-rabbitmq-data:/var/lib/rabbitmq 96 | networks: 97 | - taiga 98 | 99 | taiga-front: 100 | image: taigaio/taiga-front:latest 101 | environment: 102 | TAIGA_URL: "${TAIGA_SCHEME}://${TAIGA_DOMAIN}" 103 | TAIGA_WEBSOCKETS_URL: "${WEBSOCKETS_SCHEME}://${TAIGA_DOMAIN}" 104 | TAIGA_SUBPATH: "${SUBPATH}" 105 | # ...your customizations go here 106 | networks: 107 | - taiga 108 | # volumes: 109 | # - ./conf.json:/usr/share/nginx/html/conf.json 110 | 111 | taiga-events: 112 | image: taigaio/taiga-events:latest 113 | environment: 114 | RABBITMQ_USER: "${RABBITMQ_USER}" 115 | RABBITMQ_PASS: "${RABBITMQ_PASS}" 116 | TAIGA_SECRET_KEY: "${SECRET_KEY}" 117 | networks: 118 | - taiga 119 | depends_on: 120 | taiga-events-rabbitmq: 121 | condition: service_started 122 | 123 | taiga-events-rabbitmq: 124 | image: rabbitmq:3.8-management-alpine 125 | environment: 126 | RABBITMQ_ERLANG_COOKIE: "${RABBITMQ_ERLANG_COOKIE}" 127 | RABBITMQ_DEFAULT_USER: "${RABBITMQ_USER}" 128 | RABBITMQ_DEFAULT_PASS: "${RABBITMQ_PASS}" 129 | RABBITMQ_DEFAULT_VHOST: "${RABBITMQ_VHOST}" 130 | hostname: "taiga-events-rabbitmq" 131 | volumes: 132 | - taiga-events-rabbitmq-data:/var/lib/rabbitmq 133 | networks: 134 | - taiga 135 | 136 | taiga-protected: 137 | image: taigaio/taiga-protected:latest 138 | environment: 139 | MAX_AGE: "${ATTACHMENTS_MAX_AGE}" 140 | SECRET_KEY: "${SECRET_KEY}" 141 | networks: 142 | - taiga 143 | 144 | taiga-gateway: 145 | image: nginx:1.19-alpine 146 | ports: 147 | - "9000:80" 148 | volumes: 149 | - ./taiga-gateway/taiga.conf:/etc/nginx/conf.d/default.conf 150 | - taiga-static-data:/taiga/static 151 | - taiga-media-data:/taiga/media 152 | networks: 153 | - taiga 154 | depends_on: 155 | - taiga-front 156 | - taiga-back 157 | - taiga-events 158 | 159 | volumes: 160 | taiga-static-data: 161 | taiga-media-data: 162 | taiga-db-data: 163 | taiga-async-rabbitmq-data: 164 | taiga-events-rabbitmq-data: 165 | 166 | networks: 167 | taiga: 168 | -------------------------------------------------------------------------------- /imgs/penpot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taigaio/taiga-docker/83d19c57296116f57589f378a07747915e56f439/imgs/penpot.jpg -------------------------------------------------------------------------------- /imgs/taiga.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taigaio/taiga-docker/83d19c57296116f57589f378a07747915e56f439/imgs/taiga.jpg -------------------------------------------------------------------------------- /launch-taiga.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # This Source Code Form is subject to the terms of the Mozilla Public 4 | # License, v. 2.0. If a copy of the MPL was not distributed with this 5 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 | # 7 | # Copyright (c) 2021-present Kaleidos INC 8 | 9 | set -x 10 | exec docker compose -f docker-compose.yml up -d $@ 11 | -------------------------------------------------------------------------------- /taiga-gateway/taiga.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | 4 | client_max_body_size 100M; 5 | charset utf-8; 6 | 7 | # Frontend 8 | location / { 9 | proxy_pass http://taiga-front/; 10 | proxy_pass_header Server; 11 | proxy_set_header Host $http_host; 12 | proxy_redirect off; 13 | proxy_set_header X-Real-IP $remote_addr; 14 | proxy_set_header X-Scheme $scheme; 15 | } 16 | 17 | # API 18 | location /api/ { 19 | proxy_pass http://taiga-back:8000/api/; 20 | proxy_pass_header Server; 21 | proxy_set_header Host $http_host; 22 | proxy_redirect off; 23 | proxy_set_header X-Real-IP $remote_addr; 24 | proxy_set_header X-Scheme $scheme; 25 | } 26 | 27 | # Admin 28 | location /admin/ { 29 | proxy_pass http://taiga-back:8000/admin/; 30 | proxy_pass_header Server; 31 | proxy_set_header Host $http_host; 32 | proxy_redirect off; 33 | proxy_set_header X-Real-IP $remote_addr; 34 | proxy_set_header X-Scheme $scheme; 35 | } 36 | 37 | # Static 38 | location /static/ { 39 | alias /taiga/static/; 40 | } 41 | 42 | # Media 43 | location /_protected/ { 44 | internal; 45 | alias /taiga/media/; 46 | add_header Content-disposition "attachment"; 47 | } 48 | 49 | # Unprotected section 50 | location /media/exports/ { 51 | alias /taiga/media/exports/; 52 | add_header Content-disposition "attachment"; 53 | } 54 | 55 | location /media/ { 56 | proxy_set_header Host $http_host; 57 | proxy_set_header X-Real-IP $remote_addr; 58 | proxy_set_header X-Scheme $scheme; 59 | proxy_set_header X-Forwarded-Proto $scheme; 60 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 61 | proxy_pass http://taiga-protected:8003/; 62 | proxy_redirect off; 63 | } 64 | 65 | # Events 66 | location /events { 67 | proxy_pass http://taiga-events:8888/events; 68 | proxy_http_version 1.1; 69 | proxy_set_header Upgrade $http_upgrade; 70 | proxy_set_header Connection "upgrade"; 71 | proxy_connect_timeout 7d; 72 | proxy_send_timeout 7d; 73 | proxy_read_timeout 7d; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /taiga-manage.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # This Source Code Form is subject to the terms of the Mozilla Public 4 | # License, v. 2.0. If a copy of the MPL was not distributed with this 5 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 | # 7 | # Copyright (c) 2021-present Kaleidos INC 8 | 9 | set -x 10 | exec docker compose -f docker-compose.yml -f docker-compose-inits.yml run --rm taiga-manage $@ 11 | --------------------------------------------------------------------------------