Volúmenes y bases de datos
Volúmenes persistentes para servicios, Postgres, MySQL, Redis y MongoDB con un clic desde plantillas, conexión con `skiffly connect` y respaldos.
Volúmenes#
Un volumen es un disco persistente montado en un servicio en una ruta. Los datos sobreviven a nuevos despliegues, reinicios y cambios de imagen; se eliminan junto con el servicio o el entorno.
skiffly volume add --mount-path /data --size 5 # GB
skiffly volume list- Los volúmenes son por servicio y entorno;
stagingrecibe su propio volumen vacío. - Un servicio con volumen corre con una sola réplica (el almacenamiento en bloque no se puede compartir).
- Crear un volumen vuelve a desplegar el servicio para que aparezca el montaje.
- Los volúmenes se facturan por GB-mes aprovisionado mientras existen, incluso mientras el servicio está en reposo.
- El volumen se monta con root como dueño. Si la imagen pasa a un
USERque no es root (USER node,USER app), los archivos que root escribió antes quedan de solo lectura para él y la app falla conEACCES/Permission denied. Define la variableRAILWAY_RUN_UID=0(oSKIFFLY_RUN_UID) para ejecutar el contenedor como root, o el uid/gid que quieras conRAILWAY_RUN_UID/RAILWAY_RUN_GID. - Cambiar el tamaño todavía no está disponible: crea un volumen más grande, copia los datos con
skiffly sshy luego elimina el antiguo.volumeInstanceUpdatecambia la ruta de montaje o el servicio.
Bases de datos#
Las bases de datos son servicios normales creados desde plantillas: una imagen oficial, un volumen en el directorio de datos, una contraseña generada y una cadena de conexión que otros servicios referencian.
| Plantilla | Imagen | Puerto | Volumen | Variable a referenciar |
|---|---|---|---|---|
postgres (también postgres-16, postgis, pgvector, timescaledb) | postgres:17 | 5432 | /var/lib/postgresql/data, 10 GB | ${{Postgres.DATABASE_URL}} |
mysql, mariadb | mysql:8.4 | 3306 | /var/lib/mysql, 10 GB | ${{MySQL.MYSQL_URL}} |
redis (también valkey, keydb, dragonfly) | redis:7-alpine | 6379 | /data, 2 GB | ${{Redis.REDIS_URL}} |
mongodb | mongo:7 | 27017 | /data/db, 10 GB | ${{MongoDB.MONGO_URL}} |
Más motores en el catálogo: ClickHouse, CockroachDB, Cassandra, ScyllaDB, Neo4j, SurrealDB, InfluxDB, QuestDB, Meilisearch, Typesense, Qdrant, Weaviate, Elasticsearch, RabbitMQ, NATS, Kafka/Redpanda, MinIO.
Nuevo servicio → Plantilla → PostgreSQL. El servicio, el volumen y las variables se crean juntos y arranca el primer despliegue.
La base de datos escucha solo en la red privada. Dale más memoria en Configuración → Recursos cuando la carga crezca (1 vCPU / 1 GiB es el valor predeterminado de la plantilla).
Conectarse desde tu máquina#
skiffly connect abre un proxy TCP y el cliente correspondiente con las credenciales del servicio:
skiffly connect postgres # psql
skiffly connect mysql # mysql
skiffly connect redis # redis-cli
skiffly connect mongo # mongosh
skiffly connect postgres --print # imprime la URL y el comando del cliente en lugar de conectarEl cliente debe estar instalado localmente. El proxy se queda hasta que lo elimines (skiffly proxy delete), así que mantén una contraseña fuerte. Importa un volcado a través del proxy:
pg_restore -h edge.skiffly.cloud -p 21543 -U postgres -d app backup.dumpo desde dentro del contenedor con skiffly ssh:
skiffly ssh -s postgres -T -- pg_dump -U postgres app > backup.sqlRespaldos#
De cada volumen se toma un snapshot diario (03:00 UTC) con restic hacia almacenamiento cifrado compatible con S3 en la UE, conservando 7 snapshots diarios, 4 semanales y 3 mensuales. Los servicios de Postgres y MySQL reciben además un volcado lógico (pg_dumpall / mysqldump) en la misma ejecución, así que una restauración es consistente incluso si el snapshot a nivel de archivos captó una escritura en curso.
Los respaldos se listan en el bloque Respaldos del volumen en el panel, con skiffly backups list o con la herramienta MCP list-backups. Respaldar ahora (skiffly backups create, MCP create-backup) toma un respaldo bajo demanda, como máximo uno cada 10 minutos por volumen.
Restaurar es un clic: elige un respaldo y pulsa Restaurar (skiffly backups restore <backupId>, MCP restore-backup). Los datos actuales del volumen se reemplazan, así que antes se toma un respaldo de seguridad; con un snapshot de archivos, el servicio se detiene mientras se restauran los archivos y se vuelve a iniciar después, mientras que un volcado de base de datos se carga en la base de datos en ejecución (se cierran todas las sesiones de clientes). Aun así, guarda tus propios volcados de todo lo que no puedas permitirte perder; skiffly ssh y skiffly connect lo convierten en una sola línea dentro de una tarea cron.