
Tinyauth
支持流行的代理服务器,但老苏没用过Traefik
和Caddy
,所以本文只关注Nginx Proxy Manager
。- 本文假定您有
Nginx Proxy Manager
方面的经验,如果还没有的话,建议先看看老苏之前的相关文章。 - 从功能上来说,和
Authelia
差不多,但是更简单一些。
简介
什么是 Tinyauth ?
Tinyauth
是一个简单的身份验证中间件,旨在为Docker
应用程序添加登录屏幕或OAuth
功能,支持GitHub
及其他提供商。它可以与流行的代理服务器(如Traefik
、Nginx
和Caddy
)无缝集成。
主要特点
- 简易集成 :
Tinyauth
提供简单的配置,可以轻松将身份验证功能添加到现有的Docker
应用中。 - 多种身份验证方式 :支持传统的登录屏幕以及
OAuth
登录,提供灵活的身份验证选项。 - 兼容多种代理 :与
Traefik
、Nginx
和Caddy
等主流代理服务器兼容,方便用户在不同环境中使用。 - 活跃开发 :
Tinyauth
在不断更新和改进中,用户可以关注发布说明以获取最新功能和修复。 - 文档和示例 :提供详细的文档和
Docker Compose
示例,帮助用户快速上手。 - 社区支持 :拥有
Discord
服务器,用户可以在这里讨论自托管、家庭实验室以及Tinyauth
的相关话题。
应用场景
- 自托管应用:适合需要保护自托管服务的用户,通过添加登录屏幕来限制访问。
- 家庭实验室:在个人项目或实验室环境中使用,确保只有授权用户可以访问特定服务。
- 小型商业应用:可用于小型商业项目,保护应用程序的访问权,确保数据安全。
- 开发测试环境:在开发和测试环境中使用,方便开发者在不同阶段进行身份验证测试。

通过这些特点和应用场景,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