Coder Social home page Coder Social logo

johnfmorton / traefik-for-laravel-forge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ijpatricio/traefik-for-forge

1.0 0.0 2.0 49 KB

Use Traefik on Laravel Forge. Defines "proxy" network for other services to use.

Home Page: https://analytics.jmx.dev/supergeekery.com

License: MIT License

Shell 100.00%
docker docker-compose laravel-forge traefik plausible-analytics

traefik-for-laravel-forge's Introduction

Traefik Proxy for Laravel Forge

Laravel Forge Site Deployment Status

Traefik Proxy will help you get routing configured on your server between multiple services.

This repo is a fork of ijpatricio/traefik-for-forge, so be sure to check that out. There is an original blog post that accompanied that repo, https://blog.jpat.dev/how-to-deploy-docker-applications-with-laravel-forge, that gives a great overview of how to set up Traefik on Laravel Forge. That post was very helpful in getting Traefik working on Laravel Forge.

However, the post didn't allow me to get Plausible Analytics working with Traefik.

The TLDR was that Traefik and Plausible were not always defaulting to use the same network and specifying the network names solved the issue.

This forked repo is an attempt to share what I discovered when getting Plausible to work with Traefik. This repo shows how I have Traefik configured to run on Laravel Forge.

The accompanying blog post

For a complete write-up on using this repo, read Analytics a different way. Plausible Analytics on Laravel Forge with Traefik and Docker.

Getting started

If you're just going to dive right in without reading the original post, be sure to set up the most basic server in Laravel Forge, a Worker Server, because it will have only minimal services installed. You'll need to install Docker and Docker Compose on your server. I've included a Laravel Forge Recipe that you can use to install Docker and Docker Compose. See the Laravel Forge preparation section below for more details.

Another repo that I created for testing purposes is available at johnfmorton/example-static-docker-website-for-traefik. This is the repo I used during my debugging process. It's a very basic static website that I used to test Traefik routing. It displays a "Hello World" message if you can successfully reach it. This repo was useful because it helped me prove to myself that my Traefik Proxy was working correctly. Notice the references to the proxy network in the docker-compose.yml of that repo.

Lastly, you'll probably also want to check out the accompanying repo for Plausbile Analytics, johnfmorton/plausible-with-traefik-update-for-laravel-forge. Specifically, check out the Traefik reverse proxy file in that repo where you will find refereces to the proxy network defined in this Traefik repo.

Laravel Forge preparation

This Traefik Proxy repo assumes you have Docker installed already. If you don't, you can install it with the following set of commands. You run them as root user. The commands are ideally set up as a Recipe in Laravel Forge so that you can reuse them across multiple servers.

# Recipe Name: Install Docker and Docker-Compose
# Run as user: root
# Recipe:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
UBUNTU_VERSION=$(lsb_release -cs)
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $UBUNTU_VERSION stable"
apt-cache policy docker-ce
sudo apt install -y docker-ce
systemctl status docker
usermod -aG docker forge
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
chmod +x /usr/local/bin/docker-compose

This is a slight modification of the original version of the script. I've added the sudo to add the apt install -y docker-ce line for consistency with the other sudo app install commands in the script. But, since the user for this script is root, I think you could potentially eliminate all use of sudo in the script entirely, but I did not try that in my tests. The updated script is also available in this repo.

DNS setup

You will need to set up DNS to point your domain name with an A record to your server you've created with Laravel Forge. For example, traefik.yourdomain.com should point to your server's IP address.

Setting up the .env file

In the .env file, set TRAEFIK_DASHBOARD_HOST to this domain name. For example, analytics.yourdomain.com. No https:// or http:// is needed. This is the URL were you Traefik dashboard will be available.

The LETS_ENCRYPT_EMAIL is the email address that will be used to register your SSL certificate with Let's Encrypt. This is required for Traefik to work.

The REDIRECT_IP_ADDRESS_TO_URL is a URL that will be used as a catch-all if someone tries to visit your IP address.

See the example.env for reference.

Other repositories

As mentioned in the intro, there is an accompanying repo for Plausible Analytics. I also created a basic static website repo for testing purposes. Here are links to both repos.

  1. The Plausible Analytics docker-compose file that hosts the Plausible Analytics service. It has been modified slightly to work with Traefik. https://github.com/johnfmorton/plausible-with-traefik-update-for-laravel-forge
  2. A basic static website that is used as an example for Traefik to route to https://github.com/johnfmorton/example-static-docker-website-for-traefik. This is the repo I used during my debugging process. It's a very basic static website that I used to test Traefik routing. It displays a "Hello World" message if you can successfully reach it.

Reference links

I referenced and borrowed from all of the following links. I'm grateful the authors have all shared their knowledge.

Additional notes

The original README from the Traefik repository is below. The command sets up the basic auth used to protect your Traefik dashboard.

Original instructions from forked repo

Step 1. Deploy Script Refer to (deploy script)[./Taskfile], in function baseDeployScript

Step 2. Configure ENV variables, and set Traefik Dashboard password !!! Recommended doing via SSH, even you could fdo it from Forge's UI "Run command"

./Taskfile copyEnv
./Taskfile auth username password

License

The source code for the site is licensed under the MIT license, which you can find in the MIT-LICENSE.txt file.

traefik-for-laravel-forge's People

Contributors

ijpatricio avatar johnfmorton avatar

Stargazers

 avatar

Forkers

angelgnz maxxima

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.