Bacula - zálohování Linux serverů
Kompletní průvodce nasazením zálohovacího systému Bacula pro automatické zálohování Linux serverů s podporou Virtual Full záloh a efektivní správou diskového prostoru.
Bacula je open-source zálohovací systém podnikové třídy určený pro správu zálohování, obnovu a verifikaci dat napříč sítí. Systém je modulární a skládá se z několika komponent:
- Director - centrální řídící komponenta, která koordinuje všechny zálohovací operace
- Storage Daemon - spravuje úložiště záloh (disky, pásky)
- File Daemon - běží na zálohovaných klientech a odesílá data
- Console - rozhraní pro správu a monitoring
- Catalog - databáze (MySQL/PostgreSQL) uchovávající metadata o zálohách
Instalace v Debian/Ubuntu
Instalace Director a Storage Daemon (zálohovací server)
apt update
apt install bacula-director-mysql bacula-sd bacula-console
Instalace File Daemon (zálohovaný klient)
apt install bacula-fd
Ověření instalace
# Ověření syntaxe konfigurace
bacula-dir -t -c /etc/bacula/bacula-dir.conf
# Start služeb
systemctl enable --now bacula-director bacula-sd bacula-fd
Ukázková konfigurace
Následující konfigurace řeší zálohování jednoho serveru s těmito vlastnostmi:
- Denní inkrementální zálohy v 01:00
- Virtual Full zálohy 2× týdně (středa a neděle) ve 02:00
- Automatické uvolňování diskového prostoru
- 7denní retence dat na disku
- 14denní retence metadat v katalogu
Konfigurace File Daemon (klient)
Tato konfigurace běží na každém zálohovaném serveru a je uložena v souboru /etc/bacula/bacula-fd.conf.
#
# Bacula File Daemon Configuration
#
FileDaemon {
Name = server-fd
FDport = 9102
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 10
# Adresa, na které FD naslouchá (0.0.0.0 = všechny)
FDAddress = 0.0.0.0
}
# Připojení od Directora
Director {
Name = backup-dir
Password = "heslo-pro-file-daemon"
}
# Lokální monitoring (volitelné)
Director {
Name = backup-mon
Password = "heslo-pro-monitoring"
Monitor = yes
}
Messages {
Name = Standard
director = backup-dir = all, !skipped, !restored
}
Konfigurace Storage Daemon
Tato konfigurace běží na zálohovacím serveru, kde jsou uložena data a je uložena v souboru /etc/bacula/bacula-sd.conf.
#
# Bacula Storage Daemon Configuration
#
Storage {
Name = backup-sd
SDPort = 9103
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
SDAddress = 0.0.0.0
}
# Připojení od Directora
Director {
Name = backup-dir
Password = "heslo-pro-storage-daemon"
}
# Lokální monitoring (volitelné)
Director {
Name = backup-mon
Password = "heslo-pro-monitoring"
Monitor = yes
}
# Autochanger - virtuální "měnič pásek" pro diskové úložiště
Autochanger {
Name = FileChgr1
Device = FileChgr1-Dev1
Device = FileChgr1-Dev2
Device = FileChgr1-Dev3
Changer Command = ""
Changer Device = /dev/null
}
# Zařízení pro ukládání záloh
Device {
Name = FileChgr1-Dev1
Media Type = File
Archive Device = /home/backupdb/bacula/backup
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
Maximum Concurrent Jobs = 5
}
Device {
Name = FileChgr1-Dev2
Media Type = File
Archive Device = /home/backupdb/bacula/backup
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
Maximum Concurrent Jobs = 5
}
Device {
Name = FileChgr1-Dev3
Media Type = File
Archive Device = /home/backupdb/bacula/backup
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
Maximum Concurrent Jobs = 5
}
Messages {
Name = Standard
director = backup-dir = all
}
Proč 3 zařízení (Device)? Autochanger s více zařízeními umožňuje paralelní operace. Každé zařízení může současně obsluhovat jeden volume, což je klíčové pro:
- Virtual Full zálohy - během konsolidace Bacula současně čte ze zdrojových volumes (Dev2) a zapisuje do cílového volume (Dev1). S jedním zařízením by toto nebylo možné.
- Paralelní zálohování více klientů - pokud zálohujete více serverů současně, každý může zapisovat do vlastního volume přes samostatné zařízení.
- Restore během zálohy - můžete obnovovat data (čtení) zatímco probíhá záloha jiného klienta (zápis).
Všechna zařízení ukazují na stejný adresář (Archive Device), ale Bacula je používá jako nezávislé "jednotky" pro přístup k různým volumes. Pro běžné nasazení doporučujeme 2-3 zařízení, pro větší infrastrukturu s mnoha klienty lze použít více.
Poznámka: Adresář /home/backupdb/bacula/backup musí existovat a být zapisovatelný pro uživatele bacula:
Hlavní konfigurační soubor
Je uložený v souboru /etc/bacula/bacula-dir.conf.
Director {
Name = backup-dir
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/run/bacula"
Maximum Concurrent Jobs = 10
Password = "silne-heslo-pro-console"
Messages = Daemon
}
# Výchozí nastavení pro všechny zálohovací joby
JobDefs {
Name = "DefaultJob"
Type = Backup
Level = Incremental
Schedule = "WeeklyCycle"
Messages = Standard
SpoolAttributes = yes
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
# Automatický upgrade na VirtualFull po 30 dnech bez Full
Max Virtual Full Interval = 30 days
Allow Mixed Priority = yes
Cancel Lower Level Duplicates = yes
Cancel Queued Duplicates = yes
}
# Zálohovací job pro server
Job {
Name = "BackupServer"
JobDefs = "DefaultJob"
FileSet = "ServerFileSet"
Pool = ServerPool
Client = "server-fd"
Storage = BackupStorage
# Udržuj pouze poslední nekonsolidovaný incremental
Backups To Keep = 1
Delete Consolidated Jobs = Yes
Accurate = Yes
# Maximální čekání na start jobu
Max Start Delay = 10h
# Opakování při chybě
Reschedule On Error = yes
Reschedule Times = 3
Reschedule Interval = 30 min
}
# Restore job
Job {
Name = "RestoreFiles"
Type = Restore
Client = server-fd
Storage = BackupStorage
FileSet = "ServerFileSet"
Pool = ServerPool
Messages = Standard
Where = /tmp/bacula-restore
}
# Definice zálohovaných souborů
FileSet {
Name = "ServerFileSet"
Include {
Options {
signature = MD5
compression = GZIP
}
# Vyloučení nepotřebných adresářů
Options {
exclude = yes
wild = "*/logs/*"
wild = "*/var/log/*"
wild = "*/var/cache/*"
wild = "*/tmp/*"
wild = "*/node_modules/*"
wild = "*/.cache/*"
wild = "*/media/cache/*"
}
File = /root
File = /home
File = /etc
}
}
# Plán zálohování
Schedule {
Name = "WeeklyCycle"
# Denní inkrementální zálohy
Run = Level=Incremental Priority=10 mon-sun at 01:00
# Virtual Full 2x týdně (středa a neděle)
Run = Level=VirtualFull Priority=5 wed,sun at 02:00
}
# Klient
Client {
Name = server-fd
Address = server.example.com
FDPort = 9102
Catalog = MyCatalog
Password = "heslo-pro-file-daemon"
File Retention = 14 days
Job Retention = 14 days
AutoPrune = yes
Maximum Concurrent Jobs = 10
}
# Úložiště s Autochangerem
Autochanger {
Name = BackupStorage
Address = backup.example.com
SDPort = 9103
Password = "heslo-pro-storage-daemon"
Device = FileChgr1
Media Type = File
Maximum Concurrent Jobs = 10
Autochanger = BackupStorage
}
# Katalog (databáze)
Catalog {
Name = MyCatalog
dbname = "bacula"
DB Address = "127.0.0.1"
DB Port = "3306"
dbuser = "bacula"
dbpassword = "heslo-databaze"
}
# Pool pro běžné zálohy
Pool {
Name = ServerPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
# Retence dat na disku
Volume Retention = 7 days
# Automatické uvolnění místa po purge
Action On Purge = Truncate
Recycle Oldest Volume = yes
Maximum Volume Bytes = 20G
Maximum Volumes = 50
Label Format = "ServerVol-"
# Cílový pool pro Virtual Full
Next Pool = VFServerPool
}
# Pool pro Virtual Full zálohy
Pool {
Name = VFServerPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 7 days
Maximum Volume Bytes = 20G
Maximum Volumes = 70
Action On Purge = Truncate
Recycle Oldest Volume = yes
Label Format = "VFServerVol-"
Storage = BackupStorage
}
# Zprávy
Messages {
Name = Standard
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"Bacula\" -s \"Bacula: %t %e of %c %l\" %r"
mail = admin@example.com = all, !skipped
console = all, !skipped, !saved
append = "/var/log/bacula/bacula.log" = all, !skipped
catalog = all
}
Messages {
Name = Daemon
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"Bacula\" -s \"Bacula daemon message\" %r"
mail = admin@example.com = all, !skipped
console = all, !skipped, !saved
append = "/var/log/bacula/bacula.log" = all, !skipped
}
# Údržbový job pro automatické čištění
Schedule {
Name = "MaintenanceNightly"
Run = mon-sun at 09:00
}
Job {
Name = "MaintenancePrune"
Type = Admin
Client = server-fd
FileSet = "ServerFileSet"
Schedule = "MaintenanceNightly"
Priority = 50
Messages = Standard
Pool = ServerPool
Storage = BackupStorage
# Prořezání expirovaných jobů
RunScript {
Console = "prune jobs client=server-fd yes"
RunsOnClient = no
RunsWhen = Before
}
# Prořezání expirovaných volumes
RunScript {
Console = "prune expired volume pool=ServerPool yes"
RunsOnClient = no
RunsWhen = Before
}
RunScript {
Console = "prune expired volume pool=VFServerPool yes"
RunsOnClient = no
RunsWhen = Before
}
# Truncate - uvolnění místa na disku
RunScript {
Console = "truncate volume pool=ServerPool allpools storage=BackupStorage yes"
RunsOnClient = no
RunsWhen = Before
}
RunScript {
Console = "truncate volume pool=VFServerPool allpools storage=BackupStorage yes"
RunsOnClient = no
RunsWhen = Before
}
}
Console {
Name = backup-mon
Password = "heslo-pro-monitoring"
CommandACL = status, .status
}
Vysvětlení klíčových parametrů
Retence dat
Volume Retention- Jak dlouho držet data na disku. Doporučení minimálně doba nejdelší zálohy + rezerva.Job Retention- Jak dlouho uchovávat záznamy o jobech v DB. Doporučení je ≥ Volume Retention.File Retention- Jak dlouho uchovávat seznamy souborů v DB. Doporučení je ≤ Job Retention.
Proč držet File/Job Retention delší než Volume Retention?
File Retention a Job Retention ovlivňují pouze metadata v databázi (katalogu), nikoliv samotné zálohovací soubory na disku. Delší retence metadat přináší několik výhod:
1. Ochrana před ztrátou baseline pro Incrementální zálohy
Bacula potřebuje v katalogu záznam o posledním Full nebo Virtual Full backupu, aby mohla správně provést Incremental. Pokud Job Retention vyprší a záznam o Full záloze zmizí, Bacula automaticky povýší následující Incremental na Full - což znamená kompletní přenos všech dat místo jen změn.
Příklad problému s krátkou retencí:
- Pondělí: Full záloha (1 TB, trvá 4 dny)
- Pátek: Full dokončena, Job Retention = 4 dny
- Úterý příští týden: Záznam o Full záloze expiruje
- Středa: Naplánovaný Incremental se povýší na Full (další 4 dny, 1 TB)
2. Rychlejší a přesnější obnova souborů
File Retention určuje, jak dlouho máte v databázi seznam všech zálohovaných souborů s jejich cestami, velikostmi a checksummy. S delší retencí:
- Můžete vyhledávat konkrétní soubory napříč zálohovací historií
- Restore wizard nabídne kompletní seznam souborů k obnově
- Nemusíte ručně procházet volumes a hádat, co obsahují
Bez metadat v katalogu je obnova stále možná, ale musíte znát přesný JobId nebo procházet volumes ručně pomocí bls utility.
3. Lepší přehled a debugging
Delší Job Retention umožňuje:
- Analyzovat trendy velikosti záloh v čase
- Identifikovat problematické joby a vzorce selhání
- Plánovat kapacitu úložiště na základě historických dat
Dopad na diskový prostor
- Volume Retention - přímý dopad na disk, určuje jak dlouho se drží zálohovací soubory. Na databázi nemá žádný vliv.
- Job Retention - na disk nemá žádný vliv. V databázi zabírá minimální prostor (jednotky KB na job).
- File Retention - na disk nemá žádný vliv. V databázi má významný dopad, protože uchovává kompletní seznam všech zálohovaných souborů s jejich metadaty.
File Retention a velikost databáze
Pro server s 4 miliony souborů může File Retention představovat:
- 4 dny retence: ~200 MB v databázi
- 14 dní retence: ~700 MB v databázi
- 30 dní retence: ~1.5 GB v databázi
Toto je zanedbatelné ve srovnání s velikostí samotných záloh (stovky GB až TB), ale může ovlivnit výkon databázových dotazů. Pro velmi velké instalace zvažte optimalizaci MySQL/PostgreSQL.
Doporučené nastavení
# V konfiguraci klienta
File Retention = 14 days # Možnost vyhledat soubory 2 týdny zpět
Job Retention = 14 days # Ochrana baseline pro Incrementy
Volume Retention = 7 days # Skutečná data na disku
Toto nastavení zajistí, že:
- Zálohovací soubory se recyklují po 7 dnech (šetří disk)
- Metadata zůstanou 14 dní (ochrana před upgrade na Full)
- Máte 2týdenní historii pro vyhledávání souborů
Virtual Full zálohy
Virtual Full je syntéza předchozího Full backupu a všech následných Incrementálů do nového "virtuálního" Full backupu. Výhody:
- Žádný přenos dat z klienta
- Rychlejší obnova (není třeba aplikovat incrementy)
- Efektivnější využití úložiště
Parametry:
Backups To Keep = 1- po konsolidaci smaže staré incrementyDelete Consolidated Jobs = Yes- smaže záznamy o konsolidovaných jobechNext Pool- cílový pool pro Virtual Full zálohy
Údržbový job
Údržbový job MaintenanceNightly provádí automatické čištění - prořezává expirované záznamy z katalogu a uvolňuje místo na disku truncatováním prázdných volumes.
Kdy spouštět údržbu: Údržbový job by měl běžet až po dokončení všech zálohovacích jobů. Pokud by běžel před nebo během záloh, mohl by smazat metadata potřebná pro Virtual Full konsolidaci nebo uvolnit volumes, které jsou ještě využívány. Pro noční zálohy startující v 01:00-02:00 doporučujeme spouštět údržbu ráno, např. v 09:00.
Schedule {
Name = "MaintenanceNightly"
Run = mon-sun at 09:00
}
Správa diskového prostoru
Action On Purge = Truncate- po purge volume jej zkrátí na nulu, čímž okamžitě uvolní místo na diskuRecycle Oldest Volume = yes- při potřebě nového volume automaticky recykluje nejstarší dostupnýMaximum Volume Bytes- maximální velikost jednoho volume souboru (např. 20G)Maximum Volumes- maximální počet volumes v poolu, omezuje celkovou kapacitu
Pořadí a priority spouštění jobů
Bacula spouští joby podle jejich priority - nižší číslo = vyšší priorita. Toto je důležité pro správné fungování Virtual Full záloh.
Proč záleží na pořadí:
Virtual Full konsoliduje předchozí Full/VirtualFull a všechny následné Incrementy do nového celku. Pokud by VirtualFull začal dříve než Incremental naplánovaný na stejný den, nezahrnul by tento Incremental do konsolidace.
Doporučené nastavení priorit:
- Priority = 5 - Virtual Full zálohy (vyšší priorita)
- Priority = 10 - Incremental a Full zálohy (standardní priorita)
- Priority = 50 - Údržbové joby (nejnižší priorita)
Schedule {
Name = "WeeklyCycle"
Run = Level=Incremental Priority=10 mon-sun at 01:00
Run = Level=VirtualFull Priority=5 wed,sun at 02:00
}
Jak to funguje? Správné pořadí je zajištěno časovým odstupem v Schedule - Incrementy startují ve 01:00, VirtualFull až ve 02:00. Klíčové je, že Incrementy se spustí první.
VirtualFull konsoliduje všechny dokončené joby v katalogu. Pokud Incremental v době startu VirtualFull ještě běží, nebude do této konsolidace zahrnut - zahrne se až do příštího VirtualFull. To je očekávané chování a není to problém, protože data z běžícího Incrementu jsou stále dostupná samostatně.
Virtual Full má vyšší prioritu (nižší číslo), aby v případě čekání ve frontě mohl předběhnout méně důležité joby. Priorita rozhoduje pouze u jobů čekajících ve frontě současně.
Parametr Allow Mixed Priority v JobDefs umožňuje spouštět joby s různou prioritou současně. Bez něj by Bacula čekala na dokončení všech jobů s vyšší prioritou, než spustí joby s nižší.
Allow Mixed Priority = yes
Práce s velkými zálohami
Pokud záloha serveru trvá několik dní (např. 1 TB dat přes pomalou síť nebo HDD), je třeba upravit konfiguraci:
1. Zvýšení Volume Retention
Volume Retention = 14 days # Minimálně 2× doba zálohy
2. Zvýšení Job/File Retention
Job Retention = 21 days
File Retention = 21 days
3. Dočasné zakázání jobu během běhu
# Zakázat plánované spouštění
bconsole <<< "disable job=BackupServer"
# Po dokončení znovu povolit
bconsole <<< "enable job=BackupServer"
4. Optimalizace FileSet
Vyloučení velkých nepotřebných adresářů výrazně zrychlí zálohu:
Options {
exclude = yes
wild = "*/vendor/*"
wild = "*/node_modules/*"
wild = "*.log"
wild = "*.tmp"
wild = "/var/lib/docker/*"
}
Grafické rozhraní BAT
Pro uživatele, kteří preferují grafické prostředí před příkazovou řádkou, nabízí Bacula aplikaci BAT (Bacula Administration Tool). Jedná se o Qt aplikaci, která poskytuje přehledné GUI pro správu a monitoring záloh.
Hlavní výhodou BAT je možnost spouštět jej ze svého lokálního počítače a vzdáleně monitorovat stav zálohování serverů - není nutné se přihlašovat přes SSH na zálohovací server.
Instalace
# Debian/Ubuntu - na svém počítači
apt install bacula-console-qt
Konfigurace připojení
BAT vyžaduje konfigurační soubor s údaji pro připojení k Directoru. Vytvořte soubor například ~/.bacula/bat.conf:
Director {
Name = backup-dir
DIRport = 9101
address = backup.example.com
Password = "silne-heslo-pro-console"
}
Důležité: Heslo musí odpovídat heslu definovanému v Console resource na straně Directora.
Spuštění s vlastní konfigurací
# Spuštění s explicitní cestou ke konfiguraci
bat -c ~/.bacula/bat.conf
Pro pohodlnější spouštění si můžete vytvořit alias v ~/.bashrc:
alias bat='bat -c ~/.bacula/bat.conf'
Firewall a síťový přístup
Pro vzdálené připojení musí být na zálohovacím serveru povolen přístup k portu Directora:
# Na zálohovacím serveru
ufw allow from 192.168.1.0/24 to any port 9101 proto tcp
Případně v konfiguraci Directora omezte, na kterých adresách naslouchá:
Director {
Name = backup-dir
DirAddresses = {
ip = { addr = 127.0.0.1 }
ip = { addr = 192.168.1.10 } # LAN adresa
}
...
}
Základní příkazy bconsole
Připojení ke konzoli
bconsole
Sledování stavu
# Stav directora - přehled naplánovaných a běžících jobů
status dir
# Detailní stav konkrétního jobu
status jobid=1234
# Stav klienta
status client=server-fd
# Stav úložiště
status storage=BackupStorage
Správa jobů
# Ruční spuštění zálohy
run job=BackupServer level=Incremental yes
# Zrušení běžícího jobu
cancel jobid=1234
# Seznam posledních jobů
list jobs client=server-fd
# Detail jobu
list jobid=1234
Správa volumes
# Seznam volumes v poolu
list volumes pool=ServerPool
# Detail volume
list volume=ServerVol-0001
# Ruční purge volume
purge volume=ServerVol-0001 yes
# Truncate - uvolnění místa
truncate volume pool=ServerPool allpools storage=BackupStorage yes
Ověření konfigurace
# Ověření syntaxe (bez startu)
bacula-dir -t -c /etc/bacula/bacula-dir.conf
# Reload konfigurace za běhu
bconsole <<< "reload"
# Zobrazení konfigurace
show job=BackupServer
show pool=ServerPool
show schedule=WeeklyCycle
Detekce problémů
# Zobrazení zpráv
bconsole <<< "messages"
# Log soubor
tail -f /var/log/bacula/bacula.log
# Kontrola připojení ke klientovi
bconsole <<< "status client=server-fd"
# Kontrola úložiště
bconsole <<< "status storage=BackupStorage"
Obnova souborů ze zálohy
Interaktivní obnova
bconsole
# Spuštění restore wizardu
restore
# Výběr klienta
> 5 (Select the Client)
> server-fd
# Výběr typu výběru souborů
> 5 (Select the most recent backup for a client)
# Navigace a výběr souborů
cd /home/user/documents
mark important-file.txt
mark another-file.pdf
cd /etc
mark nginx
# Dokončení výběru
done
# Potvrzení obnovy
yes
Rychlá obnova posledního jobu
bconsole << 'EOF'
restore client=server-fd where=/tmp/bacula-restore all
5
server-fd
done
yes
EOF
Obnova konkrétního adresáře
bconsole << 'EOF'
restore client=server-fd where=/tmp/bacula-restore
5
server-fd
cd /home/user
mark documents
done
yes
EOF
Obnova z konkrétního jobu/data
bconsole << 'EOF'
restore client=server-fd where=/tmp/bacula-restore
# Volba 3 - Enter list of comma separated JobIds to select
3
6789,6790
cd /etc
mark nginx
done
yes
EOF
Parametry obnovy
where=Cílový adresář pro obnovureplace=Co dělat s existujícími soubory:always,ifnewer,ifolder,neverclient=Cílový klient (může být jiný než původní)
Obnova na jiný server
restore client=original-fd restoreclient=new-fd where=/tmp/restore
Řešení častých problémů
"Cannot find any appendable volumes"
Pool dosáhl limitu volumes. Řešení:
# Zvýšení limitu
bconsole <<< "update pool=ServerPool MaxVols=100"
# Nebo ruční vytvoření nového volume
bconsole <<< "label storage=BackupStorage pool=ServerPool"
"Only one Job found. Consolidation not needed"
Virtual Full nemá co konsolidovat - chybí předchozí Full nebo Incrementy. Ujistěte se, že máte správně nastavený schedule a existuje alespoň jeden Full + Incremental.
Disk se plní
# Ruční truncate
bconsole << 'EOF'
truncate volume pool=ServerPool allpools storage=BackupStorage yes
truncate volume pool=VFServerPool allpools storage=BackupStorage yes
EOF
# Kontrola stavu volumes
bconsole <<< "list volumes pool=ServerPool"
Job čeká ve frontě
# Zobrazení čekajících jobů
bconsole <<< "status dir"
# Zrušení všech čekajících
bconsole <<< "cancel all yes"
Dokumentace
Pro další informace doporučuji oficiální dokumentaci Bacula.
Mohlo by vás také zajímat
Upgrade PHP v ubuntu včetně již instalovaných modulů
Jednoduchý způsob, jak v ubuntu/debianu snadno povýšit verzi PHP včetně všech již instalovaných modulů.
Číst víceVypnutí přihlášení uživatele heslem v linuxu
Často se hodí mít u některých uživatelů v linuxovém systému vypnuté vzdálené přihlášení heslem a povolené pouze ssh certifikátem. Zde je návod jak na to.
Číst víceHttp Basic Auth s Apache serverem a .htaccess
Jednoduchý a rychlý způsob jak schovat webové stránky za přihlášení, pokud máme webový server Apache.
Číst vícePotřebujete více informací?
Zpráva byla úspěšně odeslána.
Děkujeme
Omlouváme se, ale zprávu se nepovedlo odeslat.
Budeme rádi, když nám o tomto dáte vědět na info@id-sign.com