Como alojar las fotografías en tu propio servidor
La verdad es que no las tengo todas conmigo con esto de tener mis fotografías en Google Fotos. Y no lo digo por el hecho de Google Fotos, si no por el simple hecho de depender de un tercero. Y es que últimamente no tengo mas que disgustos con los servicios de terceros. Depender de un tercero es lo que tiene, que estás a su servicio. Así, que de nuevo me he puesto con el asunto de alojar las fotografías en tu propio servidor.
Por el momento voy a duplicar alojamiento. Así voy a mantener las fotografías tanto en Google Photos, como en Photoprism, y mas adelante ya veremos.
Como alojar las fotografías en tu propio servidor
Sobre Photoprism
Ya te hablé en detalle sobre este servicio en el episodio 220 del podcast titulado tu propio Google Photos con Photoprism y Traefik.
El objetivo de este podcast, no es tanto centrarme en la instalación de Photoprism, sino en la infraestructura necesaria, y por supuesto y sobre todo, en lo referente a la sincronización con Android.
Sobre la infraestructura para alojar las fotografías
En mi caso lo tengo claro. El alojamiento lo voy a mantener en el VPS, pero, en tu caso, es posible que quieras hacerlo en una Raspberry, o en un servidor que tengas en casa o en otro lugar. Esto depende de ti, evidentemente. En cualquier caso, voy a poner ambas soluciones y ya tu decides exactamente lo que quieres hacer.
Por supuesto, parto de que tu vas a querer acceder a Photoprim desde cualquier parte del mundo. Es decir, que Photoprism estará expuesto al exterior. En el caso de un VPS, está claro, pero en el caso de que lo tengas en tus propias instalaciones, tendrás que apuntar desde el router de casa hasta el servidor, de forma que cualquier llamada al puerto 80 y al puerto 443 del router, vayan a los puertos que tu consideres de tu servidor.
DNS dinámico
Si lo alojas en un VPS no te hace falta, un DNS dinámico, pero si lo alojas en tu casa, o otro lugar detrás de una IP dinámica, necesitas necesariamente tener un DNS dinámico. Si este es tu caso, te recomiendo que le des un vistazo al artículo una puerta a tu Raspberry teniendo IP dinámica del tutorial sobre tu nube en la Raspberry.
En este artículo del tutorial te explico con detalle como lo tienes que configurar para que todo funcione correctamente. Pero recuerda, que aquí vamos a gestionarlo con un proxy inverso, por los motivos que te he comentado anteriormente.
Proxy inverso
En cualquier caso, voy a utilizar un proxy inverso, por dos razones. La primera porque seguro que vas a querer alojar mas servicios, y no solo Photoprism. Y la segunda de las razones y mucho mas importante, para gestionar los certificados seguros.
Lo cierto es que hace un mes o un par de meses, estaba preparando un vídeo para sobre como obtener los certificados autofirmados de Let’s encrypts y casi me da un pasmo. ¿Te crees que me acordaba?¿Te crees que lo conseguí?. Pues no, no lo conseguí, finalmente abandoné.
Hace tanto tiempo que no me encargo de los certificados que se me hizo muy cuesta arriba. Lo cierto es que durante los últimos años, Traefik ha sido el encargado de hacer todo esto de los certificados, y para mi es completamente transparente. Vamos que no me entero de nada.
En este caso y para variar, en lugar de utilizar Traefik como proxy inverso, me voy a decantar por Caddy, por cuestiones de simplicidad.
Así que te pongo primero el archivo docker-compose.yml
de caddy
,
version: "3.7"
services:
caddy:
image: lucaslorentz/caddy-docker-proxy:ci-alpine
ports:
- 80:80
- 443:443
environment:
- CADDY_INGRESS_NETWORKS=caddy
networks:
- caddy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
restart: unless-stopped
networks:
caddy:
external: true
volumes:
caddy_data: {}
Y a continuación el de Photoprism
. En este caso, ojo que está con sqlite, si quieres utilizar MariaDB tienes que realizar algunas modificaciones sobre el mismo,
version: '3.5'
services:
photoprism:
image: photoprism/photoprism:latest
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
healthcheck: # Optional
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.tuservidor.es/"
PHOTOPRISM_SITE_TITLE: "PhotoPrism"
PHOTOPRISM_SITE_CAPTION: "Browse Your Life"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
PHOTOPRISM_SETTINGS_HIDDEN: "false"
PHOTOPRISM_ADMIN_PASSWORD: "contraseñasupersecreta"
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
volumes:
- "./Pictures:/photoprism/originals"
- "./Storage:/photoprism/import"
- "./Import:/photoprism/import"
labels:
caddy: photoprism.tuservidor.es
caddy.reverse_proxy: "{{upstreams 2342}}"
networks:
- caddy
networks:
caddy:
external: true
Aunque ahora que lo he pegado aquí, creo sinceramente que la configuración debería ir en un archivo específico, para evitar
Con estos dos archivos docker-compose.yml
ya lo tienes listo para levantar tu servicio de fotografías.
La parte de mi equipo
Conectar esto con Linux es realmente sencillo, porque al final simplemente se trata de compartir un directorio, con lo que como bien sabes, tienes docenas de forma de hacerlo.
La parte de Android
Para la parte de Android, te recomiendo una interesante aplicación que te va a permitir sincronizar todas tus fotografías entre PhotoPrism y Android de forma relativamente sencilla. Esta aplicación se llama PhotoSync y la tienes disponible en Google Play.
Entre otras características, esta aplicación te permite realizar una sincronización manual, o bien, una sincronización cada vez que realices una fotografía, al mas puro estilo de los servicios de terceros.
Imagen de portada de Sarandy Westfall
La entrada Como alojar las fotografías en tu propio servidor aparece primero en Atareao.