Cum să configurezi Headscale și Traefik ca să faci proxy la orice serviciu

Requirements:

  • a linux server with a public IPv4 address
  • docker and docker compose installed
  • a domain/subdomain with a A DNS record pointing to your IP

I will use example.com as the domain name in this example, please replace it with your domain/subdomain.

Traefik

Ssh to your public server where you want to host your vpn, make a folder called traefik with the following files: mkdir traefik && cd traefik

1. An empty letsencrypt folder: mkdir letsencrypt

2. An empty file touch dynamic.yml (for future expansion)

3. The static config: nano static.yml

 1api:
 2  insecure: true
 3  dashboard: true
 4
 5providers:
 6  docker:
 7    exposedByDefault: false
 8
 9entryPoints:
10  web:
11    address: ":80"
12    http2:
13      maxConcurrentStreams: 250 # fix for network error on the proxy to my immich instance
14    http3:
15      advertisedPort: 443
16    # http:
17    #   redirections:
18    #     entryPoint:
19    #       to: websecure
20    #       scheme: https
21    forwardedHeaders:
22      trustedIPs:
23        - 10.0.0.0/8
24        - 172.16.0.0/12
25        - 192.168.0.0/16
26        - fc00::/7
27    proxyProtocol:
28      trustedIPs:
29        - 10.0.0.0/8
30        - 172.16.0.0/12
31        - 192.168.0.0/16
32        - fc00::/7
33  websecure:
34    address: ":443"
35    http2:
36      maxConcurrentStreams: 250 # fix for network error on the proxy to my immich instance
37    http3:
38      advertisedPort: 443
39    forwardedHeaders:
40      trustedIPs:
41        - 10.0.0.0/8
42        - 172.16.0.0/12
43        - 192.168.0.0/16
44        - fc00::/7
45    proxyProtocol:
46      trustedIPs:
47        - 10.0.0.0/8
48        - 172.16.0.0/12
49        - 192.168.0.0/16
50        - fc00::/7
51
52certificatesResolvers:
53  myresolver:
54    acme:
55      email: "your-email-goes-here@tutorial.example"
56      storage: "/letsencrypt/acme.json"
57      httpChallenge:
58        entryPoint: web

Replace your-email-goes-here@tutorial.example with your email address. Let’s Encrypt send you notifications when your ssl certificate expires.

2025-01-25    
MiniPC rack Partea 1: pc și carcasă
Am cumpărat hardware-ul pentru MiniPC rack
2024-11-19    
Cum să controlezi ventilatorul Noctua din Raspberry Pi
Cum să controlezi un ventilator Noctua NF-A20 PWM din Raspberry Pi. De la oprit la viteze între 20%-100%
2024-11-18    
Cum să folosești Templ în Goravel
Cum să folosești Templ în framework-ul Goravel
2024-11-18    
Docker Compose script scurtaturi
Cum să faci un script cu scurtături folosite frecvent pentru docker compose
2024-11-18    
Backup incremental pentru fișiere și MySQL
Cum să configurezi Autorestic pentru backup incremental de fișiere și baza de date MySQL
2024-11-18    
Dinamic max_connections pentru MySQL
Schimbă setarea max_connections dinamic în MySQL
2024-11-18    
Calendar complet în Solid JS
Calendar complet în Solid JS cu Moment.js
2024-11-18