Installer taskcafe
Taskcafe es une webapp kanban. J'ai vu un screenshot sur Discord et j'ai ressenti un besoin irrésistible de l'installer. Donc voici comment l'installer de A à Z.
Installation des dépendences
Les dépendences de taskcafe sont pour le moins... spéciales... J'ai installé nvm pour installer node et npm pour installer yarn pour utiliser go pour installer taskcafe.
Donc commençons, tout d'abord on va installer go
wget https://golang.org/dl/go1.15.7.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.7.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
rm go1.15.7.linux-amd64.tar.gz
Maintenant on va installer node.js
et npm
wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz
tar xvf node*.tar.xz
mv node*/ /usr/local/node/
echo "export PATH=$PATH:/usr/local/node/bin/" >> ~/.bashrc
source ~/.bashrc
rm node*.tar.xz
Enfin, on peux installer yarn
npm install -g yarn
Installer à partir du code source
Tout d'abord il faut télécharger le code source.
git clone https://github.com/JordanKnott/taskcafe
cd taskcafe
Ensuite on peux installer le tout avec go
(qui va lui même utiliser yarn
)
go run cmd/mage/main.go install
go run cmd/mage/main.go build
Notez que la deuxième commande est très consomatrice de RAM et qu'elle peux durer un certain moment.
Mise en place de la base de donnée
Tout d'abord il faut installer postgresql
sudo apt install -y postgresql
Maintenant on peut créer notre base de donnée et l'utilisateur
sudo -u postgres psql
CREATE DATABASE taskcafe;
CREATE USER taskcafe WITH ENCRYPTED PASSWORD '<some password>';
ALTER USER taskcafe WITH superuser;
EXIT;
On peut maintenant configurer les variables et migrer la base de donnée.
TASKCAFE_DATABASE_PASSWORD="<some password>" ./dist/taskcafe migrate
Configuration du DNS et HTTPS
Tout d'abord on va créer un nouveau sous-domaine
Domaine | TTL | Type | Target |
---|---|---|---|
tasks.domain.tld | 0 | A | <ipv4> |
tasks.domain.tld | 0 | AAAA | <ipv6> |
Maintenant on peut certifier le domaine avec HTTPS
apt install -y letsencrypt
systemctl stop nginx
certbot certonly --standalone -d tasks.domain.tld
systemctl start nginx
Configuration nginx
On peut maintenant ouvrir un nouveau fichier de configuration pour le nom de domaine.
vim /etc/nginx/sites-available/taskcafe.conf
Et copier-coller la configuration suivante
server {
listen 80;
listen [::]:80;
server_name tasks.domain.tld;
return 301 https://tasks.domain.tld$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
include /etc/nginx/snippets/letsencrypt.conf;
server_name tasks.domain.tld;
location / {
proxy_pass http://127.0.0.1:3333;
proxy_set_header Host $host;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /;
proxy_buffering off;
}
ssl_certificate /etc/letsencrypt/live/tasks.domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tasks.domain.tld/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/tasks.domain.tld/fullchain.pem;
access_log /var/log/nginx/tasks.domain.tld.access.log;
error_log /var/log/nginx/tasks.domain.tld.error.log;
}
Enfin on va ajouter la configuration dans les sites activés.
ln -s /etc/nginx/sites-available/taskcafe.conf /etc/nginx/sites-enabled/
Lancer le tout proprement
On peut maintenant créer un nouveau script dans le dossier taskcafe
vim start
Et voici le code du script
#!/bin/bash
TASKCAFE_DATABASE_PASSWORD="<password>" /path/to/taskcafe/dist/taskcafe web
Ensuite il faut juste le définir comme exécutable
chmod +x start
On va maintenant créer un nouveau service systemd.
vim /etc/systemd/system/taskcafe.service
Et coller la configuration suivante :
[Unit]
Description=Taskcafe
After=network.target
[Service]
Restart=always
RestartSec=1
ExecStart=/path/to/taskcafe/start
[Install]
WantedBy=multi-user.target
Enfin, il suffit de lancer le service
systemctl daemon-reload
systemctl restart taskcafe
systemctl status taskcafe
Le site devrait être disponible à l'addresse : tasks.domain.tld
Merci de m'avoir lu 😀