Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    HAproxy authelia

    Scheduled Pinned Locked Moved pfSense Packages
    11 Posts 2 Posters 3.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • johnpozJ
      johnpoz LAYER 8 Global Moderator @unf0rg0tt3n
      last edited by

      @unf0rg0tt3n said in HAproxy authelia:

      Can I use pfsense haproxy for this kind of workflow?

      I show lua support there.

      [21.05.2-RELEASE][admin@sg4860.local.lan]/root: haproxy -vv | grep Lua
      Built with Lua version : Lua 5.3.6
      

      An intelligent man is sometimes forced to be drunk to spend time with his fools
      If you get confused: Listen to the Music Play
      Please don't Chat/PM me for help, unless mod related
      SG-4860 24.11 | Lab VMs 2.8, 24.11

      U 1 Reply Last reply Reply Quote 0
      • U
        unf0rg0tt3n @johnpoz
        last edited by

        @johnpoz said in HAproxy authelia:

        haproxy -vv | grep Lua

        Thanks, got the same output: Built with Lua version : Lua 5.3.6
        But why do I get those errors, and how to fix them?

        I also installed this: https://freebsd.pkgs.org/12/freebsd-amd64/lua53-luasocket-3.0.r1_5,1.txz.html which I saw in another post (which was his solution)

        johnpozJ 1 Reply Last reply Reply Quote 0
        • johnpozJ
          johnpoz LAYER 8 Global Moderator @unf0rg0tt3n
          last edited by johnpoz

          @unf0rg0tt3n looks like to me just can not find your script - where did you put it?

          I do not use this - but from searching for that json.ula I find a copy here

          [21.05.2-RELEASE][admin@sg4860.local.lan]/: find / -name json.lua
          /usr/local/share/nmap/nselib/json.lua
          [21.05.2-RELEASE][admin@sg4860.local.lan]/: 
          

          For pfsense I see these packages for lua

          [21.05.2-RELEASE][admin@sg4860.local.lan]/: pkg search lua
          lua-resty-core-0.1.21_1        New FFI-based Lua API for OpenResty NGINX Lua modules
          lua-resty-lrucache-0.10        Lua-land LRU cache based on the LuaJIT FFI
          lua52-5.2.4                    Small, compilable scripting language providing easy access to C code
          lua53-5.3.6                    Powerful, efficient, lightweight, embeddable scripting language
          luajit-openresty-2.1.20201027  Just-In-Time Compiler for Lua (OpenResty branch)
          [21.05.2-RELEASE][admin@sg4860.local.lan]/: 
          

          If had to guess, I would think you want to install lua53-5.3.6, vs whatever pkg you installed.

          It is normally not a good idea to install packages direct from the freebsd repositories.. If there is some package you need for pfsense to do something it designed to do but outside normal use, you could request specific packages get added to the pfsense repository.

          I know they have done in the past for some misc packages, etc.

          edit: As I said I don't do any of this stuff, but guessing you might also need the lua53-json package which I do not see listed in the repository..

          An intelligent man is sometimes forced to be drunk to spend time with his fools
          If you get confused: Listen to the Music Play
          Please don't Chat/PM me for help, unless mod related
          SG-4860 24.11 | Lab VMs 2.8, 24.11

          U 1 Reply Last reply Reply Quote 0
          • U
            unf0rg0tt3n @johnpoz
            last edited by

            @johnpoz said in HAproxy authelia:

            @unf0rg0tt3n looks like to me just can not find your script - where did you put it?

            I do not use this - but from searching for that json.ula I find a copy here

            [21.05.2-RELEASE][admin@sg4860.local.lan]/: find / -name json.lua
            /usr/local/share/nmap/nselib/json.lua
            [21.05.2-RELEASE][admin@sg4860.local.lan]/: 
            

            For pfsense I see these packages for lua

            [21.05.2-RELEASE][admin@sg4860.local.lan]/: pkg search lua
            lua-resty-core-0.1.21_1        New FFI-based Lua API for OpenResty NGINX Lua modules
            lua-resty-lrucache-0.10        Lua-land LRU cache based on the LuaJIT FFI
            lua52-5.2.4                    Small, compilable scripting language providing easy access to C code
            lua53-5.3.6                    Powerful, efficient, lightweight, embeddable scripting language
            luajit-openresty-2.1.20201027  Just-In-Time Compiler for Lua (OpenResty branch)
            [21.05.2-RELEASE][admin@sg4860.local.lan]/: 
            

            If had to guess, I would think you want to install lua53-5.3.6, vs whatever pkg you installed.

            It is normally not a good idea to install packages direct from the freebsd repositories.. If there is some package you need for pfsense to do something it designed to do but outside normal use, you could request specific packages get added to the pfsense repository.

            I know they have done in the past for some misc packages, etc.

            I put the lua files in the files section. not the correct path?
            luascript.JPG

            Removed the entry because it didn't wok, but it was there.

            I will try the lua53-5.3.6 package

            johnpozJ 1 Reply Last reply Reply Quote 0
            • johnpozJ
              johnpoz LAYER 8 Global Moderator @unf0rg0tt3n
              last edited by johnpoz

              @unf0rg0tt3n I think what it is looking for is json.lua

              Not your actual lua script.. I think that lua.json is a dependency for your script to work. From the errors you posted, that is what it was looking for that json.lua which it could not find in your path. I show it on my system, but from nmap not anything to do with haproxy, etc. or lua53

              I do show that included in the lua53-json-1.3.4_1.txz package.. But again not normally a good idea to go installing packages straight from freebsd..

              But I do show that package contains json.lua which is what your error was looking for.

              An intelligent man is sometimes forced to be drunk to spend time with his fools
              If you get confused: Listen to the Music Play
              Please don't Chat/PM me for help, unless mod related
              SG-4860 24.11 | Lab VMs 2.8, 24.11

              U 1 Reply Last reply Reply Quote 0
              • U
                unf0rg0tt3n @johnpoz
                last edited by

                @johnpoz I Tried to followup on the json; it can be found in some github repository and needs to be placed inside the "/usr/local/share/lua/5.3/" directory.
                It isn't throwing any errors anymore :)

                johnpozJ 1 Reply Last reply Reply Quote 0
                • johnpozJ
                  johnpoz LAYER 8 Global Moderator @unf0rg0tt3n
                  last edited by

                  @unf0rg0tt3n said in HAproxy authelia:

                  It isn't throwing any errors anymore :)

                  That is good - so it everything you were trying to do now working?

                  An intelligent man is sometimes forced to be drunk to spend time with his fools
                  If you get confused: Listen to the Music Play
                  Please don't Chat/PM me for help, unless mod related
                  SG-4860 24.11 | Lab VMs 2.8, 24.11

                  U 2 Replies Last reply Reply Quote 0
                  • U
                    unf0rg0tt3n @johnpoz
                    last edited by

                    @johnpoz The requirements are met now. Didn't try to run authelia with the acl's yet.

                    1 Reply Last reply Reply Quote 0
                    • U
                      unf0rg0tt3n @johnpoz
                      last edited by

                      @johnpoz So I tried to add the following:

                      global
                          # Path to haproxy-lua-http, below example assumes /usr/local/etc/haproxy/haproxy-lua-http/http.lua
                          lua-prepend-path /usr/local/share/lua/5.3/haproxy-lua-http.lua
                          # Path to haproxy-auth-request
                          lua-load /usr/local/share/lua/5.3/auth-request.lua
                          log stdout format raw local0 debug
                      

                      But when I edit this, I can't really use the web interface anymore because every edit I apply, the file gets overwritten.
                      Don't really know howto add this or every other entry like:

                      # Host ACLs
                          acl protected-frontends hdr(host) -m reg -i ^(?i)(nextcloud)\.example\.com
                          acl protected-frontends-basic hdr(host) -m reg -i ^(?i)(heimdall)\.example\.com
                          acl host-authelia hdr(host) -i auth.example.com
                          acl host-nextcloud hdr(host) -i nextcloud.example.com
                          acl host-heimdall hdr(host) -i heimdall.example.com
                      
                          # This is required if utilising basic auth with /api/verify?auth=basic
                          http-request set-var(txn.host) hdr(Host)
                      
                          http-request set-var(req.scheme) str(https) if { ssl_fc }
                          http-request set-var(req.scheme) str(http) if !{ ssl_fc }
                          http-request set-var(req.questionmark) str(?) if { query -m found }
                      

                      And like this:

                      backend be_nextcloud
                          # Pass Remote-User, Remote-Name, Remote-Email and Remote-Groups headers
                          acl remote_user_exist var(req.auth_response_header.remote_user) -m found
                          acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found
                          acl remote_name_exist var(req.auth_response_header.remote_name) -m found
                          acl remote_email_exist var(req.auth_response_header.remote_email) -m found
                          http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist
                          http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist
                          http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist
                          http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist
                      
                          server nextcloud nextcloud:443 ssl verify none
                      

                      I have like 30+ entries made with the web interface and everything is working great. But I want to secure everything

                      1 Reply Last reply Reply Quote 0
                      • U
                        unf0rg0tt3n
                        last edited by unf0rg0tt3n

                        Got it working like a week ago after a while not thinking about it. For future reference I have created a manual.
                        It was quite hard to find out the what and how. But it can be done from gui.

                        https://dkict.com/pfsense-haproxy-authelia/

                        Pfsense haproxy + authelia

                        1 Reply Last reply Reply Quote 1
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.