Add photoprism
This commit is contained in:
parent
eaf6f0d54a
commit
1ad2b57fa0
4 changed files with 79 additions and 3 deletions
|
|
@ -14,6 +14,7 @@
|
||||||
navidrome.tcp = 4533;
|
navidrome.tcp = 4533;
|
||||||
nginx-http.tcp = 80;
|
nginx-http.tcp = 80;
|
||||||
nginx-https.tcp = 443;
|
nginx-https.tcp = 443;
|
||||||
|
photoprism.tcp = 2342;
|
||||||
postfix-relay.tcp = 25;
|
postfix-relay.tcp = 25;
|
||||||
postfix-submission.tcp = 465;
|
postfix-submission.tcp = 465;
|
||||||
qbittorrent-torrent.tcp = 59832;
|
qbittorrent-torrent.tcp = 59832;
|
||||||
|
|
@ -21,8 +22,8 @@
|
||||||
radicale.tcp = 5232;
|
radicale.tcp = 5232;
|
||||||
rmfakecloud.tcp = 3000;
|
rmfakecloud.tcp = 3000;
|
||||||
snapserver.tcp = 1704;
|
snapserver.tcp = 1704;
|
||||||
snapserverTcp.tcp = 1705;
|
|
||||||
snapserverHttp.tcp = 1780;
|
snapserverHttp.tcp = 1780;
|
||||||
|
snapserverTcp.tcp = 1705;
|
||||||
unifi-http.tcp = 8080;
|
unifi-http.tcp = 8080;
|
||||||
unifi-https.tcp = 8443;
|
unifi-https.tcp = 8443;
|
||||||
wireguard-public-ip-tunnel.udp = 51000;
|
wireguard-public-ip-tunnel.udp = 51000;
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@ home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9cke
|
||||||
mqtt-users:
|
mqtt-users:
|
||||||
home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str]
|
home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str]
|
||||||
valetudo: ENC[AES256_GCM,data:+HRz6X+A5dhmx43G99ka0u9VozuzOFWR,iv:SPw5yoiBqN7sBH5EofevacTtu45jmuTPqToKrar0aJ0=,tag:lf+usB/eNNP1yuWW/QyTqQ==,type:str]
|
valetudo: ENC[AES256_GCM,data:+HRz6X+A5dhmx43G99ka0u9VozuzOFWR,iv:SPw5yoiBqN7sBH5EofevacTtu45jmuTPqToKrar0aJ0=,tag:lf+usB/eNNP1yuWW/QyTqQ==,type:str]
|
||||||
|
photoprism:
|
||||||
|
oidc-secret: ENC[AES256_GCM,data:XTAiUiGZJfSZHNbz6fePl3iMDdbxFSE7+SQH2ECRFqlo7w8TAhLyNXBxlEfGvu+8vttbKdkEm0r7132Q4ftOtA==,iv:WGsQXolbtRWIq4EDgODWNmkXdOZCsA9A3Fqoo4lJyec=,tag:5zJftwB5If/RZB3hI0Ly8A==,type:str]
|
||||||
sops:
|
sops:
|
||||||
kms: []
|
kms: []
|
||||||
gcp_kms: []
|
gcp_kms: []
|
||||||
|
|
@ -29,8 +31,8 @@ sops:
|
||||||
SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV
|
SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV
|
||||||
GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ==
|
GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-03-01T23:14:53Z"
|
lastmodified: "2025-04-17T13:32:20Z"
|
||||||
mac: ENC[AES256_GCM,data:1m+Ml5Vhm87U4xz1kKNZ/4E+RqweUt2ypYh1JTYVHHV3dgySJytkwn0pFZj3RfR+z4r03hrvSuBt0ldWSn8UvGLHsJj8L9AqfDXyPg3SI6uRS6UeAbqZFs5HhNQzkNKwPnZ9KPbXJ8ab8Ck+jSfEcrtPShDOgDp9jTJZ91hTB1c=,iv:6tVJI31180asGh+MMguAeKtD4SY6W/2Pizqjt0SV4v8=,tag:0ghRP8locNjtvpIYL8tDlg==,type:str]
|
mac: ENC[AES256_GCM,data:5LX+9RdaHlMOd/gwsr9xdQZB2IQee6xx0YxUQ+sXIXe5xH+cgw8vm0Gd1YFjOT9Yf8DZ/51y8XSOMXP/oT36iYGpenb84ZGV+9X3aAT8+PWZxr6eJ8raDTO/sof5r/qVrxHls3Hl2nmKI6UzTZD8PINThIaEdy9mpfxRrrcL/iU=,iv:pkPEWcVAZBq1HfcOMiQEt/2STbFBhSfzyz5lYoALmdI=,tag:7QvzpR/deD5B7Hm0C4ghgw==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2024-01-31T01:20:30Z"
|
- created_at: "2024-01-31T01:20:30Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
./navidrome.nix
|
./navidrome.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./ntp.nix
|
./ntp.nix
|
||||||
|
./photoprism.nix
|
||||||
./public-ip-tunnel.nix
|
./public-ip-tunnel.nix
|
||||||
./radicale.nix
|
./radicale.nix
|
||||||
./remarkable.nix
|
./remarkable.nix
|
||||||
|
|
|
||||||
72
hosts/iron/services/photoprism.nix
Normal file
72
hosts/iron/services/photoprism.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
domain = "media.weinturm-open-air.de";
|
||||||
|
nextcloudDomain = "cloud.weinturm-open-air.de";
|
||||||
|
inherit (config.networking) ports;
|
||||||
|
cfg = config.services.photoprism;
|
||||||
|
readSecretWrapper = pkgs.writeShellScriptBin "photoprism" ''
|
||||||
|
export PHOTOPRISM_OIDC_SECRET=$(cat "$CREDENTIALS_DIRECTORY/PHOTOPRISM_OIDC_SECRET_FILE")
|
||||||
|
|
||||||
|
tagline[0]="Dein Blick. Unser Festival."
|
||||||
|
tagline[1]="Zeig uns das Festival durch deine Linse!"
|
||||||
|
tagline[2]="Gemeinsam festgehalten – Festivalmomente von euch für alle."
|
||||||
|
tagline[3]="Mach’s unvergesslich – lade deine Festivalfotos hoch!"
|
||||||
|
tagline[4]="Die besten Shots kommen von dir – teile sie hier."
|
||||||
|
tagline[5]="Jede Perspektive zählt – dein Foto, unser Highlight."
|
||||||
|
tagline[6]="Klick. Hochladen. Festivalgeschichte schreiben."
|
||||||
|
tagline[7]="Von der Crowd für die Crowd – Festivalfotos zum Verlieben."
|
||||||
|
tagline[8]="Dein Beitrag zum Festival-Archiv – jetzt Fotos teilen!"
|
||||||
|
tagline[9]="Weil kein Moment verloren gehen darf – deine Kamera zählt."
|
||||||
|
|
||||||
|
size=''${#tagline[@]}
|
||||||
|
index=$(($RANDOM % $size))
|
||||||
|
export PHOTOPRISM_SITE_CAPTION="''${tagline[$index]}"
|
||||||
|
|
||||||
|
exec ${pkgs.photoprism}/bin/photoprism "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
sops.secrets."photoprism/oidc-secret" = {
|
||||||
|
sopsFile = ../secrets.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.photoprism.serviceConfig.LoadCredential = lib.mkForce "PHOTOPRISM_OIDC_SECRET_FILE:${config.sops.secrets."photoprism/oidc-secret".path}";
|
||||||
|
|
||||||
|
services.photoprism = {
|
||||||
|
enable = true;
|
||||||
|
originalsPath = "/weinturm/photoprism";
|
||||||
|
port = ports.photoprism.tcp;
|
||||||
|
package = readSecretWrapper;
|
||||||
|
settings = {
|
||||||
|
PHOTOPRISM_SITE_URL = "https://${domain}/";
|
||||||
|
PHOTOPRISM_OIDC_URI = "https://${nextcloudDomain}";
|
||||||
|
PHOTOPRISM_OIDC_CLIENT = "WnqjmaPJ5c0dY7KaWmvXVVgJYNjztqTKBZ6Wq6bjYXGOwM2Xuzx2WabFlnJVRCSE"; # Client ID from settings
|
||||||
|
PHOTOPRISM_OIDC_SCOPES = "openid profile email roles";
|
||||||
|
PHOTOPRISM_OIDC_PROVIDER = "Nextcloud";
|
||||||
|
PHOTOPRISM_OIDC_ICON = "https://${nextcloudDomain}/apps/theming/image/logo";
|
||||||
|
PHOTOPRISM_OIDC_REDIRECT = "true";
|
||||||
|
PHOTOPRISM_OIDC_REGISTER = "true";
|
||||||
|
PHOTOPRISM_OIDC_USERNAME = "preferred_username";
|
||||||
|
PHOTOPRISM_OIDC_WEBDAV = "true";
|
||||||
|
PHOTOPRISM_ORIGINALS_LIMIT = toString (20 * 1024); # maximum size of media files in MB
|
||||||
|
PHOTOPRISM_INDEX_SCHEDULE = "@every 4h";
|
||||||
|
PHOTOPRISM_DEFAULT_LOCALE = "de";
|
||||||
|
PHOTOPRISM_DEFAULT_TIMEZONE = "Europe/Berlin";
|
||||||
|
PHOTOPRISM_SITE_TITLE = "Weinturm Medien";
|
||||||
|
PHOTOPRISM_SITE_CAPTION = "";
|
||||||
|
PHOTOPRISM_SITE_AUTHOR = "Jugend- und Kultur Förderverein e.V.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations = {
|
||||||
|
"/" = {
|
||||||
|
proxyPass = "http://127.0.0.1:${toString cfg.port}";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue