| author | |
| committer | |
| log | 475b7d66a8d2e212107ca5ed624b515b45c90e5e |
| tree | 33d32adc0df85f5534ddd8990496309682535f42 |
| parent | dd75657461727cf1146fb33cb1d6f0649c09e9b9 |
| signature |
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-crt | 31 | - keycloak-crt |
| 33 | - keycloak-key | 32 | - keycloak-key |
| ... | @@ -111,7 +110,7 @@ services: | ... | @@ -111,7 +110,7 @@ services: |
| 111 | restart: unless-stopped | 110 | restart: unless-stopped |
| 112 | labels: | 111 | labels: |
| 113 | net.paperclover.list.name: Copyparty File Storage | 112 | net.paperclover.list.name: Copyparty File Storage |
| 114 | net.paperclover.list.domain: nas | 113 | net.paperclover.list.domain: file |
| 115 | net.paperclover.list.priority: 103 | 114 | 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:ro | 171 | - ./config/forgejo/public:/custom/public:ro |
| 173 | - ./config/forgejo/templates:/custom/templates:ro | 172 | - ./config/forgejo/templates:/custom/templates:ro |
| 174 | - ./config/font:/custom/public/assets/font:ro | ||
| 175 | - ./config/forgejo/init:/custom/init:ro | 173 | - ./config/forgejo/init:/custom/init:ro |
| 176 | labels: | 174 | labels: |
| 177 | net.paperclover.list.name: Clover Git Forge | 175 | net.paperclover.list.name: Clover Git Forge |
| ... | @@ -196,6 +194,8 @@ services: | ... | @@ -196,6 +194,8 @@ services: |
| 196 | TARGET: http://forgejo:3000 | 194 | 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-runner | 200 | container_name: forgejo-runner |
| 201 | image: code.forgejo.org/forgejo/runner:12 | 201 | 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: Cloverfin | 241 | net.paperclover.list.name: Cloverfin |
| 243 | net.paperclover.list.domain: jelly | 242 | net.paperclover.list.domain: jelly |
config/Caddyfile+22-4| ... | @@ -67,6 +67,18 @@ dawarich.{$HOME_DOMAIN} { | ... | @@ -67,6 +67,18 @@ dawarich.{$HOME_DOMAIN} { |
| 67 | db.{$HOME_DOMAIN} { | 67 | db.{$HOME_DOMAIN} { |
| 68 | 	reverse_proxy "http://clover-source-of-truth" | 68 | 	reverse_proxy "http://clover-source-of-truth" |
| 69 | } | 69 | } |
| 70 | file.{$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 | } | ||
| 70 | git.{$HOME_DOMAIN} { | 82 | git.{$HOME_DOMAIN} { |
| 71 | handle /user/login { | 83 | handle /user/login { |
| 72 | rewrite /user/oauth2/snow | 84 | rewrite /user/oauth2/snow |
| ... | @@ -86,9 +98,6 @@ import ./jellyfin/Caddyfile | ... | @@ -86,9 +98,6 @@ import ./jellyfin/Caddyfile |
| 86 | music.{$HOME_DOMAIN} { | 98 | music.{$HOME_DOMAIN} { |
| 87 | 	reverse_proxy "http://navidrome:4533" | 99 | 	reverse_proxy "http://navidrome:4533" |
| 88 | } | 100 | } |
| 89 | nas.{$HOME_DOMAIN} { | ||
| 90 | import auth-optional "http://copyparty" | ||
| 91 | } | ||
| 92 | # opencode.{$HOME_DOMAIN} { | 101 | # opencode.{$HOME_DOMAIN} { |
| 93 | # 	import auth | 102 | # 	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_demand | 141 | 		on_demand |
| 133 | 	} | 142 | 	} |
| 134 | } | 143 | } |
| 144 | nas.paperclover.net { | ||
| 145 | 	redir "https://file.paperclover.net{uri}" | ||
| 146 | 	tls { | ||
| 147 | 		on_demand | ||
| 148 | 	} | ||
| 149 | } | ||
| 135 | 150 | ||
| 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_out | 19 | idp-logout: /snow.oauth2/sign_out |
| 20 | idp-login-t: with sso (snow sign on) | 20 | idp-login-t: with sso (snow sign on) |
| 21 | 21 | ||
| 22 | html-head: <link rel="stylesheet" href="/.static/copyparty.css"> | ||
| 23 | |||
| 22 | [/] # webroot | 24 | [/] # webroot |
| 23 | /w | 25 | /w |
| 24 | accs: | 26 | accs: |
| ... | @@ -26,18 +28,24 @@ | ... | @@ -26,18 +28,24 @@ |
| 26 | [/clover] | 28 | [/clover] |
| 27 | /w/clover | 29 | /w/clover |
| 28 | accs: | 30 | accs: |
| 29 | rwmda: snow | 31 | rwmd: snow |
| 30 | [/media] # mediaroot | 32 | [/media] # mediaroot |
| 31 | /w/media | 33 | /w/media |
| 32 | accs: | 34 | accs: |
| 33 | rwmda: snow | 35 | rwmd: snow, rain, fish, akira, @media-manage |
| 34 | rwmd: rain, fish, akira | 36 | r: @media |
| 35 | [/home/${u}] | 37 | [/home/${u}] |
| 36 | /w/home/${u} | 38 | /w/home/${u} |
| 37 | accs: | 39 | accs: |
| 38 | rwmda: ${u}, @su | 40 | rwmd: ${u}, @su |
| 39 | [/clover/Public] | 41 | [/clover/Public] |
| 40 | /w/clover/Public | 42 | /w/clover/Public |
| 41 | accs: | 43 | accs: |
| 42 | r: * | 44 | r: * |
| 43 | rwm: @acct | 45 | 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 @@ | ||
| 1 | The fonts in this directory MUST be purchased to use: | ||
| 2 | https://www.arrowtype.com/name-sans | ||
| 3 | https://www.arrowtype.com/name-mono | ||
| 4 | |||
| 5 | The full license from ArrowType: https://www.arrowtype.com/licensing/commercial | ||
| 6 | |||
| 7 | This license specifically grants me, Clover M Caruso, the right to embed these | ||
| 8 | webfonts on domains I control. | ||
| 9 | |||
| 10 | > The webfonts may only be installed on website domains that are under your | ||
| 11 | > direct control. | ||
| 12 | |||
| 13 | Since 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); |
| 3 | 3 | @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 | } | ||
| 45 | 4 | ||
| 46 | :root { | 5 | :root { |
| 47 | --fonts-proportional: | 6 | --fonts-proportional: |
| ... | @@ -225,4 +184,3 @@ | ... | @@ -225,4 +184,3 @@ |
| 225 | transparent | 184 | 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 | } | ||
| 26 | 2 | ||
| 27 | /* reset */ | 3 | /* reset */ |
| 28 | html, | 4 | html, |
| ... | @@ -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; | ||
| 88 | 63 | ||
| 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 @@ | ||
| 1 | The fonts in this directory MUST be purchased to use: | ||
| 2 | https://www.arrowtype.com/name-sans | ||
| 3 | https://www.arrowtype.com/name-mono | ||
| 4 | |||
| 5 | The full license from ArrowType: https://www.arrowtype.com/licensing/commercial | ||
| 6 | |||
| 7 | This license specifically grants me, Clover M Caruso, the right to embed these | ||
| 8 | webfonts on domains I control. | ||
| 9 | |||
| 10 | > The webfonts may only be installed on website domains that are under your | ||
| 11 | > direct control. | ||
| 12 | |||
| 13 | Since 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 | |||
| 43 | body { | ||
| 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 | |||