posts - 5,comments - 1,views - 15892

安装sentry环境

看了很多安装的文档,有从源码安装的,有直接下载docker image的,但是官网都找不到明显的文档,只能找到self-hosted sentry相关信息,就是从下面这个git工程安装的。

sentry引导工程:
getsentry/self-hosted: Sentry, feature-complete and packaged up for low-volume deployments and proofs-of-concept (github.com)

根据readme文件操作,需要注意的是,建议在安装过程中就创建一个账号,我这里的情况是在进入站点后没有注册功能,只有个请求加入,然后输入邮箱,试了几种邮箱,都收不到邮件,可能要先配置邮件服务,见下。

然后执行docker compose up -d来启动容器,启动之后,就可以进入localhost:9000看看是否成功,否则自行查看docker logs和百度。

端口设置

在仓库主目录下,.env文件
image.png

其中,sentry_bind是绑定端口,直接修改然后docker compose up -d。

邮件服务设置

修改文件,仓库主目录/sentry/config.yml

image.png

我这里是用的飞书的邮件服务,其他公司的邮件服务地址需要自行查找。

mail.username和mail.password是发出邮件的账号和密码,mail.from和mail.username一样,就是发出者。

然后重启容器可以到下面这个页面测试配置是否成功,主要就是看邮件服务主机地址,端口,账号,tsl与ssl的值等信息是否正确。

image.png

然后飞书就会收到一封邮件。
image.png

集成ldap认证

这里也看了很多的博客这些,感觉都没啥用,有些有用,但是不够详细,有些则是老版本的配置。
现在新版的插件是sentry-auth-ldap,有两点需要注意:

  • 容器中需要安装这个插件,
  • 需要修改sentry目录下的配置文件,官方文档描述详细。

sentry-auth-ldap官方文档:sentry-auth-ldap · PyPI

因为需要在容器中安装插件,但是移除容器之后安装的环境就不在了,所以就需要在原有镜像上构建新的镜像。

  1. 进入到self-hosted目录
    image.png

  2. 新建Dockerfile文件,输入以下内容

    FROM getsentry/sentry:nightly
    # 复制 sources.list 文件到镜像的根目录下
    COPY sources.list .
    # 备份
    RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
    # 替换sources.list
    mv sources.list /etc/apt/ && \
    apt-get update && \
    apt-get install -y --no-install-recommends build-essential libldap2-dev libsasl2-dev && \
    pip install sentry-auth-ldap && \
    apt-get purge -y --auto-remove build-essential && \
    rm -r /var/lib/apt/lists/* && \
    mkdir -p /etc/ldap && echo "TLS_CACERT /etc/ssl/certs/ca-certificates.crt" > /etc/ldap/ldap.conf
  3. 在当前目录新建sources.list,填入下列阿里云的镜像源

    deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
    deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
    deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
    deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
    deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
    deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
    deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
    deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
  4. 然后执行docker build命令执行构建,如果有错,自行百度解决

  5. 然后修改docker-compose.yml文件中x-sentry-defaults:image值为上步build出来的镜像名

    image.png

    当然,网上很多文档说的修改.env文件中SENTRY_IMAGE字段的值,但是我验证无效,所以直接改的docker-compose.yml文件里面的值。

  6. 最后需要修改sentry/sentry.conf.py文件,在文件最后加入下面内容,但是注意需要修改的地方

    import ldap
    from django_auth_ldap.config import LDAPSearch, GroupOfUniqueNamesType
    AUTH_LDAP_SERVER_URI = '{your_ldap_url}' // 需要修改
    AUTH_LDAP_BIND_DN = 'cn={your_cn},dc={your_first_dc},dc={your_sencond_dc}' // 需要修改,第一个dc与第二个dc要区分开
    AUTH_LDAP_BIND_PASSWORD = '{your_password}' // 需要修改
    AUTH_LDAP_USER_SEARCH = LDAPSearch(
    'ou=people,dc={your_first_dc},dc={your_sencond_dc}', // 需要修改
    ldap.SCOPE_SUBTREE,
    '(cn=%(user)s)',
    )
    AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    '',
    ldap.SCOPE_SUBTREE,
    '(objectClass=groupOfUniqueNames)'
    )
    AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
    AUTH_LDAP_REQUIRE_GROUP = None
    AUTH_LDAP_DENY_GROUP = None
    AUTH_LDAP_USER_ATTR_MAP = {
    'username': 'cn',
    'email': 'cn'
    }
    AUTH_LDAP_FIND_GROUP_PERMS = True
    AUTH_LDAP_CACHE_GROUPS = True
    AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
    AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = u'Sentry'
    AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'admin'
    AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT = True
    #AUTH_LDAP_ALWAYS_UPDATE_USER = False
    AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
    'owner': ['sysadmins'],
    'admin': ['devleads'],
    'member': []
    }
    AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = True
    AUTH_LDAP_SENTRY_USERNAME_FIELD = 'cn'
    AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (
    'sentry_auth_ldap.backend.SentryLdapBackend',
    )
    import logging
    logger = logging.getLogger('django_auth_ldap')
    logger.addHandler(logging.StreamHandler())
    logger.setLevel('DEBUG')
  7. 重启web-1容器, 验证是否可以登陆

参考文档

posted on   茄子蹲  阅读(727)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示