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:
2727 volumes:
2828 - "${APP_ROOT}/keycloak:/shared:rw"
2929 - "./config/keycloak/theme:/opt/keycloak/themes/snow:ro"
30 - "./config/font:/opt/keycloak/themes/snow/login/resources/font:ro"
3130 secrets:
3231 - keycloak-crt
3332 - keycloak-key
......@@ -111,7 +110,7 @@ services:
111110 restart: unless-stopped
112111 labels:
113112 net.paperclover.list.name: Copyparty File Storage
114 net.paperclover.list.domain: nas
113 net.paperclover.list.domain: file
115114 net.paperclover.list.priority: 103
116115 depends_on:
117116 forward-auth:
......@@ -171,7 +170,6 @@ services:
171170 - "/etc/localtime:/etc/localtime:ro"
172171 - ./config/forgejo/public:/custom/public:ro
173172 - ./config/forgejo/templates:/custom/templates:ro
174 - ./config/font:/custom/public/assets/font:ro
175173 - ./config/forgejo/init:/custom/init:ro
176174 labels:
177175 net.paperclover.list.name: Clover Git Forge
......@@ -196,6 +194,8 @@ services:
196194 TARGET: http://forgejo:3000
197195 COOKIE_DOMAIN: "${HOME_DOMAIN:?}"
198196 ED25519_PRIVATE_KEY_HEX: "${ANUBIS_PRIVATE_KEY:?}"
197 COOKIE_PREFIX: "anubis_v1"
198 DIFFICULTY: 5
199199 forgejo-runner:
200200 container_name: forgejo-runner
201201 image: code.forgejo.org/forgejo/runner:12
......@@ -237,7 +237,6 @@ services:
237237 - "${APP_ROOT}/jellyfin/cache:/cache:rw"
238238 - "./config/jellyfin:/config/custom:ro"
239239 - "./config/jellyfin/branding.xml:/config/config/branding.xml:ro"
240 - "./config/font:/usr/local/share/fonts/custom:ro"
241240 labels:
242241 net.paperclover.list.name: Cloverfin
243242 net.paperclover.list.domain: jelly
config/Caddyfile+22-4
......@@ -67,6 +67,18 @@ dawarich.{$HOME_DOMAIN} {
6767db.{$HOME_DOMAIN} {
6868 reverse_proxy "http://clover-source-of-truth"
6969}
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}
7082git.{$HOME_DOMAIN} {
7183 handle /user/login {
7284 rewrite /user/oauth2/snow
......@@ -86,9 +98,6 @@ import ./jellyfin/Caddyfile
8698music.{$HOME_DOMAIN} {
8799 reverse_proxy "http://navidrome:4533"
88100}
89nas.{$HOME_DOMAIN} {
90 import auth-optional "http://copyparty"
91}
92101# opencode.{$HOME_DOMAIN} {
93102# import auth
94103# reverse_proxy "http://opencode"
......@@ -132,12 +141,21 @@ paperclover.dev {
132141 on_demand
133142 }
134143}
144nas.paperclover.net {
145 redir "https://file.paperclover.net{uri}"
146 tls {
147 on_demand
148 }
149}
135150
136151:80, :443 {
137152 handle_errors {
138153 rewrite * /{err.status_code}
139154 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"
141159 replace_status {err.status_code}
142160 }
143161 }
config/copyparty.conf+12-4
......@@ -19,6 +19,8 @@
1919 idp-logout: /snow.oauth2/sign_out
2020 idp-login-t: with sso (snow sign on)
2121
22 html-head: <link rel="stylesheet" href="/.static/copyparty.css">
23
2224[/] # webroot
2325 /w
2426 accs:
......@@ -26,18 +28,24 @@
2628[/clover]
2729 /w/clover
2830 accs:
29 rwmda: snow
31 rwmd: snow
3032[/media] # mediaroot
3133 /w/media
3234 accs:
33 rwmda: snow
34 rwmd: rain, fish, akira
35 rwmd: snow, rain, fish, akira, @media-manage
36 r: @media
3537[/home/${u}]
3638 /w/home/${u}
3739 accs:
38 rwmda: ${u}, @su
40 rwmd: ${u}, @su
3941[/clover/Public]
4042 /w/clover/Public
4143 accs:
4244 r: *
4345 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 @@
11@import "theme-forgejo-light.css";
22@import "theme-forgejo-dark.css" (prefers-color-scheme: dark);
3
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}
3@import "https://file.paperclover.net/.static/font.css";
454
465:root {
476 --fonts-proportional:
......@@ -225,4 +184,3 @@
225184 transparent
226185 );
227186}
228
config/keycloak/theme/login/resources/css/styles.css+1-26
......@@ -1,28 +1,4 @@
1@font-face {
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}
1@import "https://file.paperclover.net/.static/font.css";
262
273/* reset */
284html,
......@@ -84,7 +60,6 @@ body {
8460 background-repeat: no-repeat;
8561 color: black;
8662 --text: black;
87 font-family: "Name Sans", sans-serif;
8863
8964 --header: light-dark(#1a46cd, #938cff);
9065 --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