diff --git a/planka/README.md b/planka/README.md new file mode 100644 index 0000000..fb76ec2 --- /dev/null +++ b/planka/README.md @@ -0,0 +1,39 @@ +# Instalación + +[planka](https://github.com/plankanban/planka) A Trello-like kanban board built with React and Redux.. + +## Features + +* Create projects, boards, lists, cards, labels and tasks +* Add card members, track time, set a due date, add attachments, write comments +* Markdown support in a card description and comment +* Filter by members and labels +* Customize project background +* Real-time updates +* User notifications +* Internationalization + + +``` +git clone https://github.com/atareao/self-hosted.git +cd self-hosted/planka +cp sample.env .env +sed -i "s/planka.tuservidor.es/el_fqdn_que_quieras/g" .env +mkdir data +``` + +Además recuerda cambiar la contraseña. + +A la hora de levantar el servicio dependerá del proxy inverso que hayas seleccionado. Si has elegido Caddy, simplemente, + +``` +docker-compose -f docker-compose.yml -f docker-compose.caddy.yml up -d +docker-compose logs -f +``` + +Mientras que si has elegido Traefik, + +``` +docker-compose -f docker-compose.yml -f docker-compose.traefik.yml up -d +docker-compose logs -f +``` diff --git a/planka/docker-compose.caddy.yml b/planka/docker-compose.caddy.yml new file mode 100644 index 0000000..14233db --- /dev/null +++ b/planka/docker-compose.caddy.yml @@ -0,0 +1,11 @@ +version: "3.7" + +services: + planka: + labels: + - caddy="${FQDN}" + - caddy.reverse_proxy="{{upstreams 1337}}" + +networks: + proxy: + external: true diff --git a/planka/docker-compose.traefik.yml b/planka/docker-compose.traefik.yml new file mode 100644 index 0000000..7063a8f --- /dev/null +++ b/planka/docker-compose.traefik.yml @@ -0,0 +1,21 @@ +version: '3.7' + +services: + planka: + networks: + - proxy + labels: + - traefik.enable=true + - traefik.http.services.planka.loadbalancer.server.port=1337 + - traefik.http.routers.planka.entrypoints=web + - traefik.http.routers.planka.rule=Host(`${FQDN}`) + - traefik.http.middlewares.planka-https-redirect.redirectscheme.scheme=websecure + - traefik.http.routers.planka.middlewares=planka-https-redirect + - traefik.http.routers.planka-secure.entrypoints=websecure + - traefik.http.routers.planka-secure.rule=Host(`${FQDN}`) + - traefik.http.routers.planka-secure.tls=true + - traefik.http.routers.planka-secure.tls.certresolver=letsencrypt + +networks: + proxy: + external: true diff --git a/planka/docker-compose.yml b/planka/docker-compose.yml new file mode 100644 index 0000000..8dd93c7 --- /dev/null +++ b/planka/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.7' + +services: + planka: + image: ghcr.io/plankanban/planka:latest + container_name: planka + init: true + command: > + bash -c + "for i in `seq 1 30`; do + ./start.sh && + s=$$? && break || s=$$?; + echo \"Tried $$i times. Waiting 5 seconds...\"; + sleep 5; + done; (exit $$s)" + restart: unless-stopped + volumes: + - user-avatars:/app/public/user-avatars + - project-background-images:/app/public/project-background-images + - attachments:/app/private/attachments + networks: + - internal + - proxy + environment: + - BASE_URL + - TRUST_PROXY + - DATABASE_URL + - SECRET_KEY + depends_on: + - postgres + + + postgres: + image: postgres:14-alpine + container_name: planka_db + init: true + restart: unless-stopped + volumes: + - db-data:/var/lib/postgresql/data + environment: + - POSTGRES_DB + - POSTGRES_HOST_AUTH_METHOD + networks: + - internal + +volumes: + user-avatars: + project-background-images: + attachments: + db-data: diff --git a/planka/sample.env b/planka/sample.env new file mode 100644 index 0000000..89fd3ce --- /dev/null +++ b/planka/sample.env @@ -0,0 +1,7 @@ +FQDN=planka.tuservidor.es +BASE_URL=http://planka.tuservidor.es +TRUST_PROXY=0 +DATABASE_URL=postgresql://postgres@postgres/planka +SECRET_KEY=notsecretkey +POSTGRES_DB=planka +POSTGRES_HOST_AUTH_METHOD=trust