This commit is contained in:
Karl Breuer 2025-03-24 14:44:59 +01:00
commit 6330e844bc
11 changed files with 153 additions and 0 deletions

0
.dockerignore Normal file
View File

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.env
deploy.sh
palanticshelper

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
# syntax=docker/dockerfile:1
FROM golang:1.24
WORKDIR /app
ENV PATH="/go/bin:${PATH}"
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# Explicitly copy and set permissions for servego4lage.sh
COPY servego4lage.sh /app/servego4lage.sh
RUN chmod +x /app/servego4lage.sh
WORKDIR /app
ENTRYPOINT ["/app/servego4lage.sh"]

62
README.md Normal file
View File

@ -0,0 +1,62 @@
# Palantics Tracker Helper
A tool that counters anti-tracking measures by removing third-party requests. Your server will do the requests instead.
This is the recommended way to setup palantics. But only using the frontend script with the tracker server directly does work as well :)
## Installation
### 1. Copy or clone this repo to your server
```bash
cp example.env .env
```
Edit your `.env` file and make sure you use the correct tracking server.
```bash
docker-compose up -d
```
### 2. Update your Reverse Proxy config
Configure your reverse proxy to catch requests and forward them to Palantics Helper.
Remember to set the PORT correctly to match your .env PORT.
#### NGINX:
```nginx
location /spur {
proxy_pass http://127.0.0.1:8101;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
#### Traefik:
```yaml
# Traefik configuration
labels:
- "traefik.enable=true"
- "traefik.http.routers.palantics.rule=Host(`yourdomain.com`) && PathPrefix(`/spur`)"
- "traefik.http.routers.palantics.entrypoints=web,websecure"
- "traefik.http.routers.palantics.tls=true"
- "traefik.http.services.palantics.loadbalancer.server.port=8101"
```
### 3. Update Global Server Config
In the global server config in your frontend, replace the tracker endpoint with your own domain:
```html
<!-- Global server config -->
<script>
const server = "https://karlbreuer.com";
</script>
```
INSTEAD of your tracker endpoint `https://tracking1.karlbreuer.com`

10
docker-compose.yml Normal file
View File

@ -0,0 +1,10 @@
services:
app:
env_file: ".env"
build: .
ports:
- "${PORT}:${PORT}"
volumes:
- ./.env:/app/.env
container_name: "${APP_NAME}_app"
restart: unless-stopped

5
example.env Normal file
View File

@ -0,0 +1,5 @@
PORT=8101 #The Port of this app. just use a free port. Make this consistent with your Nginx or Traeffik config.
DOMAIN=karlbreuer.com #This should be your domain.
DEBUG=TRUE #Debug mode. FALSE in Prod
TRACKINGSERVERURL=tracking1.karlbreuer.com # The palantics tracking server. Provided by palantics.
APP_NAME=palanticshelper

9
go.mod Normal file
View File

@ -0,0 +1,9 @@
module gitea.karlbreuer.com/karl/palanticshelper
go 1.24.0
require (
github.com/DeanPDX/dotconfig v1.0.0
github.com/go-chi/chi v1.5.5
github.com/go-chi/cors v1.2.1
)

6
go.sum Normal file
View File

@ -0,0 +1,6 @@
github.com/DeanPDX/dotconfig v1.0.0 h1:hVBXe96OcU4YHqropy4zpKvcU6qc7PmTpsDBrUj5Lu0=
github.com/DeanPDX/dotconfig v1.0.0/go.mod h1:18zbUTCrXlYeQqJmrtjBVtNFTUPEfqTzdrf8dh1kHNc=
github.com/go-chi/chi v1.5.5 h1:vOB/HbEMt9QqBqErz07QehcOKHaWFtuj87tTDVz2qXE=
github.com/go-chi/chi v1.5.5/go.mod h1:C9JqLr3tIYjDOZpzn+BCuxY8z8vmca43EeMgyZt7irw=
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=

9
main.go Normal file
View File

@ -0,0 +1,9 @@
package main
import (
"gitea.karlbreuer.com/karl/palanticshelper/pkg/palanticshelper"
)
func main() {
palanticshelper.StartServer()
}

25
pkg/settings/settings.go Normal file
View File

@ -0,0 +1,25 @@
package settings
import (
"fmt"
"github.com/DeanPDX/dotconfig"
)
var Settings PhelperSettings
type PhelperSettings struct {
Domain string `env:"DOMAIN"`
TrackingServerURL string `env:"TRACKINGSERVERURL"`
Debug bool `env:"DEBUG"`
Port string `env:"PORT"`
}
func init() {
var err error
Settings, err = dotconfig.FromFileName[PhelperSettings](".env")
if err != nil {
fmt.Printf("Error: %v.", err)
}
}

5
servego4lage.sh Normal file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -e
go build -o palantics
./palantics