Instala Picstome en tu servidor
Picstome es gratis y de código abierto. Puedes tenerlo en tu propio servidor con todas las funciones: galerías, compartir, contratos, facturas, Stripe, subida desde cámara y las apps de escritorio. No hay edición de pago ni funciones bloqueadas.
Lo único que pagas es el servidor y, si quieres, el servicio de instalación que explicamos al final.
Qué necesitas
Sección titulada «Qué necesitas»Un servidor con Ubuntu 22.04 o 24.04 y acceso root. El mínimo realista para un estudio pequeño:
| Recurso | Mínimo | Cómodo |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 2 GB | 4 GB |
| Disco | 40 GB | 100 GB o más |
| Software | PHP 8.5, MySQL 8 / MariaDB 10.6+, Nginx, Node 22+ | lo mismo |
El procesado de fotos es la parte cara: los RAW y los vídeos grandes necesitan CPU y RAM mientras se convierten. Si prevés ingerir miles de fotos por sesión, coge más que el mínimo.
Antes de empezar
Sección titulada «Antes de empezar»Autoalojar significa que el servidor, la base de datos y las copias de seguridad son tuyos. Nadie más tiene una copia de tus fotos, y nadie más puede recuperarlas si el disco falla. Lee la sección de copias de seguridad antes de subir la galería de un cliente real.
Instalación
Sección titulada «Instalación»-
Apunta el dominio al servidor. Crea un registro
Aparafotos.tudominio.comapuntando a la IP del servidor. Hazlo primero: el paso de HTTPS falla sin ello. -
Instala los paquetes.
Ventana de terminal apt update && apt upgrade -yapt install -y nginx mysql-server unzip git supervisor \php8.5-fpm php8.5-cli php8.5-mysql php8.5-mbstring php8.5-xml \php8.5-curl php8.5-zip php8.5-gd php8.5-intl php8.5-imagickComprueba con
php -vque estás en 8.5. Si tu distribución todavía no lo trae, añade antes el PPA deondrej/php:Ventana de terminal add-apt-repository ppa:ondrej/phpapt update -
Crea la base de datos.
Ventana de terminal mysql -u root -pCREATE DATABASE picstome CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'picstome'@'localhost' IDENTIFIED BY 'una-contrasena-larga-y-aleatoria';GRANT ALL PRIVILEGES ON picstome.* TO 'picstome'@'localhost';FLUSH PRIVILEGES; -
Descarga el código y las dependencias.
Ventana de terminal cd /var/wwwgit clone https://github.com/picstome/picstome.gitcd picstomecomposer install --no-dev --optimize-autoloadernpm ci && npm run build -
Configura el entorno.
Ventana de terminal cp .env.example .envphp artisan key:generateLuego edita
.envy pon al menos:APP_NAME=PicstomeAPP_ENV=productionAPP_DEBUG=falseAPP_URL=https://fotos.tudominio.comDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=picstomeDB_USERNAME=picstomeDB_PASSWORD=una-contrasena-larga-y-aleatoria -
Crea el esquema y el primer administrador.
Ventana de terminal php artisan migrate --forcephp artisan create-admin-userphp artisan storage:link -
Nginx. Crea
/etc/nginx/sites-available/picstome:server {listen 80;server_name fotos.tudominio.com;root /var/www/picstome/public;index index.php;client_max_body_size 5120M; # igual que el límite de 5 GB por archivo de la applocation / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/var/run/php/php8.5-fpm.sock;fastcgi_read_timeout 3600;}location ~ /\.(?!well-known).* {deny all;}}Ventana de terminal ln -s /etc/nginx/sites-available/picstome /etc/nginx/sites-enabled/nginx -t && systemctl reload nginx -
HTTPS.
Ventana de terminal apt install -y certbot python3-certbot-nginxcertbot --nginx -d fotos.tudominio.com -
El worker de fondo. Las subidas, la conversión de RAW, los ZIP de galería y los emails pasan por una cola. Sin él, las fotos se quedan en procesando para siempre.
Crea
/etc/supervisor/conf.d/picstome-worker.conf:[program:picstome-worker]command=php /var/www/picstome/artisan queue:work --sleep=3 --tries=3 --max-time=3600autostart=trueautorestart=trueuser=www-datanumprocs=2stdout_logfile=/var/www/picstome/storage/logs/worker.logstopwaitsecs=3600Ventana de terminal supervisorctl reread && supervisorctl update -
El planificador. Los recordatorios de caducidad, la limpieza y la purga van con el scheduler de Laravel. Añádelo al crontab de root con
crontab -e:* * * * * cd /var/www/picstome && php artisan schedule:run >> /dev/null 2>&1 -
Permisos y cachés.
Ventana de terminal chown -R www-data:www-data /var/www/picstomechmod -R 775 storage bootstrap/cachephp artisan config:cachephp artisan route:cachephp artisan view:cache -
Entra. Abre
https://fotos.tudominio.comcon el usuario administrador que creaste y cambia la contraseña inmediatamente.
Ajustes de PHP que importan
Sección titulada «Ajustes de PHP que importan»Dos valores de INI provocan la mayoría de las peticiones de soporte del autoalojamiento. Edita /etc/php/8.5/fpm/php.ini y reinicia el servicio:
upload_max_filesize = 5120Mpost_max_size = 5120Mmax_execution_time = 3600memory_limit = 512Mupload_max_filesize también tiene que coincidir con client_max_body_size de Nginx. Si uno es menor que el otro, las subidas grandes fallan con un error genérico.
Para archivos muy grandes, el que realmente procesa es el worker de cola, así que da a PHP-FPM un max_execution_time generoso y mantén numprocs en 2 o más.
Usar almacenamiento S3
Sección titulada «Usar almacenamiento S3»El disco local funciona, pero el almacenamiento compatible con S3 (AWS S3, Cloudflare R2, Hetzner, Backblaze B2, MinIO) encaja mejor con fotos: más barato por GB, sin límites de disco y con las descargas servidas directamente por el proveedor.
Pon esto en .env:
FILESYSTEM_DISK=s3AWS_ACCESS_KEY_ID=...AWS_SECRET_ACCESS_KEY=...AWS_DEFAULT_REGION=autoAWS_BUCKET=picstomeAWS_ENDPOINT=https://endpoint-de-tu-proveedorAWS_USE_PATH_STYLE_ENDPOINT=falseDespués ejecuta otra vez php artisan storage:link y sube una foto de prueba. El bucket debe ser privado: Picstome genera enlaces de corta duración para cada descarga.
Actualizaciones
Sección titulada «Actualizaciones»No hay actualización automática. Una actualización segura, siempre:
cd /var/www/picstomephp artisan downgit pullcomposer install --no-dev --optimize-autoloadernpm ci && npm run buildphp artisan migrate --forcephp artisan config:cache && php artisan route:cache && php artisan view:cachephp artisan queue:restartphp artisan upphp artisan queue:restart no es opcional: los workers mantienen el código antiguo en memoria hasta que se reinician.
Haz una copia de la base de datos y de storage/app antes de cada actualización. Las migraciones son aditivas, pero una copia es lo que convierte una actualización mala en una tarde mala.
Copias de seguridad
Sección titulada «Copias de seguridad»Tres cosas que copiar, en este orden:
- La base de datos —
mysqldump picstome > picstome.sqlde forma programada. storage/app— los archivos que no están en S3. Si usas S3, copia el bucket aparte..env— guarda la clave de la app; sin ella, los valores cifrados son ilegibles.
Problemas frecuentes
Sección titulada «Problemas frecuentes»| Síntoma | Causa |
|---|---|
| Fotos atascadas en procesando | El worker no está corriendo. supervisorctl status. |
| 500 en todas las páginas tras actualizar | Cachés obsoletas. php artisan optimize:clear. |
| Fallan las subidas grandes | client_max_body_size o upload_max_filesize demasiado bajos. |
| Los emails no llegan | Configura las variables MAIL_*; el driver por defecto log escribe en storage/logs. |
| La descarga de galería nunca está lista | Worker parado o el disco de archivos lleno. |
| La cámara conecta pero no aparece nada | La carpeta de entrada o el estado de la cuenta; revisa el diálogo de cámara. |
Los logs están en storage/logs/laravel.log y storage/logs/worker.log.
Lista de seguridad
Sección titulada «Lista de seguridad»Antes de invitar a un cliente:
-
APP_ENV=productionyAPP_DEBUG=false. - La contraseña de administrador no es la de por defecto.
- HTTPS activo y la versión HTTP redirige.
- La base de datos no es accesible desde internet.
-
php artisan aboutno muestra el entornolocal. - Las copias se ejecutan y has restaurado una al menos una vez.
Te lo instalamos nosotros
Sección titulada «Te lo instalamos nosotros»Si todo esto no es como quieres pasar una tarde, instalamos Picstome en tu propio servidor por 100 €. El servidor, los datos y las actualizaciones son tuyos; nosotros hacemos la puesta en marcha.
Qué incluye el servicio:
- un servidor Ubuntu limpio configurado con Nginx, PHP, MySQL, HTTPS y el worker de cola;
- la app instalada y migrada, con tu usuario administrador listo;
- el almacenamiento configurado (disco local o tu bucket S3);
- una galería de prueba subida y un enlace compartido verificado de principio a fin;
- el envío de email comprobado con un envío real;
- un traspaso breve con las credenciales, el comando de copia y el comando de actualización.
Qué no incluye: el servidor, el dominio, los costes de S3 ni ninguna suscripción de terceros. Escribe a [email protected] con el proveedor y el tamaño de servidor que tienes en mente.
Relacionado
Sección titulada «Relacionado»- Planes y almacenamiento — qué cambia entre planes en app.picstome.com.
- Picstome Rater y Photo Stats — las apps de escritorio.
- ¿Picstome está funcionando? — el estado del servicio alojado.

