====== FreeIPA/Samba integration ====== This was more complicated than it probably should have been due to the IPA domain not matching the truenas host domain, I think. * Setup FreeIPA servers for Samba, run the following on all servers: dnf install ipa-server-trust-ad ipa-adtrust-install * Setup TrueNAS * Credentials->Directory Services->Show Advanced * Add Kerberos Realm * Realm: ''IPA.SIHNON.NET'' * Primary KDC: pick one of the IPA servers * KDC/admin servers/password servers: List all the IPA servers * Add a ''host/fqdn@IPA.SIHNON.NET'' keytab * Configure Directory Services * Configuration type: IPA * Enable Service, Enable Account Cache, Enable DNS Updates * Timeout: 10s * Kerberos Realm: IPA.SIHNON.NET * Credential type: Kerberos Principal * Kerberos Principal: The host keytab uploaded previously * Target Server: pick one of the IPA servers * TrueNAS hostname: short hostname * Domain: ipa.sihnon.net * Base DN: dc=ipa,dc=sihnon,dc=net * Validate Certificates * For SMB, don't use defaults * Name: IPA * Domain: ipa.sihnon.net * Rest of the attributes at default * Edit ''/etc/krb5.conf'': [libdefaults] dns_lookup_realm = false # change from true dns_lookup_kdc = false # change from true [domain_realms] # Add these two lines jellybean.sihnon.net = IPA.SIHNON.NET .jellybean.sihnon.net = IPA.SIHNON.NET * Restart ''winbind'' service When connecting from a non-domain joined Windows, it won't prompt for credentials and will fail. Must explicitly map a drive, using IPA domain creds first. Subsequent connections to the same hostname will reuse the credentials, so not all shares need to be mapped. ====== ACME ====== For the first server, follow the below instructions. * Create a tsig key for nsupdate: tsig-keygen -a HMAC-SHA512 * Update the key name to ''truenas.'' * Distribute the key to nameservers via puppet (hiera key ''profile::freeipa::named::keys''), and make sure bind has been restarted to pick up the change * Create ''data/system/acme'' datasets * SSH to the host as ''truenas_admin'' and run the following: sudo chown truenas_admin /mnt/data/system/acme git clone --depth 1 https://github.com/acmesh-official/acme.sh.git * Save the tsig key to ''/mnt/data/system/acme/.nsupdate.key'' (making sure the key name and secret match puppet) * For subsequent servers, clone the ''acme'' filesystem For all servers: * Navigate to ''Credentials->Certificates'' * Add an ''ACME DNS-Authenticator'' * Name: freeipa * Authenticator: shell * Script: ''/mnt/data/system/dns_acme.sh'' * User: ''root'' * Timeout: 60 * Delay: 90 * Add a ''Certificate Signing Request''. Follow the wizard. LetsEncrypt doesn't use any of the subject attributes so set any values. * Once added, click three dots next to the CSR ''Create ACME certificate'' * Name: letsencrypt * Accept ToS * Directory UI: LetsEncrypt Production * Set Freeipa for each domain * Once the ''letsencrypt'' CSR appears in the list, navigate to ''System-General'' * Click the GUI ''Settings'' button * Select ''letsencrypt'' certificate under ''GUI SSL Certificate'' and save changes, confirming thr restart