คู่มือฉบับสมบูรณ์สำหรับการติดตั้งและกำหนดค่า Authelia ด้วย Docker

อัปเดตล่าสุด: 02/09/2026

  • การติดตั้งนี้ใช้ Docker Compose, ผู้ใช้ภายในเครื่อง และพื้นที่จัดเก็บข้อมูลผ่าน SQLite
  • ข้อมูลลับควรเก็บไว้นอกไฟล์ YAML และจัดเก็บไว้ในรูปแบบไฟล์ที่มีการป้องกัน
  • โฟลเดอร์การตั้งค่าจะเก็บรักษาผู้ใช้ ฐานข้อมูล และการแจ้งเตือนไว้ระหว่างการอัปเดต
  • SQLite เหมาะสำหรับระบบที่มีอินสแตนซ์เดียว ในขณะที่ PostgreSQL เหมาะสำหรับระบบที่มีความพร้อมใช้งานสูง
วิธีการติดตั้ง Authelia ด้วย Docker Compose ทีละขั้นตอน

หากคุณมีแอปพลิเคชันหลายตัวที่โฮสต์อยู่บนเซิร์ฟเวอร์เดียวกัน การจัดการการเข้าสู่ระบบแต่ละครั้งแยกกันอาจกลายเป็นเรื่องยุ่งยากมาก นอกจากนี้ การเปิดเผยแดชบอร์ดภายในที่ได้รับการป้องกันด้วยรหัสผ่านเพียงอย่างเดียว จะเพิ่มความเสี่ยงที่บุคคลอื่นจะเข้าถึงได้ผ่านข้อมูลประจำตัวที่รั่วไหลหรือการโจมตีอัตโนมัติ

วิธีหนึ่งในการเสริมสร้างโครงสร้างพื้นฐานนี้คือ ติดตั้ง Authelia ด้วย Dockerแพลตฟอร์มโอเพนซอร์สนี้ทำหน้าที่เป็นเกตเวย์การตรวจสอบสิทธิ์แบบรวมศูนย์ และช่วยให้คุณสามารถเพิ่มการเข้าสู่ระบบครั้งเดียว (Single Sign-On), นโยบายการเข้าถึง และการตรวจสอบสิทธิ์แบบหลายปัจจัย (Multi-Factor Authentication) ให้กับแอปพลิเคชันที่อยู่เบื้องหลังพร็อกซีแบบย้อนกลับได้

ในคู่มือนี้ เราจะทำการติดตั้งระบบอย่างง่ายสำหรับเซิร์ฟเวอร์เครื่องเดียว โดยใช้ Docker Compose, ข้อมูลผู้ใช้ที่จัดเก็บไว้ในไฟล์ และฐานข้อมูล SQLiteการตั้งค่าพร็อกซีขั้นสูง กฎเกณฑ์ และการตรวจสอบสิทธิ์แบบสองขั้นตอน จะได้รับการอธิบายแยกต่างหาก เพื่อหลีกเลี่ยงการผสมผสานวัตถุประสงค์ที่แตกต่างกัน

สิ่งที่คุณต้องใช้ในการติดตั้ง Authelia ด้วย Docker

สิ่งที่คุณต้องใช้ในการติดตั้ง Authelia ด้วย Docker

ก่อนเริ่มต้น คุณต้องมีเซิร์ฟเวอร์ Linux ที่มี Docker Engine และปลั๊กอิน Docker Compose ติดตั้งเสร็จแล้ว คุณยังต้องมีสิทธิ์ในการสร้างโฟลเดอร์ เครือข่าย และคอนเทนเนอร์ด้วย

เพื่อให้พอร์ทัลการตรวจสอบสิทธิ์ทำงานได้อย่างถูกต้องในเบราว์เซอร์ของคุณ คุณจะต้องมีสิ่งต่อไปนี้:

  • Un โดเมนหรือโดเมนย่อยที่ถูกต้อง, เช่น auth.ejemplo.com.
  • โปรแกรมพร็อกซีแบบย้อนกลับ เช่น Nginx Proxy Manager, Traefik, Caddy หรือ Nginx
  • จำเป็นต้องมีใบรับรอง TLS ที่ถูกต้องเพื่อเข้าถึงผ่าน HTTPS.
  • เครือข่าย Docker ที่ใช้งานร่วมกันระหว่าง Authelia และพร็อกซีแบบย้อนกลับ

Authelia สามารถสื่อสารกับพร็อกซีผ่าน HTTP ภายในเครือข่ายส่วนตัวของ Docker ได้ จำเป็นต้องใช้การเข้ารหัส HTTPS กับการเชื่อมต่อที่เข้าถึงพร็อกซีจากเบราว์เซอร์ ดังนั้น ไม่จำเป็นต้องตั้งค่า TLS ภายในคอนเทนเนอร์เอง.

คู่มือนี้ใช้ SQLite เนื่องจากเป็นตัวเลือกที่เหมาะสมสำหรับอินสแตนซ์เดียว หากคุณต้องการสำเนาหลายชุดหรือความพร้อมใช้งานสูง คุณควรใช้ PostgreSQL หรือ MySQL และกำหนดค่า Redis เป็นที่เก็บข้อมูลเซสชันที่ใช้ร่วมกัน

วิธีการเตรียมโฟลเดอร์ Docker และเครือข่าย

เริ่มต้นด้วยการสร้างโฟลเดอร์เฉพาะเพื่อป้องกันไม่ให้การตั้งค่าปะปนกับคอนเทนเนอร์อื่นๆ:

mkdir -p authelia/config authelia/secrets
cd authelia

ขั้นตอนต่อไป ให้สร้างเครือข่ายภายนอกที่จะใช้พร็อกซีแบบย้อนกลับด้วยเช่นกัน:

docker network create proxy

คุณต้องรันคำสั่งนี้เพียงครั้งเดียวเท่านั้น หากเครือข่ายมีอยู่แล้ว Docker จะแสดงการแจ้งเตือน และคุณสามารถดำเนินการติดตั้งต่อได้

โครงสร้างสุดท้ายจะมีลักษณะคล้ายกับนี้:

authelia/
├── docker-compose.yml
├── .env
├── config/
│   ├── configuration.yml
│   └── users_database.yml
└── secrets/
    ├── JWT_SECRET
    ├── SESSION_SECRET
    └── STORAGE_ENCRYPTION_KEY

ปริมาณ config ระบบจะจัดเก็บการตั้งค่า ผู้ใช้ และฐานข้อมูล SQLite ด้วยคุณสมบัติการจัดเก็บข้อมูลแบบถาวรนี้ ข้อมูลจะไม่หายไปเมื่อสร้างคอนเทนเนอร์ใหม่หรืออัปเดตคอนเทนเนอร์.

เนื้อหาพิเศษ - คลิกที่นี่  วิธีเริ่มใช้งาน PS5 ในโหมดปลอดภัย

วิธีสร้างความลับของออเทเลีย

Authelia ต้องการสตริงแบบสุ่มหลายชุดเพื่อปกป้องเซสชัน พื้นที่จัดเก็บ และกระบวนการกู้คืนรหัสผ่าน คุณสามารถสร้างสตริงเหล่านี้ได้ด้วย OpenSSL:

openssl rand -hex 64 > secrets/JWT_SECRET
openssl rand -hex 64 > secrets/SESSION_SECRET
openssl rand -hex 64 > secrets/STORAGE_ENCRYPTION_KEY
chmod 600 secrets/*

ไม่ควรเขียนค่าเหล่านี้ลงไปโดยตรง configuration.ymlเราจะติดตั้งไฟล์เหล่านั้นเป็นไฟล์อ่านอย่างเดียว และใช้ตัวแปรที่ลงท้ายด้วย _FILE เพื่อให้ออเทเลียสามารถอ่านได้

เป็นสิ่งสำคัญ ห้ามกำหนดความลับเดียวกันโดยใช้สองวิธีที่แตกต่างกันหากค่าปรากฏพร้อมกันทั้งในไฟล์ YAML และในตัวแปร _FILEAuthelia จะหยุดกระบวนการบูตเพื่อหลีกเลี่ยงการตั้งค่าที่ไม่ชัดเจน

วิธีการสร้างไฟล์ Docker Compose สำหรับ Authelia

ขั้นแรก ตรวจสอบชื่อผู้ใช้และกลุ่มของคุณ:

id -u
id -g

สร้างไฟล์ .env และแทนที่ตัวเลขหากรหัสประจำตัวของคุณแตกต่างกัน:

AUTHELIA_UID=1000
AUTHELIA_GID=1000
TZ=Europe/Madrid

ขั้นตอนต่อไปคือการสร้างไฟล์ docker-compose.yml:

services:
  authelia:
    image: docker.io/authelia/authelia:latest
    container_name: authelia
    restart: unless-stopped
    user: "${AUTHELIA_UID}:${AUTHELIA_GID}"

    environment:
      TZ: "${TZ}"
      AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: /secrets/JWT_SECRET
      AUTHELIA_SESSION_SECRET_FILE: /secrets/SESSION_SECRET
      AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: /secrets/STORAGE_ENCRYPTION_KEY

    volumes:
      - ./config:/config
      - ./secrets:/secrets:ro

    networks:
      - proxy

    expose:
      - "9091"

    ports:
      - "127.0.0.1:9091:9091"

networks:
  proxy:
    external: true

พอร์ต 9091 เชื่อมต่อกับเพียงพอร์ตเดียวเท่านั้น 127.0.0.1ดังนั้น ระบบจะไม่เปิดเผยข้อมูลสู่ภายนอกโดยตรงทางอินเทอร์เน็ตหรือเครือข่ายภายในอื่นๆ พร็อกซีจะสามารถสื่อสารกับบริการได้โดยใช้ที่อยู่ภายใน http://authelia:9091.

เมื่อคุณทำการผสานรวมเข้ากับพร็อกซีเสร็จเรียบร้อยแล้ว คุณสามารถลบส่วนนั้นออกได้อย่างสมบูรณ์ portsคำสั่ง expose วิธีนี้ก็เพียงพอแล้ว ตราบใดที่คอนเทนเนอร์ทั้งสองใช้เครือข่ายร่วมกัน proxy.

สำหรับสภาพแวดล้อมการผลิต คุณสามารถเปลี่ยนได้เช่นกัน latest โดย a เวอร์ชันเสถียรเฉพาะเพื่อหลีกเลี่ยงการอัปเดตที่ไม่คาดคิดเมื่อดาวน์โหลดรูปภาพอีกครั้ง

วิธีการตั้งค่า Authelia กับ Nginx Proxy Manager ทีละขั้นตอน
บทความที่เกี่ยวข้อง:
วิธีการตั้งค่า Authelia กับ Nginx Proxy Manager ทีละขั้นตอน

วิธีเตรียมการตั้งค่า Authelia ขั้นต่ำ

สร้างไฟล์ config/configuration.yml ด้วยเนื้อหาต่อไปนี้ แทนที่ ejemplo.com สำหรับโดเมนของคุณ:

theme: auto

server:
  address: "tcp://:9091/"

log:
  level: info

authentication_backend:
  file:
    path: /config/users_database.yml
    watch: false
    password:
      algorithm: argon2

access_control:
  default_policy: deny

session:
  cookies:
    - domain: ejemplo.com
      authelia_url: https://auth.ejemplo.com
      default_redirection_url: https://ejemplo.com

storage:
  local:
    path: /config/db.sqlite3

notifier:
  filesystem:
    filename: /config/notification.txt

นโยบายเริ่มต้น deny ระบบจะปิดแอปพลิเคชันทั้งหมดจนกว่าคุณจะเพิ่มกฎที่กำหนดไว้อย่างชัดเจน ซึ่งเป็นไปตามหลักการดังต่อไปนี้ หลักการปฏิเสธโดยปริยาย และลดความเสี่ยงที่จะทำให้บริการไม่สามารถเข้าถึงได้เนื่องจากความประมาทเลินเล่อ

ระบบแจ้งเตือนแบบไฟล์มีประโยชน์ในระหว่างการทดสอบ เนื่องจากจะบันทึกลิงก์การลงทะเบียนและการกู้คืนลงในไฟล์ notification.txtอย่างไรก็ตาม สำหรับการใช้งานขั้นสุดท้าย คุณควรตั้งค่า SMTP เนื่องจาก ระบบแจ้งเตือนแบบไฟล์ไม่เหมาะสำหรับการใช้งานจริง.

เนื้อหาพิเศษ - คลิกที่นี่  ลูกเล่นคำศัพท์

ควรเพิ่มกฎเกณฑ์เฉพาะในภายหลัง โดยปฏิบัติตามคู่มือที่กำหนดไว้ กำหนดค่ากฎการเข้าถึงใน Authelia โดยไม่ทำให้การติดตั้งนี้กลายเป็นบทความที่ยาวเกินไป

วิธีสร้างผู้ใช้ Authelia คนแรก

รหัสผ่านของระบบจัดการไฟล์ต้องถูกจัดเก็บโดยใช้แฮชที่ปลอดภัย โปรดเรียกใช้ตัวสร้างรหัสผ่านที่รวมอยู่ในอิมเมจอย่างเป็นทางการ:

docker run --rm -it docker.io/authelia/authelia:latest authelia crypto hash generate argon2

ป้อนรหัสผ่านเมื่อคำสั่งถาม บรรทัดที่มีชื่อว่า "password" จะปรากฏในผลลัพธ์ Digestคัดลอกเฉพาะแฮชที่ขึ้นต้นด้วย $argon2id$โดยไม่รวมคำนั้น Digest:.

จากนั้น สร้าง config/users_database.yml:

users:
  maria:
    disabled: false
    displayname: "María"
    password: "$argon2id$v=19$m=65536,t=3,p=4$SUSTITUYE_ESTE_VALOR"
    email: "[email protected]"
    groups:
      - "admins"

ป้องกันไฟล์เพื่อป้องกันไม่ให้ผู้ใช้รายอื่นบนเซิร์ฟเวอร์อ่านไฟล์นั้น:

chmod 600 config/users_database.yml

ถึงแม้ไฟล์ดังกล่าวจะไม่มีรหัสผ่านต้นฉบับ แต่ค่าแฮชก็ยังคงเป็นข้อมูลที่ละเอียดอ่อนอยู่ดี ไม่ควรเผยแพร่ในแหล่งเก็บข้อมูลหรือแบ่งปันโดยไม่จำเป็น.

วิธีตรวจสอบและเริ่มต้นใช้งาน Authelia

ก่อนเริ่มใช้งานคอนเทนเนอร์ โปรดตรวจสอบโครงสร้างของไฟล์ Compose ก่อน:

docker compose config

ขั้นตอนต่อไป ใช้เครื่องมือตรวจสอบความถูกต้องของ Authelia เพื่อตรวจหาคุณสมบัติที่ไม่รู้จัก ข้อผิดพลาดทางไวยากรณ์ หรือการกำหนดค่าที่ไม่เข้ากัน:

docker compose run --rm authelia authelia config validate --config /config/configuration.yml

หากการตรวจสอบความถูกต้องเสร็จสมบูรณ์โดยไม่มีปัญหา ให้เริ่มให้บริการ:

docker compose up -d

ตรวจสอบสถานะและดูบันทึกต่างๆ:

docker compose ps
docker compose logs -f authelia

คอนเทนเนอร์ควรแสดงสถานะว่าเริ่มต้นทำงานแล้ว และหลังจากตรวจสอบภายในเสร็จสิ้น ควรแสดงสถานะว่าทำงานได้ปกติ หากคอนเทนเนอร์เข้าสู่สถานะรีบูตอย่างต่อเนื่อง บันทึกการทำงานมักจะระบุว่าคีย์ ไฟล์ หรือสิทธิ์ใดที่ทำให้เกิดความล้มเหลว

วิธีตรวจสอบว่า Authelia ทำงานได้หรือไม่

ก่อนทำการกำหนดค่าแอปพลิเคชันใดๆ โปรดตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ตอบสนองในเครื่องบนพอร์ต 9091 และพร็อกซีสามารถระบุชื่อได้ authelia ภายในเครือข่ายที่ใช้ร่วมกัน

โดยปกติแล้วควรเข้าถึงผ่าน URL เช่น:

https://auth.ejemplo.com

โดเมนย่อยต้องชี้ไปยังรีเวิร์สพร็อกซีและมีใบรับรองที่ถูกต้อง Authelia ต้องการ URL แบบ HTTPS และโดเมนที่เบราว์เซอร์ยอมรับเพื่อสร้างคุกกี้เซสชันได้อย่างถูกต้อง ไม่สามารถใช้ localhost เป็นโดเมนสุดท้ายสำหรับพอร์ทัลได้.

เมื่อหน้าจอเข้าสู่ระบบปรากฏขึ้น ให้เข้าสู่ระบบด้วยผู้ใช้ที่คุณสร้างไว้ก่อนหน้านี้ การลงทะเบียน TOTP, WebAuthn หรือปัจจัยอื่นๆ จะขึ้นอยู่กับนโยบายที่คุณกำหนดค่าในภายหลังและระบบแจ้งเตือนที่คุณเลือก

เนื้อหาพิเศษ - คลิกที่นี่  ฉันจะคัดลอกฮาร์ดไดรฟ์โดยใช้ Macrium Reflect Free ได้อย่างไร?

จากตรงนี้คุณสามารถ ปกป้องแอปพลิเคชันด้วย Autheliaเชื่อมต่อกับรีเวิร์สพร็อกซีหรือ ตั้งค่า OpenID Connect ใน Authelia สำหรับแอปพลิเคชันที่สอดคล้องกับมาตรฐาน OIDC

วิธีการอัปเดต Authelia ด้วย Docker Compose

ก่อนทำการอัปเดต โปรดคัดลอกโฟลเดอร์เหล่านั้นก่อน config y secretsหากคุณใช้ SQLite วิธีที่ปลอดภัยที่สุดคือการหยุดคอนเทนเนอร์ชั่วคราวก่อนคัดลอกฐานข้อมูล:

docker compose stop authelia
cp -a config "config-backup-$(date +%F-%H%M)"
cp -a secrets "secrets-backup-$(date +%F-%H%M)"

ขั้นตอนต่อไป ดาวน์โหลดอิมเมจและสร้างบริการขึ้นใหม่:

docker compose pull
docker compose up -d

สุดท้ายนี้ โปรดตรวจสอบบันทึกเพื่อยืนยันว่าการย้ายข้อมูลและการตรวจสอบเสร็จสมบูรณ์เรียบร้อยแล้ว:

docker compose logs --tail=100 authelia

ก่อนอัปเกรดระหว่างเวอร์ชันหลัก ขอแนะนำให้ตรวจสอบบันทึกการเปลี่ยนแปลงก่อน ห้ามลบไดรฟ์กำหนดค่าในระหว่างกระบวนการอัปเกรด เนื่องจากมีข้อมูลสำคัญอยู่ภายใน ฐานข้อมูล ผู้ใช้ และการตั้งค่าถาวร.

ข้อผิดพลาดที่พบบ่อยเมื่อติดตั้ง Authelia ด้วย Docker

หนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดคือเครือข่ายภายนอกไม่มีอยู่จริง หาก Docker แสดงข้อความดังกล่าว network proxy declared as external, but could not be foundสร้างด้วย:

docker network create proxy

หากเกิดข้อผิดพลาดเกี่ยวกับสิทธิ์การเข้าถึง /config o /secretsตรวจสอบว่าตัวระบุที่รวมอยู่ในนั้นถูกต้อง .env ตรวจสอบให้แน่ใจว่าการเป็นเจ้าของโฟลเดอร์ตรงกัน คุณสามารถตรวจสอบได้โดยใช้ id -u e id -g.

ปัญหาที่พบได้บ่อยอีกอย่างหนึ่งคือ กำหนดความลับสองครั้งเมื่อคุณใช้ตัวแปรแบบนี้ AUTHELIA_SESSION_SECRET_FILEคุณไม่ควรใส่ค่าเดียวกันซ้ำกันภายใน configuration.yml.

หาก Authelia ไม่ยอมรับรหัสผ่าน โปรดตรวจสอบไฟล์ users_database.yml. สนาม password จะต้องมีเฉพาะแฮชที่สมบูรณ์ซึ่งขึ้นต้นด้วย $argon2id$ห้ามรวม Digest: และอย่าตัดโซ่เป็นหลายเส้น

เมื่อคอนเทนเนอร์ทำงานได้ แต่พอร์ทัลไม่โหลด โปรดจำไว้ว่า expose มันไม่ได้ประกาศพอร์ตบนโฮสต์ พร็อกซีต้องเชื่อมต่ออยู่ในเครือข่ายเดียวกันและใช้งาน authelia โดยใช้ชื่อเซิร์ฟเวอร์เป็นชื่ออ้างอิง การเปลี่ยนเส้นทาง ส่วนหัว หรือข้อผิดพลาดในการตรวจสอบสิทธิ์ที่เกิดขึ้นภายหลังนั้นเกี่ยวข้องกับการกำหนดค่าพร็อกซี ไม่ใช่การติดตั้งคอนเทนเนอร์

สุดท้ายนี้ หากคุณใช้ SQLite อย่าพยายามเรียกใช้ Authelia หลายๆ ตัวพร้อมกันในไฟล์เดียวกัน สำหรับการใช้งานแบบกระจาย คุณจำเป็นต้อง... ฐานข้อมูลภายนอกและผู้ให้บริการเซสชันที่ใช้ร่วมกัน.

การติดตั้ง Authelia ด้วย Docker Compose ช่วยให้คุณสร้างรากฐานที่มั่นคงสำหรับการรวมศูนย์การตรวจสอบสิทธิ์โดยไม่ต้องเปิดเผยพอร์ตโดยตรง ด้วยการแยกการกำหนดค่า ข้อมูลลับ และข้อมูลถาวร บริการจึงสามารถอัปเดตได้อย่างเป็นระบบ และสามารถขยายเพิ่มเติมได้ในภายหลังด้วยพร็อกซีแบบย้อนกลับ กฎการเข้าถึง การตรวจสอบสิทธิ์แบบหลายปัจจัย หรือ OpenID Connect