Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
docker_notes:docker-reverse-proxy [2023-10-01 Sun wk39 12:26] – [Traefik Routes Config] baumkp | docker_notes:docker-reverse-proxy [2025-01-07 Tue wk02 09:00] (current) – [Cloudsec] baumkp | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{tag> | + | {{tag> |
- | ======Reverse Proxy Server====== | + | ======Reverse Proxy Server |
- | I seem to have gotten the Traefik reverse proxy working according to Techno Tim [[https:// | + | I seem to have gotten the Traefik reverse proxy working according to Techno Tim [[https:// |
Below is a basic description of the process that aligns with my configuration files. I do this for 2 reasons, both allowing me independence. | Below is a basic description of the process that aligns with my configuration files. I do this for 2 reasons, both allowing me independence. | ||
Line 31: | Line 31: | ||
\\ | \\ | ||
====Generate and Install Godaddy DNS Challenge Data==== | ====Generate and Install Godaddy DNS Challenge Data==== | ||
+ | Godaddy changed their policies circa April 2024 that basically does not give small users access to their developers API system. | ||
+ | |||
+ | My domain is still registered via Godaddy, I expect that I will look at moving to another registry when the registration comes due. I do not wish to support Godaddy going forward with my business. <color # | ||
+ | |||
+ | ++++Old, tl;dr;| | ||
Sadly Godaddy does not make it as transparent as it should be to access their DNS challenge API. Perhaps because they are focused on their commercial certificate product. It is accessed from their developer portal [[https:// | Sadly Godaddy does not make it as transparent as it should be to access their DNS challenge API. Perhaps because they are focused on their commercial certificate product. It is accessed from their developer portal [[https:// | ||
<code [enable_line_numbers=" | <code [enable_line_numbers=" | ||
GODADDY_API_SECRET=[Your API_SECRET key from Godaddy API]</ | GODADDY_API_SECRET=[Your API_SECRET key from Godaddy API]</ | ||
- | \\ | + | ++++ |
====Generate and install Basic Authentication Password==== | ====Generate and install Basic Authentication Password==== | ||
<code bash [enable_line_numbers=" | <code bash [enable_line_numbers=" | ||
Line 48: | Line 53: | ||
<code bash [enable_line_numbers=" | <code bash [enable_line_numbers=" | ||
=====Portainer===== | =====Portainer===== | ||
+ | *[[https:// | ||
<code bash [enable_line_numbers=" | <code bash [enable_line_numbers=" | ||
sudo mkdir portainer | sudo mkdir portainer | ||
Line 58: | Line 64: | ||
=====Traefik Routes Config===== | =====Traefik Routes Config===== | ||
+ | |||
+ | ====Using labels in docker config files==== | ||
+ | |||
+ | [[https:// | ||
+ | ===Typical labels in Docker Compose=== | ||
+ | |||
+ | <code yml> | ||
+ | # Enable Traefik for this service | ||
+ | - " | ||
+ | # Tell Traefik to specifically use the network " | ||
+ | - " | ||
+ | # Make Traefik use this domain in HTTP | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | # Middleware to redirect HTTP to HTTPS | ||
+ | - " | ||
+ | # Make Traefik use this domain in HTTPS | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | # Specify the specific resolver to use | ||
+ | #- " | ||
+ | - " | ||
+ | - " | ||
+ | # Define the port inside of the Docker service to use | ||
+ | - " | ||
+ | |||
+ | When the docker compose '' | ||
+ | |||
+ | *Traefik: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | *[[https:// | ||
+ | *[[https:// | ||
+ | ====Using config.yml==== | ||
<code bash [enable_line_numbers=" | <code bash [enable_line_numbers=" | ||
nvim config.yml</ | nvim config.yml</ | ||
- | I have broken down the Traefik router dynamic configuration file, My config.yml into 2 configuration files. One for the http/ | + | I have broken down the Traefik router dynamic configuration file, My config.yml into 2 configuration files. One for the http/ |
<code bash [enable_line_numbers=" | <code bash [enable_line_numbers=" | ||
Folder Structure: | Folder Structure: | ||
Line 67: | Line 115: | ||
│ | │ | ||
│ | │ | ||
- | | | + | | |
- | | | + | | |
│ | │ | ||
│ | │ | ||
│ | │ | ||
└── docker-compose.yml</ | └── docker-compose.yml</ | ||
+ | |||
+ | *Traefik: | ||
+ | *[[https:// | ||
=====whitelisting===== | =====whitelisting===== | ||
- | Todo: look at whitelisting in more detail | + | The Traefik middleware ipWhitelist only allows the define ip address(es) to be forwarded. |
- | * ''/ | + | ++++ipWhitelist| |
- | * Can this be defined for each container setup in config.yml? Looks likely. | + | < |
- | * Can this be reliably setup for public access of certain containers? | + | |
- | * Ensure **no** | + | sourceRange: |
- | * See reddit dicussion | + | - " |
+ | - "192.168.0.0/16" | ||
+ | - "172.16.0.0/ | ||
+ | ++++ | ||
+ | |||
+ | =====BasicAuth===== | ||
+ | For any internal service I expose to the public internet that are either not full services with own password, e.g. dokuwiki, nextcloud and mail server, but I do not want general | ||
+ | |||
+ | The middleware | ||
=====SSL Services===== | =====SSL Services===== | ||
Line 110: | Line 169: | ||
* Nginxproxymanager.com [[https:// | * Nginxproxymanager.com [[https:// | ||
- | ====ssl certificates==== | + | ====ssl certificates |
*'' | *'' | ||
*'' | *'' | ||
Line 171: | Line 230: | ||
- | <- docker_notes: | + | <- docker_notes: |