5 分钟搞定 Docker 应用登录认证!这款开源神器支持 Google/Github 登录,小白也能玩转

Posted by Mike on 2025-08-18

引言:为什么需要 Tinyauth?

你是否在自建家庭服务器时,为保护 Docker 应用而头疼?想给 Jellyfin、Homer 等应用加个登录屏,却发现 Authelia、Keycloak 这些工具配置复杂、资源占用大?

别急,今天我们要聊的 Tinyauth,就是那个简单到 “让人想尖叫” 的开源神器!它轻量、易用,能在 5 分钟内为你的 Docker 应用加上一层安全防护。

准备好了吗?让我们一起解锁 Tinyauth 的魅力!

Tinyauth 是什么?核心功能一览

Tinyauth 是由 GitHub 用户 steveiliop56 开发的一个开源认证中间件,专为 Docker 应用设计。

它的目标简单粗暴:用最少的配置,为你的应用加上一个登录屏。无论是家庭服务器还是小型项目,Tinyauth 都能让你快速上手。

GitHub 仓库地址:https://github.com/steveiliop56/tinyauth

核心功能:简单就是它的超能力

  1. 一键式登录屏:Tinyauth 提供简洁的用户名/密码登录界面,无需复杂配置。输入用户名和密码,保护你的应用就是这么简单!

  2. OAuth 集成:支持 Google、GitHub 和任何通用 OAuth 提供商登录。想用 Google 账号一键登录?Tinyauth 安排得明明白白!

  3. 兼容主流代理:完美支持 Traefik、Nginx、Caddy 等反向代理,适配你的现有环境。

  4. 轻量高效:基于 Go 语言开发,仅需 20MB 空间,启动快如闪电,资源占用低到你几乎感觉不到它的存在。

  5. 灵活的访问控制:通过环境变量设置白名单,控制谁能访问你的应用。想限制某些用户?Tinyauth 轻松搞定!

  6. HTTP Basic Auth 支持:无需 cookie,直接通过命令行或代码访问应用,开发者的福音!

Tinyauth 的设计哲学是 “极简”。没有数据库,没有繁琐的 YAML 文件,只需几个环境变量,就能让你的应用安全又优雅。

为什么选择 Tinyauth?

想象一下,你花了一整个周末折腾 Authelia,结果还是被复杂的配置文件搞得晕头转向。或者你只是想保护家里的 Plex 服务器,却发现 Keycloak 的设置比你的服务器本身还复杂!

Tinyauth 就是为这样的场景而生。它就像一个贴心的朋友,帮你快速解决问题,让你有更多时间享受自建服务的乐趣。

Reddit 上的自托管爱好者对 Tinyauth 赞不绝口:“花了 20 分钟,Tinyauth 就跑起来了,简单到爆!”还有人说:“终于有个工具不逼我读 500 页文档!”

这些评价是不是让你也心动了?Tinyauth 不仅能满足 IT 从业者的需求,连科技爱好者都能轻松上手。

安装 Tinyauth:5 分钟上手

Tinyauth 的安装过程简单到让人想给它点个赞。下面我们一步步教你如何部署。

环境准备

  • Docker:确保你的系统已安装 Docker 和 Docker Compose。
  • 反向代理:Tinyauth 支持 Traefik、Nginx 或 Caddy,推荐使用 Traefik。
  • 域名:准备一个域名(如 tinyauth.example.com),所有应用需在此域名下。

安装步骤

  1. 拉取 Tinyauth 镜像

    打开终端,运行以下命令拉取最新版本的 Tinyauth 镜像:

    1
    $ docker pull ghcr.io/steveiliop56/tinyauth:v3
  2. 生成密钥

    Tinyauth 需要一个 32 位密钥用于加密。运行以下命令生成:

    1
    $ openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32 && echo

    记下生成的密钥,后面会用到。

  3. 创建用户

    Tinyauth 使用 bcrypt 哈希存储用户密码。运行以下命令创建用户:

    1
    $ docker run -i -t --rm ghcr.io/steveiliop56/tinyauth:v3 user create --interactive

    按照提示输入用户名和密码,生成类似 user:$2a$10$UdLYoJ5lgPsC0RKqYH/jMua7zIn0g9kPqWmhYayJYLaZQ/FTmH2/u 的哈希值。

  4. 配置 Docker Compose

    创建一个 docker-compose.yml 文件,添加以下内容:

    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
    services:
    traefik:
    image: traefik:v3.3
    container_name: traefik
    command: --api.insecure=true --providers.docker
    ports:
    - 80:80
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    whoami:
    image: traefik/whoami:latest
    container_name: whoami
    labels:
    traefik.enable: true
    traefik.http.routers.nginx.rule: Host(`whoami.example.com`)
    traefik.http.routers.nginx.middlewares: tinyauth
    tinyauth:
    image: ghcr.io/steveiliop56/tinyauth:v3
    container_name: tinyauth
    environment:
    - SECRET=你的密钥
    - APP_URL=https://tinyauth.example.com
    - USERS=你的用户名:密码哈希
    labels:
    traefik.enable: true
    traefik.http.routers.tinyauth.rule: Host(`tinyauth.example.com`)
    traefik.http.middlewares.tinyauth.forwardauth.address: http://tinyauth:3000/api/auth/traefik

    将 SECRET 替换为生成的密钥,USERS 替换为用户名和密码哈希,APP_URL 替换为你的域名。

  5. 启动服务

    在 docker-compose.yml 所在目录运行:

    1
    $ docker-compose up -d
  6. 验证安装

    访问 whoami.example.com,你应该被重定向到 Tinyauth 登录页面。输入用户名和密码,登录后即可访问应用。默认用户为 user,密码为 password(仅用于测试,记得更换!)。

使用 Tinyauth:让安全更简单

安装完成后,Tinyauth 的使用就像喝水一样简单。以下是几种常见场景的用法。

  1. 保护单个应用

想保护某个 Docker 应用?只需在应用的 Docker Compose 配置中添加 Traefik 标签:

1
2
labels:
traefik.http.routers.myapp.middlewares: tinyauth

保存并重启服务,访问应用时就会弹出 Tinyauth 登录屏。

  1. 配置 OAuth 登录

想用 Google 或 GitHub 登录?Tinyauth 支持 OAuth,配置也超简单:

  • 获取 OAuth 凭证:在 Google 或 GitHub 开发者控制台创建应用,获取 CLIENT_IDCLIENT_SECRET

  • 更新环境变量:在 docker-compose.yml 中添加:

    1
    2
    3
    environment:
    - GOOGLE_CLIENT_ID=你的 Google 客户端 ID
    - GOOGLE_CLIENT_SECRET=你的 Google 客户端密钥
  • 重启服务:运行 docker-compose up -d,访问登录页面,选择 Google 登录即可。

  1. 设置访问控制

想限制某些用户访问特定应用?在应用的标签中添加白名单:

1
2
3
4
labels:
traefik.http.routers.myapp.middlewares: tinyauth
tinyauth.users: user1,user2
tinyauth.oauth.whitelist: user1@example.com,user2@example.com

未在白名单中的用户将被重定向到 “未授权” 页面。

  1. 使用 HTTP Basic Auth

开发者福利!Tinyauth 支持 HTTP Basic Auth,无需登录页面即可通过命令行访问:

1
$ curl -u user:password https://whoami.example.com

这对脚本和 API 调用特别友好。

进阶技巧:让 Tinyauth 更强大

  • 自定义标题:通过环境变量 APP_TITLE 设置登录页面标题,如 APP_TITLE=我的超级登录屏

  • 调整会话时间:通过 SESSION_EXPIRY 设置 cookie 有效期,单位为秒,默认 7200 秒(2 小时)。

  • 调试日志:设置 LOG_LEVEL=1 启用详细日志,排查问题更轻松。

  • 加入社区:Tinyauth 有一个 Discord 服务器,加入后可以与开发者和其他用户交流,获取最新动态。

Tinyauth 适合谁?

Tinyauth 专为家庭服务器和小型项目设计。如果你需要企业级功能(如复杂权限管理),可能需要 Authelia 或 Keycloak。但对于个人用户或自托管爱好者,Tinyauth 的简单性和高效性无人能敌。

小贴士:在 Docker Compose 中,bcrypt 哈希中的 $ 需要写成 $$,否则 Docker 会误认为是变量。

总结:Tinyauth,简单安全的代名词

Tinyauth 就像一个轻量级 “门卫”,为你的 Docker 应用提供简单而可靠的保护。

无需繁琐配置,几分钟就能搞定登录屏,支持 OAuth、兼容主流代理,简直是自托管爱好者的梦中情人!

无论你是 IT 从业者还是科技爱好者,Tinyauth 都能让你轻松上手,省下时间去享受自建服务的乐趣。

快去试试吧!访问 Tinyauth 官网 查看完整文档,或者加入 Discord 社区 与大家分享你的经验。你的服务器安全,从 Tinyauth 开始!

想让更多人知道这个神器?分享这篇文章到你的朋友圈,或者在 Reddit、X 上晒晒你的 Tinyauth 搭建心得吧!