Dokery

docker-compose.yml

Uptime-kuma

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped

    ports:
      - "3002:3001"

    volumes:
      - ./data:/app/data

Homepage

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    restart: unless-stopped

    environment:
      HOMEPAGE_ALLOWED_HOSTS: "*"

    ports:
      - "3001:3000"

    volumes:
      - ./config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro

Gitea

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: unless-stopped
    ports:
      - "3000:3000"
      - "2222:22"
    volumes:
      - ./data:/data

Home Assistant

services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /PATH_TO_YOUR_CONFIG:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
    environment:
      TZ: Europe/Amsterdam

ESPHome

services:
  esphome:
    container_name: esphome
    image: ghcr.io/esphome/esphome
    volumes:
      - /path/to/esphome/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: always
    privileged: true
    network_mode: host
    environment:
      - USERNAME=test
      - PASSWORD=ChangeMe

AdGuard

services:
  adguard:
    image: adguard/adguardhome
    container_name: adguard
    restart: unless-stopped

    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "3000:3000/tcp"

    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf

MQTT

Dla Mosquitto (MQTT) przygotuj katalog na dane:

mkdir -p /opt/docker/mosquitto/config
mkdir -p /opt/docker/mosquitto/data
mkdir -p /opt/docker/mosquitto/log

Utwórz plik konfiguracyjny:

sudo nano /opt/docker/mosquitto/config/mosquitto.conf

Wklej:

listener 1883
allow_anonymous false
password_file /mosquitto/config/passwd

persistence true
persistence_location /mosquitto/data/

log_dest stdout

Utwórz plik z hasłami:

sudo docker run --rm -it \
  -v /opt/docker/mosquitto/config:/mosquitto/config \
  eclipse-mosquitto \
  mosquitto_passwd -c /mosquitto/config/passwd mqtt

Podaj hasło dla użytkownika mqtt.

Jeżeli katalog należy do root, a kontener działa jako użytkownik 1883 (domyślny użytkownik Mosquitto), nadaj odpowiednie uprawnienia:

sudo chown -R 1883:1883 /opt/docker/mosquitto
sudo chmod -R 755 /opt/docker/mosquitto

Jeśli tworzysz pliki z poziomu hosta (np. mosquitto.conf lub passwd), możesz je utworzyć jako root, a następnie zmienić właściciela:

sudo chown 1883:1883 /opt/docker/mosquitto/config/mosquitto.conf
sudo chown 1883:1883 /opt/docker/mosquitto/config/passwd

Stack w Portainerze

W Portainerze wybierz Stacks → Add stack i wklej:

services:
  mosquitto:
    image: eclipse-mosquitto:2
    container_name: mosquitto
    restart: unless-stopped

    ports:
      - "1883:1883"

    volumes:
      - /opt/docker/mosquitto/config:/mosquitto/config
      - /opt/docker/mosquitto/data:/mosquitto/data
      - /opt/docker/mosquitto/log:/mosquitto/log

Najprościej przetestować Mosquitto z terminala za pomocą narzędzi mosquitto_pub i mosquitto_sub.

Jeśli nie są zainstalowane:

sudo apt update
sudo apt install mosquitto-clients

1. Otwórz pierwszy terminal – nasłuch

mosquitto_sub -h localhost -p 1883 -u mqtt -P TWOJE_HASŁO -t test/topic -v

Jeśli broker jest na innym komputerze:

mosquitto_sub -h 192.168.100.132 -p 1883 -u mqtt -P TWOJE_HASŁO -t test/topic -v

2. Otwórz drugi terminal – wyślij wiadomość

mosquitto_pub -h localhost -p 1883 -u mqtt -P TWOJE_HASŁO -t test/topic -m "Witaj MQTT!"

lub do zdalnego brokera:

mosquitto_pub -h 192.168.100.132 -p 1883 -u mqtt -P TWOJE_HASŁO -t test/topic -m "Witaj MQTT!"

Homer

1. Utwórz katalogi

mkdir -p /opt/docker/homer/assets

2. Stack homer W Portainerze wybierz Stacks → Add stack i wklej:

services:
  homer:
    image: b4bz/homer:latest
    container_name: homer
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - /opt/docker/homer/assets:/www/assets

skopiowanie danych ze starego na nowy

scp -r /tmp/homer-assets użytkownik@NOWY_SERWER:/opt/docker/homer/assets