From 84edee11242d10361a38842ff2be267dae1629fd Mon Sep 17 00:00:00 2001 From: bart Date: Fri, 27 Dec 2024 16:26:17 -0600 Subject: [PATCH 1/3] move docker-compose config into config.scm --- config.scm | 127 +++++++++++++++++++++++++-- docker-compose.yml | 214 ++++++++++++++++++++++----------------------- 2 files changed, 228 insertions(+), 113 deletions(-) diff --git a/config.scm b/config.scm index c6f028b..9af6a8f 100644 --- a/config.scm +++ b/config.scm @@ -1,7 +1,8 @@ ;; Indicate which modules to import to access the variables ;; used in this configuration. (use-modules (gnu)) -(use-service-modules cups desktop networking ssh xorg docker dbus) +(use-package-modules databases) +(use-service-modules cups desktop networking ssh xorg docker dbus databases) (operating-system (locale "en_US.utf8") @@ -16,7 +17,7 @@ (comment "bartronx7") (group "users") (home-directory "/home/bartronx7") - (supplementary-groups '("wheel" "netdev" "audio" "video" "www-data" "docker"))) + (supplementary-groups '("wheel" "netdev" "audio" "video" "docker"))) %base-user-accounts)) ;; Below is the list of system services. To search for available @@ -34,11 +35,125 @@ (service containerd-service-type) (service docker-service-type (docker-configuration (environment-variables (list - "TMPDIR=/tmp/dockerd"))))) + "TMPDIR=/tmp/dockerd")))) +;; (service postgresql-service-type +;; (postgresql-configuration +;; (postgresql postgresql-16) +;; (data-directory "/data/postgres"))) + (service oci-container-service-type (list + (oci-container-configuration + (image "miniflux/miniflux:latest") + (provision "miniflux") + (network "sandbox") + (requirement '(pg_db)) + (ports '( + ("8081" . "8080"))) + (environment (list + '("DATABASE_URL" . "postgres://miniflux:99uskas0_l@pg_db/miniflux?sslmode=disable") + '("RUN_MIGRATIONS" . "1") + '("CREATE_ADMIN" . "1") + '("ADMIN_USERNAME" . "admin") + '("ADMIN_PASSWORD" . "982#@2gGGHjf")))))) + (service oci-container-service-type (list + (oci-container-configuration + (image "postgres:17-alpine") + (provision "pg_db") + (network "sandbox") + (ports '( + ("5432" . "5432"))) + (environment (list + '("POSTGRES_USER" . "miniflux") + '("POSTGRES_PASSWORD" . "99uskas0_l") + '("POSTGRES_DB" . "miniflux"))) + (volumes (list + '("/data/docker/volumes/pg_db" . "/var/lib/postgresql/data")))))) + (service oci-container-service-type (list + (oci-container-configuration + (image "codeberg.org/forgejo/forgejo:9") + (provision "forgejo") + (network "sandbox") + (ports '( + ("3000" . "3000") + ("2222" . "22"))) + (environment (list + '("USER_UID" . "1000") + '("USER_GID" . "1000"))) + (volumes (list + '("/data/docker/volumes/forgejo" . "/data") + '("/etc/timezone" . "/etc/timezone:ro") + '("/etc/localtime" . "/etc/localtime:ro")))))) + (service oci-container-service-type (list + (oci-container-configuration + (image "packetriot/pktriot:latest") + (provision "pktriot") + (network "sandbox") + (volumes (list + '("/data/docker/volumes/pktriot" . "/data:rw")))))) + (service oci-container-service-type (list + (oci-container-configuration + (image "plexinc/pms-docker") + (provision "plex") + (network "sandbox") + (ports '( + ("32400" . "32400") + ("8324" . "8324") + ("32469" . "32469") + ("1900" . "1900") + ("32410" . "32410") + ("32412" . "32412") + ("32413" . "32413") + ("32414" . "32414"))) + (environment (list + '("TZ" . "America/Chicago") + '("PLEX_CLAIM:" . "claim-7-N1LVT5AMco6ayhy4Tm") + '("ADVERTISE_IP:" . "http://192.168.1.3:32400/"))) + (volumes (list + '("/data/docker/volumes/plex/config" . "/config") + '("/data/docker/volumes/plex/transcode" . "/transcode") + '("/data" . "/data:rw")))))) + (service oci-container-service-type (list + (oci-container-configuration + (image "ghcr.io/ente-io/server") + (provision "ente") + (requirement '(pg_db)) + (network "sandbox") + (ports '( + ("8090" . "8080") + ("2112" . "2112"))) + (environment (list + '("ENTE_CREDENTIALS_FILE" . "/credentials.yaml"))) + (volumes (list + '("/data/docker/volumes/ente/logs" . "/var/logs") + '("/data/docker/volumes/ente/museum.yaml" . "/museum.yaml:ro") + '("/data/docker/volumes/ente/credentials.yaml" . "/credentials.yaml:ro") + '("/data" . "/data:ro")))))) + (service oci-container-service-type (list + (oci-container-configuration + (image "minio/minio") + (provision "minio") + (network "sandbox") + (ports '( + ("3200" . "3200") + ("3201" . "3201"))) + (environment (list + '("MINIO_USER" . "test"))) + (volumes (list + '("/data/docker/volumes/ente/minio_data" . "/data")))))) - ;; This is the default list of services we - ;; are appending to. - %base-services)) + (service oci-container-service-type (list + (oci-container-configuration + (image "minio/mc") + (provision "minio-provision") + (requirement '(minio)') + (network "sandbox") + (entrypoint "sh /provision.sh") + (environment (list + '("MINIO_USER" . "test"))) + (volumes (list + '("/data/docker/volumes/ente/minio_data" . "/data") + '("/data/docker/volumes/ente/minio-provision.sh" . "/provision.sh:ro"))))))) + + %base-services)) (bootloader (bootloader-configuration (bootloader grub-bootloader) diff --git a/docker-compose.yml b/docker-compose.yml index 3855c75..8ff31bf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,117 +31,117 @@ services: - 'traefik.http.routers.api.service=api@internal' # - 'traefik.http.routers.api.middlewares=authelia@docker' - pktriot: - image: packetriot/pktriot:latest - container_name: pktriot - restart: unless-stopped - volumes: - - /data/docker/volumes/pktriot:/data:rw + # pktriot: + # image: packetriot/pktriot:latest + # container_name: pktriot + # restart: unless-stopped + # volumes: + # - /data/docker/volumes/pktriot:/data:rw - mariadb: - image: mariadb:10.6 - container_name: mariadb - restart: always - command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW - volumes: - - /data/docker/volumes/mariadb:/var/lib/mysql:rw - environment: - - MYSQL_ROOT_PASSWORD=fji9_+jK12dEW - - MYSQL_PASSWORD=Z67dJ0rKBSU74ZwvqIsd - - MYSQL_DATABASE=nextcloud - - MYSQL_USER=nextcloud + # mariadb: + # image: mariadb:10.6 + # container_name: mariadb + # restart: always + # command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW + # volumes: + # - /data/docker/volumes/mariadb:/var/lib/mysql:rw + # environment: + # - MYSQL_ROOT_PASSWORD=fji9_+jK12dEW + # - MYSQL_PASSWORD=Z67dJ0rKBSU74ZwvqIsd + # - MYSQL_DATABASE=nextcloud + # - MYSQL_USER=nextcloud + # + # nextcloud: + # image: nextcloud:30.0.4 + # container_name: nextcloud + # restart: always + # ports: + # - 8088:80 + # links: + # - mariadb + # volumes: + # - /data/docker/volumes/nextcloud:/var/www/html + # - /data:/data:rw + # - /docs/documents:/documents:rw + # environment: + # - MYSQL_PASSWORD=Z67dJ0rKBSU74ZwvqIsd + # - MYSQL_DATABASE=nextcloud + # - MYSQL_USER=nextcloud + # - MYSQL_HOST=mariadb + # labels: + # - traefik.enable=true + # - traefik.http.routers.nextcloud.entrypoints=web,websecure + # - traefik.http.routers.nextcloud.rule=Host(`nextcloud.akeley.tech`) + # - traefik.http.routers.nextcloud.tls=true + # - traefik.http.routers.nextcloud.tls.certresolver=myresolver - nextcloud: - image: nextcloud:30.0.4 - container_name: nextcloud - restart: always - ports: - - 8088:80 - links: - - mariadb - volumes: - - /data/docker/volumes/nextcloud:/var/www/html - - /data:/data:rw - - /docs/documents:/documents:rw - environment: - - MYSQL_PASSWORD=Z67dJ0rKBSU74ZwvqIsd - - MYSQL_DATABASE=nextcloud - - MYSQL_USER=nextcloud - - MYSQL_HOST=mariadb - labels: - - traefik.enable=true - - traefik.http.routers.nextcloud.entrypoints=web,websecure - - traefik.http.routers.nextcloud.rule=Host(`nextcloud.akeley.tech`) - - traefik.http.routers.nextcloud.tls=true - - traefik.http.routers.nextcloud.tls.certresolver=myresolver + # plex: + # image: plexinc/pms-docker + # container_name: plex + # init: true + # hostname: excellon + # restart: always + # ports: + # - 32400:32400 + # - 8324:8324 + # - 32469:32469 + # - 1900:1900 + # - 32410:32410 + # - 32412:32412 + # - 32413:32413 + # - 32414:32414 + # environment: + # TZ: "America/Chicago" + # PLEX_CLAIM: "claim-7-N1LVT5AMco6ayhy4Tm" + # ADVERTISE_IP: "http://192.168.1.3:32400/" + # volumes: + # - /data/docker/volumes/plex/config:/config + # - /data/docker/volumes/plex/transcode:/transcode + # - /data:/data:rw - plex: - image: plexinc/pms-docker - container_name: plex - init: true - hostname: excellon - restart: always - ports: - - 32400:32400 - - 8324:8324 - - 32469:32469 - - 1900:1900 - - 32410:32410 - - 32412:32412 - - 32413:32413 - - 32414:32414 - environment: - TZ: "America/Chicago" - PLEX_CLAIM: "claim-7-N1LVT5AMco6ayhy4Tm" - ADVERTISE_IP: "http://192.168.1.3:32400/" - volumes: - - /data/docker/volumes/plex/config:/config - - /data/docker/volumes/plex/transcode:/transcode - - /data:/data:rw + # forgejo: + # image: codeberg.org/forgejo/forgejo:9 + # container_name: forgejo + # environment: + # - USER_UID=1000 + # - USER_GID=1000 + # restart: always + # volumes: + # - /data/docker/volumes/forgejo:/data + # - /etc/timezone:/etc/timezone:ro + # - /etc/localtime:/etc/localtime:ro + # ports: + # - '3000:3000' + # - '222:22' - forgejo: - image: codeberg.org/forgejo/forgejo:9 - container_name: forgejo - environment: - - USER_UID=1000 - - USER_GID=1000 - restart: always - volumes: - - /data/docker/volumes/forgejo:/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - ports: - - '3000:3000' - - '222:22' - - miniflux: - image: miniflux/miniflux:latest - container_name: miniflux - ports: - - "8081:8080" - depends_on: - pg_db: - condition: service_healthy - environment: - - DATABASE_URL=postgres://miniflux:99uskas0_l@pg_db/miniflux?sslmode=disable - - RUN_MIGRATIONS=1 - - CREATE_ADMIN=1 - - ADMIN_USERNAME=admin - - ADMIN_PASSWORD=982#@2gGGHjf - - pg_db: - image: postgres:17-alpine - container_name: pg_db - environment: - - POSTGRES_USER=miniflux - - POSTGRES_PASSWORD=99uskas0_l - - POSTGRES_DB=miniflux - volumes: - - /data/docker/volumes/pg_db:/var/lib/postgresql/data - healthcheck: - test: ["CMD", "pg_isready", "-U", "miniflux"] - interval: 10s - start_period: 30s + # miniflux: + # image: miniflux/miniflux:latest + # container_name: miniflux + # ports: + # - "8081:8080" + # depends_on: + # pg_db: + # condition: service_healthy + # environment: + # - DATABASE_URL=postgres://miniflux:99uskas0_l@pg_db/miniflux?sslmode=disable + # - RUN_MIGRATIONS=1 + # - CREATE_ADMIN=1 + # - ADMIN_USERNAME=admin + # - ADMIN_PASSWORD=982#@2gGGHjf + # + # pg_db: + # image: postgres:17-alpine + # container_name: pg_db + # environment: + # - POSTGRES_USER=miniflux + # - POSTGRES_PASSWORD=99uskas0_l + # - POSTGRES_DB=miniflux + # volumes: + # - /data/docker/volumes/pg_db:/var/lib/postgresql/data + # healthcheck: + # test: ["CMD", "pg_isready", "-U", "miniflux"] + # interval: 10s + # start_period: 30s # whoami: # image: "traefik/whoami" From d5ad2a39572f77f9b80ca8148c64062d2798bd30 Mon Sep 17 00:00:00 2001 From: bart Date: Sun, 29 Dec 2024 10:11:27 -0600 Subject: [PATCH 2/3] oci services and ente --- config.scm | 81 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/config.scm b/config.scm index 9af6a8f..4566870 100644 --- a/config.scm +++ b/config.scm @@ -45,19 +45,20 @@ (image "miniflux/miniflux:latest") (provision "miniflux") (network "sandbox") - (requirement '(pg_db)) + (requirement '(miniflux-db)) (ports '( ("8081" . "8080"))) (environment (list - '("DATABASE_URL" . "postgres://miniflux:99uskas0_l@pg_db/miniflux?sslmode=disable") + '("DATABASE_URL" . "postgres://miniflux:99uskas0_l@miniflux-db/miniflux?sslmode=disable") '("RUN_MIGRATIONS" . "1") '("CREATE_ADMIN" . "1") '("ADMIN_USERNAME" . "admin") '("ADMIN_PASSWORD" . "982#@2gGGHjf")))))) + (service oci-container-service-type (list (oci-container-configuration (image "postgres:17-alpine") - (provision "pg_db") + (provision "miniflux-db") (network "sandbox") (ports '( ("5432" . "5432"))) @@ -66,7 +67,8 @@ '("POSTGRES_PASSWORD" . "99uskas0_l") '("POSTGRES_DB" . "miniflux"))) (volumes (list - '("/data/docker/volumes/pg_db" . "/var/lib/postgresql/data")))))) + '("/data/docker/volumes/miniflux_db" . "/var/lib/postgresql/data")))))) + (service oci-container-service-type (list (oci-container-configuration (image "codeberg.org/forgejo/forgejo:9") @@ -82,6 +84,7 @@ '("/data/docker/volumes/forgejo" . "/data") '("/etc/timezone" . "/etc/timezone:ro") '("/etc/localtime" . "/etc/localtime:ro")))))) + (service oci-container-service-type (list (oci-container-configuration (image "packetriot/pktriot:latest") @@ -89,6 +92,7 @@ (network "sandbox") (volumes (list '("/data/docker/volumes/pktriot" . "/data:rw")))))) + (service oci-container-service-type (list (oci-container-configuration (image "plexinc/pms-docker") @@ -111,12 +115,28 @@ '("/data/docker/volumes/plex/config" . "/config") '("/data/docker/volumes/plex/transcode" . "/transcode") '("/data" . "/data:rw")))))) + + (service oci-container-service-type (list + (oci-container-configuration + (image "postgres:15") + (provision "ente-db") + (network "ente") + (respawn? #t) + (ports '( + ("5433" . "5432"))) + (environment (list + '("POSTGRES_USER" . "ente") + '("POSTGRES_PASSWORD" . "00u5kas()_1") + '("POSTGRES_DB" . "ente_db"))) + (volumes (list + '("/data/docker/volumes/ente/db" . "/var/lib/postgresql/data")))))) + (service oci-container-service-type (list (oci-container-configuration (image "ghcr.io/ente-io/server") - (provision "ente") - (requirement '(pg_db)) - (network "sandbox") + (provision "ente-photos") + (requirement '(ente-db)) + (network "ente") (ports '( ("8090" . "8080") ("2112" . "2112"))) @@ -126,32 +146,47 @@ '("/data/docker/volumes/ente/logs" . "/var/logs") '("/data/docker/volumes/ente/museum.yaml" . "/museum.yaml:ro") '("/data/docker/volumes/ente/credentials.yaml" . "/credentials.yaml:ro") - '("/data" . "/data:ro")))))) + '("/data/docker/volumes/ente/data" . "/data:ro")))))) + + (service oci-container-service-type (list + (oci-container-configuration + (image "alpine/socat") + (provision "ente-socat") + (requirement '(ente-photos minio)) + (network "service:ente-photos") + (extra-arguments '("network_mode: service:museum")) + (command '("TCP-LISTEN:3200,fork,reuseaddr" "TCP:minio:3200"))))) + (service oci-container-service-type (list (oci-container-configuration (image "minio/minio") (provision "minio") - (network "sandbox") + (network "ente") + (command '("server" "--address" ":3200" "--console-address" ":3201" "/data")) (ports '( ("3200" . "3200") ("3201" . "3201"))) (environment (list - '("MINIO_USER" . "test"))) + '("MINIO_USER" . "test") + '("MINIO_ROOT_USER" . "myminioadmin") + '("MINIO_ROOT_PASSWORD" . "u8^ll01.Qs") + '("MINIO_CONFIG_ENV_FILE" . "/etc/config.env"))) (volumes (list - '("/data/docker/volumes/ente/minio_data" . "/data")))))) + '("/data/docker/volumes/minio/data" . "/data") + '("/data/docker/volumes/minio/env" . "/etc/config.env"))))))) - (service oci-container-service-type (list - (oci-container-configuration - (image "minio/mc") - (provision "minio-provision") - (requirement '(minio)') - (network "sandbox") - (entrypoint "sh /provision.sh") - (environment (list - '("MINIO_USER" . "test"))) - (volumes (list - '("/data/docker/volumes/ente/minio_data" . "/data") - '("/data/docker/volumes/ente/minio-provision.sh" . "/provision.sh:ro"))))))) +;; (service oci-container-service-type (list +;; (oci-container-configuration +;; (image "minio/mc") +;; (provision "minio-provision") +;; (requirement '(minio)) +;; (network "ente") +;; (entrypoint "sh /provision.sh") +;; (environment (list +;; '("MINIO_USER" . "test"))) +;; (volumes (list +;; '("/data/docker/volumes/ente/minio_data" . "/data") +;; '("/data/docker/volumes/ente/minio-provision.sh" . "/provision.sh:ro"))))))) %base-services)) From d942b536c45598dc76f65fac2fa44e7ad9b2c3cf Mon Sep 17 00:00:00 2001 From: bart Date: Sun, 5 Jan 2025 14:26:59 -0600 Subject: [PATCH 3/3] delete unused containers from ente --- config.scm | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/config.scm b/config.scm index 4566870..100becc 100644 --- a/config.scm +++ b/config.scm @@ -40,6 +40,26 @@ ;; (postgresql-configuration ;; (postgresql postgresql-16) ;; (data-directory "/data/postgres"))) +;; (service oci-container-service-type (list +;; (oci-container-configuration +;; (image "traefik:v3.2") +;; (provision "traefik") +;; (network "sandbox") +;; (command '( +;; "--log.level=DEBUG" +;; "--api.insecure=true")) +;; (ports '( +;; ("8080" . "8080") +;; ("443" . "443") +;; ("80" . "80"))) +;; (environment (list +;; '("NAMECHEAP_API_USER" . "bakeley") +;; '("NAMECHEAP_API_KEY" . "af43a35060854eb98fd0c0837113a384"))) +;; (volumes (list +;; '("/data/docker/volumes/traefik/traefik.yml" . "/etc/traefik/traefik.yml") +;; '("/data/docker/volumes/letsencrypt" . "/letsencrypt:rw") +;; '("/var/run/docker.sock" . "/var/run/docker.sock:ro")))))) + (service oci-container-service-type (list (oci-container-configuration (image "miniflux/miniflux:latest") @@ -135,7 +155,7 @@ (oci-container-configuration (image "ghcr.io/ente-io/server") (provision "ente-photos") - (requirement '(ente-db)) + (requirement '(ente-db minio)) (network "ente") (ports '( ("8090" . "8080") @@ -148,15 +168,6 @@ '("/data/docker/volumes/ente/credentials.yaml" . "/credentials.yaml:ro") '("/data/docker/volumes/ente/data" . "/data:ro")))))) - (service oci-container-service-type (list - (oci-container-configuration - (image "alpine/socat") - (provision "ente-socat") - (requirement '(ente-photos minio)) - (network "service:ente-photos") - (extra-arguments '("network_mode: service:museum")) - (command '("TCP-LISTEN:3200,fork,reuseaddr" "TCP:minio:3200"))))) - (service oci-container-service-type (list (oci-container-configuration (image "minio/minio") @@ -175,19 +186,6 @@ '("/data/docker/volumes/minio/data" . "/data") '("/data/docker/volumes/minio/env" . "/etc/config.env"))))))) -;; (service oci-container-service-type (list -;; (oci-container-configuration -;; (image "minio/mc") -;; (provision "minio-provision") -;; (requirement '(minio)) -;; (network "ente") -;; (entrypoint "sh /provision.sh") -;; (environment (list -;; '("MINIO_USER" . "test"))) -;; (volumes (list -;; '("/data/docker/volumes/ente/minio_data" . "/data") -;; '("/data/docker/volumes/ente/minio-provision.sh" . "/provision.sh:ro"))))))) - %base-services)) (bootloader (bootloader-configuration