Compare commits

...

2 Commits

Author SHA1 Message Date
ffa423dfe2 Fuck reddit 2025-03-18 01:00:35 +04:00
f9d4c0647e add glance 2025-03-17 23:26:08 +04:00
15 changed files with 268 additions and 0 deletions

View File

@ -25,3 +25,10 @@ VAULTWARDEN_KEY=
############# Sftpgo #############
SFTPGO_DOMAIN=
############# Glance #############
GLANCE_DOMAIN=
GLANCE_CRT=
GLANCE_KEY=
GLANCE_USERNAME=
GLANCE_PASSWORD=

View File

@ -96,6 +96,26 @@
}
}
############## glance ##############
{$GLANCE_DOMAIN} {
tls /etc/ssl/custom/{$GLANCE_CRT} /etc/ssl/custom/{$GLANCE_KEY}
basic_auth {
{$GLANCE_USERNAME} {$GLANCE_PASSWORD}
}
request_body {
max_size 64MB
}
reverse_proxy http://glance:8080 {
header_up X-Real-IP {http.request.header.Cf-Connecting-Ip}
header_up X-Forwarded-For {http.request.header.Cf-Connecting-Ip}
header_up X-Country-Code {http.request.header.Cf-Ipcountry}
header_up -CF-*
}
}
import Caddyfile.private

6
glance/.env.example Normal file
View File

@ -0,0 +1,6 @@
# Variables defined here will be available to use anywhere in the config with the syntax ${MY_SECRET_TOKEN}
# Note: making changes to this file requires re-running docker compose up
MY_SECRET_TOKEN=
GITHUB_TOKEN=
MEMOS_TOKEN=
SERADAR_TOKEN=

1
glance/assets/gitea.svg Normal file
View File

@ -0,0 +1 @@
<svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" style="enable-background:new 0 0 640 640;" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"> <g> <path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8 c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4 c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"></path> <g> <g> <path style="fill:#609926" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2 c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5 c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5 c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3 c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1 C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4 c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7 S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55 c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8 l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"></path> <path style="fill:#609926" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4 c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1 c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9 c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3 c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3 c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29 c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8 C343.2,346.5,335,363.3,326.8,380.1z"></path> </g> </g> </g> </svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
glance/assets/memos.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
glance/assets/seradar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
glance/assets/sftpgo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

1
glance/assets/slash.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-slash"><line x1="9" x2="15" y1="15" y2="9"/><circle cx="12" cy="12" r="10"/></svg>

After

Width:  |  Height:  |  Size: 291 B

0
glance/assets/user.css Normal file
View File

View File

@ -0,0 +1,5 @@
<svg version="1.1" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg">
<title>Vaultwarden</title>
<path class="tw-fill-marketing-logo" d="m18 11-5.6.00073 15 42h5.3l15-42h-5.6l-9.5 27c-.63 1.7-1.2 3.4-1.6 4.9-.43 1.5-.79 2.9-1.1 4.3-.28-1.4-.63-2.8-1.1-4.4-.43-1.5-.97-3.2-1.6-5l-9.5-27z"></path>
<path class="tw-fill-marketing-logo" d="m30 0.05c-0.19 0.068-0.34 0.2-0.44 0.37l-1.5 2.5c-0.27 0.022-0.53 0.046-0.8 0.076l-2-2.2c-0.43-0.44-1.2-0.29-1.4 0.29l-1 2.8c-0.26 0.074-0.51 0.15-0.77 0.23l-2.4-1.8c-0.52-0.45-1.3-0.12-1.4 0.56l-0.44 2.9c-0.23 0.12-0.47 0.24-0.7 0.37l-2.7-1.3c-0.58-0.26-1.2 0.18-1.2 0.81l0.14 3c-0.2 0.16-0.4 0.33-0.6 0.49l-2.9-0.72c-0.59-0.12-1.1 0.41-1 1l0.72 2.9c-0.17 0.2-0.33 0.4-0.49 0.6l-3-0.14c-0.63-0.027-1.1 0.62-0.81 1.2l1.3 2.7c-0.13 0.23-0.25 0.46-0.37 0.7l-2.9 0.44c-0.68 0.068-1 0.88-0.56 1.4l1.8 2.4c-0.081 0.25-0.16 0.51-0.23 0.77l-2.8 1c-0.58 0.22-0.73 0.97-0.29 1.4l2.2 2c-0.03 0.26-0.054 0.53-0.076 0.8l-2.5 1.5c-0.6 0.32-0.6 1.2 0 1.5l2.5 1.5c0.022 0.27 0.046 0.53 0.076 0.8l-2.2 2c-0.44 0.43-0.29 1.2 0.29 1.4l2.8 1c0.074 0.26 0.15 0.51 0.23 0.77l-1.8 2.4c-0.45 0.52-0.12 1.3 0.56 1.4l2.9 0.44c0.12 0.23 0.24 0.47 0.37 0.7l-1.3 2.7c-0.26 0.58 0.18 1.2 0.81 1.2l3-0.14c0.16 0.2 0.33 0.4 0.49 0.6l-0.72 2.9c-0.12 0.59 0.41 1.1 1 1l2.9-0.72c0.2 0.17 0.4 0.33 0.6 0.49l-0.14 3c-0.027 0.63 0.62 1.1 1.2 0.81l2.7-1.3c0.23 0.13 0.46 0.25 0.7 0.37l0.44 2.9c0.068 0.68 0.88 1 1.4 0.56l2.4-1.8c0.25 0.081 0.51 0.16 0.77 0.23l1 2.8c0.22 0.58 0.97 0.73 1.4 0.29l2-2.2c0.26 0.03 0.53 0.054 0.8 0.076l1.5 2.5c0.32 0.6 1.2 0.6 1.5 0l1.5-2.5c0.27-0.022 0.53-0.046 0.8-0.076l2 2.2c0.43 0.44 1.2 0.29 1.4-0.29l1-2.8c0.26-0.074 0.51-0.15 0.77-0.23l2.4 1.8c0.52 0.45 1.3 0.12 1.4-0.56l0.44-2.9c0.23-0.12 0.47-0.24 0.7-0.37l2.7 1.3c0.58 0.26 1.2-0.18 1.2-0.81l-0.14-3c0.2-0.16 0.4-0.33 0.6-0.49l2.9 0.72c0.59 0.12 1.1-0.41 1-1l-0.72-2.9c0.17-0.2 0.33-0.4 0.49-0.6l3 0.14c0.63 0.027 1.1-0.62 0.81-1.2l-1.3-2.7c0.13-0.23 0.25-0.46 0.37-0.7l2.9-0.44c0.68-0.068 1-0.88 0.56-1.4l-1.8-2.4c0.081-0.25 0.16-0.51 0.23-0.77l2.8-1c0.58-0.22 0.73-0.97 0.29-1.4l-2.2-2c0.03-0.26 0.054-0.53 0.076-0.8l2.5-1.5c0.6-0.32 0.6-1.2 0-1.5l-2.5-1.5c-0.022-0.27-0.046-0.53-0.076-0.8l2.2-2c0.44-0.43 0.29-1.2-0.29-1.4l-2.8-1c-0.074-0.26-0.15-0.51-0.23-0.77l1.8-2.4c0.45-0.52 0.12-1.3-0.56-1.4l-2.9-0.44c-0.12-0.23-0.24-0.47-0.37-0.7l1.3-2.7c0.26-0.58-0.18-1.2-0.81-1.2l-3 0.14c-0.16-0.2-0.33-0.4-0.49-0.6l0.72-2.9c0.12-0.59-0.41-1.1-1-1l-2.9 0.72c-0.2-0.17-0.4-0.33-0.6-0.49l0.14-3c0.027-0.63-0.62-1.1-1.2-0.81l-2.7 1.3c-0.23-0.13-0.46-0.25-0.7-0.37l-0.44-2.9c-0.068-0.68-0.88-1-1.4-0.56l-2.4 1.8c-0.25-0.081-0.51-0.16-0.77-0.23l-1-2.8c-0.22-0.58-0.97-0.73-1.4-0.29l-2 2.2c-0.26-0.03-0.53-0.054-0.8-0.076l-1.5-2.5c-0.2-0.34-0.62-0.5-1-0.37zm0.29 5.4c0.94 0 1.7 0.76 1.7 1.7s-0.76 1.7-1.7 1.7-1.7-0.76-1.7-1.7 0.76-1.7 1.7-1.7zm-4 2.9 2.8 2.8c0.66 0.66 1.7 0.66 2.4 0l2.8-2.8c6.6 1.2 12 5.4 15 11l-1.8 3.6c-0.43 0.84-0.097 1.9 0.75 2.3l3.6 1.8c0.12 0.92 0.18 1.9 0.18 2.8 0 5.8-2.3 11-6 15l-4-0.63c-0.94-0.18-1.8 0.45-2 1.4l-0.63 4c-2.8 1.3-6 2.1-9.4 2.1s-6.5-0.76-9.4-2.1l-0.63-4c-0.15-0.95-1.1-1.6-2-1.4l-4 0.63c-3.7-3.9-6-9.2-6-15 0-0.96 0.064-1.9 0.18-2.8l3.6-1.8c0.85-0.42 1.2-1.5 0.75-2.3l-1.8-3.6c3.1-5.7 8.6-9.8 15-11zm-18 13c0.16 0.0045 0.32 0.032 0.48 0.083 0.93 0.29 1.4 1.3 1.1 2.2-0.29 0.93-1.3 1.4-2.2 1.1-0.93-0.29-1.4-1.3-1.1-2.2 0.23-0.74 0.93-1.2 1.7-1.2zm43 0c0.77-0.034 1.5 0.46 1.7 1.2 0.33 0.91-0.17 1.9-1.1 2.2-0.91 0.33-1.9-0.17-2.2-1.1-0.33-0.91 0.17-1.9 1.1-2.2 0.16-0.051 0.32-0.079 0.48-0.083zm-35 25c0.33 0.017 0.64 0.13 0.91 0.32 0.78 0.55 0.95 1.6 0.38 2.4-0.55 0.78-1.6 0.95-2.4 0.38-0.78-0.55-0.95-1.6-0.38-2.4 0.34-0.48 0.91-0.74 1.5-0.7zm27 0c0.59-0.042 1.2 0.22 1.5 0.7 0.57 0.77 0.4 1.8-0.38 2.4-0.77 0.57-1.8 0.4-2.4-0.38-0.57-0.77-0.4-1.8 0.38-2.4 0.27-0.19 0.58-0.3 0.91-0.32z"></path>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
glance/assets/wireguard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

16
glance/config/glance.yml Normal file
View File

@ -0,0 +1,16 @@
server:
assets-path: /app/assets
theme:
# Note: assets are cached by the browser, changes to the CSS file
# will not be reflected until the browser cache is cleared (Ctrl+F5)
custom-css-file: /assets/user.css
background-color: 240 13 14
primary-color: 51 33 68
negative-color: 358 100 68
contrast-multiplier: 1.2
pages:
# It's not necessary to create a new file for each page and include it, you can simply
# put its contents here, though multiple pages are easier to manage when separated
!include: home.yml

172
glance/config/home.yml Normal file
View File

@ -0,0 +1,172 @@
- name: Home
# Optionally, if you only have a single page you can hide the desktop navigation for a cleaner look
# hide-desktop-navigation: true
columns:
- size: small
widgets:
- type: server-stats
servers:
- type: local
name: Services
- type: monitor
cache: 1s
title: Services
sites:
- title: seradar.net
url: https://seradar.net/auth
icon: /assets/seradar.png
- title: git.aykhans.me
url: https://git.aykhans.me/aykhans
icon: /assets/gitea.svg
- title: ftp.aykhans.me
url: https://ftp.aykhans.me/web/client/login
icon: /assets/sftpgo.png
- title: mem.aykhans.me
url: https://mem.aykhans.me/explore
icon: /assets/memos.webp
- title: url.aykhans.me
url: https://url.aykhans.me/auth
icon: /assets/slash.svg
- title: vault.aykhans.me
url: https://vault.aykhans.me/#/login
icon: /assets/vaultwarden.svg
- title: wg.aykhans.me
url: https://wg.aykhans.me/
icon: /assets/wireguard.png
- type: docker-containers
cache: 0s
hide-by-default: false
- type: releases
cache: 1d
collapse-after: 3
# Without authentication the Github API allows for up to 60 requests per hour. You can create a
# read-only token from your Github account settings and use it here to increase the limit.
token: ${GITHUB_TOKEN}
repositories:
- caddyserver/caddy
- glanceapp/glance
- go-gitea/gitea
- drakkan/sftpgo
- usememos/memos
- yourselfhosted/slash
- dani-garcia/vaultwarden
- wg-easy/wg-easy
- size: full
widgets:
- type: custom-api
title: Memos
cache: 6h
url: https://mem.aykhans.me/api/v1/memos/8ZU65KaQkWobmT8qfKqMyd
headers:
Accept: application/json
Authorization: Bearer ${MEMOS_TOKEN}
template: |
{{ if eq .Response.StatusCode 200 }}
<div style="white-space: pre-wrap;">{{ .JSON.String "content" }}</div>
{{ else }}
<p class="color-negative">Failed to fetch Memos data</p>
{{ end }}
- type: group
widgets:
- type: hacker-news
- type: lobsters
- type: rss
limit: 150
collapse-after: 5
cache: 1h
style: horizontal-cards
feeds:
- url: https://registerspill.thorstenball.com/feed
title: Thorsten Ball
- url: https://selfh.st/rss/
title: selfh.st
- type: custom-api
title: Seradar
cache: 6h
url: https://seradar.net/api/collections/series/records?page=1&perPage=1000&sort=-new_episodes
headers:
Accept: application/json
Authorization: ${SERADAR_TOKEN}
template: |
{{ if eq .Response.StatusCode 200 }}
<div class="widget widget-type-rss">
<div
class="widget-content widget-content-frameless"
>
<div
class="carousel-container show-right-cutoff"
>
<div
class="cards-horizontal carousel-items-container"
>
{{ range .JSON.Array "items" }}
<a
href="https://www.themoviedb.org/tv/{{ .String "series_id" }}"
target="_blank"
rel="noreferrer"
title="{{ .String "english_name" }}"
>
<div
class="card rss-card-2 widget-content-frame thumbnail-parent"
>
<img
class="rss-card-2-image thumbnail cached finished-transition"
loading="lazy"
src="{{ .String "poster_path" }}"
alt="{{ .String "poster_path" }}"
/>
<div
class="rss-card-2-content padding-inline-widget"
>
<a
href="https://www.themoviedb.org/tv/{{ .String "series_id" }}"
class="text-truncate-3-lines color-positive margin-top-10 size-h4"
target="_blank"
rel="noreferrer"
title="{{ .String "english_name" }}"
>{{ .String "english_name" }}</a>
{{ if gt (.Int "new_episodes") 0 }}
<p class="color-highlight">+{{ .Int "new_episodes" }} new episodes</p>
{{ else }}
<p>no new episodes</p>
{{ end }}
</div>
</div>
</a>
{{ end }}
</div>
</div>
</div>
</div>
{{ else }}
<p class="color-negative">Failed to fetch seradar.net data</p>
{{ end }}
- size: small
widgets:
- type: calendar
first-day-of-week: monday
- type: weather
location: Baku, Azerbaijan
units: metric # alternatively "imperial"
hour-format: 12h # alternatively "24h"
- type: markets
markets:
- symbol: BTC-USD
name: Bitcoin
- symbol: DYDX-USD
name: DYDX
- symbol: FET-USD
name: FET
- symbol: SUI20947-USD
name: SUI

21
glance/docker-compose.yml Normal file
View File

@ -0,0 +1,21 @@
networks:
glance:
external: false
caddy:
name: caddy
driver: bridge
external: true
services:
glance:
image: glanceapp/glance:v0.7.7
container_name: glance
restart: unless-stopped
networks:
- glance
- caddy
volumes:
- ./config:/app/config
- ./assets:/app/assets
- /var/run/docker.sock:/var/run/docker.sock:ro
env_file: .env

19
main.sh
View File

@ -59,6 +59,7 @@ generate_env_files() {
cp --update=none ./vaultwarden/.env.example ./vaultwarden/.env
cp --update=none ./wg_easy/.env.example ./wg_easy/.env
cp --update=none ./caddy/.env.example ./caddy/.env
cp --update=none ./glance/.env.example ./glance/.env
cp --update=none ./caddy/Caddyfile.private.example ./caddy/Caddyfile.private
# cp --update=none ./memos/.env.example ./memos/.env
# cp --update=none ./slash/.env.example ./slash/.env
@ -122,6 +123,15 @@ start_services() {
exit 1
fi
echo "Starting glance..."
$DOCKER_COMPOSE_COMMAND -f ./glance/docker-compose.yml up -d
if [ $? -eq 0 ]; then
print_success "Glance started successfully."
else
print_error "failed to start Glance!"
exit 1
fi
echo "Starting caddy..."
$DOCKER_COMPOSE_COMMAND -f ./caddy/docker-compose.yml up -d
if [ $? -eq 0 ]; then
@ -187,6 +197,15 @@ stop_services() {
exit 1
fi
echo "Stopping glance..."
$DOCKER_COMPOSE_COMMAND -f ./glance/docker-compose.yml down
if [ $? -eq 0 ]; then
print_success "Glance stopped successfully."
else
print_error "failed to stop Glance!"
exit 1
fi
echo "Stopping caddy..."
$DOCKER_COMPOSE_COMMAND -f ./caddy/docker-compose.yml down
if [ $? -eq 0 ]; then