Initial import of Hugo site to Forgejo
This commit is contained in:
commit
cb1ba0317f
1259 changed files with 236349 additions and 0 deletions
97
ops/fix-goatcounter-nginx.sh
Executable file
97
ops/fix-goatcounter-nginx.sh
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
install -m 644 /dev/stdin /etc/nginx/conf.d/goatcounter-client-ip.conf <<'MAP'
|
||||
# Prefer Cloudflare connecting IP when present (clearnet); else peer addr (onion/local).
|
||||
map $http_cf_connecting_ip $gc_client_ip {
|
||||
"" $remote_addr;
|
||||
default $http_cf_connecting_ip;
|
||||
}
|
||||
MAP
|
||||
|
||||
python3 - <<'PY'
|
||||
from pathlib import Path
|
||||
|
||||
blog = Path("/etc/nginx/sites-enabled/blog-https")
|
||||
text = blog.read_text()
|
||||
if "location = /count" not in text:
|
||||
snippet = """
|
||||
# GoatCounter: same-origin proxy (shares site with onion)
|
||||
location = /count {
|
||||
proxy_pass http://127.0.0.1:8081/count;
|
||||
proxy_set_header Host statsblog.alipourimjourneys.ir;
|
||||
proxy_set_header X-Forwarded-For $gc_client_ip;
|
||||
proxy_set_header X-Real-IP $gc_client_ip;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /counter/ {
|
||||
proxy_pass http://127.0.0.1:8081/counter/;
|
||||
proxy_set_header Host statsblog.alipourimjourneys.ir;
|
||||
proxy_set_header X-Forwarded-For $gc_client_ip;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
"""
|
||||
idx = text.rfind("}")
|
||||
blog.write_text(text[:idx] + snippet + text[idx:])
|
||||
print("blog-https: added /count /counter")
|
||||
else:
|
||||
print("blog-https: already has /count")
|
||||
|
||||
stats = Path("/etc/nginx/sites-enabled/stats.blog.alipourimjourneys.ir.conf")
|
||||
st = stats.read_text()
|
||||
old = "proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;"
|
||||
new = "proxy_set_header X-Real-IP $gc_client_ip;\n proxy_set_header X-Forwarded-For $gc_client_ip;"
|
||||
if "$gc_client_ip" in st:
|
||||
print("statsblog: already patched")
|
||||
elif old in st:
|
||||
stats.write_text(st.replace(old, new))
|
||||
print("statsblog: CF client IP")
|
||||
else:
|
||||
raise SystemExit("statsblog: unexpected content, edit manually")
|
||||
|
||||
onion = Path("/etc/nginx/sites-enabled/onion-blog")
|
||||
ot = onion.read_text()
|
||||
# Update only goatcounter-related XFF lines (keep Isso as-is if different context)
|
||||
ot2 = ot.replace(
|
||||
"""location = /count {
|
||||
proxy_pass http://127.0.0.1:8081/count;
|
||||
proxy_set_header Host statsblog.alipourimjourneys.ir;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto http;
|
||||
}
|
||||
|
||||
# reads for displaying numbers (JSON counters)
|
||||
location /counter/ {
|
||||
proxy_pass http://127.0.0.1:8081/counter/;
|
||||
proxy_set_header Host statsblog.alipourimjourneys.ir;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto http;""",
|
||||
"""location = /count {
|
||||
proxy_pass http://127.0.0.1:8081/count;
|
||||
proxy_set_header Host statsblog.alipourimjourneys.ir;
|
||||
proxy_set_header X-Forwarded-For $gc_client_ip;
|
||||
proxy_set_header X-Real-IP $gc_client_ip;
|
||||
proxy_set_header X-Forwarded-Proto http;
|
||||
}
|
||||
|
||||
# reads for displaying numbers (JSON counters)
|
||||
location /counter/ {
|
||||
proxy_pass http://127.0.0.1:8081/counter/;
|
||||
proxy_set_header Host statsblog.alipourimjourneys.ir;
|
||||
proxy_set_header X-Forwarded-For $gc_client_ip;
|
||||
proxy_set_header X-Forwarded-Proto http;""",
|
||||
)
|
||||
if ot2 != ot:
|
||||
onion.write_text(ot2)
|
||||
print("onion-blog: client IP for goatcounter")
|
||||
elif "$gc_client_ip" in ot:
|
||||
print("onion-blog: already ok")
|
||||
else:
|
||||
print("onion-blog: WARN could not patch automatically")
|
||||
PY
|
||||
|
||||
nginx -t
|
||||
systemctl reload nginx
|
||||
echo "nginx reloaded OK"
|
||||
Loading…
Add table
Add a link
Reference in a new issue