lemmy: hacktivism extra_themes + apply-branding

This commit is contained in:
Hernâni Marques 2026-08-17 15:04:19 +02:00
parent 4609035d46
commit d519fb3c80
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
9 changed files with 80 additions and 6 deletions

View file

@ -32,7 +32,7 @@ configs/ # mirrored app configs (caddy, taler, forgejo, …)
taler-exchange/ # exchange conf (inside ansible container) taler-exchange/ # exchange conf (inside ansible container)
taler-exchange-ansible/ # container taler-hacktivism-exchange-ansible taler-exchange-ansible/ # container taler-hacktivism-exchange-ansible
forgejo/ # rootless git.hacktivism.ch forgejo/ # rootless git.hacktivism.ch
castopod/ bonfire/ prime/ # compose mirrors (no secret values) castopod/ bonfire/ lemmy/ prime/ # compose mirrors (no secret values)
tops/ # koopa-tops-ng1…ng3 + autostart unit tops/ # koopa-tops-ng1…ng3 + autostart unit
tor/ # KoopaRelay ORPort 8080 tor/ # KoopaRelay ORPort 8080
scripts/ # merchant, exchange, monitoring helpers scripts/ # merchant, exchange, monitoring helpers
@ -52,6 +52,7 @@ scripts/ # merchant, exchange, monitoring helpers
| `taler-hacktivism-bank` | libeufin-bank (GOA) | **9012** (+ landing **9013**) | | `taler-hacktivism-bank` | libeufin-bank (GOA) | **9012** (+ landing **9013**) |
| `koopa-castopod` (+ mariadb/redis) | Castopod | **9020** | | `koopa-castopod` (+ mariadb/redis) | Castopod | **9020** |
| `koopa-bonfire` (+ postgres) | Bonfire | **9021** | | `koopa-bonfire` (+ postgres) | Bonfire | **9021** |
| `koopa-lemmy-proxy` (+ lemmy/ui/pictrs/db) | Lemmy | **9026** |
| `koopa-prime-jellyfin` | Jellyfin | **9022** | | `koopa-prime-jellyfin` | Jellyfin | **9022** |
| `koopa-prime-qbittorrent` | qBittorrent | **9023** | | `koopa-prime-qbittorrent` | qBittorrent | **9023** |
| `koopa-forgejo` (+ postgres) | Forgejo rootless | **9024** + SSH **9200** | | `koopa-forgejo` (+ postgres) | Forgejo rootless | **9024** + SSH **9200** |
@ -62,8 +63,8 @@ Start model (exchange): `~/ansible-taler-exchange/` → `run-container-koopa.sh`
Start model (user apps): `hernani``cd ~/koopa-* && podman-compose up -d`. Start model (user apps): `hernani``cd ~/koopa-* && podman-compose up -d`.
Start model (tops): user unit `container-koopa-tops.service` (linger). Start model (tops): user unit `container-koopa-tops.service` (linger).
Public hosts: `taler.` / `exchange.` / `bank.` / `castopod.` / `bonfire.` / `prime.` / `bt.` / **`git.hacktivism.ch`** / `tops.ng1``ng3`.hacktivism.ch Public hosts: `taler.` / `exchange.` / `bank.` / `castopod.` / `bonfire.` / `prime.` / `bt.` / **`git.hacktivism.ch`** / `lemmy.` / `tops.ng1``ng3`.hacktivism.ch
(Caddy → 90109015 / 9020**9024** / **90909092**; git-SSH host **9200** direct). (Caddy → 90109015 / 9020**9026** / **90909092**; git-SSH host **9200** direct).
Service **details**: `configs/taler-hacktivism*`, `configs/taler-exchange*`, `configs/forgejo/`, `configs/tops/`, `scripts/*`. Service **details**: `configs/taler-hacktivism*`, `configs/taler-exchange*`, `configs/forgejo/`, `configs/tops/`, `scripts/*`.
Host-wide picture: **`host/overview/services.md`**. Host-wide picture: **`host/overview/services.md`**.

View file

@ -9,7 +9,7 @@ Directories are named to match **live podman container names** where possible.
| `taler-exchange/` | conf inside exchange container | (see exchange-ansible) | | `taler-exchange/` | conf inside exchange container | (see exchange-ansible) |
| `taler-exchange-ansible/` | **`taler-hacktivism-exchange-ansible`** | `taler-hacktivism-exchange-ansible:landing` | | `taler-exchange-ansible/` | **`taler-hacktivism-exchange-ansible`** | `taler-hacktivism-exchange-ansible:landing` |
| `bank-landing/` `exchange-landing/` `merchant-landing/` | nginx landing snippets | ports 90139015 | | `bank-landing/` `exchange-landing/` `merchant-landing/` | nginx landing snippets | ports 90139015 |
| `koopa-*` apps | `koopa-castopod`, `koopa-bonfire`, … | compose mirrors | | `koopa-*` apps | `koopa-castopod`, `koopa-bonfire`, `koopa-lemmy`, … | compose mirrors |
| `tops/` | `koopa-tops-ng1``ng3` | `nginxinc/nginx-unprivileged:1.27-alpine` (non-root, :8080) | | `tops/` | `koopa-tops-ng1``ng3` | `nginxinc/nginx-unprivileged:1.27-alpine` (non-root, :8080) |
| `caddy/` `firewalld/` `systemd/` | host services | | | `caddy/` `firewalld/` `systemd/` | host services | |
| `tor/` | **`koopa-tor-relay`** (podman host net) | `localhost/koopa-tor-relay:latest` (**non-root** uid 1000) | | `tor/` | **`koopa-tor-relay`** (podman host net) | `localhost/koopa-tor-relay:latest` (**non-root** uid 1000) |

View file

@ -10,9 +10,12 @@
Secrets: host `~/koopa-lemmy/{.env,lemmy.hjson}` (mode 600). Not in this repo. Secrets: host `~/koopa-lemmy/{.env,lemmy.hjson}` (mode 600). Not in this repo.
Theme: `extra_themes/hacktivism-overrides.css` + `scripts/lemmy/apply-branding.sh` (exchange-dark, same palette as Bonfire).
```bash ```bash
cd ~/koopa-lemmy && set -a && source .env && set +a && podman-compose up -d cd ~/koopa-lemmy && set -a && source .env && set +a && podman-compose up -d
scripts/lemmy/install-systemd.sh scripts/lemmy/install-systemd.sh
scripts/lemmy/apply-branding.sh
``` ```
Daylog: `2026/2026-08-17--lemmy.md`. Daylog: `2026/2026-08-17--lemmy.md`.

View file

@ -54,6 +54,9 @@ services:
- LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536 - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
- LEMMY_UI_LEMMY_EXTERNAL_HOST=${LEMMY_HOSTNAME} - LEMMY_UI_LEMMY_EXTERNAL_HOST=${LEMMY_HOSTNAME}
- LEMMY_UI_HTTPS=true - LEMMY_UI_HTTPS=true
- LEMMY_UI_EXTRA_THEMES_FOLDER=/app/extra_themes
volumes:
- ./extra_themes:/app/extra_themes:ro
depends_on: depends_on:
- lemmy - lemmy
restart: unless-stopped restart: unless-stopped

View file

@ -0,0 +1,54 @@
/* hacktivism — same palette as bonfire/git.hacktivism.ch (exchange-dark) */
:root,
[data-bs-theme=dark],
[data-bs-theme=light] {
--bs-primary: #e8a838;
--bs-primary-rgb: 232, 168, 56;
--bs-secondary: #3d3128;
--bs-secondary-rgb: 61, 49, 40;
--bs-success: #16a34a;
--bs-info: #3ecfbf;
--bs-info-rgb: 62, 207, 191;
--bs-warning: #f0d090;
--bs-body-color: #fff6e8;
--bs-body-color-rgb: 255, 246, 232;
--bs-body-bg: #1a1410;
--bs-body-bg-rgb: 26, 20, 16;
--bs-emphasis-color: #fff6e8;
--bs-secondary-color: #ebe0d0;
--bs-tertiary-bg: #221c16;
--bs-border-color: #2a2018;
--bs-link-color: #e8a838;
--bs-link-color-rgb: 232, 168, 56;
--bs-link-hover-color: #f0d090;
--bs-link-hover-color-rgb: 240, 208, 144;
}
body {
background-color: #1a1410 !important;
color: #fff6e8 !important;
}
.navbar,
.navbar-dark,
.bg-dark,
.navbar.bg-dark {
background-color: #14110e !important;
}
.navbar .navbar-brand,
.navbar .nav-link.active {
color: #e8a838 !important;
}
.btn-primary {
background-color: #e8a838 !important;
border-color: #e8a838 !important;
color: #1a1410 !important;
}
.card,
.list-group-item,
.post-listing,
.comment {
background-color: #221c16 !important;
color: #fff6e8 !important;
border-color: #2a2018 !important;
}
a { color: #e8a838 !important; }
a:hover { color: #f0d090 !important; }

View file

@ -8,7 +8,7 @@ Canonical mirror in this repo: **`configs/caddy/Caddyfile`** (same content as `h
| **9000** | HTTP + ACME webroot + HTTPS redirect | | **9000** | HTTP + ACME webroot + HTTPS redirect |
| **9001** | HTTPS vhosts | | **9001** | HTTPS vhosts |
Public sites: `taler` / `exchange` / `bank` / `castopod` / `bonfire` / `prime` / `bt` / **`git`** / **`paivana`** / tops.ng*. Public sites: `taler` / `exchange` / `bank` / `castopod` / `bonfire` / `prime` / `bt` / **`git`** / **`paivana`** / **`lemmy`** / tops.ng*.
Forgejo HTTP: Caddy → `127.0.0.1:9024`. Git SSH is **host :9200** (not Caddy). Forgejo HTTP: Caddy → `127.0.0.1:9024`. Git SSH is **host :9200** (not Caddy).
Paivana: Caddy → `127.0.0.1:9025`. Paivana: Caddy → `127.0.0.1:9025`.

View file

@ -16,6 +16,7 @@
| `nym/` | **koopa-nym** build/up/status (nym.com nym-node) | | `nym/` | **koopa-nym** build/up/status (nym.com nym-node) |
| `taler-wallet-cli/` | thin wrappers; **benchmarks live in** `../benchmarks/` | | `taler-wallet-cli/` | thin wrappers; **benchmarks live in** `../benchmarks/` |
| `castopod/` | host `hernani` podman-compose `~/koopa-castopod` — see `castopod/README.md` | | `castopod/` | host `hernani` podman-compose `~/koopa-castopod` — see `castopod/README.md` |
| `lemmy/` | host `hernani` podman-compose `~/koopa-lemmy` — see `configs/lemmy/README.md` |
**Secrets:** never in this tree — sibling **`../koopa-admin-secrets`** (`koopa/host-root/<service>/``/root/` on host; `containers/…/secrets/` for in-container). **Secrets:** never in this tree — sibling **`../koopa-admin-secrets`** (`koopa/host-root/<service>/``/root/` on host; `containers/…/secrets/` for in-container).

12
scripts/lemmy/apply-branding.sh Executable file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
# Build extra_themes/hacktivism.css (darkly + hacktivism overrides) and set site default.
set -euo pipefail
LIVE="${HOME}/koopa-lemmy"
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
OVERRIDES="${ROOT}/configs/lemmy/extra_themes/hacktivism-overrides.css"
OUT="${LIVE}/extra_themes/hacktivism.css"
mkdir -p "${LIVE}/extra_themes"
podman exec koopa-lemmy-ui cat /app/dist/assets/css/themes/darkly.css > "${OUT}"
cat "${OVERRIDES}" >> "${OUT}"
echo "wrote ${OUT} ($(wc -l < "${OUT}") lines)"

View file

@ -65,7 +65,7 @@ overall: OK ok=42 warn=0 fail=0
| Git SSH | TCP `:9200` | | Git SSH | TCP `:9200` |
**Critical** (→ overall FAIL): merchant, exchange, bank, forgejo, edge/critical ports. **Critical** (→ overall FAIL): merchant, exchange, bank, forgejo, edge/critical ports.
**Optional** (→ WARN): castopod, bonfire, prime, bt, paivana, tops, tor, nym. **Optional** (→ WARN): castopod, bonfire, lemmy, prime, bt, paivana, tops, tor, nym.
Read-only. No restarts, no secrets. Read-only. No restarts, no secrets.