<div class='ui dimmer modals page' style='display: none;'><div id='helpie-password-modal' class='pauple_helpie ui modal small' style='display: none;'><div class='ui header'><i class='circular lock icon'></i> Password Protected</div><div class='item-content'><br /><label for='password_check'>Enter Password : </label><p><input type='password' id='password_check' name='password_check' class='password' value='' required></p></div><div class='actions'><div class='ui black deny button'>Nope</div><div class='ui positive right labeled icon button'>Yep, that's right!<i class='checkmark icon'></i></div></div><div class='clear'></div></div></div>{"id":870,"date":"2025-12-27T21:42:20","date_gmt":"2025-12-27T21:42:20","guid":{"rendered":"https:\/\/mcawebservices.ca\/?post_type=pauple_helpie&#038;p=870"},"modified":"2026-01-01T22:18:00","modified_gmt":"2026-01-01T22:18:00","slug":"crp-port-dock","status":"publish","type":"pauple_helpie","link":"https:\/\/mcawebservices.ca\/?pauple_helpie=crp-port-dock","title":{"rendered":"How To Install and Use Caddy as Reverse Proxy with Portainer in Docker on Ubuntu"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"870\" class=\"elementor elementor-870\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2131dbe e-con-full e-flex e-con e-parent\" data-id=\"2131dbe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e7c1b37 e-flex e-con-boxed e-con e-child\" data-id=\"e7c1b37\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-458693f elementor-widget elementor-widget-heading\" data-id=\"458693f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Introduction:<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-77b2174 elementor-widget elementor-widget-text-editor\" data-id=\"77b2174\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>A Caddy server can work as a Reverse Proxy while also providing SSL certificates via Letsencrypt or ZeroSSL to the servers being proxied.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-65afb76 elementor-widget elementor-widget-heading\" data-id=\"65afb76\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Prerequisites:<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ad65d8b elementor-widget elementor-widget-text-editor\" data-id=\"ad65d8b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This project uses Ubuntu 24.04 server with Docker Compose installed.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd003ce elementor-widget elementor-widget-text-editor\" data-id=\"dd003ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-63ee557 e-flex e-con-boxed e-con e-child\" data-id=\"63ee557\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-daec85d e-flex e-con-boxed e-con e-child\" data-id=\"daec85d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e96a1ed elementor-widget elementor-widget-crel-code-block creative-addons crel-code-block\" data-id=\"e96a1ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"crel-code-block.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\r\n\t\t<div class=\" crel-code-block-container crel-loading language-php crel-coy\" data-language_title=\"PHP\">\r\n\t\t\t\t<div class=\"crel-code-block-header-container\">\r\n\t\t\t\t\t<div class=\"crel-code-block__title\">PHP<\/div>\r\n\t\t\t\t\t<div class=\"crel-code-block__control-panel\">\r\n\t\t\t\t\t\t<div class=\"crel-code-block__control-panel__help-text\"><\/div>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t<div class=\"crel-code-block__control-copy\" data-help=\"Copy\" data-copied=\"Copied!\"><svg class=\"e-font-icon-svg e-fas-copy\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"><\/path><\/svg>\t\t\t\t\t\t<\/div>\t\t\t\t\t\t\t<div class=\"crel-code-block__control-expand\" data-help=\"Expand\"><svg class=\"e-font-icon-svg e-fas-expand\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"><\/path><\/svg>\t\t\t\t\t\t\t<\/div>\t\t\t\t\t\t\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\t\t\t\t\t\t\t<pre  >\r\n\t\t\t\t<code class=\"match-braces \">services:\n  caddy:\n    image: caddy:2.10.2-alpine\n    container_name: caddy\n    restart: unless-stopped\n    ports:\n      - &quot;80:80&quot;\n      - &quot;443:443&quot;\n    volumes:\n      - caddy_data:\/data\n      - .\/Caddyfile:\/etc\/caddy\/Caddyfile # Mounts your local Caddyfile into the container\n      - caddy_config:\/config\n#      - \/opt\/caddy\/Caddyfile:\/etc\/caddy\/Caddyfile:ro\n    networks:\n      - web # External network for public access\n      - proxy_network # Only connected internally, no direct external access\n\n  portainer:\n    image: portainer\/portainer-ce:latest\n    container_name: portainer\n    restart: unless-stopped\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n      - portainer_data:\/data\n    networks:\n      - proxy_network # Only connected internally, no direct external access\n\nvolumes:\n  caddy_data:\n    external: true\n  portainer_data:\n    external: true\n  caddy_config:\n    external: true\n\nnetworks:\n  web:\n    external: true # Assumes you created a &#039;web&#039; network with `docker network create web`\n\n  proxy_network:\n    # This makes the network accessible to other compose files\/stacks\n    driver: bridge\n    external: true\n<\/code>\r\n\t\t\t<\/pre>\r\n\t\t\t<textarea class=\"crel-block-original-code\">services:\n  caddy:\n    image: caddy:2.10.2-alpine\n    container_name: caddy\n    restart: unless-stopped\n    ports:\n      - &quot;80:80&quot;\n      - &quot;443:443&quot;\n    volumes:\n      - caddy_data:\/data\n      - .\/Caddyfile:\/etc\/caddy\/Caddyfile # Mounts your local Caddyfile into the container\n      - caddy_config:\/config\n#      - \/opt\/caddy\/Caddyfile:\/etc\/caddy\/Caddyfile:ro\n    networks:\n      - web # External network for public access\n      - proxy_network # Only connected internally, no direct external access\n\n  portainer:\n    image: portainer\/portainer-ce:latest\n    container_name: portainer\n    restart: unless-stopped\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n      - portainer_data:\/data\n    networks:\n      - proxy_network # Only connected internally, no direct external access\n\nvolumes:\n  caddy_data:\n    external: true\n  portainer_data:\n    external: true\n  caddy_config:\n    external: true\n\nnetworks:\n  web:\n    external: true # Assumes you created a &#039;web&#039; network with `docker network create web`\n\n  proxy_network:\n    # This makes the network accessible to other compose files\/stacks\n    driver: bridge\n    external: true\n<\/textarea>\r\n\t\t<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Introduction: A Caddy server can work as a Reverse Proxy while also providing SSL certificates via Letsencrypt or ZeroSSL to the servers being proxied. Prerequisites: This project uses Ubuntu 24.04 server with Docker Compose installed. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo. PHP services: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ofc_meta_disable_footer_callout":"","ofc_meta_callout_button_url":"","ofc_meta_callout_button_txt":"","ofc_meta_callout_text":"","ofc_enable_fullscreen":"disable","ofc_fullscreen_speed":0,"ofc_fullscreen_nav":"enable","ofc_fullscreen_nav_pos":"right","ofc_fullscreen_nav_color":"","ofc_fullscreen_nav_tooltip_color":"","ofc_fullscreen_responsive":0,"osp_disable_panel":"default","osh_disable_topbar_sticky":"default","osh_disable_header_sticky":"default","osh_sticky_header_style":"default","osh_sticky_header_effect":"","osh_custom_sticky_logo":0,"osh_custom_retina_sticky_logo":0,"osh_custom_sticky_logo_height":0,"osh_background_color":"","osh_links_color":"","osh_links_hover_color":"","osh_links_active_color":"","osh_links_bg_color":"","osh_links_hover_bg_color":"","osh_links_active_bg_color":"","osh_menu_social_links_color":"","osh_menu_social_hover_links_color":"","footnotes":""},"helpdesk_category":[34,35,36],"helpie_tag":[],"helpie_add_tag":[],"helpie_up_tag":[],"class_list":["post-870","pauple_helpie","type-pauple_helpie","status-publish","format-standard","hentry","helpdesk_category-docker","helpdesk_category-portainer","helpdesk_category-ubuntu","entry"],"_links":{"self":[{"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=\/wp\/v2\/pauple_helpie\/870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=\/wp\/v2\/pauple_helpie"}],"about":[{"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=\/wp\/v2\/types\/pauple_helpie"}],"author":[{"embeddable":true,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=870"}],"version-history":[{"count":21,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=\/wp\/v2\/pauple_helpie\/870\/revisions"}],"predecessor-version":[{"id":965,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=\/wp\/v2\/pauple_helpie\/870\/revisions\/965"}],"wp:attachment":[{"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=870"}],"wp:term":[{"taxonomy":"helpdesk_category","embeddable":true,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fhelpdesk_category&post=870"},{"taxonomy":"helpie_tag","embeddable":true,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fhelpie_tag&post=870"},{"taxonomy":"helpie_add_tag","embeddable":true,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fhelpie_add_tag&post=870"},{"taxonomy":"helpie_up_tag","embeddable":true,"href":"https:\/\/mcawebservices.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fhelpie_up_tag&post=870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}