Konfigurasikan Authelia dengan Nginx Proxy Manager
Apa itu Authelia?
Authelia adalah server autentikasi dan otorisasi sumber terbuka yang menyediakan autentikasi dua faktor dan sistem masuk tunggal (SSO) untuk aplikasi Anda melalui portal web. Ini bertindak sebagai pendamping untuk proxy terbalik seperti nginx, Traefik. https://www.authelia.com/docs untuk memberi tahu mereka apakah permintaan harus diizinkan atau dialihkan ke portal Authelia untuk autentikasi. Dokumentasi tersedia di HAProxy atau caddy

Apa itu Manajer Proksi Nginx?
Nginx Proyx Manager (NPM) adalah . NPM didasarkan pada server Nginx dan menyediakan antarmuka web yang bersih, efisien, dan indah kepada pengguna untuk pengelolaan yang lebih mudah.sistem manajemen proksi terbalik yang berjalan di Docker
Manajer Proksi Authelia + Nginx
Jika Anda menghosting sendiri aplikasi apa pun seperti saya di homelab Anda, Anda mungkin memerlukan mekanisme autentikasi untuk ditempatkan di depan aplikasi Anda. di sinilah Authelia masuk. Authelia menyediakan aplikasi web untuk otentikasi (pastikan Anda adalah seseorang yang seharusnya menggunakan aplikasi) dan otorisasi (pastikan Anda diizinkan menggunakannya) di depan aplikasi web Anda yang ada.
ada beberapa cara untuk mengimplementasikan Authelia, saya akan menggunakan Nginx Proxy Manager dalam contoh ini.
Apa yang Anda perlukan
- Server dengan Docker, Docker-Compose, dan Nginx Proxy Manager Terinstal dan Siap
- Domain/Sub-domain alamat FQDN yang ingin Anda gunakan untuk instalasi Authelia Anda (mis. auth.example.com)
- Catatan A yang menunjuk ke alamat IP Publik tempat server Anda berada.
- Dan beberapa waktu untuk dihabiskan
Menginstal Docker, Docker-Compose, dan Nginx Proxy Manager
Anda dapat mengikuti panduan ini untuk menginstal NPM.
Buat dan Konfigurasikan instance Authelia di NPM
Sebelum kita memulai penyiapan, Anda harus memiliki alamat FQDN yang valid untuk instance autentikasi Anda, dalam kasus kami adalah Authelia. jika tidak, buat entri CNAME yang akan berfungsi sebagai titik akhir. dalam contoh ini, kami menganggap instance authelia sebagai auth.example.com
. Instal sertifikat SSL yang valid untuk domain ini.
Tambahkan Host Authelia ke Manajer Proksi Nginx
pastikan untuk mengganti domain auth.example.com
, ip address
dan port number
berdasarkan pengaturan Anda.

Dapatkan Sertifikat SSL untuk instance Authelia Anda
Sekarang, navigasikan ke tab SSL dan dapatkan sertifikat SSL yang valid

Menginstal dan Mengonfigurasi Authelia
Untuk Authelia, Anda memerlukan 3 file:
- buruh pelabuhan-compose.yml
- konfigurasi.yml
- pengguna_database.yml
Docker-Tulis untuk Authelia
Buat direktori bernama "authelia" dan buat subdirektori dan file yang diperlukan
mkdir authelia
cd authelia
mkdir config
mkdir redis
Setelah kita membuat subdirektori ini, buatlah docker-compose.yml
file
nano docker-compose.yml
Dan rekatkan teks berikut ke dalamnya:
version: '3.3'
services:
authelia:
image: authelia/authelia
volumes:
- ./config:/config
ports:
- 9091:9091
restart: unless-stopped
healthcheck:
disable: true
environment:
- TZ=Asia/Kolkata #Change to your Time Zone
depends_on:
- redis
redis:
image: redis:alpine
volumes:
- ./redis:/data
expose:
- 6379
restart: unless-stopped
environment:
- TZ=Asia/Kolkata
Pastikan untuk memeriksa ulang port-port yang kosong di server Anda dan ubah zona waktu yang sesuai.
File Konfigurasi
mari kita buat file configuration.yml
di dalam direktori config
cd config
nano configuration.yml
Di file itu, tempelkan yang berikut ini:
###############################################################
# Authelia configuration #
###############################################################
server:
host: 0.0.0.0
port: 9091
jwt_secret: a-super-long-strong-string-of-letters-numbers-characters
log:
level: debug
default_redirection_url: https://auth.example.com
totp:
issuer: example.com
period: 30
skew: 1
#duo_api: ## You can use this api if you want push notifications of auth attempts
# hostname: api-123456789.example.com
# integration_key: ABCDEF
# secret_key: yet-another-long-string-of-characters-and-numbers-and-symbols
authentication_backend:
disable_reset_password: false
file:
path: /config/users_database.yml
password:
algorithm: argon2id
iterations: 1
salt_length: 16
parallelism: 8
memory: 64
access_control:
default_policy: deny
rules:
# Rules applied to everyone
- domain:
- "noauth.domain.com"
- "another-no-auth.domain.com"
policy: bypass
- domain:
- "my1st1factor.domain.com"
- "my2nd1factor.domain.com"
- "domain.com"
policy: one_factor
# networks:
# - 192.168.1.0/24
- domain:
- "a2factor.domain.com"
policy: two_factor
# networks:
# - 192.168.1.0/24
session:
name: authelia_session
# This secret can also be set using the env variables AUTHELIA_SESSION_SECRET_FILE
secret: a-really-L0ng_s7r0ng-secr3t-st1nggggg-shoul0-be-used
expiration: 3600 # 1 hour
inactivity: 7200 # 2 hours
domain: <example.com> # Should match whatever your root protected domain is
redis:
host: authelia_redis_1
port: 6379
# This secret can also be set using the env variables AUTHELIA_SESSION_REDIS_PASSWORD_FILE
# password: authelia
regulation:
max_retries: 5
find_time: 2m
ban_time: 10m
theme: dark
storage:
encryption_key: a-very-long-strong-key-should-be-used-here
local:
path: /config/db.sqlite3
notifier:
# filesystem:
# filename: /config/notification.txt
smtp:
username: <email address>
password: <strong password
host: <SMTP Server Address>
port: 587
sender: <Sender Email Address>
subject: "[Authelia] {title}"
disable_require_tls: false
disable_html_emails: false
tls:
server_name: <SMTP Server address>
skip_verify: false
minimum_version: TLS1.2
configuration.yml
Harap pastikan Anda telah mengganti nilai di bawah ini.
- default_redirection_url:
https://auth.example.com
- nama belakang:
<email address>
- kata sandi:
<strong password>
- tuan rumah:
<SMTP Server Address>
- pengirim:
<Sender Email Address>
- nama server:
<SMTP Server address>
File Basis Data Pengguna
Sekarang mari kita buat database pengguna, yaitu mereka yang ingin mengakses layanan Anda
buat users_database.yml
folder config
dalam
rekatkan yang berikut ini ke dalam file, dan modifikasi sesuai kebutuhan Anda.
users:
john:
displayname: "John Wick"
password: "$argon2id$v=19$m=65536,t=3,p=2$BpLnfgDsdfdsgdthgdsdfsdfdg6bUGsDY//8mKUYNZZaR0t4MFFSs+iM"
email: johnwick@authelia.com
groups:
- admins
- dev
harry:
displayname: "Thanos Infinity"
password: "$argon2id$v=19$m=65536,t=3,p=2$BpLnfgjhfrtretasdfdfghja44sdfdfa/8mKUYNZZaR0t4MFFSs+iM"
email: thanos@authelia.com
groups: []
Untuk Membuat kata sandi hash gunakan perintah di bawah ini
docker run authelia/authelia:latest authelia hash-password 'yourpassword'
Uji Pengaturan Authelia
Sekarang Anda dapat menguji pengaturan authelia, untuk memastikan bahwa server dikonfigurasi dengan benar. tahap selanjutnya Anda dapat menambahkan ini ke layanan Anda
jalankan buruh pelabuhan authelia Anda di direktori induk dengan menjalankan perintah di bawah ini
docker-compose up
Sekarang pergi kehttps://auth.example.com
Anda akan diminta dengan layar login. Anda sekarang dapat memasukkan nama pengguna dan kata sandi Anda, dan pastikan Anda dapat masuk.
Siapkan situs NGinX Proxy Manager kami untuk Authelia
Sekarang bagian terakhir, Anda perlu menambahkan file konfigurasi di bawah ini di setiap host proxy yang Anda perlukan untuk memiliki login SSO. Salin kode di bawah ini dan buat penyesuaian berdasarkan aplikasi dan tempelkan kode yang sama di tab Advanced
di Nginx Proxy Manager
location /authelia {
internal;
set $upstream_authelia http://<authelia internal ip address with port number>/api/verify; #ADD YOUR IP AND PORT OF AUTHELIA
proxy_pass_request_body off;
proxy_pass $upstream_authelia;
proxy_set_header Content-Length "";
# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
client_body_buffer_size 128k;
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 4 32k;
send_timeout 5m;
proxy_read_timeout 240;
proxy_send_timeout 240;
proxy_connect_timeout 240;
}
location / {
set $upstream_<appname> http://<your application internal ip address with port number>; #ADD IP AND PORT OF SERVICE
proxy_pass $upstream_<appname>; #change name of the service
auth_request /authelia;
auth_request_set $target_url $scheme://$http_host$request_uri;
auth_request_set $user $upstream_http_remote_user;
auth_request_set $groups $upstream_http_remote_groups;
proxy_set_header Remote-User $user;
proxy_set_header Remote-Groups $groups;
error_page 401 =302 https://auth.<example.com>/?rd=$target_url;
client_body_buffer_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
send_timeout 5m;
proxy_read_timeout 360;
proxy_send_timeout 360;
proxy_connect_timeout 360;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 64 256k;
# add your ip range here, and remove this comment!
set_real_ip_from 192.168.7.0/16;
set_real_ip_from 172.0.0.0/8;
set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
}
}
Ubah kode ini dan tempel di Tab Lanjutan
Anda perlu menyesuaikan bagian-bagian di bawah ini berdasarkan pengaturan Anda.
<authelia internal ip address with port number>
<appname>
harus sesuai dengan aplikasi<your application internal ip address with port number>
https://auth.<example.com>/?rd=$target_url;
Sekarang buka Advanced
tab Custom Nginx Configuration
di masing-masing aplikasi.

Klik Save
, Uji aplikasi Anda sekarang.
Jika Anda memerlukan panduan Video, ada panduan Luar Biasa yang dapat Anda ikuti.
Tidak ada komentar:
Posting Komentar