Admidio Installation

References:

Requirements

  • Docker Engine

  • Docker Compose

Preparation of the Server

Create Directories for Admidio

cd /opt && mkdir -p docker-compose
cd docker-compose && mkdir -p admidio
cd admidio

Docker Compose Configuration

nano docker-compose.yaml

Content of docker-compose file:

# https://github.com/Admidio/admidio/blob/master/README-Docker.md

services:
  admidio-db:
    restart: unless-stopped
    image: mariadb:11.1.2-jammy
    container_name: admidio-db
    networks:
      backend:
    volumes:
      - ./data/mariadb/config:/etc/mysql/conf.d
      - ./data/mariadb/var_lib_mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
    # healthcheck:
    #   test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=rootpasswd"]
    #   interval: 10s
    #   timeout: 10s
    #   retries: 5
    security_opt:
      - "seccomp:unconfined"

  admidio-app:
    restart: unless-stopped
    image: admidio/admidio:branch_v4.3
    container_name: my.lugbz.org
    networks:
      dsnet:
      backend:
    depends_on:
      - admidio-db
    volumes:
      - ./data/admidio/files:/opt/app-root/src/adm_my_files
      - ./data/admidio/themes:/opt/app-root/src/adm_themes
      - ./data/admidio/plugins:/opt/app-root/src/adm_plugins
    environment:
      - ADMIDIO_DB_TYPE=mysql
      - ADMIDIO_DB_HOST=admidio-db:3306
      - ADMIDIO_DB_NAME=${MYSQL_DATABASE}
      - ADMIDIO_DB_USER=${MYSQL_USER}
      - ADMIDIO_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - ADMIDIO_DB_TABLE_PRAEFIX=adm_lugbz_
      - ADMIDIO_MAIL_RELAYHOST=<mail server host>:25
      - ADMIDIO_LOGIN_FOR_UPDATE=1
      - ADMIDIO_ORGANISATION=LUGBZ
      - ADMIDIO_PASSWORD_HASH_ALGORITHM=DEFAULT
      - TZ=Europe/Rome
      - ADMIDIO_ROOT_PATH=https://my.lugbz.org
    security_opt:
      - "seccomp:unconfined"

networks:
  dsnet:
    external: true
  backend:

nano .env

MYSQL_ROOT_PASSWORD=<mysql root pwd>
MYSQL_DATABASE=<admidio db name>
MYSQL_USER=<admidio db user>
docker compose up -d

Now the Container should be up and running! Check with docker ps if you find admidio.

Reverse Proxy Setup

Move to revproxy directory

cd /var/ds/revproxy

Create a Entry for the Installation

ds get-ssl-cert my.lugbz.org -t

It automatically creates a new entry for the RevProxy for the respective container. Now we have to change the port on which Admdio is working. To do this, we have to change to the domains folder.

Here is our generated file:

nano my.lugbz.org.conf

To make it work we just have to set the port to 8080 and change https to http. This is what it will look like in the end:

server {
    listen 443 ssl;
    server_name my.lugbz.org ;

    ssl_certificate     certs/my.lugbz.org/fullchain.pem;
    ssl_certificate_key certs/my.lugbz.org/privkey.pem;

    access_log /var/log/nginx/my.lugbz.org-access.log;
    error_log /var/log/nginx/my.lugbz.org-error.log error;

    location / {
        include conf.d/proxy_params;
        proxy_pass http://my.lugbz.org:8080;
    }
}

Then restart revproxy. You should then be greeted by the Admidio installation wizard when you navigate to the domain.