{"id":22481787,"url":"https://github.com/riotkit-org/docker-taiga","last_synced_at":"2025-07-18T11:12:25.972Z","repository":{"id":103425664,"uuid":"189536167","full_name":"riotkit-org/docker-taiga","owner":"riotkit-org","description":"Production-ready docker container for Taiga https://taiga.io","archived":false,"fork":false,"pushed_at":"2020-10-08T04:27:52.000Z","size":172,"stargazers_count":55,"open_issues_count":7,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-31T02:12:44.225Z","etag":null,"topics":["anarchist","board","docker","jira","kanban","kanban-board","planning","riotkit","scrum","scrum-board","taiga","taiga-back","taiga-docker","taiga-events","taiga-front","trello","wekan"],"latest_commit_sha":null,"homepage":"https://quay.io/repository/riotkit/taiga?tab=tags","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/riotkit-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-05-31T05:57:51.000Z","updated_at":"2024-06-04T10:28:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a8d5f80-a8fa-4c3d-9650-690137cb79e7","html_url":"https://github.com/riotkit-org/docker-taiga","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/riotkit-org/docker-taiga","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riotkit-org%2Fdocker-taiga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riotkit-org%2Fdocker-taiga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riotkit-org%2Fdocker-taiga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riotkit-org%2Fdocker-taiga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/riotkit-org","download_url":"https://codeload.github.com/riotkit-org/docker-taiga/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riotkit-org%2Fdocker-taiga/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265747331,"owners_count":23821869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anarchist","board","docker","jira","kanban","kanban-board","planning","riotkit","scrum","scrum-board","taiga","taiga-back","taiga-docker","taiga-events","taiga-front","trello","wekan"],"created_at":"2024-12-06T16:15:42.320Z","updated_at":"2025-07-18T11:12:25.957Z","avatar_url":"https://github.com/riotkit-org.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Taiga Dockerized environment\n============================\n\nComplete environment to run self-hosted Taiga.io project in an elegant\nway.\n\n**Features:**\n- Optional SSL support in the container\n- Optional events support (allows live updates in the application)\n- BUILDS ANY TAIGA VERSION EASILY!\n- In comparison to other docker images, this one runs production\n  environment...\n- Very flexible, a lot of environment variables to configure\n- Uses docker-compose to simplify setup, can be used also standalone or\n  in Kubernetes/Swarm\n- Uses standardized JINJA2 to generate configuration files\n- Allows to change a lot of parameters without rebuilding the container\n- With Makefile all tasks are automated enough to provide a fully working environment without need to adjust anything\n\n*Notice: This is not a official Taiga.io project and is not affiliated\nwith Taiga Agile, LLC © or any other company, it's a completly grassroot\nproject*\n\n*Based on docker image built originally by Benjamin Hutchins \u003cben@hutchins.co\u003e and released on GPL license*\n\n*Built docker images are licensed under MIT*\n\n#### What is Taiga?\n\nTaiga is a project management platform for startups and agile developers \u0026 designers who want a simple, beautiful tool that makes work truly enjoyable.\n\n\u003e [taiga.io](https://taiga.io)\n\n#### Running the container\n\nThe container is placed at `quay.io/riotkit/taiga`. There is no `latest` tag, we do not like it, it's an unstable, dangerous idea to use latest.\nInstead of `latest` we tag each Taiga stable release with the release number ex. `quay.io/riotkit/taiga:4.2.12`\n\nSee the list of available tags there: https://quay.io/repository/riotkit/taiga?tab=tags and check out the configuration reference.\n\n![versioning](./docs/versioning.png)\n\n```bash\n# NOTICE 1: Check \"Configuration reference\" section of this README for list of available environment variables\n# NOTICE 2: You need a working PostgreSQL server\n# NOTICE 3: Use volumes to keep your uploads, else they will disappear on container recreation\n\nsudo docker run \\\n    -v $(pwd)/media:/usr/src/taiga-back/media \\\n    -p 80:80 \\\n    -e TAIGA_DB_HOST=some-db-host \\\n    -e TAIGA_DB_USER=some-user \\\n    -e TAIGA_DB_PASSWORD=some-password \\\n    quay.io/riotkit/taiga:4.2.12\n```\n\n#### Quick start with Docker-Compose\n\n```\n# get the sources\ngit clone https://github.com/riotkit-org/docker-taiga.git\ncd docker-taiga\n\n# prepare the environment\nvirtualenv .venv\nsource .venv/bin/activate\npip install -r ./requirements.txt\n\n# optionally if you do not have docker-compose\n# pip install docker-compose\n\n# edit configuration\ncp .env.dist .env\nedit .env\n\n# start it!\nrkd :start\n\n# tadam...\n```\n\n##### First log-in to the application, default username and password\n\nTo log-in first time you should go to the [login page](http://localhost/login?next=%252Fdiscover) and enter \"admin\" as username, and \"123123\" as password.\nYou can also log-in to the Django administration panel at http://localhost/admin/ (please remember about the slash at the end)\n\n#### Configuring LDAP\n\nLDAP support can optionally be enabled by setting the `TAIGA_LDAP` environment variable to `true`. See the Dockerfile for a list of the environment variables used for configuring LDAP and their descriptions.\n\n#### Configuration reference\n\nList of all environment variables that could be used.\n\n```yaml\n# Enables Celery support\n- CELERY_ENABLED # (default: false)\n\n# Serializer type supported by Taiga at Celery\n- CELERY_SERIALIZER_TYPE # (default: pickle)\n\n\n- DEBIAN_FRONTEND # (default: noninteractive)\n\n\n- DEBUG # (default: false)\n\n# The maximum number of pending connections\n- GUNICORN_BACKLOG # (default: 2048)\n\n# Workers silent for more than this many seconds are killed and restarted\n- GUNICORN_TIMEOUT # (default: 60)\n\n# The number of worker processes for handling requests\n- GUNICORN_WORKERS # (default: 4)\n\n# The maximum number of simultaneous clients\n- GUNICORN_WORKER_CONNECTIONS # (default: 1000)\n\n# The maximum number of requests a worker will process before restarting\n- GUNICORN_WORKER_MAX_REQUESTS # (default: 3000)\n\n# The number of worker threads for handling requests\n- GUNICORN_WORKER_THREADS # (default: 1)\n\n# The granularity of Error log outputs\n- GUNICRON_LOG_LEVEL # (default: info)\n\n# Set to \"c\" for English, pl-PL.UTF-8 for Polish etc.\n- LANG # (default: en_US.UTF-8)\n\n# Set to \"c\" for English, pl-PL.UTF-8 for Polish etc.\n- LC_TYPE # (default: en_US.UTF-8)\n\n# The DN to bind to the LDAP server with. If left blank the client will attempt to bind anonymously.\n- LDAP_BIND_DN # (default: \"\")\n\n# The password for the bind DN.\n- LDAP_BIND_PASSWORD # (default: \"\")\n\n# The LDAP attribute that will be used for the account's Email address.\n- LDAP_EMAIL_ATTRIBUTE # (default: \"mail\")\n\n# The fallback authentication method to use if LDAP fails. This will allows users to login with either an LDAP account or a local account. Set to a blank string to prevent logging in with anything other than LDAP.\n- LDAP_FALLBACK # (default: \"normal\")\n\n# The LDAP attribute that will be used for the account's full name.\n- LDAP_FULL_NAME_ATTRIBUTE # (default: \"cn\")\n\n# The port to connect to the LDAP server on.\n- LDAP_PORT # (default: 0)\n\n# Whether or not to save the LDAP password in the local database. If `LDAP_FALLBACK` is set to `normal` this will allow users that have logged in with LDAP before to login even if the LDAP server is unavailable.\n- LDAP_SAVE_LOGIN_PASSWORD # (default: \"true\")\n\n# The root of the LDAP structure in which to search for user accounts.\n- LDAP_SEARCH_BASE # (default: \"\")\n\n# Additional filter added to the user account query.\n- LDAP_SEARCH_FILTER_ADDITIONAL # (default: \"\")\n\n# The LDAP server URL.\n- LDAP_SERVER # (default: \"\")\n\n# Set to `true` to enable StartTLS when connecting to the server.\n- LDAP_START_TLS # (default: \"false\")\n\n# The LDAP attribute that will be used for the account's Taiga username.\n- LDAP_USERNAME_ATTRIBUTE # (default: \"uid\")\n\n# Interval (in seconds) for a background task that sends mails\n- MAIL_NOTIFICATIONS_SEND_EVERY # (default: 120)\n\n\n- RKD_PATH # (default: \"/opt/rkd/.rkd\")\n\n# Queue connection string\n- TAIGA_BROKER_URL # (default: amqp://guest:guest@rabbit:5672)\n\n# PostgreSQL database hostname\n- TAIGA_DB_HOST # (default: postgres)\n\n# PostgreSQL database name\n- TAIGA_DB_NAME # (default: taiga)\n\n# PostgreSQL database user password\n- TAIGA_DB_PASSWORD # (default: )\n\n# PostgreSQL database user login\n- TAIGA_DB_USER # (default: taiga)\n\n# Default locale ex. en, pl\n- TAIGA_DEFAULT_LOCALE # (default: en)\n\n# SMTP \"From\" header value\n- TAIGA_EMAIL_FROM # (default: taiga@localhost)\n\n# SMTP server host\n- TAIGA_EMAIL_HOST # (default: smtp)\n\n# SMTP user password\n- TAIGA_EMAIL_PASS # (default: some-password)\n\n# SMTP server port\n- TAIGA_EMAIL_PORT # (default: 25)\n\n# SMTP user login\n- TAIGA_EMAIL_USER # (default: taiga@riotkit.org)\n\n# Use TLS encryption when sending mails\n- TAIGA_EMAIL_USE_TLS # (default: true)\n\n# Enable mail server\n- TAIGA_ENABLE_EMAIL # (default: False)\n\n# Enable or disable events?\n- TAIGA_ENABLE_EVENTS # (default: false)\n\n# Enable or not the webhooks\n- TAIGA_ENABLE_WEBHOOKS # (default: False)\n\n# Hostname for events server\n- TAIGA_EVENTS_HOST # (default: events)\n\n# Default container group id\n- TAIGA_GID # (default: 1000)\n\n# Hostname of your instance (domain ex. riotkit.org or subdomain - board.riotkit.org)\n- TAIGA_HOSTNAME # (default: localhost)\n\n# Asana importer app ID\n- TAIGA_IMPORTER_ASANA_APP_ID # (default: \"\")\n\n# Asana importer app secret\n- TAIGA_IMPORTER_ASANA_APP_SECRET # (default: \"\")\n\n# Override callback URL for Asana importer. Will be automatically set based on Taiga URL if left blank.\n- TAIGA_IMPORTER_ASANA_CALLBACK_URL # (default: \"\")\n\n# Enable the Asana project importer\n- TAIGA_IMPORTER_ASANA_ENABLED # (default: \"false\")\n\n# GitHub importer client ID\n- TAIGA_IMPORTER_GITHUB_CLIENT_ID # (default: \"\")\n\n# GitHub importer client secret\n- TAIGA_IMPORTER_GITHUB_CLIENT_SECRET # (default: \"\")\n\n# Enable the GitHub project importer\n- TAIGA_IMPORTER_GITHUB_ENABLED # (default: \"false\")\n\n# JIRA importer cert\n- TAIGA_IMPORTER_JIRA_CERT # (default: \"\")\n\n# JIRA importer consumer key\n- TAIGA_IMPORTER_JIRA_CONSUMER_KEY # (default: \"\")\n\n# Enable the JIRA project importer\n- TAIGA_IMPORTER_JIRA_ENABLED # (default: \"false\")\n\n# JIRA importer public cert\n- TAIGA_IMPORTER_JIRA_PUB_CERT # (default: \"\")\n\n# Trello importer api key\n- TAIGA_IMPORTER_TRELLO_API_KEY # (default: \"\")\n\n# Enable the Trello project importer\n- TAIGA_IMPORTER_TRELLO_ENABLED # (default: \"false\")\n\n# Trello importer secret key\n- TAIGA_IMPORTER_TRELLO_SECRET_KEY # (default: \"\")\n\n# Set to `true` to enable the LDAP authentication.\n- TAIGA_LDAP # (default: false)\n\n# List of plugins to enable eg. \"slack, other, other\" or just \"slack\"\n- TAIGA_PLUGINS # (default: \"\")\n\n# Redis url\n- TAIGA_REDIS_URL # (default: \"redis://redis:6379/0\")\n\n# Protocol http or https your instance will listen on\n- TAIGA_SCHEME # (default: http)\n\n# !!! Secret key, please change it with your own\n- TAIGA_SECRET_KEY # (default: REPLACE-ME-j1598u1J^U*(y251u98u51u5981urf98u2o5uvoiiuzhlit3))\n\n# Default container user id\n- TAIGA_UID # (default: 1000)\n\n# Timezone\n- TZ # (default: \"Europe/Warsaw\")\n\n\n```\n\nBuilding images\n---------------\n\n```\n# to build a 4.2.5 version of backend and frontend\nrkd :build:snapshot --backend-version=4.2.5 --frontend-version=4.2.5-stable\n```\n\nTroubleshooting\n---------------\n\n1. Not able to log-in or edit user settings\n\nIf you have trouble logging in or editing user settings it may be related to a failure sending emails. This will be accompanied by a `[CRITICAL] WORKER TIMEOUT` error in the logs. Try validating your email configuration or setting `TAIGA_ENABLE_EMAIL` to `false` to see if that fixes the issue.\n\n2. Using existing database\n\nSet `TAIGA_DB_HOST` to point to your PostgreSQL hostname.\nSee also: https://github.com/riotkit-org/docker-taiga/issues/24\n\n3. Debugging, getting logs\n\nIn container there is a supervisor configured. Use `supervisorctl` to access services.\n\nExamples:\n```bash\nsupervisorctl status send_app_notifications\nsupervisorctl tail -f send_app_notifications stderr\nsupervisorctl tail -f backend stderr\nsupervisorctl tail -f nginx stderr\n```\n\n4. Installing under subpath, not subdomain eg. domain.org/taiga\n\nSorry, you cannot. The application itself does not support it. See https://github.com/riotkit-org/docker-taiga/issues/32\n\n5. Running under custom port eg. 8002\n\nTaiga's frontend requires a fixed url to be defined in a configuration file, the container is doing this on start - you only need to append port to `TAIGA_HOSTNAME` variable.\n\nExample: `TAIGA_HOSTNAME=taiga.localhost:8002` (see: [#41](https://github.com/riotkit-org/docker-taiga/issues/41))\n\nDeveloping the container\n------------------------\n\n- The container is built on quay.io\n- When you start working on it locally, please before commiting do the `rkd :generate-readme` (pull requests should be rejected, when something was added only to README.md, not to README.j2, and when environment variables were added to Dockerfile but README file was not generated)\n- Use `rkd` for building, pushing, etc.\n\nReleasing\n---------\n\nOn Travis CI the build is triggered each month, then all recent versions of Taiga are built. Already existing docker tags are not overwritten.\nThe build is also triggered on-commit. Snapshot version is made from master branch, and is always a latest master, can be unstable.\n\nTo release a bugfix version and REBUILD EXISTING TAGS just add \"@force-rebuild\" in commit message, recent 3 tags will be rebuilt (not all in registry).\n\nVersioning\n----------\n\n![versioning](./docs/versioning.png)\n\nThe container has it's own versioning.  There are a few rules:\n\n1. Releasing TEST builds requires tagging `master` branch with name containing \"RC\" eg. `1.0-RC3`\n\nAfter tagging 1.0-RC3, recent 3 versions of Taiga will be built with RC eg. quay.io/riotkit/taiga:4.2.12-D1.0-RC3\n**No main tag would be replaced, so quay.io/riotkit/taiga:4.2.12 stays untouched**\n\n2. Development versions of the container\n\nOn each commit a SNAPSHOT version is produced. Snapshot means a not numbered version of docker container, replaces on each new commit.\n\nExample of produced images on push: taiga:5.0.0-SNAPSHOT, taiga-5.0.1-SNAPSHOT\n\n2. Releasing STABLE images requires tagging `master` with just version number eg. `1.0`\n\nWhen `master` branch was tagged and pushed with eg. `1.0`, then 2 recent versions of Taiga would be rebuilt.\nThe main versions such as **quay.io/riotkit/taiga:4.2.12** would be rebuilt, and new tags such as **quay.io/riotkit/taiga:4.2.12-D1.0** would be produced.\n\nIf you want to use only unchanged, stable releases, without getting hotfixes you should use a TAIGA VERSION + BUILD NUMBER, WITHOUT RC. Example: **quay.io/riotkit/taiga:4.2.12-D1.0**\n\nCopyleft\n--------\n\nCreated by **RiotKit Collective**, a libertarian, grassroot, non-profit organization providing technical support for the non-profit Anarchist movement.\n\nCheck out those initiatives:\n- International Workers Association (https://iwa-ait.org)\n- Federacja Anarchistyczna (http://federacja-anarchistyczna.pl)\n- Związek Syndykalistów Polski (https://zsp.net.pl) (Polish section of IWA-AIT)\n- Komitet Obrony Praw Lokatorów (https://lokatorzy.info.pl)\n- Solidarity Federation (https://solfed.org.uk)\n- Priama Akcia (https://priamaakcia.sk)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friotkit-org%2Fdocker-taiga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Friotkit-org%2Fdocker-taiga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friotkit-org%2Fdocker-taiga/lists"}