adding photoprism

This commit is contained in:
2024-10-03 20:22:00 -04:00
parent b6afb05e03
commit 16b68b5ad3
4 changed files with 109 additions and 7 deletions

View File

@@ -2,12 +2,15 @@
"cSpell.words": [ "cSpell.words": [
"aboutwelcome", "aboutwelcome",
"acltype", "acltype",
"addstr",
"ahci", "ahci",
"aioesphomeapi", "aioesphomeapi",
"alsa", "alsa",
"archlinux", "archlinux",
"ashift", "ashift",
"asrouter", "asrouter",
"attroff",
"attron",
"auditd", "auditd",
"autofetch", "autofetch",
"autopull", "autopull",
@@ -67,6 +70,8 @@
"fxaccounts", "fxaccounts",
"gamemode", "gamemode",
"gamescope", "gamescope",
"getch",
"getmaxyx",
"ghdeploy", "ghdeploy",
"globalprivacycontrol", "globalprivacycontrol",
"gparted", "gparted",
@@ -111,6 +116,7 @@
"mkpart", "mkpart",
"modesetting", "modesetting",
"mountpoint", "mountpoint",
"mountpoints",
"mousewheel", "mousewheel",
"mtxr", "mtxr",
"ncdu", "ncdu",
@@ -126,6 +132,7 @@
"nixpkgs", "nixpkgs",
"nmap", "nmap",
"noauto", "noauto",
"noecho",
"nonsponsored", "nonsponsored",
"Noto", "Noto",
"nvme", "nvme",
@@ -144,6 +151,7 @@
"peerconnection", "peerconnection",
"PESKYFOX", "PESKYFOX",
"PGID", "PGID",
"photoprism",
"pipewire", "pipewire",
"pkgs", "pkgs",
"plugdev", "plugdev",

View File

@@ -0,0 +1,76 @@
let
vars = import ../vars.nix;
in
{
virtualisation.oci-containers.containers = {
photoprism = {
image = "photoprism/photoprism:latest";
ports = [ "2342:2342" ];
volumes = [
"${vars.media_docker_configs}/photoprism:/photoprism/storage"
"${vars.storage_photos}/originals:/photoprism/originals"
"${vars.storage_photos}/import:/photoprism/import"
];
environment = {
PHOTOPRISM_ADMIN_USER="admin";
PHOTOPRISM_AUTH_MODE="password";
PHOTOPRISM_DISABLE_TLS="false";
PHOTOPRISM_DEFAULT_TLS="true";
PHOTOPRISM_ORIGINALS_LIMIT="30000";
PHOTOPRISM_HTTP_COMPRESSION="gzip";
PHOTOPRISM_LOG_LEVEL="info";
PHOTOPRISM_READONLY="false";
PHOTOPRISM_EXPERIMENTAL="false";
PHOTOPRISM_DISABLE_CHOWN="false";
PHOTOPRISM_DISABLE_WEBDAV="false";
PHOTOPRISM_DISABLE_SETTINGS="false";
PHOTOPRISM_DISABLE_TENSORFLOW="false";
PHOTOPRISM_DISABLE_FACES="false";
PHOTOPRISM_DISABLE_CLASSIFICATION="false";
PHOTOPRISM_DISABLE_VECTORS="false";
PHOTOPRISM_DISABLE_RAW="false";
PHOTOPRISM_RAW_PRESETS="false";
PHOTOPRISM_SIDECAR_YAML="true";
PHOTOPRISM_BACKUP_ALBUMS="true";
PHOTOPRISM_BACKUP_DATABASE="true";
PHOTOPRISM_BACKUP_SCHEDULE="daily";
PHOTOPRISM_INDEX_SCHEDULE="";
PHOTOPRISM_AUTO_INDEX="300";
PHOTOPRISM_AUTO_IMPORT= "-1";
PHOTOPRISM_DETECT_NSFW="false";
PHOTOPRISM_UPLOAD_NSFW="true";
PHOTOPRISM_DATABASE_DRIVER="mysql";
PHOTOPRISM_DATABASE_SERVER="photoprism_mariadb:3306";
PHOTOPRISM_DATABASE_NAME="photoprism";
PHOTOPRISM_DATABASE_USER="photoprism";
PHOTOPRISM_SITE_CAPTION="AI-Powered Photos App";
PHOTOPRISM_SITE_DESCRIPTION="";
PHOTOPRISM_SITE_AUTHOR="";
PHOTOPRISM_UID="600";
PHOTOPRISM_GID="600";
# PHOTOPRISM_UMASK: 0000
};
environmentFiles = [/root/secrets/docker/photoprism];
autoStart = true;
dependsOn = [ "photoprism_mariadb" ];
extraOptions = [ "--network=web" ];
};
photoprism_mariadb = {
image = "mariadb:11";
volumes = [ "${vars.media_database}/photoprism_mariadb:/var/lib/photoprism_mariadb" ];
environment = {
MARIADB_AUTO_UPGRADE = "1";
MARIADB_INITDB_SKIP_TZINFO = "1";
MARIADB_DATABASE = "photoprism";
MARIADB_USER = "photoprism";
};
environmentFiles = [/root/secrets/docker/photoprism];
cmd = [ "--innodb-buffer-pool-size=512M" "--transaction-isolation=READ-COMMITTED" "--character-set-server=utf8mb4" "--collation-server=utf8mb4_unicode_ci" "--max-connections=512" "--innodb-rollback-on-timeout=OFF" "--innodb-lock-wait-timeout=120" ];
autoStart = true;
extraOptions = [ "--network=web" ];
};
};
}

View File

@@ -1,12 +1,29 @@
#!/bin/bash #!/bin/bash
# zpools
sudo zpool create -o ashift=12 -O acltype=posixacl -O atime=off -O dnodesize=auto -O xattr=sa -O xattr=sa -O zstd -m /zfs/media media mirror
sudo zpool add media -o ashift=12 special mirror
sudo zpool create -o ashift=12 -O acltype=posixacl -O atime=off -O dnodesize=auto -O xattr=sa -O xattr=sa -O zstd -m /zfs/storage storage
sudo zpool add storage -o ashift=12 special mirror
sudo zpool add storage -o ashift=12 logs mirror
sudo zpool create -o ashift=12 -O acltype=posixacl -O atime=off -O dnodesize=auto -O xattr=sa -O xattr=sa -O zstd -m /zfs/torrenting torrenting
# media datasets # media datasets
sudo zfs create -o compression=zstd-9 -o encryption=off -o atime=off media/plex sudo zfs create -o compression=zstd-9 media/plex
sudo zfs create -o compression=zstd-9 -o encryption=off -o atime=off media/docker sudo zfs create -o compression=zstd-9 media/docker
sudo zfs create -o encryption=off -o atime=off -o exec=off media/mirror sudo zfs create -o exec=off media/mirror
sudo zfs create -o encryption=off -o atime=off -o exec=off media/minio sudo zfs create -o exec=off media/minio
sudo zfs create -o encryption=off -o atime=off -o copies=3 media/notes sudo zfs create -o copies=3 media/notes
sudo zfs create -o recordsize=16k -o primarycache=metadata -o mountpoint=/zfs/media/database/postgres media/postgres
sudo zfs create -o recordsize=16k -o primarycache=metadata -o mountpoint=/zfs/media/database/photoprism_mariadb media/photoprism_mariadb
# storage datasets
sudo zfs create -o recordsize=16K -o compression=zstd-19 -o copies=2 storage/photos
sudo zfs create -o recordsize=1M -o compression=zstd-19 storage/archive
# torrenting datasets # torrenting datasets
sudo zfs create -o recordsize=16K -o encryption=off -o atime=off -o exec=off -o sync=disabled torrenting/qbit sudo zfs create -o recordsize=16K -o exec=off -o sync=disabled torrenting/qbit
sudo zfs create -o recordsize=16K -o encryption=off -o atime=off -o exec=off -o sync=disabled torrenting/qbitvpn sudo zfs create -o recordsize=16K -o exec=off -o sync=disabled torrenting/qbitvpn

View File

@@ -16,6 +16,7 @@ in
storage_main = "${zfs_storage}/main"; storage_main = "${zfs_storage}/main";
storage_plex = "${zfs_storage}/plex"; storage_plex = "${zfs_storage}/plex";
storage_syncthing = "${zfs_storage}/syncthing"; storage_syncthing = "${zfs_storage}/syncthing";
storage_photos = "${zfs_storage}/photos";
# torrenting # torrenting
torrenting_qbit = "${zfs_torrenting}/qbit"; torrenting_qbit = "${zfs_torrenting}/qbit";
torrenting_qbitvpn = "${zfs_torrenting}/qbitvpn"; torrenting_qbitvpn = "${zfs_torrenting}/qbitvpn";