PsiTransfer
La semana pasada estuve en una comunión y necesitaba pasar las fotos que hice a los orgullosos padres de la niña. Esta vez no quería mandar las fotos por los canales habituales que se suelen emplear como wetransfer, por lo que en Mastodon me quedé con la copla del servicio gratuito y comprometido con la privacidad llamado LUFI que tiene la capacidad de 500 mb y que podría haber usado dividiendo mis fotos en varios ficheros.
Pero aqui somos de cacharrear y teniendo ya un servidor que sirve los podcast, la pagina web y hasta un servicio para estudiar ingles los compañeros de mis hijos, decidí investigar (poco la verdad) y encontrar un servicio que estuviera dockerizado y me permitiera montar mi propio wetransfer casero.
El elegido ha sido el proyecto llamado psitransfer que parece ser un proyecto vivo, ha recibido la ulitma actualización hace 17 dias a fecha de escribir esto. Un docker bastante sencillo de desplegar y que comparto aquí.
Preparando el escenario, en mi caso todos los docker están en una carpeta llamada docker, asi que una vez situado en dicha carpeta creamos el directorio psitransfer y dentro de él una carpeta data.
1
2
3
# Crear directorio del proyecto
mkdir -p psitransfer
cd psitransfer
Lo siguiente y muy importante es crear el directorio data con los permisos correctos para que el servicio PsiTransfer puede escribir en él
1
2
3
# Crear el volumen de datos con permisos correctos (UID 1000) [[1]]
mkdir -p data
sudo chown -R 1000:1000 data
Una vez creada la estructura de ficheros vamos a crear en el directorio psitransfer el fichero docker-compose.yml con el siguiente contenido. Va comentado lo importante.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
services:
psitransfer:
image: psitrax/psitransfer:latest
container_name: psitransfer
ports:
- "3666:3000" # 👉 Oficialmente usa el 3000 también pero lo tenia ocupado y he puesto el 3666
environment:
- PSITRANSFER_ADMIN_PASS=MiContraseñaFuerteYRobusta # 👉 Cambia esto por una contraseña segura
- PSITRANSFER_PORT=3000 # 👈 Importante: el puerto interno debe coincidir con el interno no con el que usamos nosotros para acceder
- PSITRANSFER_DEFAULT_RETENTION=86400 # 👈 Opcional: retención por defecto (24h en segundos)
- NODE_ENV=production # 👈 Recomendado para producción
volumes:
- ./data:/data # 👈 $PWD funciona, pero ./ es más portable
restart: unless-stopped # 👈 Para que se reinicie automáticamente si el NUC se apaga
user: "1000:1000" # 👈 CRÍTICO: el contenedor necesita UID 1000 para escribir en /data
networks: # 👉 Crítico para poder acceder desde el exterior.
web:
networks: # 👉 Con la parte anterior de networks y esta estamos indicando que el contenedor de psitransfer esté en la misa red que caddy para que se puedan ver ambos contenedores.
web:
name: web
Bueno, pues ya tenemos lo necesario para desplegarlo. Asi que allá vamos.
1
docker compose up -d
Tras bajarse la última versión que exista, se desplegará el servicio y para empezar a subir ficheros bastará con entrar en la siguiente dirección
1
http://<IP-de-tu-NUC>:3666
Nos carga una página donde tenemos en la parte izquierda un recuadro para soltar los arvhivos o bien haciendo clic elegirlos nosotros. En la derecha tenemos la posibilidad de indicar el tiempo que queremos que permanezca en nuestro servidor los ficheros y opcionalmente poner una contraseña a la descarga.
Una vez le decimos que suba el fichero nos indica que se ha realizado la subida al servidor y nos ofrece la posibilidad de genera un QR, enviarlo por correo o simplemente copiar la url generada y enviarsela a quien queramos.
Si queremos acceder al panel de administración para ver qué ficheros tenemos ya subidos en el servicio accederemos a la siguiente url
1
http://<IP-de-tu-NUC>:3666/admin
Y veremos un panel de acceso que te solicita una contraseña, es la que indicamos en el docker-compose.yml que si no la has cambiado será MiContraseñaFuerteYRobusta
Tras acceder se ven los ficheros que hay subidos y hasta que fecha se quedarán en nuestro servicio.
Me dejo una cosa importante, el enlace que nos ha generado para compartir sera del tipo:
1
http://<IP-de-tu-NUC>/2a2e1007d0dc
Por lo que sólo va a funcionarte a tí en tu red de casa y no tendría mucho sentido. Aquí es cuando hay que invitar a jugar a tu proxy inverso, en mi caso es caddy.
No lo voy a explicar del todo aquí, pero sería añadir en el Caddyfile nuestro una nueva sección para el servico PsiTransfer que acabamos de configurar.
Por ejemplo podemos usar el servico de duckdns para resovler el nombre y que apunte al puerto 3666 de nuestra máquina y así darle acceso desde el exterior. Opcional y recomendable que para acceder le demos otra contraeña de acceso del proxy inverso.
Por lo que deberemos transforma el enlace obtenido cambiando simplemente
1
https://tengomipropiowetransfer.duckdns.org/2a2e1007d0dc
Espero que haya sido didáctico y se entienda bien el proceso pero si crees que hay algo que puede ser explicado mejor o que necesita una revisión por favor ponte en contacto conmigo alberto@papafriki.es y estaré encantado de ver como hacerlo más comprensible.



