#cloud-config preserve_hostname: false hostname: glpi-ubuntu-24-04-dom manage_etc_hosts: true timezone: Europe/Paris ssh_pwauth: true disable_root: true growpart: mode: auto devices: ["/"] resize_rootfs: true users: - default - name: dom gecos: GLPI admin shell: /bin/bash groups: [adm, sudo] sudo: ALL=(ALL) NOPASSWD:ALL lock_passwd: false plain_text_passwd: "loli" ssh_authorized_keys: - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTDOsL4IVLYZUC/yM8xLiE2y58urp5dJLwlU6GoldXd dom@laptop write_files: - path: /opt/glpi/docker-compose.yml permissions: '0644' owner: root:root content: | name: glpi services: glpi: image: "glpi/glpi:10.0.25" restart: unless-stopped env_file: .env environment: TZ: "Europe/Paris" depends_on: - db ports: - "80:80" volumes: - glpi_data:/var/glpi db: image: "mysql:8.4" restart: unless-stopped command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci environment: TZ: "Europe/Paris" MYSQL_RANDOM_ROOT_PASSWORD: "yes" MYSQL_DATABASE: "glpi" MYSQL_USER: "glpi" MYSQL_PASSWORD: "xYcjYkJcKwSzBFJYHMXUSzL5" volumes: - db_data:/var/lib/mysql volumes: glpi_data: db_data: - path: /opt/glpi/.env permissions: '0640' owner: root:sudo content: | TIMEZONE=Europe/Paris GLPI_DB_HOST=db GLPI_DB_PORT=3306 GLPI_DB_NAME=glpi GLPI_DB_USER=glpi GLPI_DB_PASSWORD=xYcjYkJcKwSzBFJYHMXUSzL5 GLPI_SKIP_AUTOINSTALL=true GLPI_CRONTAB_ENABLED=1 - path: /opt/glpi/README-FIRST-BOOT.txt permissions: '0644' owner: root:root content: | GLPI stack files are stored in /opt/glpi. Start or restart the stack with: systemctl restart glpi-compose.service If GLPI auto-install is disabled, use the database values from /opt/glpi/.env in the web installer. - path: /etc/systemd/system/glpi-compose.service permissions: '0644' owner: root:root content: | [Unit] Description=GLPI Docker Compose stack Requires=docker.service After=network-online.target docker.service Wants=network-online.target [Service] Type=oneshot WorkingDirectory=/opt/glpi ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down RemainAfterExit=yes TimeoutStartSec=0 [Install] WantedBy=multi-user.target - path: /usr/local/sbin/bootstrap-glpi-host.sh permissions: '0755' owner: root:root content: | #!/usr/bin/env bash set -euxo pipefail apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl gnupg install -d -m 0755 /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc . /etc/os-release echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu ${VERSION_CODENAME} stable" > /etc/apt/sources.list.d/docker.list apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server nmap docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin systemctl enable --now ssh systemctl enable --now containerd systemctl enable --now docker usermod -aG docker dom systemctl daemon-reload systemctl enable glpi-compose.service systemctl start glpi-compose.service || true runcmd: - [bash, /usr/local/sbin/bootstrap-glpi-host.sh] final_message: "cloud-init termine. Docker et GLPI sont prepares dans /opt/glpi."