elestio/indico
Indico, verified and packaged by Elestio
209
A better community platform for the modern web.
Indico A feature-rich event management system, made @ CERN, the place where the Web was born.
Deploy a fully managed Indico on elest.io if you want automated backups, reverse proxy with SSL termination, firewall, automated OS & Software updates, and a team of Linux experts and open source enthusiasts to ensure your services are always safe, and functional.
Here are some example snippets to help you get started creating a container.
services:
# The main Indico container which runs flask
# The same image is also used to run celery
indico-web: &indico-web
image: elestio/indico:${SOFTWARE_VERSION_TAG}
restart: always
command: /opt/indico/run_indico.sh
depends_on:
- indico-redis
- indico-celery
environment:
- PGHOST=${PGHOST}
- PGUSER=${PGUSER}
- PGPORT=${PGPORT}
- PGPASSWORD=${PGPASSWORD}
- PGDATABASE=${PGDATABASE}
- SERVICE_HOSTNAME=${SERVICE_HOSTNAME}
networks:
- backend
- frontend
# ports:
# # Indico is accessible either via nginx (localhost:8080 by default), or
# # directly via localhost:9090. In that case, static assets are served by flask
# # - 172.17.0.1:3634:59999
volumes:
- "archive:/opt/indico/archive" # file storage
- "customization:/opt/indico/custom"
- "static-files:/opt/indico/static"
- "./indico-logs:/opt/indico/log" # logs
- ./indico.conf:/opt/indico/etc/indico.conf
- ./logging.yaml:/opt/indico/etc/logging.yaml
tmpfs:
- /opt/indico/tmp:mode=0777
- /var/cache/fontconfig:mode=0777
# Indico celery
indico-celery: &indico-celery
restart: always
<<: *indico-web
command: /opt/indico/run_celery.sh
depends_on:
- indico-redis
networks:
- backend
ports: []
# Indico celery beat
indico-celery-beat:
restart: always
<<: *indico-celery
command: /opt/indico/run_celery.sh beat
# Redis
indico-redis:
restart: always
image: elestio/redis:7.2
networks:
- backend
volumes:
- "./redis:/data"
ports:
- 172.17.0.1:9736:6379
# Postgres
indico-postgres:
image: elestio/postgres:15
restart: always
environment:
- POSTGRES_USER=${PGUSER}
- POSTGRES_PASSWORD=${PGPASSWORD}
- POSTGRES_DB=${PGDATABASE}
networks:
- backend
volumes:
- "./postgres-data:/var/lib/postgresql/data"
ports:
- 172.17.0.1:38791:5432
# Nginx proxy
# Indico can be accessed by default via localhost:8080
indico-nginx:
image: ghcr.io/nginxinc/nginx-unprivileged:stable-alpine
restart: always
networks:
- frontend
ports:
- "172.17.0.1:3634:8080"
volumes:
- "static-files:/opt/indico/static:ro"
- "./nginx.conf:/etc/nginx/conf.d/default.conf:ro"
pgadmin:
image: elestio/pgadmin:latest
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: ${ADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${ADMIN_PASSWORD}
PGADMIN_LISTEN_PORT: 8080
ports:
- "172.17.0.1:27977:8080"
volumes:
- ./servers.json:/pgadmin4/servers.json
networks:
backend: {}
frontend: {}
volumes:
archive:
driver: local
driver_opts:
type: none
device: ${PWD}/archive
o: bind
static-files:
driver: local
driver_opts:
type: none
device: ${PWD}/static-files
o: bind
customization:
driver: local
driver_opts:
type: none
device: ${PWD}/customization
o: bind
Variable | Value (example) |
---|---|
SOFTWARE_VERSION_TAG | latest |
DOMAIN | your.domain |
ADMIN_EMAIL | your@email.com |
ADMIN_PASSWORD | your-password |
SERVICE_HOSTNAME | your.domain |
PGHOST | 172.17.0.1 |
PGUSER | postgres |
PGPASSWORD | your-password |
PGDATABASE | indico |
PGPORT | 38791 |
NGINX_PORT | 8080 |
INDICO_CONFIG | indico.conf |
INDICO_LOGGING_CONFIG | logging.yaml |
You can access the Web UI at: http://your-domain:3634
The Elestio Indico Docker image sends the container logs to stdout. To view the logs, you can use the following command:
docker-compose logs -f
To stop the stack you can use the following command:
docker-compose down
To make backup and restore operations easier, we are using folder volume mounts. You can simply stop your stack with docker-compose down, then backup all the files and subfolders in the folder near the docker-compose.yml file.
Creating a ZIP Archive For example, if you want to create a ZIP archive, navigate to the folder where you have your docker-compose.yml file and use this command:
zip -r myarchive.zip .
Restoring from ZIP Archive To restore from a ZIP archive, unzip the archive into the original folder using the following command:
unzip myarchive.zip -d /path/to/original/folder
Starting Your Stack Once your backup is complete, you can start your stack again with the following command:
docker-compose up -d
That's it! With these simple steps, you can easily backup and restore your data volumes using Docker Compose.
docker pull elestio/indico