Servidor Galaxy
Descripción del componente
Galaxy
Galaxy es una plataforma web ampliamente utilizada para realizar investigaciones de índole bioinformátiico teniendo como principal objetivo que estas sean accesibles, reproducibles y transparentes. Galaxy proporciona una interfaz fácil de usar para que los investigadores puedan ejecutar una amplia gama de tareas y flujos sin necesidad de tengan conocimientos avanzados de programación.
El proyecto UseGalaxy cuenta con el respaldo de una gran cantidad de servidores a lo largo de todo el mundo. Los principales servidores públicos de incluyen:
Galaxy Main: Instancia principal alojada en Penn State University (usegalaxy.org).
Galaxy Europe: Instancia europea alojada en Friburgo, Alemania (usegalaxy.eu).
Galaxy Australia: Instancia australiana alojada en Melbourne (usegalaxy.org.au).
Además, hay muchas otras instancias de Galaxy alojadas por instituciones y grupos de investigación a nivel mundial, lo que contribuye a un rico ecosistema de servidores Galaxy.
Dentro de IMPaCT-Data se ha desarrollado un ecosistema Galaxy compuesto de un nodo central (https://galaxy.impact-data.bsc.es/) y una serie de nodos externos de trabajo Pulsar.
Documentación técnica
Instalación de Galaxy
La instancia de Galaxy para IMPaCT-Data ha sido desplegada utilizando un enfoque de instalación basado en código fuente (source-based). Esto permite adaptar el despliegue a la infraestructura del proyecto teniendo una configuración reproducible y fácil de mantener.
Aunque esta documentación describe el enfoque de despliegue utilizado para IMPaCT-Data, los requisitos exactos pueden variar entre sitios dependiendo de la infraestructura disponible, las políticas de acceso, la disposición del almacenamiento, las necesidades de autenticación y el modelo de ejecución de trabajos.
Para una guía paso a paso sobre el proceso de configuración de un servidor Galaxy, consulte las instrucciones de despliegue a continuación y remítase a la documentación oficial de administración de Galaxy cuando sea necesario.
Guía de Despliegue del Servidor Galaxy
Guía paso a paso para desplegar un servidor Galaxy listo para producción (versión 25.1) en Ubuntu 24.04 LTS. Este documento cubre la clonación del código fuente, la configuración de la base de datos, la configuración de Galaxy, la habilitación de cargas de archivos mediante TUS, la gestión del proceso con systemd y extras opcionales como autenticación OIDC y ejecución remota con Pulsar.
Tabla de Contenidos
Paquetes del Sistema
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
build-essential \
python3 python3-dev python3-venv python3-pip \
git \
postgresql postgresql-client libpq-dev \
nginx certbot python3-certbot-nginx \
curl wget \
libcurl4-openssl-dev libssl-dev \
zlib1g-dev libbz2-dev liblzma-dev \
libffi-dev libsqlite3-dev \
node-gyp nodejs npm
Estos paquetes cubren la compilación de extensiones en C, los controladores de base de datos y los componentes del proxy web.
Base de Datos PostgreSQL
Galaxy utiliza PostgreSQL para todos los metadatos persistentes (usuarios, historiales, trabajos, conjuntos de datos).
# Cambiar al usuario del sistema postgres
sudo -u postgres psql
Dentro del shell de psql:
-- Crear un rol dedicado para Galaxy con una contraseña segura
CREATE ROLE galaxy LOGIN PASSWORD 'CHANGE_ME_STRONG_PASSWORD';
-- Crear la base de datos de Galaxy propiedad de ese rol
CREATE DATABASE galaxy OWNER galaxy;
Verificar la conectividad:
psql -h localhost -U galaxy -d galaxy -c "SELECT 1;"
Clonar el Código Fuente de Galaxy
git clone -b release_25.1 https://github.com/galaxyproject/galaxy.git
cd galaxy/
El repositorio incluye todas las herramientas integradas, el sistema de compilación del cliente y las configuraciones de muestra.
Entorno Virtual de Python
Galaxy incluye un script auxiliar (scripts/common_startup.sh) que inicializa un entorno virtual, pero también puede crear uno explícitamente:
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip setuptools wheel
La primera ejecución de run.sh instalará automáticamente las dependencias de Python de Galaxy en .venv/.
Configuración Principal (galaxy.yml)
Copie la plantilla y edite:
cp config/galaxy.yml.sample config/galaxy.yml
Configuración mínima para producción:
galaxy:
# Base de datos
database_connection: postgresql://galaxy:CHANGE_ME_STRONG_PASSWORD@localhost:5432/galaxy
install_database_connection: postgresql://galaxy:CHANGE_ME_STRONG_PASSWORD@localhost:5432/galaxy
# Rutas de datos
file_path: /data/galaxy/database/files
new_file_path: /data/galaxy/database/tmp
job_working_directory: /data/galaxy/database/jobs_directory
# Cargas reanudables con TUS
tus_upload_store: /data/galaxy/database/tmp/tus
# Configuración de trabajos
job_config_file: config/job_conf.yml
# Configuración de herramientas
tool_config_file: config/tool_conf.xml
# Conda (resolución automática de dependencias de herramientas)
conda_auto_init: true
conda_auto_install: true
# Usuarios administradores (correos electrónicos separados por comas)
admin_users: your-email@example.com
# URL pública (usada para callbacks, hooks de TUS, etc.)
galaxy_infrastructure_url: https://galaxy.yourdomain.org
# Conservar directorios de trabajos para depuración (usar "always" en producción para limpiar)
cleanup_job: never
gravity:
gunicorn:
bind: 0.0.0.0:8080
tusd:
enable: true
Explicación de los parámetros principales
Parámetro |
Propósito |
|---|---|
|
URI de SQLAlchemy que apunta a la base de datos PostgreSQL |
|
Dónde Galaxy almacena los archivos de conjuntos de datos cargados/generados |
|
Espacio de trabajo temporal para los trabajos en ejecución |
|
Galaxy instalará Miniconda en el primer arranque para resolver dependencias de herramientas |
|
Correo(s) electrónico(s) que obtienen acceso al panel de administración |
|
Configuración del gestor de procesos — Gunicorn sirve la aplicación web |
|
Habilita las cargas de archivos grandes y reanudables mediante el protocolo TUS |
Directorios de Datos
Cree los directorios referenciados en galaxy.yml:
sudo mkdir -p /data/galaxy/database/{files,tmp,tmp/tus,jobs_directory}
sudo chown -R $(whoami):$(whoami) /data/galaxy
Asegúrese de que el disco montado en /data tenga suficiente espacio para los conjuntos de datos.
Configuración de Herramientas (tool_conf.xml)
El archivo por defecto config/tool_conf.xml.sample incluye las herramientas integradas de Galaxy (Obtener Datos, Manipulación de Texto, etc.). Para utilizarlo:
cp config/tool_conf.xml.sample config/tool_conf.xml
Puede añadir secciones de herramientas personalizadas editando este archivo:
<toolbox monitor="true">
<!-- Secciones integradas ... -->
<section id="custom_tools" name="Mis Herramientas Personalizadas">
<tool file="tools/my_tool/my_tool.xml" />
</section>
</toolbox>
Las herramientas instaladas desde ToolShed (a través de la interfaz de administración) se registran por separado en config/shed_tool_conf.xml, que Galaxy gestiona automáticamente.
Configuración de Trabajos (job_conf.yml)
Para una configuración básica de servidor único con ejecución local:
cp config/job_conf.sample.yml config/job_conf.yml
Configuración mínima funcional:
runners:
local:
load: galaxy.jobs.runners.local:LocalJobRunner
workers: 4
execution:
default: local_dest
environments:
local_dest:
runner: local
Esto indica a Galaxy que ejecute todos los trabajos localmente con 4 hilos de trabajo. Consulte Ejecución Remota de Trabajos con Pulsar para la ejecución distribuida.
Primer Arranque (Manual)
cd /path-to-galaxy/galaxy
./run.sh
En el primer arranque, Galaxy:
Instalará las dependencias de Python en
.venv/Ejecutará las migraciones de la base de datos (creando todas las tablas)
Inicializará Conda (si
conda_auto_init: true)Iniciará el servidor WSGI Gunicorn en el puerto 8080
Observe los registros (galaxy.log) en busca de:
serving on http://0.0.0.0:8080
Prueba local:
curl -s http://localhost:8080/api/version
Debería ver: {"version_major":"25.1", ...}
Detenga con Ctrl+C o ./run.sh --stop-daemon si se ejecuta en segundo plano.
Servicio systemd
Cree un archivo de unidad para que Galaxy se inicie al arrancar el sistema y pueda gestionarse con systemctl:
sudo tee /etc/systemd/system/galaxy.service > /dev/null <<'EOF'
[Unit]
Description=Galaxy Server
After=network.target postgresql.service
[Service]
Type=oneshot
User=ubuntu
Group=ubuntu
WorkingDirectory=path-to-galaxy
ExecStart=path-to-galaxy/run.sh --daemon
ExecStop=path-to-galaxy/run.sh --stop-daemon
RemainAfterExit=yes
TimeoutStartSec=300
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
EOF
Habilitar e iniciar:
sudo systemctl daemon-reload
sudo systemctl enable galaxy
sudo systemctl start galaxy
Comprobar el estado:
sudo systemctl status galaxy
journalctl -u galaxy -f
CVMFS para Datos de Referencia (Opcional)
CernVM-FS proporciona acceso de solo lectura a genomas de referencia de Galaxy, tablas de datos de herramientas e imágenes Singularity precompiladas sin necesidad de almacenamiento en disco local.
CVMFS tiene dos partes útiles en este despliegue:
Cliente CVMFS: instalado en los nodos de Galaxy/Pulsar para que puedan acceder a los repositorios bajo
/cvmfs.Proxy/caché CVMFS: un proxy Squid utilizado por los clientes para almacenar en caché los archivos CVMFS descargados localmente, en lugar de que cada nodo descargue los mismos archivos directamente desde internet.
Se usaron scripts preconfigurados para instalar el proxy y el cliente de CVMFS:
cvmfs-galaxy-proxy-setup.sh
cvmfs-galaxy-client-setup.sh
README.md
Configurar el proxy Squid de CVMFS
Para el despliegue del proxy Squid, se utilizó el siguiente script:
cvmfs-galaxy-proxy-setup.sh
El script del proxy instala y configura Squid como proxy de caché para los repositorios CVMFS del Proyecto Galaxy:
cd /path-to-proxy/cvmfs-setup-galaxy
sudo ./cvmfs-galaxy-proxy-setup.sh <ALLOWED_CLIENT_IP_OR_CIDR>
Ejemplo:
sudo ./cvmfs-galaxy-proxy-setup.sh 192.168.1.12
El proxy escucha en el puerto predeterminado de Squid/CVMFS:
3128
El script configura Squid para:
escuchar en el puerto
3128permitir solo las IPs o rangos CIDR de clientes seleccionados
contactar con los servidores Stratum 1 de CVMFS de Galaxy
almacenar en caché los archivos descargados bajo la caché local de Squid
Comprobaciones útiles en el host del proxy:
systemctl status squid
systemctl is-enabled squid
sudo ss -ltnp | grep 3128
sudo sed -n '1,120p' /etc/squid/squid.conf
Configurar los clientes CVMFS para usar el proxy
En cada nodo de Galaxy o Pulsar que deba consumir CVMFS a través del proxy, use el script de configuración del cliente. Este instala el software cliente de CVMFS y escribe la configuración del repositorio CVMFS de Galaxy:
cd /home/ubuntu/cvmfs-setup-galaxy
sudo ./cvmfs-galaxy-client-setup.sh 192.168.1.2:3128
Esto escribe la configuración del cliente CVMFS en:
/etc/cvmfs/default.local
CVMFS_HTTP_PROXY=192.168.1.2:3128 significa que los clientes CVMFS obtienen los datos a través del proxy Squid local. La primera vez que se solicita un archivo o imagen de contenedor, Squid lo descarga y lo almacena en caché. Las solicitudes posteriores de los nodos de Galaxy o Pulsar pueden reutilizar la copia en caché, lo que reduce el tráfico externo y mejora la velocidad de acceso repetido.
Si una nueva VM de Pulsar necesita usar este proxy, asegúrese de que su dirección IP o subred esté permitida en /etc/squid/squid.conf en el host del proxy. De lo contrario, el cliente no podrá usar el proxy.
Verificar CVMFS en el cliente:
sudo cvmfs_config chksetup
cvmfs_config status
ls /cvmfs/data.galaxyproject.org
ls /cvmfs/singularity.galaxyproject.org
Nota: Los montajes de CVMFS son montajes lazy/autofs, por lo que los repositorios pueden aparecer bajo /cvmfs solo después del primer acceso.
Apuntar Galaxy a los datos de herramientas de CVMFS
En galaxy.yml, añada:
tool_data_table_config_path: /cvmfs/data.galaxyproject.org/byhand/location/tool_data_table_conf.xml,/cvmfs/data.galaxyproject.org/managed/location/tool_data_table_conf.xml
Esto le da a Galaxy acceso a genomas de referencia preindexados (hg38, mm10, etc.) sin descargarlos localmente.
Autenticación OIDC / SSO (Opcional)
Galaxy es compatible con OpenID Connect para el inicio de sesión único institucional.
###3 Habilitar en galaxy.yml
galaxy:
enable_oidc: true
oidc_config_file: config/oidc_config.xml
oidc_backends_config_file: config/oidc_backends_config.xml
Configurar un proveedor OIDC
Cree config/oidc_backends_config.xml:
<?xml version="1.0"?>
<OIDC>
<provider name="keycloak">
<url>https://keycloak.yourdomain.org/realms/your-realm</url>
<client_id>galaxy-client</client_id>
<client_secret>YOUR_CLIENT_SECRET</client_secret>
<redirect_uri>https://galaxy.yourdomain.org/authnz/keycloak/callback</redirect_uri>
</provider>
</OIDC>
Consulte la documentación OIDC de Galaxy para obtener detalles completos sobre los proveedores compatibles (Keycloak, Google, Elixir AAI, etc.).
Instalación de Herramientas desde ToolShed
Una vez que Galaxy esté en funcionamiento y tenga acceso de administrador:
Navegue a Admin → Instalar y Desinstalar en la interfaz de Galaxy.
Busque en Galaxy ToolShed la herramienta que necesita (p. ej.,
clustalo,bwa,samtools).Haga clic en Instalar — Galaxy descarga el XML de la herramienta, los datos de prueba y resuelve las dependencias mediante Conda.
Las herramientas instaladas aparecen automáticamente en config/shed_tool_conf.xml y quedan disponibles para todos los usuarios.
Configuración en el lado de Galaxy (job_conf.yml)
runners:
local:
load: galaxy.jobs.runners.local:LocalJobRunner
workers: 4
pulsar_mq_remote:
load: galaxy.jobs.runners.pulsar:PulsarMQJobRunner
amqp_url: amqps://user:pass@broker-host:5671/vhost
galaxy_url: https://galaxy.yourdomain.org
amqp_acknowledge: true
manager: _default_
# Certificados TLS (si se usa TLS mutuo)
amqp_connect_ssl_ca_certs: /path/to/ca-cert.pem
amqp_connect_ssl_keyfile: /path/to/client-key.pem
amqp_connect_ssl_certfile: /path/to/client-cert.pem
amqp_connect_ssl_cert_reqs: cert_required
amqp_consumer_timeout: 2
execution:
default: local_dest
environments:
local_dest:
runner: local
pulsar_remote_dest:
runner: pulsar_mq_remote
jobs_directory: /var/opt/pulsar/staging
dependency_resolution: remote
rewrite_parameters: true
# Para ejecución con Singularity/Apptainer:
singularity_enabled: true
singularity_cmd: /usr/bin/apptainer
singularity_default_container_id: docker://quay.io/biocontainers/your-tool:tag
require_container: true
tools:
- id: your_tool_id
environment: pulsar_remote_dest
Documentación oficial de Galaxy
Repositorio de código
Contacto
Para cualquier duda durante el periodo de uso y validación de los componentes de la Implementación de Referencia de IMPaCT-Data (Marzo, 2025), podéis poneros en contacto con: