lxc-administrative tools

Erstellt: 2025-07-08

Ich bringe IT-Tools, Adminer und phpMyAdmin mittels Docker-Compose auf einem Klon eines von mir erstellten Alpine-LXC. Zuerst Klon erstellen und einige Werte anpassen:

  • Ram: 512MB
  • Disk-Space: 2GB
  • Kerne: 1

Anschließend starte ich das LXC. Dort nun:

apk update && apk upgrade
apk add docker docker-cli-compose
rc-update add docker default
service docker start

it-Tools:

mkdir -p /opt/dockervolumes/it-tools
cd && cd /opt/dockervolumes/it-tools
nano docker-compose.yml
name: it-tools
services:
it-tools:
container_name: it-tools
image: corentinth/it-tools:latest
networks:
default: null
ports:
- mode: ingress
target: 80
published: "8081"
protocol: tcp
restart: always
stdin_open: true
tty: true
networks:
default:
name: it-tools_default

Strg-x, y, Enter

cd && cd /opt/dockervolumes/it-tools && docker compose up -d

Quelle(n):

https://hub.docker.com/r/corentinth/it-tools

Aufruf im Browser:

LXC-IP:8081

Adminer:

mkdir -p /opt/dockervolumes/adminer
cd && cd /opt/dockervolumes/adminer
nano docker-compose.yml
name: adminer
services:
adminer:
image: adminer:latest
networks:
default: null
ports:
- mode: ingress
target: 8080
published: "8080"
protocol: tcp
restart: always
networks:
default:
name: adminer_default

Strg-x, y, Enter

cd && cd /opt/dockervolumes/adminer && docker compose up -d

Quelle(n):

https://hub.docker.com/_/adminer

Aufruf im Browser:

LXC-IP:8080

phpMyAdmin:

mkdir -p /opt/dockervolumes/phpmyadmin
cd && cd /opt/dockervolumes/phpmyadmin
nano docker-compose.yml
name: phpmyadmin
services:
phpmyadmin:
environment:
PMA_ARBITRARY: "1"
image: phpmyadmin
networks:
default: null
ports:
- mode: ingress
target: 80
published: "8082"
protocol: tcp
restart: always
networks:
default:
name: phpma_default

Strg-x, y, Enter

cd && cd /opt/dockervolumes/phpmyadmin && docker compose up -d

Quelle(n):

https://hub.docker.com/r/phpmyadmin/phpmyadmin

Aufruf im Browser:

LXC-IP:8082

Optional: Automatische Aktualisierung:

Zuerst installiere ich mein eigenes ALPINE-Script. Das Script kann hier eingesehen werden:

https://github.com/knilix/testareaalpine/blob/main/alpineautoupdateinstallscript.sh

apk add wget bash unzip

Folgende 2 Befehle komplett in der jeweiligen VM oder LXC einfügen:

wget -q -P /opt/ https://github.com/knilix/testareaalpine/archive/refs/heads/main.zip && unzip /opt/main.zip -d /opt/scriptfiles && chmod 700 /opt/scriptfiles/testareaalpine-main/alpineautoupdateinstallscript.sh
cd && cd /opt/scriptfiles/testareaalpine-main && ./alpineautoupdateinstallscript.sh

Wurden die 2 Befehle identisch übernommen, kann das erstellte Script in die Crontab eingetragen werden:

crontab -e

Folgendes am Ende dieser Datei einfügen, wenn das Update 02:10 Uhr stattfinden soll:

10 2 * * * /opt/scriptfiles/updatescript.sh >/dev/null 2>&1

Strg-x, y, Enter (wenn nano verwendet wird)

Anschließend ändere ich noch eine Datei:

nano /opt/scriptfiles/updatescript.sh

Folgendes ist bisher eingetragen:

#!/bin/bash
echo d=$(date +%y-%m-%d_%H:%M:%S) | tee -a /opt/scriptfiles/updatelog.txt
old_kernel=$(uname -r)
apk update
apk upgrade
new_kernel=$(uname -r)
# pruefen, ob sich die Kernel-Version geaendert hat
if [ "$old_kernel" != "$new_kernel" ]; then
reboot
else
exit
fi

Ich vervollständige diese Datei, dass sie am Ende so aussieht:

#!/bin/bash
#
# Update Docker-Compose
cd /opt/dockervolumes
readarray -d '' composeConfigs < <(find . -type f -name docker-compose.y* -print0)
for cfg in "${composeConfigs[@]}"; do
docker compose -f "$cfg" pull
docker compose -f "$cfg" up -d
done
# Alte Images automatisch löschen
docker image prune -f
#
# Update System
echo d=$(date +%y-%m-%d_%H:%M:%S) | tee -a /opt/scriptfiles/updatelog.txt
old_kernel=$(uname -r)
apk update
apk upgrade
new_kernel=$(uname -r)
# pruefen, ob sich die Kernel-Version geaendert hat
if [ "$old_kernel" != "$new_kernel" ]; then
reboot
else
exit
fi

Strg-x, y, Enter

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten