elestio/indico

Verified Publisher

By Elestio

Updated 4 days ago

Indico, verified and packaged by Elestio

Image

209

elest.io

DiscordElestio examplesBlog

Indico, verified and packaged by Elestio

A better community platform for the modern web.

Indico A feature-rich event management system, made @ CERN, the place where the Web was born.

outline

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.

deploy

Why use Elestio images?

  • Elestio stays in sync with updates from the original source and quickly releases new versions of this image through our automated processes.
  • Elestio images provide timely access to the most recent bug fixes and features.
  • Our team performs quality control checks to ensure the products we release meet our high standards.

Usage

Docker-compose

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
Environment variables
VariableValue (example)
SOFTWARE_VERSION_TAGlatest
DOMAINyour.domain
ADMIN_EMAILyour@email.com
ADMIN_PASSWORDyour-password
SERVICE_HOSTNAMEyour.domain
PGHOST172.17.0.1
PGUSERpostgres
PGPASSWORDyour-password
PGDATABASEindico
PGPORT38791
NGINX_PORT8080
INDICO_CONFIGindico.conf
INDICO_LOGGING_CONFIGlogging.yaml

Access

You can access the Web UI at: http://your-domain:3634

Maintenance

Logging

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

Backup and Restore with Docker Compose

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.

Links

Docker Pull Command

docker pull elestio/indico