From 84edee11242d10361a38842ff2be267dae1629fd Mon Sep 17 00:00:00 2001 From: bart Date: Fri, 27 Dec 2024 16:26:17 -0600 Subject: [PATCH] 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"