220 - Tu propio Google Photos con Photoprism y Traefik
Como crear tu propio Google Photos personalizado utilizando la combinación perfecta formada por Photoprims y Traefik
Antes que nada, quiero comentarte que yo utilizo Google Photos. Por el momento, no tengo ninguna intención en migrar a otro servicio. Sin embargo, hay diferentes razones por las que puedes querer tener tus fotografías en tu propio servicio y bajo tu control. Ya sea por cuestiones personales o profesionales. Desde luego, desde el punto de vista profesional, tienes que tener en cuenta, que tener las fotografías de otros alojadas en un servicio externo, te puede llevar a incumplir con la RGPD. Y esto ya es una buena razón para tener tu propio Google Photos.
Sin embargo, tienes que tener muy en cuenta, que alojar fotografías, o en general cualquier archivo en un servidor propio, también tiene su contrapartida. Y esta contrapartida es importante. Tu eres el responsable de ese servicio. Te tienes que encargar de mantener el servicio, los archivos, las copias de seguridad, etc.
Si tu no lo vas a hacer, vale la pena, y te lo digo sinceramente, que este trabajo lo delegues en un tercero. Tener tu propio Google Photos es realmente tentador. Sin embargo, perder todas tus fotografías, las fotografías de toda tu vida, puede ser algo realmente frustrante. Un verdadero problema.
Con esto no quiero quitarte de la cabeza, la idea de montar tu propio Google Photos, pero si, que tengas en cuenta estas consideraciones.
Tu propio Google Photos
En que ando metido
Como casi todos los jueves, porque si te diste cuenta, la semana pasada no te conté nada, quiero contarte en que ando metido para que sepas que encontrarás en atareao.es
Artículos
Respecto al tema de los artículos, indicarte que la semana pasada publiqué dos capítulos nuevos de dos tutoriales.
Por un lado publiqué el capítulo un servicio y varias instancias del tutorial sobre trabajar con Systemd. En este te hablaba como podías monitorizar diferentes páginas web, a partir de un único servicio, del que levanté tantas instancias como me hizo falta.
Para poner un ejemplo de este capítulo del tutorial, monitoricé diferentes páginas web, como Google, Twitter, y otras. Sin embargo, no me di cuenta, y lo dejé funcionando toda la noche. A la mañana siguiente, al ver las peticiones DNS en AdGuard, sobre el que te hablé en el episodio 218 del podcast, en referencia al abuso publicitario, me quedé muy extrañado, hasta que caí en el asunto.
El otro capítulo que publiqué es sobre diálogos con JavaScript, del tutorial sobre diálogos para scripts. En este caso, abordaba como puedes crear tus diálogos utilizando JavaScript, y totalmente integrado con tu entorno de escritorio.
Aplicaciones
Respecto al tema de las aplicaciones, como te conté el pasado lunes, he estado muy centrado, en el asunto de automatizar el empaquetado de Telegram, con lo que desde este punto de vista poco te puedo contar.
¿Que es Photoprism?¿Como crear tu propio Google Photos?
Básicamente se trata de un servicio de auto alojamiento implementado en Go y JavaScript con Vue, y que utiliza Google TensorFlow. Indicarte que se trata de un proyecto liberado bajo licencia AGPL.
Se trata de un servidor que te permite realizar cualquiera de las operaciones básicas que realiza cualguier gestor de fotografías que se precie. Desde navegar por todas tus fotografías, buscar entre ellas, organizarlas y por supuesto compartirlas.
Utiliza Google TensorFlow, para de forma automática etiquetar y buscar imágenes. Es decir, tienes lo mejor de los dos mundos. Las fotografías, las vas a tener bajo tu custodia, pero sin renunciar a la inteligencia artificial.
Una característica realmente interesante de Photprism, es que trabaja también con WebDav, y esto es algo realmente interesante y a tener muy en cuenta.
Requerimientos básicos
Como te puedes imaginar, este servicio lo puedes montar sobre Docker, y básicamente eso es lo que yo tengo montado. Pero, te tengo que advertir, que es muy probable, que no puedas utilizar tu Raspberry, para montar este servicio. Al menos, si es una Raspberry de las más básicas,
Y es que Photoprism requiere al menos dos núcleos y 4 GB de memoria. Pero no solo esto. En el caso de que quieras indexar gran cantidad de fotografías y vídeos, porque también permite vídeo, es recomendable que lo hagas de SSD, para que no se convierta en un proceso realmente tedioso.
En caso de que te quedes sin memoria, sobre todo en lo que al indexado se refiere, puedes limitar el número de procesos simultáneos, y por supuesto, asegurarte que tienes la memoria de intercambio swap configurada.
En este sentido, los propios desarrolladores, indican que una Raspberry, entiendo que la de 4 GB sería capaz de mover hasta 200.000 archivos. Pero, seguro que a mas de uno, esto se le queda corto.
Instalación
Para la instalación que he hecho, lo he montado en un VPS, con docker-compose
y por supuesto Traefik, para exponerlo a Internet, y tenerlo allí donde vaya. Dependiendo de lo que tu quieras hacer, puedes prescindir de algunos de estos pasos, por supuesto.
Por otro lado, yo lo he levantado utilizando SQLite. Yo lo he hecho por que no he querido calentarme mucho la cabeza, pero desde luego, si vas a poner allí, millones de fotografías, es interesante que recurras a una solución mas potente, como podría ser MariaDB o PostgreSQL.
En mi caso el docker-compose.yml
tiene el siguiente aspecto,
version: '3.5'
services:
photoprism:
image: photoprism/photoprism:latest
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- 2342:2342
healthcheck:
test: "photoprism status"
interval: 60s
timeout: 15s
retries: 5
environment:
PHOTOPRISM_DEBUG: "false"
PHOTOPRISM_PUBLIC: "false"
PHOTOPRISM_READONLY: "false"
PHOTOPRISM_UPLOAD_NSFW: "true"
PHOTOPRISM_DETECT_NSFW: "false"
PHOTOPRISM_EXPERIMENTAL: "false"
PHOTOPRISM_SITE_URL: "https://photoprism.tu-servidor-vps.es/"
PHOTOPRISM_SITE_TITLE: "PhotoPrism"
PHOTOPRISM_SITE_CAPTION: "Browse Your Life"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
PHOTOPRISM_SETTINGS_HIDDEN: "false"
PHOTOPRISM_ADMIN_PASSWORD: "photoprism"
PHOTOPRISM_DATABASE_DRIVER: "sqlite"
PHOTOPRISM_SIDECAR_JSON: "true"
PHOTOPRISM_SIDECAR_YAML: "true"
PHOTOPRISM_THUMB_FILTER: "lanczos"
PHOTOPRISM_THUMB_UNCACHED: "false"
PHOTOPRISM_THUMB_SIZE: 2048
PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680
PHOTOPRISM_JPEG_SIZE: 7680
PHOTOPRISM_JPEG_QUALITY: 92
PHOTOPRISM_DARKTABLE_PRESETS: "false"
volumes:
- "./Pictures:/photoprism/originals"
- "./Storage:/photoprism/storage"
- "./Import:/photoprism/import"
labels:
- traefik.enable=true
- treafik.port=2342
- traefik.http.routers.photoprism.entrypoints=http
- traefik.http.routers.photoprism.rule=Host(`photoprism.tu-servidor-vps.es`)
- traefik.http.middlewares.photoprism-https-redirect.redirectscheme.scheme=https
- traefik.http.routers.photoprism.middlewares=webdav-https-redirect
- traefik.http.routers.photoprism-secure.entrypoints=https
- traefik.http.routers.photoprism-secure.rule=Host(`photoprism.tu-servidor-vps.es`)
- traefik.http.routers.photoprism-secure.tls=true
- traefik.http.routers.photoprism-secure.tls.certresolver=myresolver
networks:
- proxy
networks:
proxy:
external: true
Una vez realizado todo esto, ha llegado el momento de indexar y/o importar todas tus fotografías, por supuesto previo levantar el contenedor. Para esto, tienes que ejecutar estas dos instrucciones,
docker-compose up -d
docker-compose exec photoprism photoprism index
Si quisieras actualizar la imagen de este contenedor, las instrucciones a ejecutar, serían las siguientes,
docker-compose pull photoprism
docker-compose stop photoprism
docker-compose up -d --no-deps photoprism
Cuando actualices la imagen y reinicies, ten paciencia, que tarda unos minutos en estar disponible. Que el ansia no se apodere de tu alma.
La primera vez que inicias el servicio, a menos que lo hayas cambiado en el docker-compose.yml
, el usuario es admin
y la contraseña es photoprism
.
Uso y funcionamiento de Photoprism
Una vez en marcha y con todas tus imágenes indexadas, solo te queda disfrutar de este servicio.
Cuando entras vas directo a la sección de fotografías. Aquí tienes que observar tres asuntos interesantes,
- Desde la cabecera es desde donde puedes realizar las búsquedas. Fíjate en la importancia que le ha dado el desarrollador de este servicio a la herramienta de búsquedas.
- En la parte superior derecha, verás una pequeña flecha. Al hacer clic sobre ella se despliega, un menú espectacular, para realizar una búsqueda avanzada. ¿En que consiste esa búsqueda avanzada? Te permite buscar por cámara, colores, años, meses, paises, y mas.
- En la parte derecha tienes un panel que puedes desplegar, y desde el cual te puedes mover a diferentes secciones. Fotografías y vídeos. Y diferentes clasificaciones, por privado, calendario, momentos, lugares, etiquetas y mas.
Conclusión
Sinceramente, me ha gustado mucho este servicio, sobre todo por su simplicidad y facilidad de manejo. Al final, tu propio Google Photos, tiene que ser tan fácil de manejar y gestionar como lo es el original, por supuesto. Y en este sentido Google Photos, es un duro competidor, para que todo el mundo se habitúe a utilizar este servicio.
De cualquier forma, y sin intención de ser pesado, quiero recordarte que en el caso de que quieras utilizar un servicio propio, tienes que encargarte de realizar el mantenimiento. Dar de alta y baja usuarios, limpiar y realizar copias de seguridad de la base de datos, asegurarte de que el servicio siempre está levantado, hacer copias de seguridad de las fotografías, etc.
Así, que antes de meterte en un berenjenal de este estilo, estate seguro de lo que haces, porque te puedes meter en un importante lío, como pierdas todas las fotografías de la familia o del trabajo.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.