kheeklab / privacyidea-docker

This is a build environment to build a docker image for privacyIDEA based on official Python image and PrivacyIDEA.
MIT License
34 stars 19 forks source link

config radius server - 500 server internal error #90

Closed jackchuong closed 10 months ago

jackchuong commented 10 months ago

Hi all, My docker-compose.yml

version: '3'

services:
  privacyidea-mariadb:
    image: 'docker.io/bitnami/mariadb:10.4'
    container_name: privacyidea-mariadb
    #ports:
    #  - '3306:3306'
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      #- ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_DATABASE=privacyidea
      - MARIADB_ROOT_PASSWORD=privacyidea
      - MARIADB_USER=privacyidea
      - MARIADB_PASSWORD=privacyidea
    volumes:
      - ./mysqldata:/var/lib/mysql
    networks:
      - privacyidea-net

  privacyidea:
    image: khalibre/privacyidea:v3.9-patch1
    container_name: privacyidea
    ports:
      - '80:80'
    environment:
      - DB_VENDOR=mariadb
      - DB_NAME=privacyidea
      - DB_HOST=privacyidea-mariadb
      - DB_USER=privacyidea
      - DB_PASSWORD=privacyidea
      - SECRET_KEY=suppersecretkey
      - PI_PEPPER=secretworduseforadminencrypt
      - PI_PAGE_TITLE=pivacyIDEA
    depends_on:
      - privacyidea-mariadb
    networks:
      - privacyidea-net

networks:
  privacyidea-net:
    driver: bridge
    name: privacyidea-net

When I try to config radius server at Config --> System --> Radius Servers Capture PNG and error logs from /var/log/privacyidea/privacyidea.log inside privacyidea container

[2023-10-26 05:08:49,583][176][140686357063616][ERROR][privacyidea.app:1891] Exception on /radiusserver/test_request [POST]
Traceback (most recent call last):
  File "/opt/privacyidea/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/privacyidea/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/privacyidea/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/privacyidea/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/opt/privacyidea/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/privacyidea/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/privacyidea/lib/python3.8/site-packages/privacyidea/api/lib/prepolicy.py", line 158, in policy_wrapper
    return wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python3.8/site-packages/privacyidea/lib/log.py", line 146, in log_wrapper
    return func(*args, **kwds)
  File "/opt/privacyidea/lib/python3.8/site-packages/privacyidea/api/radiusserver.py", line 131, in test
    r = test_radius(identifier, server, secret, user, password, port=port,
  File "/opt/privacyidea/lib/python3.8/site-packages/privacyidea/lib/log.py", line 146, in log_wrapper
    return func(*args, **kwds)
  File "/opt/privacyidea/lib/python3.8/site-packages/privacyidea/lib/radiusserver.py", line 263, in test_radius
    return RADIUSServer.request(s, user, password)
  File "/opt/privacyidea/lib/python3.8/site-packages/privacyidea/lib/radiusserver.py", line 104, in request
    dict=Dictionary(r_dict))
  File "/opt/privacyidea/lib/python3.8/site-packages/pyrad/dictionary.py", line 164, in __init__
    self.ReadDictionary(dict)
  File "/opt/privacyidea/lib/python3.8/site-packages/pyrad/dictionary.py", line 369, in ReadDictionary
    fil = dictfile.DictFile(file)
  File "/opt/privacyidea/lib/python3.8/site-packages/pyrad/dictfile.py", line 54, in __init__
    self.__ReadNode(fil)
  File "/opt/privacyidea/lib/python3.8/site-packages/pyrad/dictfile.py", line 65, in __ReadNode
    fd = open(fname, "rt")
FileNotFoundError: [Errno 2] No such file or directory: '/etc/privacyidea/dictionary'

There is no directory /etc/privacyidea/dictionary at /etc/privacyidea/ inside privacyidea container

ls /etc/privacyidea/
pi.cfg

What should I do ?

mr-ssd commented 10 months ago

@jackchuong first you need to mount dictionary file to PI in /etc/privacyidea/dictionary you can create your own dictionary or from https://github.com/privacyidea/privacyidea/blob/master/tests/testdata/dictionary or https://github.com/FreeRADIUS/freeradius-client/blob/master/etc/dictionary

please consult https://github.com/Khalibre/privacyidea-docker?tab=readme-ov-file#providing-files-to-the-container for mount file in to PI

hope this will help

mr-ssd commented 10 months ago

@jackchuong ⭐ If you like this project and find it useful, please consider starring it on GitHub to help me reach more people and get feedback.