authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-01-05 20:33:28-08:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-01-05 23:13:03-08:00
log475b7d66a8d2e212107ca5ed624b515b45c90e5e
tree33d32adc0df85f5534ddd8990496309682535f42
parentdd75657461727cf1146fb33cb1d6f0649c09e9b9
signaturelock-open Commit is signed but in an unrecognized format.

fix: copyparty admin permission


19 files changed, 107 insertions(+), 95 deletions(-)

compose.yaml+3-4
...@@ -27,7 +27,6 @@ services:...@@ -27,7 +27,6 @@ services:
27 volumes:27 volumes:
28 - "${APP_ROOT}/keycloak:/shared:rw"28 - "${APP_ROOT}/keycloak:/shared:rw"
29 - "./config/keycloak/theme:/opt/keycloak/themes/snow:ro"29 - "./config/keycloak/theme:/opt/keycloak/themes/snow:ro"
30 - "./config/font:/opt/keycloak/themes/snow/login/resources/font:ro"
31 secrets:30 secrets:
32 - keycloak-crt31 - keycloak-crt
33 - keycloak-key32 - keycloak-key
...@@ -111,7 +110,7 @@ services:...@@ -111,7 +110,7 @@ services:
111 restart: unless-stopped110 restart: unless-stopped
112 labels:111 labels:
113 net.paperclover.list.name: Copyparty File Storage112 net.paperclover.list.name: Copyparty File Storage
114 net.paperclover.list.domain: nas113 net.paperclover.list.domain: file
115 net.paperclover.list.priority: 103114 net.paperclover.list.priority: 103
116 depends_on:115 depends_on:
117 forward-auth:116 forward-auth:
...@@ -171,7 +170,6 @@ services:...@@ -171,7 +170,6 @@ services:
171 - "/etc/localtime:/etc/localtime:ro"170 - "/etc/localtime:/etc/localtime:ro"
172 - ./config/forgejo/public:/custom/public:ro171 - ./config/forgejo/public:/custom/public:ro
173 - ./config/forgejo/templates:/custom/templates:ro172 - ./config/forgejo/templates:/custom/templates:ro
174 - ./config/font:/custom/public/assets/font:ro
175 - ./config/forgejo/init:/custom/init:ro173 - ./config/forgejo/init:/custom/init:ro
176 labels:174 labels:
177 net.paperclover.list.name: Clover Git Forge175 net.paperclover.list.name: Clover Git Forge
...@@ -196,6 +194,8 @@ services:...@@ -196,6 +194,8 @@ services:
196 TARGET: http://forgejo:3000194 TARGET: http://forgejo:3000
197 COOKIE_DOMAIN: "${HOME_DOMAIN:?}"195 COOKIE_DOMAIN: "${HOME_DOMAIN:?}"
198 ED25519_PRIVATE_KEY_HEX: "${ANUBIS_PRIVATE_KEY:?}"196 ED25519_PRIVATE_KEY_HEX: "${ANUBIS_PRIVATE_KEY:?}"
197 COOKIE_PREFIX: "anubis_v1"
198 DIFFICULTY: 5
199 forgejo-runner:199 forgejo-runner:
200 container_name: forgejo-runner200 container_name: forgejo-runner
201 image: code.forgejo.org/forgejo/runner:12201 image: code.forgejo.org/forgejo/runner:12
...@@ -237,7 +237,6 @@ services:...@@ -237,7 +237,6 @@ services:
237 - "${APP_ROOT}/jellyfin/cache:/cache:rw"237 - "${APP_ROOT}/jellyfin/cache:/cache:rw"
238 - "./config/jellyfin:/config/custom:ro"238 - "./config/jellyfin:/config/custom:ro"
239 - "./config/jellyfin/branding.xml:/config/config/branding.xml:ro"239 - "./config/jellyfin/branding.xml:/config/config/branding.xml:ro"
240 - "./config/font:/usr/local/share/fonts/custom:ro"
241 labels:240 labels:
242 net.paperclover.list.name: Cloverfin241 net.paperclover.list.name: Cloverfin
243 net.paperclover.list.domain: jelly242 net.paperclover.list.domain: jelly
config/Caddyfile+22-4
...@@ -67,6 +67,18 @@ dawarich.{$HOME_DOMAIN} {...@@ -67,6 +67,18 @@ dawarich.{$HOME_DOMAIN} {
67db.{$HOME_DOMAIN} {67db.{$HOME_DOMAIN} {
68 reverse_proxy "http://clover-source-of-truth"68 reverse_proxy "http://clover-source-of-truth"
69}69}
70file.{$HOME_DOMAIN} {
71 handle "/.static/*" {
72 uri strip_prefix /.static
73 root /etc/caddy/static
74 @cors header_regexp origin Origin ^([a-f0-9]+)\.(paperclover\.net|local\.test)$
75 header @cors Access-Control-Allow-Origin "{http.request.header.Origin}"
76 header @cors Access-Control-Allow-Methods "GET, OPTIONS"
77 header @cors Access-Control-Allow-Headers "Range"
78 file_server
79 }
80 import auth-optional "http://copyparty"
81}
70git.{$HOME_DOMAIN} {82git.{$HOME_DOMAIN} {
71 handle /user/login {83 handle /user/login {
72 rewrite /user/oauth2/snow84 rewrite /user/oauth2/snow
...@@ -86,9 +98,6 @@ import ./jellyfin/Caddyfile...@@ -86,9 +98,6 @@ import ./jellyfin/Caddyfile
86music.{$HOME_DOMAIN} {98music.{$HOME_DOMAIN} {
87 reverse_proxy "http://navidrome:4533"99 reverse_proxy "http://navidrome:4533"
88} 100}
89nas.{$HOME_DOMAIN} {
90 import auth-optional "http://copyparty"
91}
92# opencode.{$HOME_DOMAIN} {101# opencode.{$HOME_DOMAIN} {
93# import auth102# import auth
94# reverse_proxy "http://opencode"103# reverse_proxy "http://opencode"
...@@ -132,12 +141,21 @@ paperclover.dev {...@@ -132,12 +141,21 @@ paperclover.dev {
132 on_demand141 on_demand
133 }142 }
134}143}
144nas.paperclover.net {
145 redir "https://file.paperclover.net{uri}"
146 tls {
147 on_demand
148 }
149}
135150
136:80, :443 {151:80, :443 {
137 handle_errors {152 handle_errors {
138 rewrite * /{err.status_code}153 rewrite * /{err.status_code}
139 reverse_proxy https://http.cat {154 reverse_proxy https://http.cat {
140 header_up Host {upstream_hostport}155 header_up host {upstream_hostport}
156 header_down Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
157 header_down Pragma "no-cache"
158 header_down Expires "0"
141 replace_status {err.status_code}159 replace_status {err.status_code}
142 }160 }
143 }161 }
config/copyparty.conf+12-4
...@@ -19,6 +19,8 @@...@@ -19,6 +19,8 @@
19 idp-logout: /snow.oauth2/sign_out19 idp-logout: /snow.oauth2/sign_out
20 idp-login-t: with sso (snow sign on)20 idp-login-t: with sso (snow sign on)
2121
22 html-head: <link rel="stylesheet" href="/.static/copyparty.css">
23
22[/] # webroot24[/] # webroot
23 /w25 /w
24 accs:26 accs:
...@@ -26,18 +28,24 @@...@@ -26,18 +28,24 @@
26[/clover]28[/clover]
27 /w/clover29 /w/clover
28 accs:30 accs:
29 rwmda: snow31 rwmd: snow
30[/media] # mediaroot32[/media] # mediaroot
31 /w/media33 /w/media
32 accs:34 accs:
33 rwmda: snow35 rwmd: snow, rain, fish, akira, @media-manage
34 rwmd: rain, fish, akira36 r: @media
35[/home/${u}]37[/home/${u}]
36 /w/home/${u}38 /w/home/${u}
37 accs:39 accs:
38 rwmda: ${u}, @su40 rwmd: ${u}, @su
39[/clover/Public]41[/clover/Public]
40 /w/clover/Public42 /w/clover/Public
41 accs:43 accs:
42 r: *44 r: *
43 rwm: @acct45 rwm: @acct
46 rwmd: snow
47[/mirrors]
48 /w/mirrors
49 accs:
50 r: *
51 rwmd: snow
config/font/README.txt deleted-14
...@@ -1,14 +0,0 @@
1The fonts in this directory MUST be purchased to use:
2https://www.arrowtype.com/name-sans
3https://www.arrowtype.com/name-mono
4
5The full license from ArrowType: https://www.arrowtype.com/licensing/commercial
6
7This license specifically grants me, Clover M Caruso, the right to embed these
8webfonts on domains I control.
9
10> The webfonts may only be installed on website domains that are under your
11> direct control.
12
13Since this git repo is hosted on a domain I control, using hardware I control
14(local git server in my home), I
config/font/nm.woff2
Binary files a/config/font/nm.woff2 and /dev/null differ
config/font/nmb.woff2
Binary files a/config/font/nmb.woff2 and /dev/null differ
config/font/nmi.woff2
Binary files a/config/font/nmi.woff2 and /dev/null differ
config/font/nsv.woff2
Binary files a/config/font/nsv.woff2 and /dev/null differ
config/font/nsvi.woff2
Binary files a/config/font/nsvi.woff2 and /dev/null differ
config/forgejo/public/assets/css/theme-clover.css+1-43
...@@ -1,47 +1,6 @@...@@ -1,47 +1,6 @@
1@import "theme-forgejo-light.css";1@import "theme-forgejo-light.css";
2@import "theme-forgejo-dark.css" (prefers-color-scheme: dark);2@import "theme-forgejo-dark.css" (prefers-color-scheme: dark);
33@import "https://file.paperclover.net/.static/font.css";
4@font-face {
5 font-family: "Name Mono";
6 src: url("../font/nm.woff2") format("woff2");
7 font-weight: 400;
8 font-style: normal;
9 font-display: swap;
10}
11
12@font-face {
13 font-family: "Name Mono";
14 src: url("../font/nmb.woff2") format("woff2");
15 font-weight: 700;
16 font-style: normal;
17 font-display: swap;
18}
19
20@font-face {
21 font-family: "Name Mono";
22 src: url("../font/nmi.woff2") format("woff2");
23 font-weight: 400;
24 font-style: italic;
25 font-display: swap;
26}
27
28@font-face {
29 font-family: "Name Sans";
30 src: url("../font/nsv.woff2") format("woff2") tech(variations);
31 font-weight: 100 900;
32 font-style: normal;
33 font-display: swap;
34 font-stretch: 75% 125%;
35}
36
37@font-face {
38 font-family: "Name Sans";
39 src: url("../font/nsvi.woff2") format("woff2") tech(variations);
40 font-weight: 100 900;
41 font-style: italic;
42 font-display: swap;
43 font-stretch: 75% 125%;
44}
454
46:root {5:root {
47 --fonts-proportional:6 --fonts-proportional:
...@@ -225,4 +184,3 @@...@@ -225,4 +184,3 @@
225 transparent184 transparent
226 );185 );
227}186}
228
config/keycloak/theme/login/resources/css/styles.css+1-26
...@@ -1,28 +1,4 @@...@@ -1,28 +1,4 @@
1@font-face {1@import "https://file.paperclover.net/.static/font.css";
2 font-family: "Name Mono";
3 src: url("../font/ATNameMono-Italic.woff2") format("woff2");
4 font-weight: 400;
5 font-style: italic;
6 font-display: swap;
7}
8
9@font-face {
10 font-family: "Name Sans";
11 src: url("../font/nsv.woff2") format("woff2") tech(variations);
12 font-weight: 100 900;
13 font-style: normal;
14 font-display: swap;
15 font-stretch: 75% 125%;
16}
17
18@font-face {
19 font-family: "Name Sans";
20 src: url("../font/nsvi.woff2") format("woff2") tech(variations);
21 font-weight: 100 900;
22 font-style: italic;
23 font-display: swap;
24 font-stretch: 75% 125%;
25}
262
27/* reset */3/* reset */
28html,4html,
...@@ -84,7 +60,6 @@ body {...@@ -84,7 +60,6 @@ body {
84 background-repeat: no-repeat;60 background-repeat: no-repeat;
85 color: black;61 color: black;
86 --text: black;62 --text: black;
87 font-family: "Name Sans", sans-serif;
8863
89 --header: light-dark(#1a46cd, #938cff);64 --header: light-dark(#1a46cd, #938cff);
90 --primary: light-dark(#00238f, #938cff);65 --primary: light-dark(#00238f, #938cff);
config/static/README.txt created+14
...@@ -0,0 +1,14 @@
1The fonts in this directory MUST be purchased to use:
2https://www.arrowtype.com/name-sans
3https://www.arrowtype.com/name-mono
4
5The full license from ArrowType: https://www.arrowtype.com/licensing/commercial
6
7This license specifically grants me, Clover M Caruso, the right to embed these
8webfonts on domains I control.
9
10> The webfonts may only be installed on website domains that are under your
11> direct control.
12
13Since this git repo is hosted on a domain I control, using hardware I control
14(local git server in my home), I
config/static/copyparty.css created+9
...@@ -0,0 +1,9 @@
1@import "/.static/font.css";
2#opa_msg, #repl {
3 display: none;
4}
5:root {
6 --font-main: "Name Sans", sans-serif;
7 --font-serif: "Name Sans", serif;
8 --font-mono: "Name Mono", monospace;
9}
config/static/font.css created+45
...@@ -0,0 +1,45 @@
1@font-face {
2 font-family: "Name Mono";
3 src: url("./nm.woff2") format("woff2");
4 font-weight: 400;
5 font-style: normal;
6 font-display: swap;
7}
8
9@font-face {
10 font-family: "Name Mono";
11 src: url("./nmb.woff2") format("woff2");
12 font-weight: 700;
13 font-style: normal;
14 font-display: swap;
15}
16
17@font-face {
18 font-family: "Name Mono";
19 src: url("./nmi.woff2") format("woff2");
20 font-weight: 400;
21 font-style: italic;
22 font-display: swap;
23}
24
25@font-face {
26 font-family: "Name Sans";
27 src: url("./nsv.woff2") format("woff2") tech(variations);
28 font-weight: 100 900;
29 font-style: normal;
30 font-display: swap;
31 font-stretch: 75% 125%;
32}
33
34@font-face {
35 font-family: "Name Sans";
36 src: url("./nsvi.woff2") format("woff2") tech(variations);
37 font-weight: 100 900;
38 font-style: italic;
39 font-display: swap;
40 font-stretch: 75% 125%;
41}
42
43body {
44 font-family: "Name Sans", sans-serif;
45}
config/static/nm.woff2
Binary files /dev/null and b/config/static/nm.woff2 differ
config/static/nmb.woff2
Binary files /dev/null and b/config/static/nmb.woff2 differ
config/static/nmi.woff2
Binary files /dev/null and b/config/static/nmi.woff2 differ
config/static/nsv.woff2
Binary files /dev/null and b/config/static/nsv.woff2 differ
config/static/nsvi.woff2
Binary files /dev/null and b/config/static/nsvi.woff2 differ