简单的身份验证中间件Tinyauth

  1. Tinyauth 支持流行的代理服务器,但老苏没用过 TraefikCaddy,所以本文只关注 Nginx Proxy Manager
  2. 本文假定您有 Nginx Proxy Manager 方面的经验,如果还没有的话,建议先看看老苏之前的相关文章。
  3. 从功能上来说,和 Authelia 差不多,但是更简单一些。

简介

什么是 Tinyauth ?

Tinyauth 是一个简单的身份验证中间件,旨在为 Docker 应用程序添加登录屏幕或 OAuth 功能,支持 GoogleGitHub 及其他提供商。它可以与流行的代理服务器(如 TraefikNginxCaddy)无缝集成。

主要特点

  1. 简易集成Tinyauth 提供简单的配置,可以轻松将身份验证功能添加到现有的 Docker 应用中。
  2. 多种身份验证方式 :支持传统的登录屏幕以及 OAuth 登录,提供灵活的身份验证选项。
  3. 兼容多种代理 :与 TraefikNginxCaddy 等主流代理服务器兼容,方便用户在不同环境中使用。
  4. 活跃开发Tinyauth 在不断更新和改进中,用户可以关注发布说明以获取最新功能和修复。
  5. 文档和示例 :提供详细的文档和 Docker Compose 示例,帮助用户快速上手。
  6. 社区支持 :拥有 Discord 服务器,用户可以在这里讨论自托管、家庭实验室以及 Tinyauth 的相关话题。

应用场景

  1. 自托管应用:适合需要保护自托管服务的用户,通过添加登录屏幕来限制访问。
  2. 家庭实验室:在个人项目或实验室环境中使用,确保只有授权用户可以访问特定服务。
  3. 小型商业应用:可用于小型商业项目,保护应用程序的访问权,确保数据安全。
  4. 开发测试环境:在开发和测试环境中使用,方便开发者在不同阶段进行身份验证测试。

通过这些特点和应用场景,Tinyauth 为用户提供了一种简便有效的方式,以确保应用程序的安全性。

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 v3.6.1

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

bash 复制代码
# 运行容器
docker run -d \
   --restart unless-stopped \
   --name tinyauth \
   -p 2082:3000 \
   -e SECRET=btgACbwsScYZwa6RnP75P9Hu9q8EjV3o \
   -e APP_URL=https://tinyauth.laosu.tech \
   -e USERS=user:$$2a$$10$$UdLYoJ5lgPsC0RKqYH/jMua7zIn0g9kPqWmhYayJYLaZQ/FTmH2/u
   ghcr.io/steveiliop56/tinyauth
可变
SECRET Tinyauth 用于加密 Cookie 的密钥,可以用一个随机字符串,可以用 openssl rand -base64 32 生成
APP_URL Tinyauth 用于重定向和 Cookie 域的 URL,为反代后的地址,后面会提到
USERS Tinyauth 用户列表,以逗号分隔。格式为: user1:password1,user2:password2。密码使用了 bcrypt 加密

特别说一下,创建用户可以使用 Tinyauth CLI

bash 复制代码
docker run -i -t --rm ghcr.io/steveiliop56/tinyauth user create --interactive

依次输入用户、密码,请确保在 docker 的格式中选择 yes 。最后会得到一串值,可以用于 USERS

如果有多个用户,可以重复上面的操作

更多的环境变量,可以参考官方的文档: https://tinyauth.app/docs/reference/configuration

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

yaml 复制代码
version: '3'

services:
  tinyauth:
    container_name: tinyauth
    image: ghcr.io/steveiliop56/tinyauth
    restart: unless-stopped
    ports:
      - 2082:3000
    environment:
      - SECRET=btgACbwsScYZwa6RnP75P9Hu9q8EjV3o
      - APP_URL=https://tinyauth.laosu.tech
      - USERS=user:$$2a$$10$$UdLYoJ5lgPsC0RKqYH/jMua7zIn0g9kPqWmhYayJYLaZQ/FTmH2/u # user:password

然后执行下面的命令

bash 复制代码
# 新建文件夹 tinyauth 和 子目录
mkdir -p /volume1/docker/tinyauth

# 进入 tinyauth 目录
cd /volume1/docker/

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:2082 就能看到登录界面,但这不是 Tinyauth 的用法,只是证明服务运行正常

Tinyauth 的反代

首先要将 Tinyauth 做反代

域名 局域网地址 备注
tinyauth.laosu.tech http://192.168.0.199:2082 tinyauth 的访问地址

【重要】:必须确保 Block Common Exploits (阻止常见漏洞) 处于禁用状态。如果启用,nginx 将不允许查询参数中的 URL,而这是 Tinyauth 运行所必需的。

受保护应用的反代

机器上有一个测速的软件,正好可以用来测试

域名 局域网地址 备注
sp.laosu.tech http://192.168.0.199:8180 speedtest 的访问地址

这个和往常一样,可以启用 Block Common Exploits

需要设置 Advanced

nginx 复制代码
# Root location
location / {
  # Pass the request to the app
  proxy_pass          $forward_scheme://$server:$port;

  # Add other app specific config here

  # Tinyauth auth request
  auth_request /tinyauth;
  error_page 401 = @tinyauth_login;
}

# Tinyauth auth request
location /tinyauth {
  # Pass request to Tinyauth
  proxy_pass http://192.168.0.199:2082/api/auth/nginx;

  # Pass the request headers
  proxy_set_header x-forwarded-proto $scheme;
  proxy_set_header x-forwarded-host $http_host;
  proxy_set_header x-forwarded-uri $request_uri;
}

# Tinyauth login redirect
location @tinyauth_login {
  return 302 https://tinyauth.laosu.tech/login?redirect_uri=$http_x_forwarded_proto://$http_host$request_uri; # Make sure to replace the https://tinyauth.laosu.tech with your own app URL
}

上面代码有 2 处需要根据自己的实际情况修改

  • http://192.168.0.199:2082/api/auth/nginx:这是 Tinyauth 的局域网地址 + /api/auth/nginx,所以前面的局域网地址,需要根据你自己的进行修改;
  • https://tinyauth.laosu.tech/login?redirect_uri: 这是 Tinyauth 反代之后的地址 + login?redirect_uri,所以前面的反代地址,也需要根据你自己的进行修改;

效果测速

浏览器中输入 https://sp.laosu.tech 会跳转为https://tinyauth.laosu.tech/login?redirect_uri=https://sp.laosu.tech/

登录成功

需要点一次 继续

现在才是软件的主界面

参考文档

steveiliop56/tinyauth: The simplest way to protect your apps with a login screen.

地址:https://github.com/steveiliop56/tinyauth
Tinyauth

地址:https://tinyauth.app/
Tinyauth with Nginx Proxy Manager | Tinyauth

地址:https://tinyauth.app/docs/guides/nginx-proxy-manager/

相关推荐
小小洋洋15 小时前
OpenWrt 从U盘迁移到内置 eMMC,并完成扩容与 Docker 安装
java·docker·eureka
Eloudy16 小时前
docker build 与 docker buildx build 的应用场景
docker·构建
瞬间&永恒~16 小时前
【Docker】(三)联合文件系统UnionFS + Overlay2
docker·云原生·容器
数据知道19 小时前
主机入侵检测(HIDS):OSSEC / Wazuh 部署与规则编写
安全·网络安全·docker
逐光老顽童20 小时前
第 5 章:搞懂 K8s Service:从 ClusterIP 到负载均衡
docker·云原生·容器
数智工坊20 小时前
Conda 环境 Docker 标准化迁移完整方案,适配深度学习 GPU 训练
深度学习·docker·conda
花生了什么事o1 天前
Docker 部署 SpringBoot:从镜像构建到服务器运行
服务器·spring boot·docker
Eloudy1 天前
国内加速 docker pull 下载 docker images,特别是 nvidia 的cuda image
docker·gpu·rdma
Chief_fly1 天前
ARM 麒麟系统服务器构建docker镜像
运维·服务器·docker
yj_xqj2 天前
Docker 基础应用与介绍
运维·docker·容器