alt

...install, setup & configure Portainer, Docker, Netdata, SnipeIT & MariaDB on a Raspberry Pi 4 using DietPi...

alt


objectives





requirements





setup


  • download DietPi
  • flash DietPi to microSD




configuration


DietPi-Software


  • Docker
  • Portainer

additional software


  • rclone

customizations


  • Locale
  • Hostname
  • Ethernet only
  • IPv6 disable




deployment


  1. must deploy MariaDB first
  2. use Portainer console on mariadb.lars3 to run
    mysql -u root -p
    
  3. then execute the create statements for SnipeIT DB, DB user & permissions
    create database snipeit_lars3;
    grant all privileges on snipeit_lars3.* TO 'svc_docker'@'%' identified by 'supersecretSQLpassword';
    flush privileges;
    
  4. then execute the create statements for Nextcloud DB, DB user & permissions
    create database nextcloud_lars3;
    grant all privileges on nextcloud_lars3.* TO 'svc_docker'@'%' identified by 'supersecretSQLpassword';
    flush privileges;
    




portainer stacks



lars3_snipeit


MariaDB only, for initial deployment

---
version: "2.1"
services:
  mariadb:
    image: lscr.io/linuxserver/mariadb:latest
    container_name: mariadb.lars3
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=supersecretROOTpassword
      - TZ=America/Chicago
    volumes:
      - mariadb_config:/config
    ports:
      - 3306:3306
    restart: unless-stopped

volumes:
  mariadb_config:


MariaDB & SnipeIT, after creating DB

---
version: "2.1"
services:
  mariadb:
    image: lscr.io/linuxserver/mariadb:latest
    container_name: mariadb.lars3
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=supersecretROOTpassword
      - TZ=America/Chicago
    volumes:
      - mariadb_config:/config
    ports:
      - 3306:3306
    restart: unless-stopped

  snipe-it:
    image: lscr.io/linuxserver/snipe-it:latest
    container_name: snipe-it.lars3
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=http://DockerPi1:8080
      - MYSQL_PORT_3306_TCP_ADDR=192.168.86.56
      - MYSQL_PORT_3306_TCP_PORT=3306
      - MYSQL_DATABASE=snipeit_lars3
      - MYSQL_USER=svc_docker
      - MYSQL_PASSWORD=supersecretSQLpassword
      - TZ=US/Central
    volumes:
      - snipeit_config:/config
    ports:
      - 8080:80
    restart: unless-stopped

volumes:
  mariadb_config:
  snipeit_config:


lars3_netdata


basic netdata agent [reference]

version: '3'
services:
  netdata:
    image: netdata/netdata
    container_name: netdata.lars3
    hostname: DockerPi1 # set to fqdn of host
    ports:
      - 19999:19999
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
    environment:
      - NETDATA_CLAIM_TOKEN=iW3I_7YvPdBnn8zQk0YiQGqg7epTlJywr_ccMYoyGytqdc3dC8I1zGtKQZoIDvg9HQB-pjs2hDwhe2ecMniOZ2nLrfGHVxqsNfFw5SuImkV3pJB6serw-YQl52XgDCtpIWWLkik
      - NETDATA_CLAIM_URL=https://app.netdata.cloud
      - NETDATA_CLAIM_ROOMS=

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:


lars3_nextcloud

basic nextcloud, create DB first

---
version: "2.1"
services:
  nextcloud:
    image: lscr.io/linuxserver/nextcloud:latest
    container_name: nextcloud.lars3
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
    volumes:
      - nextcloudConfig:/config
      - nextcloudData:/data
    ports:
      - 443:443
    restart: unless-stopped
    
volumes:
  nextcloudConfig:
  nextcloudData:


lars3_duplicati

basic duplicati

---
version: "2.1"
services:
  duplicati:
    image: lscr.io/linuxserver/duplicati:latest
    container_name: duplicati.lars3
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
    volumes:
      - duplicatiConfig:/config
      - /mnt/omv1_ironwolf1/backups/duplicati:/backups
      - duplicatiSource:/source
    ports:
      - 8200:8200
    restart: unless-stopped

volumes:
  duplicatiConfig:
  duplicatiSource:


lars3_jellyfin

basic jellyfin

---
version: "2.1"
services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin.lars3
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
      - JELLYFIN_PublishedServerUrl=192.168.X.X #optional
    volumes:
      - jellyfin_config:/config
      - /mnt/cloudlife3_tv:/data/tvshows
      - /mnt/cloudlife3_movies:/data/movies
      - /mnt/cloudlife3_dadTV:/data/dad.tvshows
      - /mnt/cloudlife3_dadMovies:/data/dad.movies
    ports:
      - 8096:8096
      # - 8920:8920 #optional
      # - 7359:7359/udp #optional
      # - 1900:1900/udp #optional
    restart: unless-stopped

volumes:
  jellyfin_config:


backups




setup backup script folder & backup script

mkdir /home/dietpi/backup.scripts
touch /home/dietpi/backup.scripts/sqlbackup.bak.sh

nano /home/dietpi/backup.scripts/sqlbackup.bak.sh

mysqldump -h192.168.86.56 -P3306 -uroot -psupersecretROOTpassword snipeit_lars3 > /mnt/omv1_ironwolf1/backups/db/snipeit_lars3_backup-`date +"%Y-%m-%d"`.sql

make it executable

chmod +x /home/dietpi/backup.scripts/sqlbackup.bak.sh

halt & prepare to add CIFS network drive to DockerPi1 for backups

sudo mkdir /mnt/omv1_ironwolf1

make & setup SMB credentials file

touch /home/dietpi/.smbcredentials.omv1
chmod 600 /home/dietpi/.smbcredentials.omv1

edit credentials file

username=mysecretusername
password=mysecretpassword

add the following to /etc/fstab

//192.168.86.34/ironwolf1/ironwolf1 /mnt/omv1_ironwolf1 cifs credentials=/home/dietpi/.smbcredentials.omv1,iocharset=utf8,uid=1000,gid=1000,forceuid,forcegid,_netdev 0 0

verify SMB permissions on omv1

sudo mount -t cifs -o credentials=/home/dietpi/.smbcredentials.omv1 //192.168.86.34/ironwolf1/ironwolf1 /mnt/omv1_ironwolf1

crontab add

# begin nightly DB backups

0 22 * * * sh /home/dietpi/backup.scripts/sqlbackup.bak.sh




testing



Portainer UI


https://dockerpi1:9002




troubleshooting





notes


original notes - https://bbs.heinzsolar.com/projects/028




new ideas


  • Duplicati
  • Jellyfin
  • Sonarr
  • DuckDNS
  • NetbootXYZ