From 5c5daa49b7af4a42ae5d91c20eb73abd166bda26 Mon Sep 17 00:00:00 2001 From: Jimbo Date: Tue, 10 Sep 2024 14:45:28 -0400 Subject: [PATCH] Add photoprism properly --- flake.lock | 18 ++++++++--------- nixos/hardware/machines/server.nix | 5 +++++ nixos/server.nix | 1 + nixos/server/mariadb.nix | 11 +++++++++-- nixos/server/photoprism.nix | 30 +++++++++++++++++++++++++++++ nixos/server/wireguard.nix | 4 ---- secrets.nix | Bin 2175 -> 2174 bytes 7 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 nixos/server/photoprism.nix diff --git a/flake.lock b/flake.lock index 45532cb8..6765d2fe 100644 --- a/flake.lock +++ b/flake.lock @@ -167,11 +167,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1725716377, - "narHash": "sha256-7NzW9O/cAw7iWzRfh7Oo/SuSudL4a1YTKS6yoh3tMck=", + "lastModified": 1725885300, + "narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "04a1cda0c1725094a4db703cccbb956b7558f5a6", + "rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e", "type": "github" }, "original": { @@ -298,11 +298,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1725693463, - "narHash": "sha256-ZPzhebbWBOr0zRWW10FfqfbJlan3G96/h3uqhiFqmwg=", + "lastModified": 1725826545, + "narHash": "sha256-L64N1rpLlXdc94H+F6scnrbuEu+utC03cDDVvvJGOME=", "owner": "nixos", "repo": "nixpkgs", - "rev": "68e7dce0a6532e876980764167ad158174402c6f", + "rev": "f4c846aee8e1e29062aa8514d5e0ab270f4ec2f9", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nur": { "locked": { - "lastModified": 1725854666, - "narHash": "sha256-Peccz5solKBUlGtN5vfWHxbd0Mxks+feh1TU/A7hZTg=", + "lastModified": 1725914786, + "narHash": "sha256-IUEPseZohbNJi9eFFWUhTnkpceZLMj0B62TtCkLo2ZY=", "owner": "nix-community", "repo": "NUR", - "rev": "4448858f13f127db4c8055e2bf6fe6e1257ba8ea", + "rev": "b121603cbc4551eda8c055bae01d08e9ecedb529", "type": "github" }, "original": { diff --git a/nixos/hardware/machines/server.nix b/nixos/hardware/machines/server.nix index b0c065d0..cd9eb346 100644 --- a/nixos/hardware/machines/server.nix +++ b/nixos/hardware/machines/server.nix @@ -86,6 +86,11 @@ fsType = "none"; options = [ "bind" ]; }; + "/var/lib/private/photoprism/originals" = { + device = "/export/JimboNFS/Photos/Galleries"; + fsType = "none"; + options = [ "bind" ]; + }; }; swapDevices = [ { device = "/dev/disk/by-uuid/ec422cad-bf93-4b15-b989-2c807f1073a4"; } diff --git a/nixos/server.nix b/nixos/server.nix index 3cfb4c3e..132a3254 100644 --- a/nixos/server.nix +++ b/nixos/server.nix @@ -33,6 +33,7 @@ ./server/nfs.nix ./server/nginx.nix ./server/owncast.nix + ./server/photoprism.nix #./server/pixelfed.nix ./server/minecraft ./server/vaultwarden.nix diff --git a/nixos/server/mariadb.nix b/nixos/server/mariadb.nix index fc4b8a17..8848e802 100644 --- a/nixos/server/mariadb.nix +++ b/nixos/server/mariadb.nix @@ -3,8 +3,9 @@ enable = true; package = pkgs.mariadb; dataDir = "/var/lib/mysql"; - initialDatabases = [ - { name = "minecraft"; } + ensureDatabases = [ + "minecraft" + "photoprism" ]; ensureUsers = [ { @@ -13,6 +14,12 @@ "minecraft.*" = "ALL PRIVILEGES"; }; } + { + name = "photoprism"; + ensurePermissions = { + "photoprism.*" = "ALL PRIVILEGES"; + }; + } ]; }; } diff --git a/nixos/server/photoprism.nix b/nixos/server/photoprism.nix new file mode 100644 index 00000000..c66fc245 --- /dev/null +++ b/nixos/server/photoprism.nix @@ -0,0 +1,30 @@ +{outputs, ...}: { + # Photoprism + services = { + photoprism = { + enable = true; + port = 2342; + originalsPath = "/var/lib/private/photoprism/originals"; + address = "0.0.0.0"; + settings = { + PHOTOPRISM_ADMIN_USER = "jimbo"; + PHOTOPRISM_ADMIN_PASSWORD = "${outputs.secrets.prismAdminPass}"; + PHOTOPRISM_DEFAULT_LOCALE = "en"; + PHOTOPRISM_DATABASE_DRIVER = "mysql"; + PHOTOPRISM_DATABASE_NAME = "photoprism"; + PHOTOPRISM_DATABASE_SERVER = "/run/mysqld/mysqld.sock"; + PHOTOPRISM_DATABASE_USER = "photoprism"; + PHOTOPRISM_SITE_URL = "https://gallery.${outputs.secrets.jimDomain}"; + PHOTOPRISM_SITE_TITLE = "Jimbo's PhotoPrism"; + }; + }; + nginx.virtualHosts."gallery.${outputs.secrets.jimDomain}" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:2342"; + proxyWebsockets = true; + }; + }; + }; +} diff --git a/nixos/server/wireguard.nix b/nixos/server/wireguard.nix index ef646a46..4bad3e28 100644 --- a/nixos/server/wireguard.nix +++ b/nixos/server/wireguard.nix @@ -25,10 +25,6 @@ in { publicKey = outputs.secrets.wirePixel9Pub; allowedIPs = [ "10.100.0.2/32" ]; } - { # Jimbo Pixel 4 - publicKey = outputs.secrets.wirePixel4Pub; - allowedIPs = [ "10.100.0.3/32" ]; - } ]; }; }; diff --git a/secrets.nix b/secrets.nix index 7918850dd7d116b00ebd2e889c515332f82688cd..b2f7f352eec323930d0bcce12c4d27a376b8c6c3 100644 GIT binary patch literal 2174 zcmZQ@_Y83kiVO&05UYF3Fo$8&>w<|P|I_CQ#PJJgFmVMw+<$A{nRyP;5{817y;*go z*1s*b$*q4jd-ujV>ldkC_cSM!>mOcpw>GBKyxVnqs9eSJmE4QWZugzx%vdeF?v%s6 zn|a($b8s}7#J z>Fv_+aMCd=eT6%p3a2k|`0v}kPd)QUuT@BHUYurxh|sDt99HhJhfnNII(H;1%#Y)- z!@bgq*&TBAm(R+3wzbwVu((V#XOfR%zO*o^Y9UXjP&zi^(>)h{Y&5|`m47+X`$1b;MOEGyQQZiM0d0e!I_(y{! z`?&Tut>IOba!=(8P`R>4%qXBCb?3xMjPqFU&wNq(>+-vE_ZAzJZ@1&%J^oE|CC?tY zUCr|zOyuAGtIu!Zk(ZXeCI6SM4Epj!SN>yo^N#;>rFV0OH)i#JnN|JByzq;bN!zVI zQELs&6xDC47wRwLXtDU^OMJ>hiyY(GYmPKOGL|yb_FOE< zt!Ts*`6Y8ZkF$dKt@dsCqTdR`54J}$d;2S~-*B=sYIsx`;HujC{Qada;pg6aB~Km* z{UMn6e(LHV-L>7VEGnYUpGXAxG5GITc-AGSC*3^JddP5@viR1+3;O%o{0_ahNijTgB-(OwvdU!5#qXcG=$7wo|JEZC#5qN9 zFMrE>9m}2Hr)gTAU+yhmCos|bpNi)ePQ_~dA0=-OKG?l`=|Nt1OTNRYy#Mzv)H!Xg z{Bo;8d+Xk6h5qkmZ!Uhg;+nE2On*hpPY-j6?kVB1cQ^4pd&aHt^c06gQu)HaMdzB^ z1vFl?K8ury*>vpO*6w**>~rf*&Un=1?Xq7upqDpJDCCw8zs?Rp|0xTnT-VT;;c`oj z*;A~a@u?}}V{5mUa-s9E!H zR`cejDL=Aj-qu_4?ors@hdW(OHfrzCnCg&wxc~W70V(@m&IkT1y>?)i=t}dLi$RI* zw^)MvZ_GX&QRP3Ub?cN5QzOr*JiHh9FmO+~aN^#d`)=P6SKPI3N&Y@B$-dl48JAMp zSc>i^o@>xwFPJ4{D5-aHRWjr2CEh$&{=7E5^W;MUtK6Obr#TbDMDK3$KInXxDojA33mt2r{%EmhP&4ubr#b zcYj^k^{rHBbS>H+$)+vm4jN9_l$Qc<%mRBgs3T!!H{z zl88I=cN#v@LWg6 z%?x@v4UbJ21JX(?4iqji|E=LDG<%!JhxZGXerlZ&xIEcl^Y%oO&Bi^Ei?XgRdnu)) zl5;`K?7LE?qlkRF!=8N^`F{-#RIKB;DZOMPpF*&T6Hjx?=9x|<-kR zyQr4(Vc$6+j<$9E|C;34JU0J)$<->d+vlnKe&1bZ_iVb|E4|m)B_;gzC)K~YDmO)B zDtRZ;o}*>Ak~khXBs$E_E2r1_5Wb~!IeuFgpOWoUWTSyOrOZ1czFQ@$(RogZ{y zy{EqJZ-$eyl`hvT4y+aB{(aK^)p^^ zeiB%kZziR9SM>bzlgomm++Oepgtgx>kKgW}aDeMluAS%h265?)_hJt(iR_5|{wK2Z zP|Jpbc(-?UZ#Lci!rQ%mV< z0Oy3Q+)R=$S*1N{a&zze6tPnBnpLv+#P^RoFL1q$PvKGY-_57Ar)s6^D|TV~ENiv; zOnD!#PhM*y<{!74xTx;vqUbka!iU!HX834%zTlvG=z`1EsozB|s@{I8u{(hKcDm># zouf~+9nLDAR-4;Y8Fy3sr)f(6)QJ;$H_T__U8DR-V|5X$=kkk!_2mjnpDqjaS@ros HWK0kMk}Mq0 literal 2175 zcmZQ@_Y83kiVO&0u$?VG-T$F=R-Uu;jjPi)8x@6~@%kmIbLe~NEtVx4l)vZ+ZVLTd zz$$vVMx&jXDMWn2vYWfDH{9!JZ8&mi@7dcQ=S+F`oM->@n-?ZM4bWLs?|9?Sq#IFd zCHJ4OGO!huxcBO(-Y(aZo;E33o{CxPd!|j@e}(tEs(Q;lm6-Xr-|t(wGXBNE5SE$q z?u#t>v#j~cnomu8{{AS@&&~Gm%e-3OH}%Ii-z?d+GLr9MS5hgTVxnua z(~;6o8N9mN6cfzcY(@UY-g(l}#j{t6`;zrnp&$MM{j##s2OWY{UML#Bd9Pd@|AnUSxMFU_6*+yOg@3bpV8f*Q|0edIjotS&XNO$P6;s=P0nSF6 zHb!cFOeqI76sZTOy-VqQio zVxJm{KikH2<@t*g1`?NcfH27uEI6xp$7lXdiP~5VobbTu0=~oN4bRr>sA?y7%P##@ol+ zMfE>CxTv#(#bce$R&~3#>zs0nC!LFkzNn(De!Jt&&Gm<)_H;%rzO&J2S&}tJdEect z+`~aPgyIE@MAn~gp8L6CosLAibPIRf_NQgb*|J{V=eO=Yc=E`bPi-PIN{+W5UsP8+ z>D%pi#^v5?i+6F}HxWFtHDOWA#pC>}ddp;YMrbzwuikKd&7#I7TLt@NtQs=BR)j^| z-k)M}W$h*YWarx_{oDC^j#xdn|7@qN7NWp(>%mOr=5HGger?p;zsQ&MOhwSVoio@( z=Y1~T7+WoVv+()36A>qNY>!L4_O{OP%%?~B@~pcaD~YC9&JFvb;E%F(8G)%hGj>gAnRKYn zahsw`MVgTP+f^&JPX6<^(7a^Yt2!l)sA7h7kM5nEs3+3MxrV3r=6vr@M%uNShL%Yl zNvcv3{^^OS2d4jxNX-e|{#H43hsc%QBCeubr&_j)FL^C3I8N2Q72c%tdE@kgAh8&w ziM!5iUmuosW^?v8^B*5hY`Qrbi+5D;&(PUQe3L@P3|`?Uc4F z&dEm7>mxbR%3kwMnBbCPJ?H#&-C$FB*QtEG?0Z<*H`%*ynq(pIOZ1rHQ_-ft0+)ZD z%VsYwndZ+tInCkz=Q!O@TlTZhO5iybVLkoaTFz*VA2WB=p2-I~2rBf_*q|C-~= zs--NwQ^OMCS8jh>!SPOL$!w6<^JLtSB7v zRl@yT928MlH9Gp@M9}?d%mvP z^5V_!T{~p|#DDB#w!bWVbES5hS@i{$t+C7(&tF~FP%y2P#VXiT!=TXm>!S(PCpA|5 zUhSq~{9(G>AG@hOzNf8Y?3FI=cb{yX-CMllgifN!-h7$&M{KG}t+wy`@@GQ{U)A() zg(spjqQ3uOn!SHT*U_KNrg=A2l1@I_Wycv|@bvfmwAm?M9?F{WJSFa~X4ays)`dE3 zFUmNUe0x^w>%vR39+bJ}GoCeD9+%zV&~dz5yw>5JxFyrN{Aq7P*9PnD_|~()*mKop zEWB?;PX`m zk7hjC*s>|q#jWn;Bu3BE?y)(cKKshuma;w5&U?GTr2ayk58wyRqzzraZKG7 z(=l!Std0vC_fBzLSY_75qs*{-QQeB?e;#N4-6WTNLwj}0T;G1-XPlPR9FbSAZ7%=% z-}nCP7cVAcuvmTAXKF?ugFL4UZ1o-FJX(qiZDN*9K-Emp{`i{uqhy ze$L$fbM>d+ni4xMMkVMk|8*uHaGK(d$c+l|`8>xG0w!F{QFX4Ld5gEAT2k$x&t1N3XTh4< z3)^1Xa9#HA+3=K)FW2C19J|8u>I-XK@+-cJvFo_Z_OrZO{ocw;rqJ+a{hFII_SFT? zJ#s<)#)8Hlv$prV{B7X=|8n>2^WN#4Yn)bH%HMWb=7S>dFVkbs&8@}iPVHn^{HoYN zt#tE&4_