Comment installer loutil de gestion de projet Taiga sur Ubuntu 16.04

Taiga est une application gratuite et open source pour la gestion de projet. Contrairement à d'autres outils de gestion de projet, Taiga utilise une approche agile incrémentielle pour gérer le développement du projet. Taiga est une application très puissante et entièrement personnalisable. Le backend de Taiga est écrit en Python en utilisant le framework Django. Le frontend est écrit en JavaScript en utilisant les frameworks CoffeeScript et AngularJS. Taiga comprend des fonctionnalités telles que la collaboration de projet, le tableau Kanban, le suivi des bogues, les rapports, le suivi du temps, les backlogs, le wiki et plus encore.

Conditions préalables

  • Une instance de serveur Vultr Ubuntu 16.04 avec au moins 1 Go de RAM.
  • Un utilisateur sudo .

Dans ce didacticiel, nous utiliserons taiga.example.comle nom de domaine pointé vers le serveur. Remplacez toutes les occurrences de taiga.example.compar votre nom de domaine réel.

Mettez à jour votre système de base à l'aide du guide Comment mettre à jour Ubuntu 16.04 . Une fois votre système mis à jour, installez PostgreSQL.

Installer PostgreSQL

PostgreSQL est un système de base de données relationnelle objet et connu pour sa stabilité et sa vitesse. Taiga utilise PostgreSQL pour stocker sa base de données. Ajoutez le référentiel PostgreSQL dans le système.

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

Importez la clé de signature GPG et mettez à jour les listes de packages.

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

Installez le serveur de base de données PostgreSQL.

sudo apt -y install postgresql

Démarrez le serveur PostgreSQL et activez-le pour démarrer automatiquement au démarrage.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Modifiez le mot de passe de l'utilisateur PostgreSQL par défaut.

sudo passwd postgres

Connectez-vous en tant qu'utilisateur PostgreSQL.

sudo su - postgres

Créez un nouvel utilisateur PostgreSQL pour Taiga.

createuser taiga 

PostgreSQL fournit le psqlshell pour exécuter des requêtes sur la base de données. Basculez vers le shell PostgreSQL.

psql

Définissez un mot de passe pour l'utilisateur nouvellement créé pour la base de données Taiga.

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

Remplacez-le DBPasswordpar un mot de passe sécurisé. Créez une nouvelle base de données pour l'installation de la taïga.

CREATE DATABASE taiga OWNER taiga;

Sortez du psqlshell.

\q

Passez à l' sudoutilisateur.

exit

Installer Python

Taiga nécessite Python version 3.4 ou ultérieure et Python 3.5 est préinstallé dans la distribution Ubuntu 16.04. Installez quelques packages supplémentaires.

sudo apt -y install python3 python3-pip python3-dev python3-dev virtualenvwrapper

L'environnement virtuel Python est utilisé pour créer un environnement virtuel isolé pour un projet Python. Un environnement virtuel contient ses propres répertoires d'installation et ne partage pas les bibliothèques avec les environnements virtuels globaux et autres. Une fois Python 3 installé avec succès, vous devriez pouvoir vérifier sa version.

python3 -V

Vous verrez ce qui suit.

user@vultr:~$ python3 -V
Python 3.5.2

Mettre à niveau pip, qui est une application de gestionnaire de dépendances.

sudo pip3 install --upgrade setuptools pip 

Installez également quelques outils de compilation qui seront nécessaires ultérieurement pour compiler les dépendances.

sudo apt -y install build-essential binutils-doc autoconf flex bison libjpeg-dev libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev automake libtool libffi-dev curl git tmux gettext

Installer RabbitMQ

Taiga utilise RabbitMQ pour traiter la file d'attente de messages. RabbitMQ nécessite que les bibliothèques Erlang fonctionnent. Installez Erlang.

sudo apt -y install erlang

Ajoutez le référentiel RabbitMQ.

echo 'deb http://www.rabbitmq.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

Importez la clé de signature RabbitMQ GPG.

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

Mettez à jour les informations du référentiel.

sudo apt update

Installez RabbitMQ.

sudo apt -y install rabbitmq-server

Démarrez et activez le serveur RabbitMQ.

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

Ajoutez un utilisateur RabbitMQ et vhost. Fournissez également l'autorisation à l'utilisateur sur l'hôte.

sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

Assurez-vous de remplacer StrongMQPasswordpar un mot de passe sécurisé.

Installer Nodejs

Node.js version 7 ou ultérieure est requis pour compiler le frontend de la taïga. Ajoutez le référentiel Node.js version 8.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Installez Node.js et l' pwgenutilitaire.

sudo apt install -y nodejs pwgen npm

pwgensera utilisé plus tard pour générer une chaîne secrète forte. Installez CoffeeScript, car il sera utilisé pour compiler les fichiers Taiga écrits dans le framework CoffeeScript.

sudo npm install -g coffee-script gulp

Installer la taïga backend

Ajoutez un nouvel utilisateur système pour Taiga pour vous assurer que les processus Taiga s'exécutent en tant qu'utilisateur non privilégié.

sudo adduser taiga
sudo su - taiga

Remarque : À partir de maintenant, toutes les commandes doivent être exécutées en tant qu'utilisateur non privilégié taigajusqu'à ce que vous soyez invité à revenir à l' sudoutilisateur.

Créez un nouveau répertoire pour stocker les fichiers journaux.

mkdir -p ~/logs

Clonez le référentiel backend Taiga de GitHub et extrayez la dernière branche stable.

git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable

Créez maintenant un nouvel environnement virtuel pour Taiga en utilisant Python 3.

mkvirtualenv -p /usr/bin/python3 taiga
pip3 install --upgrade setuptools

Installez les dépendances Python requises à l'aide de pip.

pip3 install -r requirements.txt

Remplissez la base de données avec les données initiales nécessaires.

python3 manage.py migrate --noinput
python3 manage.py loaddata initial_user
python3 manage.py loaddata initial_project_templates
python3 manage.py compilemessages
python3 manage.py collectstatic --noinput

Les commandes ci-dessus écrivent des données dans la base de données PostgreSQL. Taiga envoie également des données de démonstration ou des échantillons qui peuvent être utiles pour évaluer le produit. Si vous souhaitez installer les exemples de données, exécutez ce qui suit.

python3 manage.py sample_data

Remarque : l' installation des exemples de données est facultative et vise uniquement à évaluer le produit.

Avant de créer le fichier de configuration pour le backend de la taïga, nous devons générer une chaîne secrète. Cette chaîne sera utilisée pour crypter les données de session.

Générez une chaîne aléatoire de 64 caractères.

pwgen -s -1 64

Vous devriez voir la sortie comme une chaîne aléatoire.

(taiga) taiga@vultr:~/taiga-back$ pwgen -s -1 64
fhDfyYVJ4EH3tvAyUzmfWSeCXuf5sy5EEWrMQPaf9t3JSFrpiL6yvUEOWsFOTscP

Créez un nouveau fichier de configuration pour le backend de la taïga.

nano ~/taiga-back/settings/local.py

Remplissez le fichier avec le code suivant.

from .common import *

MEDIA_URL = "https://taiga.example.com/media/"
STATIC_URL = "https://taiga.example.com/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "taiga.example.com"

SECRET_KEY = "Generated_Secret_Key"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga"}

# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#EMAIL_PORT = 25

# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

Assurez-vous de remplacer le example domain namepar le réel dans le code ci-dessus. Remplacez également Generated_Secret_Keypar la clé secrète réelle et StrongMQPasswordpar le mot de passe réel pour l'utilisateur de la file d'attente de messages de la taïga. Si vous avez un serveur SMTP prêt et que vous souhaitez utiliser immédiatement les fonctions d'envoi d'e-mails, vous pouvez décommenter les options d'e-mail et définir la valeur appropriée. Si vous n'avez pas de serveur de messagerie prêt, vous pouvez ignorer la configuration de la fonction de messagerie pour l'instant et la définir plus tard dans ce fichier de configuration.

Si vous souhaitez activer la connexion GitHub, créez une application dans GitHub et fournissez l'ID client API et le secret client.

Pour vérifier immédiatement si le backend Taiga peut être démarré, exécutez le serveur Django intégré.

workon taiga
python manage.py runserver

Vous verrez la sortie suivante si le serveur a démarré avec succès.

(taiga) taiga@vultr:~/taiga-back$ workon taiga
(taiga) taiga@vultr:~/taiga-back$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...

System check identified no issues (0 silenced).
October 28, 2017 - 10:29:38
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Pour vérifier si l'API est accessible, ouvrez une autre session de terminal et exécutez ce qui suit.

curl http://127.0.0.1:8000/api/v1/

Vous verrez une sortie similaire renvoyée par l'appel d'API.

user@vultr:~$ curl http://127.0.0.1:8000/api/v1/
{"webhooks": "http://127.0.0.1:8000/api/v1/webhooks", "invitations": "http://127.0.0.1:8000/api/v1/invitations", "severities": "http://127.0.0.1:8000/api/v1/severities", "memberships": "http://127.0.0.1:8000/api/v1/memberships", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "epics/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/epics/(?P<resource_id>\\d+)/voters", "wiki": "http://127.0.0.1:8000/api/v1/wiki", "priorities": "http://127.0.0.1:8000/api/v1/priorities", "userstories/attachments": "http://127.0.0.1:8000/api/v1/userstories/attachments", "epics/(?P<epic>[^/.]+)/related_userstories": "http://127.0.0.1:8000/api/v1/epics/(?P<epic>[^/.]+)/related_userstories", "timeline/user": "http://127.0.0.1:8000/api/v1/timeline/user", "userstories/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/userstories/(?P<resource_id>\\d+)/voters", "wiki-links": "http://127.0.0.1:8000/api/v1/wiki-links", "epics/attachments": "http://127.0.0.1:8000/api/v1/epics/attachments", "issues/custom-attributes-values": "http://127.0.0.1:8000/api/v1/issues/custom-attributes-values

Arrêtez le serveur principal de la taïga en appuyant sur " ctrl + C" et désactivez l'environnement virtuel.

deactivate

Installer le frontend

Le frontend de la taïga est le composant de la taïga qui sert l'interface utilisateur Web. Clonez le référentiel frontal de la taïga à partir de Github et extrayez la dernière branche stable.

cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable

Créez un nouveau fichier de configuration pour le frontend de la taïga.

nano ~/taiga-front-dist/dist/conf.json

Remplissez le fichier.

{
    "api": "https://taiga.example.com/api/v1/",
    "eventsUrl": "wss://taiga.example.com/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [],
    "tribeHost": null,
    "importers": [],
    "gravatar": true
}

Assurez-vous de remplacer le example domainpar le domaine réel. Vous pouvez également modifier la langue par défaut et d'autres paramètres dans la configuration ci-dessus.

Installer les événements de la taïga

Outre le frontend et le backend, nous devons également installer les événements de la taïga. Les événements de la taïga est un serveur de socket Web, et il permet au frontend de la taïga d'afficher les changements en temps réel dans les modules tels que le backlog, Kanban et plus encore. Il utilise également le serveur RabbitMQ pour le traitement des messages.

Clonez le référentiel des événements de la taïga depuis Github.

cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events

Installez les dépendances Node.js à l'aide de npm.

npm install

Créez un nouveau fichier de configuration pour les événements de la taïga.

nano ~/taiga-events/config.json

Remplissez le fichier.

{
    "url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga",
    "secret": "Generated_Secret_Key",
    "webSocketServer": {
        "port": 8888
    }
}

Remplacez-la Generated_Secret_Keypar la clé secrète réelle de 64 caractères que vous avez générée précédemment. La clé secrète doit être exactement la même que la clé que vous avez fournie dans le fichier de configuration du backend de la taïga. En outre, mettez à jour le StrongMQPasswordavec le mot de passe réel pour l'utilisateur de la file d'attente de messages Taiga.

Configurer le cirque

Circus est un gestionnaire de processus pour les applications Python. Nous utiliserons Circus pour gérer le backend et les événements de la taïga.

Revenez à l' sudoutilisateur.

exit

Remarque : à partir de maintenant, vous devrez exécuter les commandes à l'aide de l' sudoutilisateur.

sudo apt -y install circus

Créez un nouveau fichier de configuration Circus pour exécuter le backend Taiga.

sudo nano /etc/circus/conf.d/taiga.ini

Remplissez le fichier.

[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4

[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.5/site-packages

Créez une nouvelle configuration de cirque pour exécuter les événements de la taïga.

sudo nano /etc/circus/conf.d/taiga-events.ini

Remplissez le fichier.

[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/local/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12

Redémarrez Circus et activez le démarrage automatique au démarrage.

sudo systemctl restart circusd
sudo systemctl enable circusd

Vérifiez l'état du cirque.

circusctl status

Si Circus a démarré correctement tous les processus de la taïga, vous verrez la sortie suivante.

user@vultr:~$ circusctl status
circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active

Si l'un des processus n'est pas actif, exécutez sudo chmod -R 777 /home/taiga/logset redémarrez Circus. Vérifiez à nouveau l'état des processus du Cirque, cette fois, vous trouverez certainement le service en cours d'exécution.

Maintenant, nous avons installé et exécuté Taiga avec succès. Avant de pouvoir l'utiliser, nous devons exposer l'installation à l'aide de n'importe quel serveur Web de production.

Installer Nginx en tant que proxy inverse

Nous utiliserons Nginx comme proxy inverse pour servir l'application aux utilisateurs. Nous obtiendrons et installerons également des certificats SSL auprès de Let's Encrypt.

Certbot est le client officiel de délivrance des certificats pour Let's Encrypt CA. Ajoutez le référentiel Certbot PPA dans le système.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

Installez Nginx et Certbot.

sudo apt -y install nginx certbot

Remarque : Pour obtenir des certificats de Let's Encrypt CA, vous devez vous assurer que le domaine pour lequel vous souhaitez générer les certificats est dirigé vers le serveur. Sinon, apportez les modifications nécessaires aux enregistrements DNS de votre domaine et attendez que le DNS se propage avant de refaire la demande de certificat. Certbot vérifie l'autorité de domaine avant de fournir les certificats.

Utilisez maintenant le serveur Web intégré dans Certbot pour générer les certificats pour votre domaine.

sudo certbot certonly --standalone -d taiga.example.com

Les certificats générés sont susceptibles d'être stockés dans le /etc/letsencrypt/live/taiga.example.com/répertoire. Le certificat SSL sera conservé sous la forme fullchain.pemet la clé privée sera enregistrée sous privkey.pem.

Les certificats Let's Encrypt expirent dans 90 jours, il est donc recommandé de configurer le renouvellement automatique des certificats à l'aide des tâches Cron. Cron est un service système utilisé pour exécuter des tâches périodiques.

Ouvrez le fichier de tâche cron.

sudo crontab -e

Ajoutez la ligne suivante.

0 0 * * * /usr/bin/certbot renew --quiet

Le travail cron ci-dessus s'exécutera quotidiennement à minuit. Si le certificat doit expirer, il renouvellera automatiquement les certificats.

Générez un paramètre Diffie-Hellman puissant. Il fournit une couche de sécurité supplémentaire pour l'échange de données entre l'hôte et le serveur.

sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048 

Créez un nouveau bloc serveur Nginx pour servir le frontend de la taïga.

sudo nano /etc/nginx/sites-available/taiga

Remplissez le fichier avec les éléments suivants.

server {
    listen 80;
    server_name taiga.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name taiga.example.com;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    index index.html;

    # Frontend
    location / {
        root /home/taiga/taiga-front-dist/dist/;
        try_files $uri $uri/ /index.html;
    }

    # Backend
    location /api {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001/api;
        proxy_redirect off;
    }

    location /admin {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001$request_uri;
        proxy_redirect off;
    }

    # Static files
    location /static {
        alias /home/taiga/taiga-back/static;
    }

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;
    }

     location /events {
        proxy_pass http://127.0.0.1:8888/events;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

    ssl on;
    ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

}

Assurez-vous de changer le domain nameet le path to the SSL certificates. Activez l'hôte virtuel.

sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga

Vous pouvez maintenant redémarrer le serveur Web Nginx et l'activer pour démarrer automatiquement au démarrage.

sudo systemctl restart nginx
sudo systemctl status nginx

Enfin, corrigez la propriété et l'autorisation des fichiers Taiga.

sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/

Conclusion

Vous pouvez maintenant accéder à l'installation de la taïga en allant sur https://taiga.example.com. Connectez-vous en utilisant le compte administrateur initial avec le nom d'utilisateur " admin" et le mot de passe " 123123". Votre installation est maintenant prête pour une utilisation en production. Commencez par créer un nouveau projet ou évaluer le produit. Si vous gérez déjà un projet sur Github, Jira ou Trello, vous pouvez facilement importer les projets dans Taiga en utilisant les importateurs .



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.