Gokapi: Docker

3 minuto(s) de lectura

Docker

Gokapi es un servidor ligero para compartir archivos, que caducan después de una cantidad fija de descargas o días.

Es similar al descontinuado Firefox Send, con la diferencia de que solo el administrador puede cargar archivos.

Esto nos permite compartir archivos muy fácilmente y eliminarlos después, ahorrando así espacio en disco y teniendo control sobre quién descarga el archivo desde el servidor.

Las principales características son las siguientes:

  • Subir y compartir inmediatamente varios archivos usando tu propio VPS privado.
  • Hacer que los archivos estén disponibles o no para su descarga con un solo clic.
  • API disponible para interactuar con Gokapi.
  • Protege tu panel de administración detrás de una ruta URL secreta e inicia sesión de forma segura con tu propio nombre de usuario y contraseña.
  • Limitar el número de descargas de cada fichero o bien el número de días que el enlace estara disponible
  • Proteger con contraseña las descargas

Instalación

Gokapi

Vamos a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:

mkdir -p $HOME/docker/gokapi/{config,datos} && \
cd $HOME/docker/gokapi

Ahora vamos a crear el fichero de configuración docker-compose.yml lanzando el siguiente comando:

cat << EOF > $HOME/docker/gokapi/docker-compose.yml
version: '3'
services:
  gokapi:
    image: f0rc3/gokapi:latest
    container_name: Gokapi
    ports:
      - 53842:53842
    volumes:
      - '~/docker/gokapi/config:/app/config'
      - '~/docker/gokapi/datos:/app/data'
    environment:
      - GOKAPI_USERNAME=Empalador
      - GOKAPI_PASSWORD=nocturno
      - GOKAPI_PORT=53842
      - GOKAPI_EXTERNAL_URL=https://gokapi.lordpedal.duckdns.org
      - GOKAPI_REDIRECT_URL=https://lordpedal.github.io
      - GOKAPI_LOCALHOST=no
      - GOKAPI_USE_SSL=no
    restart: always
EOF

Vamos a repasar los principales parámetros a modificar para adaptarlos a nuestro sistema y configuración especifica:

Parámetro Función
53842:53842 Puerto gestión web 53842
~/docker/gokapi/config:/app/config Ruta donde almacenamos la configuración
~/docker/gokapi/datos:/app/data Ruta donde almacenamos los datos
GOKAPI_USERNAME=Empalador Usuario que definimos de acceso Admin
GOKAPI_PASSWORD=nocturno Contraseña de usuario que definimos de acceso Admin
GOKAPI_PORT=53842 Puerto de escucha
GOKAPI_EXTERNAL_URL=https://gokapi.lordpedal.duckdns.org La URL que se utilizará para generar enlaces de descarga
GOKAPI_REDIRECT_URL=https://lordpedal.github.io De forma predeterminada, Gokapi redirige a otra URL en lugar de mostrar una página genérica si no se ha pasado ningún enlace de descarga
GOKAPI_LOCALHOST=no Podriamos limitar el uso a la red interna
GOKAPI_USE_SSL=no Generar certificados SSL
restart: always Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio

Una vez configurado, lo levantamos para ser creado y ejecutado:

docker-compose up -d

Gokapi + Traefik

Requisito obligatorio tener instalado Docker: Traefik Maroilles

Vamos a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:

mkdir -p $HOME/docker/gokapi/{config,datos} && \
cd $HOME/docker/gokapi

Ahora vamos a crear el fichero de configuración docker-compose.yml lanzando el siguiente comando:

cat << EOF > $HOME/docker/gokapi/docker-compose.yml
version: '3'
services:
  gokapi:
    image: f0rc3/gokapi:latest
    container_name: Gokapi
    ports:
      - 53842:53842
    volumes:
      - '~/docker/gokapi/config:/app/config'
      - '~/docker/gokapi/datos:/app/data'
    environment:
      - GOKAPI_USERNAME=Empalador
      - GOKAPI_PASSWORD=nocturno
      - GOKAPI_PORT=53842
      - GOKAPI_EXTERNAL_URL=https://gokapi.lordpedal.duckdns.org
      - GOKAPI_REDIRECT_URL=https://lordpedal.github.io
      - GOKAPI_LOCALHOST=no
      - GOKAPI_USE_SSL=no
    networks:
      - traefik
    labels:
      - traefik.backend=gokapi
      - traefik.frontend.rule=Host:gokapi.lordpedal.duckdns.org
      - traefik.docker.network=traefik
      - traefik.port=53842
      - traefik.enable=true
    restart: always
networks:
  traefik:
    external: true
EOF

Vamos a repasar los principales parámetros a modificar para adaptarlos a nuestro sistema y configuración especifica:

Parámetro Función
53842:53842 Puerto gestión web 53842
~/docker/gokapi/config:/app/config Ruta donde almacenamos la configuración
~/docker/gokapi/datos:/app/data Ruta donde almacenamos los datos
GOKAPI_USERNAME=Empalador Usuario que definimos de acceso Admin
GOKAPI_PASSWORD=nocturno Contraseña de usuario que definimos de acceso Admin
GOKAPI_PORT=53842 Puerto de escucha
GOKAPI_EXTERNAL_URL=https://gokapi.lordpedal.duckdns.org La URL que se utilizará para generar enlaces de descarga
GOKAPI_REDIRECT_URL=https://lordpedal.github.io De forma predeterminada, Gokapi redirige a otra URL en lugar de mostrar una página genérica si no se ha pasado ningún enlace de descarga
GOKAPI_LOCALHOST=no Podriamos limitar el uso a la red interna
GOKAPI_USE_SSL=no Generar certificados SSL, en nuestro caso los gestiona Traefik
restart: always Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio
traefik.frontend.rule=Host:gokapi.lordpedal.duckdns.org Sustituimos la variable lordpedal por nuestro ID de DuckDNS

Una vez configurado, lo levantamos para ser creado y ejecutado:

docker-compose up -d

En mi caso, el servicio estaría disponible en la dirección web https://gokapi.lordpedal.duckdns.org/admin

Configuración

NOTA: Importante comentar que si no añadimos la variable /admin al enlace seremos redigiridos a la dirección que hubiesemos definido en la variable GOKAPI_REDIRECT_URL.

Y listo!