Repository: anandslab/docker-traefik Branch: main Commit: 5ab37c2f11b7 Files: 425 Total size: 605.3 KB Directory structure: gitextract_ib118luu/ ├── .env.example ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── appdata/ │ ├── authelia/ │ │ ├── configuration.yml.example │ │ └── users.yml.example │ ├── nginx/ │ │ ├── common/ │ │ │ ├── acl.conf │ │ │ ├── disabled/ │ │ │ │ ├── commentspam.conf.disabled │ │ │ │ ├── hack-protection.conf.disabled │ │ │ │ ├── php5.conf.disabled │ │ │ │ ├── redis-php7.conf.disabled │ │ │ │ ├── selfhosted-cdn.conf.disabled │ │ │ │ └── shb-ssl.conf.disabled │ │ │ ├── hotlink.conf │ │ │ ├── nonwp-common-php.conf │ │ │ ├── php7/ │ │ │ │ ├── nonwp-locations-php.conf │ │ │ │ ├── nonwp-nfc-php.conf │ │ │ │ ├── wp-common-php.conf │ │ │ │ ├── wp-nfc-php-beta.conf │ │ │ │ └── wp-nfc-php.conf │ │ │ ├── php8/ │ │ │ │ ├── nonwp-locations-php.conf │ │ │ │ ├── nonwp-nfc-php.conf │ │ │ │ ├── wp-common-php.conf │ │ │ │ └── wp-nfc-php.conf │ │ │ ├── wp-404-rewrites.conf │ │ │ ├── wp-locations-php.conf │ │ │ ├── wp-rankmath-sitemap-config.conf │ │ │ └── wp-yoast-sitemap-config.conf │ │ ├── conf.d/ │ │ │ ├── blockips.conf │ │ │ ├── fastcgi.conf │ │ │ ├── optimizations.conf │ │ │ ├── upstream.conf │ │ │ └── webp.conf │ │ ├── fastcgi.conf │ │ ├── mime.types │ │ ├── nginx.conf │ │ └── sites/ │ │ ├── dash.conf │ │ ├── deployrr.conf │ │ ├── khub.conf │ │ └── simplehomelab.conf │ ├── php/ │ │ ├── php7/ │ │ │ ├── conf.d/ │ │ │ │ ├── extensions.ini │ │ │ │ └── opcache.ini │ │ │ └── php.ini │ │ └── php8/ │ │ ├── pear.conf │ │ ├── php/ │ │ │ ├── conf.d/ │ │ │ │ ├── extensions.ini │ │ │ │ ├── extensions.ini.example │ │ │ │ ├── opcache.ini │ │ │ │ ├── opcache.ini.example │ │ │ │ ├── opcache.ini.new │ │ │ │ └── opcache.ini.old │ │ │ └── php.ini │ │ ├── php-fpm.conf │ │ └── php-fpm.d/ │ │ ├── docker.conf │ │ ├── wordpress.conf │ │ ├── www.conf │ │ └── zz-docker.conf │ ├── picard/ │ │ └── filenaming_script.example │ ├── rclone/ │ │ ├── rclone-logrotate.conf.example │ │ └── rclone.conf.example │ ├── traefik2/ │ │ └── rules/ │ │ ├── ds918/ │ │ │ ├── app-ds918-dsm-oauth.yml.example │ │ │ ├── app-ds918-video-oauth.yml.example │ │ │ ├── chain-basic-auth.yml │ │ │ ├── chain-no-auth.yml │ │ │ ├── chain-oauth-external.yml │ │ │ ├── chain-oauth.yml │ │ │ ├── middlewares-basic-auth.yml │ │ │ ├── middlewares-buffering.yml │ │ │ ├── middlewares-compress.yml │ │ │ ├── middlewares-oauth-external.yml │ │ │ ├── middlewares-oauth.yml │ │ │ ├── middlewares-rate-limit.yml │ │ │ ├── middlewares-secure-headers.yml │ │ │ └── tls-opts.yml │ │ ├── hs/ │ │ │ ├── app-adguard-home-authelia.yml.example │ │ │ ├── app-adguard-home-oauth.yml.example │ │ │ ├── app-haos-no-auth.yml.example │ │ │ ├── app-pihole-oauth.yml.example │ │ │ ├── app-plex-no-auth.yml.example │ │ │ ├── app-proxmox-ve-oauth.yml.example │ │ │ ├── app-tautulli-with-auth-bypass.yml.example │ │ │ ├── app-unifi-controller-authelia.example │ │ │ ├── chain-authelia.yml │ │ │ ├── chain-basic-auth.yml │ │ │ ├── chain-no-auth-no-crowdsec.yml │ │ │ ├── chain-no-auth.yml │ │ │ ├── chain-oauth-external.yml │ │ │ ├── chain-oauth-no-crowdsec.yml │ │ │ ├── chain-oauth.yml │ │ │ ├── domain-passthrough.yml.example │ │ │ ├── middlewares-authelia.yml │ │ │ ├── middlewares-basic-auth.yml │ │ │ ├── middlewares-buffering.yml │ │ │ ├── middlewares-compress.yml │ │ │ ├── middlewares-oauth-external.yml │ │ │ ├── middlewares-oauth.yml │ │ │ ├── middlewares-rate-limit.yml │ │ │ ├── middlewares-secure-headers.yml │ │ │ ├── middlewares-traefik-bouncer.yml │ │ │ └── tls-opts.yml │ │ ├── toml/ │ │ │ ├── app-hassio.toml.example │ │ │ ├── app-pihole.toml.example │ │ │ ├── app-unifi.toml.example │ │ │ ├── middlewares-chains.toml.example │ │ │ ├── middlewares-nextcloud.toml.example │ │ │ └── middlewares.toml.example │ │ └── ws/ │ │ ├── chain-authelia-wp.yml │ │ ├── chain-authelia.yml │ │ ├── chain-basic-auth.yml │ │ ├── chain-no-auth-crowdsec-wp.yml │ │ ├── chain-no-auth-wp.yml │ │ ├── chain-no-auth.yml │ │ ├── chain-oauth-no-crowdsec.yml │ │ ├── chain-oauth.yml │ │ ├── middlewares-authelia.yml │ │ ├── middlewares-basic-auth.yml │ │ ├── middlewares-compress.yml │ │ ├── middlewares-oauth.yml │ │ ├── middlewares-rate-limit.yml │ │ ├── middlewares-secure-headers-wp.yml │ │ ├── middlewares-secure-headers.yml │ │ ├── middlewares-traefik-bouncer.yml │ │ └── tls-opts.yml │ └── traefik3/ │ └── rules/ │ ├── hs/ │ │ ├── chain-basic-auth.yml │ │ ├── chain-no-auth.yml │ │ ├── chain-oauth.yml │ │ ├── middlewares-basic-auth.yml │ │ ├── middlewares-buffering.yml │ │ ├── middlewares-oauth.yml │ │ ├── middlewares-rate-limit.yml │ │ ├── middlewares-secure-headers.yml │ │ └── tls-opts.yml │ └── ws-arm/ │ ├── chain-basic-auth.yml │ ├── chain-no-auth-crowdsec-wp.yml │ ├── chain-no-auth-simple.yml │ ├── chain-no-auth-wp.yml │ ├── chain-no-auth.yml │ ├── chain-oauth.yml │ ├── middlewares-basic-auth.yml │ ├── middlewares-buffering.yml │ ├── middlewares-oauth.yml │ ├── middlewares-rate-limit.yml │ ├── middlewares-secure-headers-wp.yml │ ├── middlewares-secure-headers.yml │ └── tls-opts.yml ├── archives/ │ ├── traefik_v1/ │ │ ├── docker-compose-npm.yml │ │ ├── docker-compose-t1-obsolete.yml │ │ ├── docker-compose-t1-swarm.yml │ │ ├── docker-compose-t1-synology.yml │ │ ├── docker-compose-t1-vpn.yml │ │ ├── docker-compose-t1.yml │ │ ├── traefik1-standalone/ │ │ │ ├── rules/ │ │ │ │ ├── app.toml.example │ │ │ │ ├── dafang1.toml │ │ │ │ ├── hassio.toml │ │ │ │ ├── pihole.toml │ │ │ │ ├── plexwebtools.toml │ │ │ │ ├── shellinabox.toml │ │ │ │ ├── synology.toml │ │ │ │ ├── synplex.toml │ │ │ │ ├── unifi.toml │ │ │ │ ├── webmin.toml │ │ │ │ └── xiaofang1.toml │ │ │ ├── rules.toml │ │ │ ├── traefik.toml │ │ │ ├── traefik.toml.crab │ │ │ ├── traefik.toml.example │ │ │ ├── traefik.toml.singledomain │ │ │ └── traefik.toml.wcddns │ │ └── traefik1-swarm/ │ │ └── rules/ │ │ ├── backcam.toml │ │ ├── dsmfiles.toml │ │ ├── frontcam.toml │ │ ├── hassio.toml │ │ ├── hassio_nodered.toml │ │ ├── hassio_ssh_terminal.toml │ │ ├── hassio_vscode.toml │ │ ├── pihole.toml │ │ ├── plex.toml │ │ ├── plexwebtools.toml │ │ ├── portainer.toml │ │ ├── printer.toml │ │ ├── shellinabox.toml │ │ ├── synology.toml │ │ ├── transmission.toml │ │ ├── webmin.toml │ │ └── xiaofang1.toml │ └── traefik_v3-pre-deployrr/ │ ├── CHANGELOG.md │ ├── custom/ │ │ ├── Dockerfile-csdash │ │ └── Dockerfile-php7 │ ├── docker-compose-dns.yml │ ├── docker-compose-hs-old.yml │ ├── docker-compose-mds.yml │ └── docker-compose-ws.yml ├── commits/ │ ├── 2020/ │ │ ├── 2020_08_17.txt │ │ ├── 2020_08_21.txt │ │ ├── 2020_10_05.txt │ │ ├── 2020_10_06.txt │ │ ├── 2020_10_14.txt │ │ ├── 2020_10_20.txt │ │ ├── 2020_10_24.txt │ │ └── 2020_11_29.txt │ ├── 2021/ │ │ ├── 2021_01_06.txt │ │ ├── 2021_02_14.txt │ │ ├── 2021_03_11.txt │ │ ├── 2021_04_08.txt │ │ ├── 2021_05_14.txt │ │ ├── 2021_08_09.txt │ │ └── 2021_10_04.txt │ ├── 2022/ │ │ ├── 2022_01_23.txt │ │ ├── 2022_02_04.txt │ │ ├── 2022_02_06.txt │ │ ├── 2022_02_21.txt │ │ ├── 2022_02_23.txt │ │ ├── 2022_03_20.txt │ │ ├── 2022_05_19.txt │ │ ├── 2022_06_15.txt │ │ ├── 2022_06_19.txt │ │ ├── 2022_06_26.txt │ │ ├── 2022_07_14.txt │ │ └── 2022_09_20.txt │ ├── 2023/ │ │ ├── 2023_01_26.txt │ │ ├── 2023_03_02.txt │ │ ├── 2023_05_26.txt │ │ └── 2023_09_24.txt │ ├── 2024/ │ │ ├── 2024_01_19.txt │ │ ├── 2024_01_22.txt │ │ ├── 2024_01_30.txt │ │ ├── 2024_05_01.txt │ │ └── 2024_05_30.txt │ └── 2025_10_15.txt ├── compose/ │ ├── archives/ │ │ ├── adguardhome-sync.yml │ │ ├── ampache.yml │ │ ├── apcupsd.yml │ │ ├── autoindex.yml │ │ ├── autoscan.yml │ │ ├── cadvisor.yml │ │ ├── certdumper.yml │ │ ├── cf-companion.yml │ │ ├── cloud-commander.yml │ │ ├── cloud9.yml │ │ ├── cloudflare-ddns.yml │ │ ├── cloudplow.yml │ │ ├── crowdsec-blocklist.yml │ │ ├── crowdsec-metabase.yml │ │ ├── dashy.yml │ │ ├── digikam.yml │ │ ├── dns/ │ │ │ ├── adguardhome-sync.yml │ │ │ ├── adguardhome.yml │ │ │ ├── ddns-updater.yml │ │ │ ├── socket-proxy.yml │ │ │ ├── traefik.yml │ │ │ ├── unbound.yml │ │ │ └── wg-easy.yml │ │ ├── dupeguru.yml │ │ ├── emby.yml │ │ ├── filebrowser.yml │ │ ├── firefox.yml │ │ ├── flaresolverr.yml │ │ ├── funkwhale.yml │ │ ├── glances.yml │ │ ├── gonic.yml │ │ ├── ha-dockermon.yml │ │ ├── handbrake.yml │ │ ├── headscale.yml │ │ ├── heimdall.yml │ │ ├── homeassistant.yml │ │ ├── homepage.yml │ │ ├── jackett.yml │ │ ├── loki.yml │ │ ├── makemkv.yml │ │ ├── mergerfs.yml │ │ ├── metube.yml │ │ ├── miflora.yml │ │ ├── mkvtoolnix.yml │ │ ├── mosquitto.yml │ │ ├── motioneye.yml │ │ ├── musicbrainz.yml │ │ ├── navidrome.yml │ │ ├── node-exporter.yml │ │ ├── nzbget.yml │ │ ├── nzbhydra.yml │ │ ├── ombi.yml │ │ ├── ouroboros.yml │ │ ├── photoprism.yml │ │ ├── photoshow.yml │ │ ├── plex-sync.yml │ │ ├── plex-trakt-sync.yml │ │ ├── postgres.yml │ │ ├── promtail.yml │ │ ├── pyrenamer.yml │ │ ├── readarr.yml │ │ ├── redis-commander.yml │ │ ├── smokeping.yml │ │ ├── smtp-to-telegram.yml │ │ ├── statping.yml │ │ ├── tdarr-node.yml │ │ ├── tiny-media-manager.yml │ │ ├── traefik-certs-dumper.yml │ │ ├── traefik-error-pages.yml │ │ ├── transmission-vpn.yml │ │ ├── unifi-controller.yml │ │ ├── unmanic.yml │ │ ├── varken.yml │ │ ├── watchtower.yml │ │ ├── xteve.yml │ │ └── youtubedl-material.yml │ ├── ds918/ │ │ ├── adguardhome.yml │ │ ├── certdumper.yml │ │ ├── ddns-updater.yml │ │ ├── docker-gc.yml │ │ ├── glances.yml │ │ ├── mergerfs.yml │ │ ├── oauth.yml │ │ ├── plex-sync.yml │ │ ├── plex.yml │ │ ├── portainer.yml │ │ ├── qdirstat.yml │ │ ├── rclone-gcrypt.yml │ │ ├── rclone-gdrive.yml │ │ ├── socket-proxy.yml │ │ ├── syncthing.yml │ │ ├── tdarr.yml │ │ ├── traefik.yml │ │ ├── vscode.yml │ │ └── zerotier.yml │ ├── hs/ │ │ ├── adminer.yml │ │ ├── bazarr.yml │ │ ├── cleanuparr.yml │ │ ├── cloud-commander.yml │ │ ├── custom.yml │ │ ├── deployrr-dashboard.yml │ │ ├── deunhealth.yml │ │ ├── docker-gc.yml │ │ ├── dozzle.yml │ │ ├── firefly-importer.yml │ │ ├── firefly.yml │ │ ├── glances.yml │ │ ├── gluetun.yml │ │ ├── it-tools.yml │ │ ├── kometa.yml │ │ ├── lidarr.yml │ │ ├── maintainerr.yml │ │ ├── makemkv.yml │ │ ├── mkvtoolnix.yml │ │ ├── notifiarr.yml │ │ ├── oauth.yml │ │ ├── picard.yml │ │ ├── prowlarr.yml │ │ ├── qbittorrent-vpn.yml │ │ ├── radarr.yml │ │ ├── sabnzbd.yml │ │ ├── socket-proxy.yml │ │ ├── sonarr.yml │ │ ├── stirling-pdf.yml │ │ ├── traefik.yml │ │ ├── uptime-kuma.yml │ │ └── wud.yml │ ├── mds/ │ │ ├── airsonic-advanced.yml │ │ ├── custom.yml │ │ ├── docker-gc.yml │ │ ├── influxdb.yml │ │ ├── jellyfin.yml │ │ ├── mariadb.yml │ │ ├── mosquitto.yml │ │ ├── node-exporter.yml │ │ ├── pgsql-teslamate.yml │ │ ├── plex-image-cleanup.yml │ │ ├── plex-meta-manager.yml │ │ ├── plex.yml │ │ ├── prometheus.yml │ │ ├── socket-proxy.yml │ │ └── tautulli.yml │ └── ws-arm/ │ ├── adminer.yml │ ├── chromium.yml │ ├── cloudflare-bouncer.yml │ ├── crawl4ai.yml │ ├── crowdsec.yml │ ├── custom.yml │ ├── deployrr-dashboard.yml │ ├── dockflare.yml │ ├── dozzle.yml │ ├── flowise.yml │ ├── glances.yml │ ├── grafana.yml │ ├── influxdb.yml │ ├── mariadb.yml │ ├── n8n.yml │ ├── nginx.yml │ ├── oauth.yml │ ├── ollama.yml │ ├── open-webui.yml │ ├── openhands.yml │ ├── pgadmin.yml │ ├── php7.yml │ ├── php8.yml │ ├── phpmyadmin.yml │ ├── portchecker-api.yml │ ├── portchecker.yml │ ├── postgresql-vector.yml │ ├── postgresql.yml │ ├── prometheus.yml │ ├── qdrant.yml │ ├── redis-disk.yml │ ├── redis.yml │ ├── remmina.yml │ ├── socket-proxy.yml │ ├── sshwifty.yml │ ├── traefik-access-log.yml │ ├── traefik-error-log.yml │ ├── traefik.yml │ ├── vscode.yml │ └── wikidocs.yml ├── docker-compose-ds918.yml ├── docker-compose-hs.yml ├── docker-compose-mds.yml ├── docker-compose-ws-arm.yml ├── scripts/ │ ├── ds918/ │ │ ├── change_perms_plex_hw.sh.example │ │ ├── increase_inotify_limits_syncthing.sh.example │ │ └── switch_ports.sh.example │ ├── hs/ │ │ ├── check-mounts.sh.example │ │ └── start-media-after-boot.sh.example │ └── systemd/ │ └── rclone-ds918.service.example ├── secrets_example/ │ ├── basic_auth_credentials │ ├── cf_dns_api_token │ └── traefik_forward_auth └── shared/ └── config/ └── udms_bash_aliases ================================================ FILE CONTENTS ================================================ ================================================ FILE: .env.example ================================================ PUID='1000' PGID='1000' PRIMARY_USERNAME='anand' TZ='Europe/Zurich' USERDIR='/home/anand' DOCKERDIR='/home/anand/docker' LOCAL_IPS='127.0.0.1/32,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12' CLOUDFLARE_IPS='173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22' HOSTNAME='hs' SERVER_LAN_IP='192.168.5.112' DOCKER0_IP='172.17.0.1' DOMAINNAME_1='example.com' DOWNLOADSDIR='/media/ssd/downloads' DATADIR1='/media/nas/data' DATADIR2='/media/nas/data2' MEDIADIR1='/media/nas/data/media' MEDIADIR2='/media/nas/data2/media' DOCKER_HOST='tcp://socket-proxy:2375' DEPLOYRRDASHBOARD_PORT='3050' TRAEFIK_PORT='8080' ADMINER_PORT='8081' ... ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: # [SimpleHomelab] custom: ['https://www.simplehomelab.com/geek-army/join/', 'https://www.buymeacoffee.com/simplehomelab'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] patreon: open_collective: # Replace with a single Open Collective username ko_fi: SimpleHomelab # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry ================================================ FILE: .gitignore ================================================ * */ !.gitignore !README.md !LICENSE !.env.example !docker-compose-hs.yml !docker-compose-mds.yml !docker-compose-ds918.yml !docker-compose-ws-arm.yml !.github .github/* !.github/FUNDING.yml !shared shared/* !shared/*.example !shared/config shared/config/* !shared/config/*.example !shared/config/udms_bash_aliases !secrets_example !secrets_example/* !archives archives/* !archives/** !scripts scripts/* !scripts/*.example !scripts/hs scripts/hs/* !scripts/hs/*.example !scripts/mds scripts/mds/* !scripts/mds/*.example !scripts/systemd scripts/systemd/* !scripts/systemd/*.example !scripts/ds918 scripts/ds918/* !scripts/ds918/*.example !scripts/ws-arm scripts/ws-arm/* !scripts/ws-arm/*.example !compose compose/* !compose/** !commits !commits/** !appdata appdata/* !appdata/authelia appdata/authelia/* !appdata/authelia/*.example !appdata/picard appdata/picard/* !appdata/picard/*.example !appdata/rclone appdata/rclone/* !appdata/rclone/*.example !appdata/php !appdata/php/** !appdata/nginx !appdata/nginx/** !appdata/traefik3 appdata/traefik3/* !appdata/traefik3/*.example !appdata/traefik3/rules appdata/traefik3/rules/* !appdata/traefik3/rules/*.example !appdata/traefik3/rules/ws-arm appdata/traefik3/rules/ws-arm/* !appdata/traefik3/rules/ws-arm/*.example !appdata/traefik3/rules/toml appdata/traefik3/rules/toml/* !appdata/traefik3/rules/toml/*.example !appdata/traefik3/rules/ds918 appdata/traefik3/rules/ds918/* !appdata/traefik3/rules/ds918/*.example !appdata/traefik3/rules/ds918/tls-opts.yml !appdata/traefik3/rules/ds918/middlewares-*.yml !appdata/traefik3/rules/ds918/chain-*.yml !appdata/traefik3/rules/hs appdata/traefik3/rules/hs/* !appdata/traefik3/rules/hs/*.example !appdata/traefik3/rules/hs/tls-opts.yml !appdata/traefik3/rules/hs/middlewares-*.yml !appdata/traefik3/rules/hs/chain-*.yml !appdata/traefik3/rules/ws-arm appdata/traefik3/rules/ws-arm/* !appdata/traefik3/rules/ws-arm/*.example !appdata/traefik3/rules/ws-arm/tls-opts.yml !appdata/traefik3/rules/ws-arm/middlewares-*.yml !appdata/traefik3/rules/ws-arm/chain-*.yml !appdata/traefik2 appdata/traefik2/* !appdata/traefik2/*.example !appdata/traefik2/rules appdata/traefik2/rules/* !appdata/traefik2/rules/*.example !appdata/traefik2/rules/ws appdata/traefik2/rules/ws/* !appdata/traefik2/rules/ws/*.example !appdata/traefik2/rules/toml appdata/traefik2/rules/toml/* !appdata/traefik2/rules/toml/*.example !appdata/traefik2/rules/ds918 appdata/traefik2/rules/ds918/* !appdata/traefik2/rules/ds918/*.example !appdata/traefik2/rules/ds918/tls-opts.yml !appdata/traefik2/rules/ds918/middlewares-*.yml !appdata/traefik2/rules/ds918/chain-*.yml !appdata/traefik2/rules/hs appdata/traefik2/rules/hs/* !appdata/traefik2/rules/hs/*.example !appdata/traefik2/rules/hs/tls-opts.yml !appdata/traefik2/rules/hs/middlewares-*.yml !appdata/traefik2/rules/hs/chain-*.yml !appdata/traefik2/rules/ws appdata/traefik2/rules/ws/* !appdata/traefik2/rules/ws/*.example !appdata/traefik2/rules/ws/tls-opts.yml !appdata/traefik2/rules/ws/middlewares-*.yml !appdata/traefik2/rules/ws/chain-*.yml ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2019 SmartHomeBeginner Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # 🐳 Ultimate Docker-Traefik Repo by Anand > **Real-world Docker configurations** from Anand at [SimpleHomelab.com](https://www.simplehomelab.com/) (formerly SmartHomeBeginner.com) [](https://www.simplehomelab.com/deployrr/) [](https://www.simplehomelab.com/ultimate-docker-media-server-udms-01/) [](#-featured-applications) --- ## 🎯 What This Repository Offers This repository contains my **actual production Docker setups** that power my homelab infrastructure. Unlike theoretical guides, these are real-world configurations that I use daily. My setup is based on [Deployrr](https://www.simplehomelab.com/deployrr/) and [Ultimate Docker Media Server](https://www.simplehomelab.com/ultimate-docker-media-server-udms-01/) series. ### 🎯 Repository Purpose 1. **Share actual setups** - Real configurations I use in production 2. **Extend Deployrr capabilities** - Examples beyond standard Deployrr templates --- ## 🖥️ Infrastructure Overview I believe in **simple, energy-efficient homelab** design that maximizes performance while minimizing complexity. ### 🏠 Networking Architecture - **OPNsense** home firewall running on Proxmox VM (DMZed on ISP router) - **Tailscale** mesh networking connecting all hosts ### 📊 Hardware Specifications | Component | Specifications | Purpose | |-----------|---------------|---------| | **TopTon V700 Mini PC** | Intel i7-13800H, 64GB RAM, 2×2TB NVMe ZFS RAID1, 4TB SATA SSD | Proxmox host that runs my Home Server, Media/Database Server, Home Assistant, Proxmox Backup Server, etc. | | **Synology DS918+** | DX517 Expansion Unit, 8GB RAM, 4×18TB SHR2 (×2 volumes) | Primary use is storage. But I tinker with Docker on it. | | **Oracle Ampere A1** | 4 vCPU ARM64, 24GB RAM, 200GB storage | Web server and automations | --- ## 🐳 Docker Hosts All Docker configurations are organized by host with clear naming conventions. I pool them together and push them to this repository. ### 🏠 Home Server (prefix/suffix: `hs`) ```yaml Platform: Ubuntu 24.04 LXC on Proxmox Resources: 8 vCPU, 8GB RAM, 4GB Swap Storage: 64GB OS + 32GB Docker data Purpose: Core homelab services and support my tinkering habits ``` ### 🎬 Media Database Server (prefix/suffix: `mds`) ```yaml Platform: Ubuntu 24.04 LXC on Proxmox Resources: 12 vCPU, 12GB RAM, 4GB Swap Storage: 64GB OS + 72GB Docker data Purpose: Media servers and databases - Separate so they are not affected by my tinkering ``` ### 🌐 Web Server (prefix/suffix: `ws-arm`) ```yaml Platform: Ubuntu 24.04 ARM64 on Oracle Cloud Resources: 4 vCPU, 24GB RAM Storage: 100GB OS + 100GB data Purpose: Web Server (Nginx, PHP-FPM 8, WordPress, etc.), n8n, Flowise, and more ``` ### 💾 Synology NAS (prefix/suffix: `ds918`) ```yaml Platform: DSM 7.X Resources: 8GB RAM, DX517 Expansion Unit, Volume1 - 4x18TB SHR2, Volume 2 - 4x18TB SHR2 Purpose: I use this only for tinkering with Docker ``` ### 📁 Archives Legacy configurations in `archives` folder - not actively maintained but useful as reference. --- ## 📚 Learning Resources ### 🎥 Ultimate Docker Media Server Guides and Videos #### 🚀 Getting Started 1. [Introduction and Overview](https://www.simplehomelab.com/udms-01-introduction-and-overview/) 2. [Hardware: NAS, Mini PC, or VPS (FREE!). Which one?](https://www.simplehomelab.com/udms-02-hardware-nas-minipc-vps/) 3. [Best Home Server OS, Proxmox LXC vs VM](https://www.simplehomelab.com/udms-03-best-home-server-os/) #### ⚙️ Infrastructure Setup 4. [Install Proxmox on Mini PC with ZFS RAID1 Mirror + 3 Tweaks](https://www.simplehomelab.com/udms-04-install-proxmox-on-mini-pc/) [📹](https://youtu.be/2nIPY7D-UA0) 5. [Installing and Prepping Ubuntu/Debian](https://www.simplehomelab.com/udms-05-installing-ubuntu-on-proxmox/) [📹](https://youtu.be/-ZSQdJ62r-Q) 6. [Mounting Remote Folders using Rclone](https://youtu.be/D-XS0biLP14) [📹](https://youtu.be/D-XS0biLP14) 7. Mounting Remote Folders using SMB/CIFS *(Coming Soon)* 8. Mounting Remote Folders using NFS *(Coming Soon)* 9. Binding Mounting on Proxmox Unprivileged LXC *(Coming Soon)* #### 🔧 Advanced Configuration 10. [Proxmox Unprivileged LXC Network Node Passthrough](https://www.simplehomelab.com/udms-10-proxmox-lxc-network-device-passthrough/) [📹](https://youtu.be/r0nGMFs5pCY) 11. [Proxmox Unprivileged LXC iGPU Node Passthrough](https://www.simplehomelab.com/udms-11-gpu-passthrough-on-proxmox-lxc/) [📹](https://youtu.be/kvnJYyyLoIk) #### 🐳 Docker Fundamentals 12. [Installing Docker and Docker Compose on Ubuntu/Debian](https://www.simplehomelab.com/udms-12-install-docker-and-docker-compose/) 13. [Essential Docker Commands & Time-Saving Aliases](https://www.simplehomelab.com/udms-13-docker-and-docker-compose-commands/) 14. [Kickass Docker Media Server with 150+ Apps](https://www.simplehomelab.com/udms-14-docker-media-server/) [📹](https://youtu.be/THuLgGwq0vg) 15. Best Docker Containers for Homelab *(Coming Soon)* #### 🌐 Remote Access & Security 16. [Exposing Apps to the Internet: Tailscale](https://www.simplehomelab.com/udms-part-16-tailscale-homelab-remote-access/) [📹](https://youtu.be/M6GMp4FJrB8) 17. Exposing Apps to the Internet: Nginx Proxy Manager *(Coming Soon)* 18. [Exposing Apps to the Internet: Traefik Reverse Proxy](https://www.simplehomelab.com/udms-18-traefik-docker-compose-guide/) [📹](https://www.youtube.com/playlist?list=PL1Hno7tIbSWUGrZSqeB9aCsdAuoeVwvgh) #### 🔐 Authentication & Security 19. [Authentication for Docker Apps - Authelia](https://www.simplehomelab.com/udms-19-authelia-docker-compose/) [📹](https://youtu.be/UIq8PLZHBtk) 20. [Authentication for Docker Apps - Google OAuth 2](https://youtu.be/SCKALXprTQE) [📹](https://youtu.be/SCKALXprTQE) 21. [Authentication for Docker Apps - Authentik](https://youtu.be/GoUmJAe1MKc) [📹](https://youtu.be/GoUmJAe1MKc) 22. [CrowdSec Docker Compose – Bulletproof IPS for Homelabs](https://www.simplehomelab.com/udms-22-crowdsec-docker-compose/) 23. [Setting up Crowdsec Cloudflare Bouncer](https://www.simplehomelab.com/udms-23-crowdsec-cloudflare-bouncer/) 24. [Setting up Crowdsec Traefik Bouncer](https://www.simplehomelab.com/udms-24-crowdsec-traefik-bouncer/) #### 🚀 Advanced Topics 25. Advanced Topics: Traefik Plugins *(Coming Soon)* 26. Advanced Topics: Traefik Multiple Domains *(Coming Soon)* 27. Advanced Topics: Traefik Domain Passthrough *(Coming Soon)* 28. Advanced Topics: [Traefik Conditional Auth Bypass](https://www.simplehomelab.com/udms-28-traefik-auth-bypass/) 29. Advanced Topics: [CrowdSec Multiserver Setup](https://www.simplehomelab.com/udms-29-crowdsec-multiserver/) 30. Closing Thoughts and Options to Level Up *(Coming Soon)* ### 📖 Additional Guides #### 🏢 Synology NAS - [Ultimate Synology NAS Docker Compose Media Server 2022](https://www.simplehomelab.com/synology-nas-docker-media-server-2022/) *(Update Pending)* #### 🌐 Web Server - [WordPress on Docker with Nginx, Traefik, LE SSL, Security, and Speed](https://www.simplehomelab.com/wordpress-on-docker-traefik/) *(Update Pending)* #### 🤖 Automation - [Deployrr: Automate Docker Compose based Homelab Setup](https://www.simplehomelab.com/deployrr/) [📹](https://youtu.be/OnoKy73b-w4) --- ## 🚀 Featured Applications **150+ Docker applications** ready for deployment, sourced from the [Deployrr Repository](https://github.com/SimpleHomelab/Deployrr/blob/main/APPS.md): Adminer, Airsonic-Advanced, Authentik, Audiobookshelf, Authelia, Baikal, Bazarr, Beets, Bookstack, cAdvisor, Calibre, Calibre-Web, Change Detection, Chromium, Cleanuparr, Cloud Commander, Cloudflare Tunnel, CrowdSec, CrowdSec Firewall Bouncer, CyberChef, Dashy, DDNS Updater, DeUnhealth, DigiKam, Dockwatch, Docker Garbage Collection, DokuWiki, Double Commander, Dozzle, Dozzle Agent, DweebUI, Emby, ESPHome, FileZilla, Flame, Flaresolverr, Flowise, FreshRSS, Funkwhale, GameVault, Glances, Gluetun, Gonic, Gotenberg, GPTWOL, Grafana, Grocy, Guacamole, Heimdall, Homarr, Home Assistant Core, Homebridge, Homer, Homepage, Huntarr, Immich, InfluxDB, IT-Tools, Jackett, Jellyfin, Jellyseerr, Kasm, Kavita, Kometa, Komga, Lidarr, Lollypop, Maintainerr, MariaDB, Mosquitto, MQTTX Web, Mylar3, n8n, Navidrome, Netdata, Nextcloud, Node Exporter, Node-RED, Notifiarr, OAuth, Ollama, Ombi, OpenHands, Open-WebUI, Organizr, Overseerr, Paperless-AI, Paperless-NGX, PdfDing, PgAdmin, phpMyAdmin, Pi-hole, Piwigo, Plex, Portainer, PostgreSQL, Privatebin, Prometheus, Prowlarr, qBittorrent, qBittorrent with VPN, Qdrant, Radarr, Redis, Redis Commander, Remmina, Resilio Sync, SABnzbd, Scrutiny, SearXNG, ShellInABox, Smokeping, Socket Proxy, Sonarr, Speedtest-Tracker, SSHwifty, Stirling PDF, Tailscale, Tautulli, The Lounge, Theme Park, Tika, TinyAuth, Traefik, Traefik Access Logs, Traefik Bouncer, Traefik Certs Dumper, Traefik Error Logs, Transmission, Trilium Next, Uptime-Kuma, Vaultwarden, Vikunja, Visual Studio Code Server, Wallos, Watchtower, Weaviate, WG-Easy, What's Up Docker (WUD), WikiDocs, Wireguard, and ZeroTier. **Custom Apps** not supported by Deployrr yet (e.g. Nginx, PHP, etc.) --- ## ⚡ Quick Start Commands ### 🎯 Essential Docker Aliases I use **Bash Aliases** installed via Deployrr for streamlined Docker management: | Command | Description | |---------|-------------| | `dcup` | Start Docker stack | | `dcdown` | Stop Docker stack | | `dcrec` | Start or recreate specific service/full stack | | `dcstop` | Stop specific service/full stack | | `dcrestart` | Restart specific service/full stack | | `dclogs` | View real-time logs for stack/service | | `dcpull` | Pull new images for stack/service | > 📖 **Learn More**: [Essential Docker Commands & Time-Saving Aliases](https://www.simplehomelab.com/udms-13-docker-and-docker-compose-commands/) | [Bash Aliases in Deployrr](https://docs.deployrr.app/operating-system/bash-aliases-explained) --- ## 🤝 Support & Community **Documenting, writing guides, and maintaining this repository** requires hundreds of hours of dedicated work. Your support helps keep this project alive and continuously updated. ### 🎖️ Join the Geek Army
### 💬 Join the Discord Community ================================================ FILE: appdata/authelia/configuration.yml.example ================================================ ############################################################### # Authelia configuration # ############################################################### server: address: tcp://0.0.0.0:9091/ buffers: read: 4096 write: 4096 endpoints: enable_pprof: false enable_expvars: false disable_healthcheck: false tls: key: "" certificate: "" # https://www.authelia.com/configuration/miscellaneous/logging/ log: level: info format: text file_path: /config/authelia.log keep_stdout: true # https://www.authelia.com/configuration/second-factor/time-based-one-time-password/ totp: issuer: example.com period: 30 skew: 1 # AUTHELIA_DUO_PLACEHOLDER # https://www.authelia.com/reference/guides/passwords/ authentication_backend: password_reset: disable: false refresh_interval: 5m file: path: /config/users.yml password: algorithm: argon2id iterations: 1 salt_length: 16 parallelism: 8 memory: 256 # blocks this much of the RAM # https://www.authelia.com/overview/authorization/access-control/ access_control: default_policy: deny rules: # - domain: # - "*.example.com" # - "example.com" # policy: bypass # networks: # bypass authentication for local networks # - 10.0.0.0/8 # - 192.168.0.0/16 # - 172.16.0.0/12 - domain: - "*.example.com" - "example.com" policy: two_factor # https://www.authelia.com/configuration/session/introduction/ session: name: authelia_session same_site: lax expiration: 7h inactivity: 5m remember_me: 1M cookies: - domain: 'example.com' authelia_url: 'https://authelia.example.com' default_redirection_url: 'https://example.com' # AUTHELIA_REDIS_PLACEHOLDER # https://www.authelia.com/configuration/security/regulation/ regulation: max_retries: 3 find_time: 10m ban_time: 12h # https://www.authelia.com/configuration/storage/introduction/ storage: # For local storage, uncomment lines below and comment out mysql. https://docs.authelia.com/configuration/storage/sqlite.html # This is good for the beginning. If you have a busy site then switch to other databases. local: path: /config/db.sqlite3 # https://www.authelia.com/configuration/notifications/introduction/ notifier: disable_startup_check: false # For testing purposes, notifications can be sent in a file. Be sure to map the volume in docker-compose. filesystem: filename: /config/notifications.txt ================================================ FILE: appdata/authelia/users.yml.example ================================================ ############################################################### # Users Database # ############################################################### # This file can be used if you do not have an LDAP set up. # CREATE NEW HASHED PASSWORD # sudo docker run -v /home/user/docker/appdata/authelia/configuration.yml:/configuration.yml -it authelia/authelia:4.39.4 authelia crypto hash generate --config /configuration.yml --password MYSTRONGPASSWORD # https://www.authelia.com/reference/guides/passwords/ # List of users users: user1: displayname: "John_Doe_1" password: "HASHED_PASSWORD" email: USER_EMAIL groups: - admins # user2: # displayname: "John_Doe_2" # password: "HASHED_PASSWORD" # email: USER_EMAIL # groups: # - users ================================================ FILE: appdata/nginx/common/acl.conf ================================================ # EasyEngine (ee) protect locations using # HTTP authentication || IP address satisfy any; auth_basic "Restricted Area"; auth_basic_user_file /var/run/secrets/htpasswd; # Allowed IP Address List allow 127.0.0.1; deny all; ================================================ FILE: appdata/nginx/common/disabled/commentspam.conf.disabled ================================================ # Deny Access for comments to No Referrer Requests - spam protection location ~* (wp-comments-post)\.php$ { if ($http_cookie !~* "_gat"){ return 405; } if ($http_referer !~ ^(simplehomelab.com|www.simplehomelab.com) ) { return 405; } } #Return 410 for the 404s for spammy backlinks #http://webmasters.stackexchange.com/questions/84317/help-to-remove-spam-links-leading-to-404-page #http://serverfault.com/questions/646154/return-error-410-for-location-regex-in-nginx?rq=1 location = / { if ($query_string ~ ^p=1459955773) { return 410; } if ($query_string ~ ^p=1461920860) { return 410; } } ================================================ FILE: appdata/nginx/common/disabled/hack-protection.conf.disabled ================================================ #http://serverfault.com/questions/811912/can-nginx-location-blocks-match-a-url-query-string if ( $args ~ "subid=" ) { return 403; } if ( $args ~ "link=" ) { return 403; } if ( $args ~ "q=" ) { return 403; } #location = /raio-raspberry-pi-easier/ { # return 403; #} ================================================ FILE: appdata/nginx/common/disabled/php5.conf.disabled ================================================ # PHP NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include fastcgi.conf; fastcgi_pass php5; } ================================================ FILE: appdata/nginx/common/disabled/redis-php7.conf.disabled ================================================ # Redis NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) set $skip_cache 0; # POST requests and URL with a query string should always go to php if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Don't cache URL containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { set $skip_cache 1; } # Don't use the cache for logged in users or recent commenter or customer with items in cart if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { set $skip_cache 1; } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php?$args; } location /redis-fetch { internal ; set $redis_key $args; redis_pass redis; } location /redis-store { internal ; set_unescape_uri $key $arg_key ; redis2_query set $key $echo_request_body; redis2_query expire $key 14400; redis2_pass redis; } location ~ \.php$ { set $key "nginx-cache:$scheme$request_method$host$request_uri"; try_files $uri =404; srcache_fetch_skip $skip_cache; srcache_store_skip $skip_cache; srcache_response_cache_control off; set_escape_uri $escaped_key $key; srcache_fetch GET /redis-fetch $key; srcache_store PUT /redis-store key=$escaped_key; more_set_headers 'X-SRCache-Fetch-Status $srcache_fetch_status'; more_set_headers 'X-SRCache-Store-Status $srcache_store_status'; include fastcgi_params; fastcgi_pass php7; } ================================================ FILE: appdata/nginx/common/disabled/selfhosted-cdn.conf.disabled ================================================ # Comment: The section below allows only images, JS, and CSS files to be available to self-hosted CDN subdomains. Avoids duplicate availability of other content through subdomains. if ($request_uri ~* "\.(jpe?g|gif|png)$") { rewrite ^(.*) https://cdn.simplehomelab.com$1 permanent; } ================================================ FILE: appdata/nginx/common/disabled/shb-ssl.conf.disabled ================================================ ssl_certificate /etc/nginx/certs/shb/shb_com-unified.crt; ssl_certificate_key /etc/nginx/certs/shb/shb20180213.key; ssl_dhparam /etc/nginx/certs/shb/dhparam2048.pem; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/nginx/certs/shb/shb_com-ca-bundle-trusted.crt; ================================================ FILE: appdata/nginx/common/hotlink.conf ================================================ #Prevent hotlinking location ~* \.(gif|png|jpe?g|apk|zip)$ { expires 7d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; # prevent hotlink valid_referers none blocked ~.simplehomelab. ~.google. ~.bing. ~.yahoo. server_names ~($host); if ($invalid_referer) { return 403; } } ================================================ FILE: appdata/nginx/common/nonwp-common-php.conf ================================================ # WordPress COMMON SETTINGS # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Limit access to avoid brute force attack # Disable WP Login location = /wp-login.php { deny all; access_log off; log_not_found off; } # Disable wp-config.txt location = /wp-config.txt { deny all; access_log off; log_not_found off; } # Disable xmlrpc location = /xmlrpc.php { deny all; access_log off; log_not_found off; } # Disallow php in upload folder #location /wp-content/uploads/ { location /images/ { location ~ \.php$ { #Prevent Direct Access Of PHP Files From Web Browsers deny all; } } ================================================ FILE: appdata/nginx/common/php7/nonwp-locations-php.conf ================================================ # NGINX CONFIGURATION FOR COMMON LOCATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Basic locations files location = /favicon.ico { access_log off; log_not_found off; expires max; } location = /robots.txt { # Refer #340 issue try_files $uri $uri/ /index.php?$args; access_log off; log_not_found off; } # Cache static files location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|swf|webp|avif)$ { add_header "Access-Control-Allow-Origin" "*"; access_log off; log_not_found off; expires max; } # Security settings for better privacy # Deny hidden files location ~ /\.well-known { allow all; } location ~ /\. { deny all; access_log off; log_not_found off; } # Deny backup extensions & log files location ~* ^.+\.(bak|log|old|orig|original|php#|php~|php_bak|save|swo|swp|sql)$ { deny all; access_log off; log_not_found off; } # Return 403 forbidden for readme.(txt|html) or license.(txt|html) or example.(txt|html) if ($uri ~* "^.+(readme|license|example)\.(txt|html)$") { return 403; } # # Status pages # location /nginx_status { # stub_status on; # access_log off; # include common/acl.conf; # } # location ~ ^/(status|ping) { # include fastcgi.conf; # fastcgi_pass php7; # include common/acl.conf; # } ================================================ FILE: appdata/nginx/common/php7/nonwp-nfc-php.conf ================================================ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Enable Nginx FastCGI Cache #set $skip_cache 0; # Disable Nginx FastCGI Cache set $skip_cache 1; # POST requests and URL with a query string should always go to php if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { # include common/hbgauthor.conf; try_files $uri =404; include fastcgi.conf; fastcgi_pass php7; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; } # Not available - Nginx Commercial Subscription Required # location ~ /purge(/.*) { # fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; # access_log off; #} ================================================ FILE: appdata/nginx/common/php7/wp-common-php.conf ================================================ # WordPress COMMON SETTINGS # Limit access to avoid brute force attack location = /wp-login.php { #include common/acl.conf; limit_req zone=one burst=1 nodelay; include fastcgi.conf; fastcgi_pass php7; } # Disable wp-config.txt location = /wp-config.txt { deny all; access_log off; log_not_found off; } # Disable xmlrpc location = /xmlrpc.php { deny all; access_log off; log_not_found off; } # Disallow php in upload folder #location /wp-content/uploads/ { location /images/ { location ~ \.php$ { #Prevent Direct Access Of PHP Files From Web Browsers deny all; } } ================================================ FILE: appdata/nginx/common/php7/wp-nfc-php-beta.conf ================================================ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Enable Nginx FastCGI Cache set $skip_cache 1; # Disable Nginx FastCGI Cache #set $skip_cache 1; # POST requests and URL with a query string should always go to php if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Don't cache URL containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap_index.*\.xml|.*sitemap.*\.xml)") { set $skip_cache 1; } # Don't use the cache for logged in users or recent commenter or customer with items in cart if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { set $skip_cache 1; } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include fastcgi.conf; fastcgi_pass php8; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; } # Not available - Nginx Commercial Subscription Required # location ~ /purge(/.*) { # fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; # access_log off; #} ================================================ FILE: appdata/nginx/common/php7/wp-nfc-php.conf ================================================ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Enable Nginx FastCGI Cache set $skip_cache 1; # Disable Nginx FastCGI Cache #set $skip_cache 1; # POST requests and URL with a query string should always go to php if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Don't cache URL containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap_index.*\.xml|.*sitemap.*\.xml)") { set $skip_cache 1; } # Don't use the cache for logged in users or recent commenter or customer with items in cart if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { set $skip_cache 1; } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include fastcgi.conf; fastcgi_pass php7; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; } # Not available - Nginx Commercial Subscription Required # location ~ /purge(/.*) { # fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; # access_log off; #} ================================================ FILE: appdata/nginx/common/php8/nonwp-locations-php.conf ================================================ # NGINX CONFIGURATION FOR COMMON LOCATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Basic locations files location = /favicon.ico { access_log off; log_not_found off; expires max; } location = /robots.txt { # Refer #340 issue try_files $uri $uri/ /index.php?$args; access_log off; log_not_found off; } # Cache static files location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|swf|webp|avif)$ { add_header "Access-Control-Allow-Origin" "*"; access_log off; log_not_found off; expires max; } # Security settings for better privacy # Deny hidden files location ~ /\.well-known { allow all; } location ~ /\. { deny all; access_log off; log_not_found off; } # Deny backup extensions & log files location ~* ^.+\.(bak|log|old|orig|original|php#|php~|php_bak|save|swo|swp|sql)$ { deny all; access_log off; log_not_found off; } # Return 403 forbidden for readme.(txt|html) or license.(txt|html) or example.(txt|html) if ($uri ~* "^.+(readme|license|example)\.(txt|html)$") { return 403; } ================================================ FILE: appdata/nginx/common/php8/nonwp-nfc-php.conf ================================================ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Enable Nginx FastCGI Cache #set $skip_cache 0; # Disable Nginx FastCGI Cache set $skip_cache 1; # POST requests and URL with a query string should always go to php if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { # include common/hbgauthor.conf; try_files $uri =404; include fastcgi.conf; fastcgi_pass php8; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; } # Not available - Nginx Commercial Subscription Required # location ~ /purge(/.*) { # fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; # access_log off; #} ================================================ FILE: appdata/nginx/common/php8/wp-common-php.conf ================================================ # WordPress COMMON SETTINGS # Limit access to avoid brute force attack # Also Managed Challenge on Cloudflare WAF location = /wp-login.php { #include common/acl.conf; limit_req zone=one burst=1 nodelay; include fastcgi.conf; fastcgi_pass php8wp; } # Disable wp-config.txt location = /wp-config.txt { deny all; access_log off; log_not_found off; } # Managed challenge on Cloudflare WAF # Disable xmlrpc location = /xmlrpc.php { deny all; access_log off; log_not_found off; } # Disallow php in upload folder #location /wp-content/uploads/ { location /images/ { location ~ \.php$ { #Prevent Direct Access Of PHP Files From Web Browsers deny all; } } ================================================ FILE: appdata/nginx/common/php8/wp-nfc-php.conf ================================================ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES LOST AFTER UPDATE EasyEngine (ee) # Enable Nginx FastCGI Cache set $skip_cache 0; # Disable Nginx FastCGI Cache #set $skip_cache 1; # POST requests and URL with a query string should always go to php if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Don't cache URL containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap_index.*\.xml|.*sitemap.*\.xml)") { set $skip_cache 1; } # Don't use the cache for logged in users or recent commenter or customer with items in cart if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { set $skip_cache 1; } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include fastcgi.conf; fastcgi_pass php8wp; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; } ================================================ FILE: appdata/nginx/common/wp-404-rewrites.conf ================================================ #Rewrite to fix /mobile /GPT_URL 404 errors # https://stackoverflow.com/questions/39377750/nginx-location-rewrite-url-with-or-without-trailing-slash # redirect /mobile/ and /mobile to parent url rewrite ^(.*/)mobile/?$ $1 permanent; # redirect /amp/ and /amp to parent url rewrite ^(.*/)amp/?$ $1 permanent; # redirect /null/ and /null to parent url rewrite ^(.*/)null/?$ $1 permanent; # redirect /href/ and /href to parent url rewrite ^(.*/)href/?$ $1 permanent; # redirect /comment-subscriptions/, /comment-3341/, etc. to parent url rewrite ^(.*/)comment-(.*/?)$ $1/#disqus_thread permanent; # redirect /feeds/ to /feed/ rewrite ^(.*/)feeds/?$ $1/feed/ permanent; # redirect /post-slug/feed/ to /feed/ rewrite ^(.*/)(.*/)feed/?$ $1/feed/ permanent; # deleted posts rewrite ^(.*/)htpc-news-roundup(.*)$ $1 permanent; #forward htpc news roundups to homepage rewrite ^(.*/)smart-home-news-roundup(.*)$ $1 permanent; #forward htpc news roundups to homepage rewrite ^(.*/)openelec-4(.*)$ $1/openelec-released-raspberry-pi-update-instructions/ permanent; rewrite ^(.*/)openelec-3(.*)$ $1/openelec-released-raspberry-pi-update-instructions/ permanent; rewrite ^(.*/)openelec-6(.*)$ $1/openelec-released-raspberry-pi-update-instructions/ permanent; rewrite ^(.*/)openelec-5(.*)$ $1/openelec-released-raspberry-pi-update-instructions/ permanent; rewrite ^(.*/)qbittorrent-3(.*)$ $1/qbittorrent-released-installation-and-upgrade/ permanent; rewrite ^(.*/)qbittorrent-v3(.*)$ $1/qbittorrent-released-installation-and-upgrade/ permanent; rewrite ^(.*/)transmission-2(.*)$ $1/transmission-released-installation-and-upgrade/ permanent; rewrite ^(.*/)sabnzbd-0(.*)$ $1/sabnzbd-released-installation-upgrade/ permanent; rewrite ^(.*/)sabnzbd-1(.*)$ $1/sabnzbd-released-installation-upgrade/ permanent; rewrite ^(.*/)webmin-1(.*)$ $1/webmin-released-installation-and-upgrade/ permanent; rewrite ^(.*/)phpmyadmin-4(.*)$ $1/phpmyadmin-released-installation-and-upgrade/ permanent; rewrite ^(.*/)deluge-torrent-1(.*)$ $1/deluge-torrent-released-installation-and-upgrade/ permanent; rewrite ^(.*/)adbfire-201(.*)$ $1/install-and-configure-adblink-for-amazon-fire-tv/ permanent; rewrite ^(.*/)minidlna-1(.*)$ $1/install-minidlna-on-ubuntu-ultimate-guide/ permanent; # add to any 404s /slug/\"https:\/\/www.addtoany.com\/share\ # enable this # rewrite ^(/.*/.*)addtoany(.*)$ https://www.simplehomelab.com/$1 permanent; # remove weird characters at the end of 404s # enable this # rewrite ^(/.*/.*)t3=(.*)$ https://www.simplehomelab.com/$1 permanent; # ,t3=nav... and '',t3=nav # rewrite ^(.*/\'/)$ $1 permanent; # /single quote/ # #rewrite ^(.*/)*5C*m3=$ $1 permanent; # #rewrite ^(.*/)admin/$ $1/wp-admin/ permanent; # #the one below does not seem to work # #rewrite ^(.*/)[GPT_URL]$ $1 permanent; #rewrite ^(/.*/.*)m3=(.*)$ https://www.simplehomelab.com/$1 permanent; # ,m3= and '',m3= ================================================ FILE: appdata/nginx/common/wp-locations-php.conf ================================================ # NGINX CONFIGURATION FOR COMMON LOCATION # From WP Cloudflare Super Page cache Plugin - June 14, 2021 location ~* \.(xml|xsl)$ { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; } location /robots.txt { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; } location /wp-cron.php { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; } #location = /wp-content/wp-cloudflare-super-page-cache/www.simplehomelab.com/debug.log { access_log off; deny all; } # Cache static files location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|js|gif|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|swf)$ { add_header Pragma "public"; add_header Cache-Control "public"; access_log off; log_not_found off; expires 1y; } # https://shortpixel.com/knowledge-base/article/111-configure-nginx-to-transparently-serve-webp-files-when-supported location ~* ^(/images/.+)\.(png|jpg|jpeg)$ { set $base $1; set $webp_uri $base$webp_suffix; set $webp_old_uri $base.$2$webp_suffix; set $root "/var/www/html/simplehomelab"; root $root; add_header Vary Accept; add_header Pragma "public"; add_header Cache-Control "public"; access_log off; log_not_found off; expires 1y; if ( !-f $root$webp_uri ) { add_header X_WebP_SP_Miss $root$webp_uri; } try_files $webp_uri $webp_old_uri $uri =404; } # Feed location ~* \.(?:rss|atom)$ { add_header Pragma "public"; add_header Cache-Control "public"; access_log off; log_not_found off; expires 5d; } # Security settings for better privacy # Deny hidden files location ~ /\.well-known { allow all; } location ~ /\. { deny all; access_log off; log_not_found off; } # Deny backup extensions & log files location ~* ^.+\.(bak|log|old|orig|original|php#|php~|php_bak|save|swo|swp|sql)$ { deny all; access_log off; log_not_found off; } # Return 403 forbidden for readme.(txt|html) or license.(txt|html) or example.(txt|html) # Added build.xml based on 404 data on redirection plugin - 9/21/2020 if ($uri ~* "^.+(readme|license|example|build)\.(txt|html|xml)$") { return 403; } ================================================ FILE: appdata/nginx/common/wp-rankmath-sitemap-config.conf ================================================ # Sitemap Config location ~ ([^/]*)sitemap(.*)\.x(m|s)l$ { # Basic Config rewrite ^.*/sitemap_index\.xml$ /index.php?sitemap=1 last; rewrite ^.*/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last; # Sitemap Styling - Blank Sitemap error or "Error loading stylesheet: Parsing an XSLT stylesheet failed." rewrite ^/([a-z]+)?-?sitemap\.xsl$ /index.php?xsl=$1 last; # Redirect sitemap to sitemap_index rewrite ^/sitemap\.xml$ /sitemap_index.xml permanent; access_log off; } ================================================ FILE: appdata/nginx/common/wp-yoast-sitemap-config.conf ================================================ # Yoast sitemap location ~ ([^/]*)sitemap(.*)\.x(m|s)l$ { rewrite ^/sitemap\.xml$ /sitemap_index.xml permanent; rewrite ^/([a-z]+)?-?sitemap\.xsl$ /index.php?xsl=$1 last; # Rules for yoast sitemap with wp|wpsubdir|wpsubdomain rewrite ^.*/sitemap_index\.xml$ /index.php?sitemap=1 last; rewrite ^.*/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last; # Following lines are options. Needed for WordPress seo addons rewrite ^/news_sitemap\.xml$ /index.php?sitemap=wpseo_news last; rewrite ^/locations\.kml$ /index.php?sitemap=wpseo_local_kml last; rewrite ^/geo_sitemap\.xml$ /index.php?sitemap=wpseo_local last; rewrite ^/video-sitemap\.xsl$ /index.php?xsl=video last; access_log off; } ================================================ FILE: appdata/nginx/conf.d/blockips.conf ================================================ # Block IP Address # deny 1.1.1.1; ================================================ FILE: appdata/nginx/conf.d/fastcgi.conf ================================================ # FastCGI cache settings fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:50m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503; fastcgi_cache_valid 200 301 302 404 1h; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SERVER_NAME $http_host; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; fastcgi_keep_conn on; ================================================ FILE: appdata/nginx/conf.d/optimizations.conf ================================================ # Custom Configs # Prevent iframe or clickjacking https://gist.github.com/plentz/6737338 # add_header X-Frame-Options SAMEORIGIN; # Added by Traefik # Custom Sizes https://www.digitalocean.com/community/articles/how-to-optimize-nginx-configuration # http://www.narga.net/recommended-nginx-configuration-high-traffic-wordpress/2/ client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 8m; large_client_header_buffers 4 32k; # 400 Bad Request - increased from 2 8k. # Caches information about open FDs, freqently accessed files. # Changing this setting, in my environment, brought performance up from 560k req/sec, to 904k req/sec. # I recommend using some varient of these options, though not the specific values listed below. # http://www.narga.net/recommended-nginx-configuration-high-traffic-wordpress/2/ open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; # Time Outs https://www.digitalocean.com/community/articles/how-to-optimize-nginx-configuration # http://www.narga.net/recommended-nginx-configuration-high-traffic-wordpress/2/ # send the client a "request timed out" if the body is not loaded by this time. Default 60. client_body_timeout 12; client_header_timeout 12; # If the client stops reading data, free up the stale client connection after this much time. Default 60. send_timeout 10; # How long an idle keepalive connection remains open. keepalive_timeout 15; ================================================ FILE: appdata/nginx/conf.d/upstream.conf ================================================ upstream php8 { server php8:9000; } upstream php8wp { server php8:9001; } ================================================ FILE: appdata/nginx/conf.d/webp.conf ================================================ # Insert this block before the server directive, which creates the $webp_suffix if the browser supports WebP map $http_accept $webp_suffix { default ""; "~*webp" ".webp"; } ================================================ FILE: appdata/nginx/fastcgi.conf ================================================ fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; # To fix CGI application vulnerability - https://httpoxy.org fastcgi_param HTTP_PROXY ""; ================================================ FILE: appdata/nginx/mime.types ================================================ types { text/html html htm shtml; text/css css; text/xml xml; image/gif gif; image/jpeg jpeg jpg; application/javascript js; application/atom+xml atom; application/rss+xml rss; text/mathml mml; text/plain txt; text/vnd.sun.j2me.app-descriptor jad; text/vnd.wap.wml wml; text/x-component htc; image/png png; image/tiff tif tiff; image/vnd.wap.wbmp wbmp; image/x-icon ico; image/x-jng jng; image/x-ms-bmp bmp; image/svg+xml svg svgz; image/webp webp; application/font-woff woff; application/java-archive jar war ear; application/json json; application/mac-binhex40 hqx; application/msword doc; application/pdf pdf; application/postscript ps eps ai; application/rtf rtf; application/vnd.apple.mpegurl m3u8; application/vnd.ms-excel xls; application/vnd.ms-fontobject eot; application/vnd.ms-powerpoint ppt; application/vnd.wap.wmlc wmlc; application/vnd.google-earth.kml+xml kml; application/vnd.google-earth.kmz kmz; application/x-7z-compressed 7z; application/x-cocoa cco; application/x-java-archive-diff jardiff; application/x-java-jnlp-file jnlp; application/x-makeself run; application/x-perl pl pm; application/x-pilot prc pdb; application/x-rar-compressed rar; application/x-redhat-package-manager rpm; application/x-sea sea; application/x-shockwave-flash swf; application/x-stuffit sit; application/x-tcl tcl tk; application/x-x509-ca-cert der pem crt; application/x-xpinstall xpi; application/xhtml+xml xhtml; application/xspf+xml xspf; application/zip zip; application/octet-stream bin exe dll; application/octet-stream deb; application/octet-stream dmg; application/octet-stream iso img; application/octet-stream msi msp msm; application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; audio/midi mid midi kar; audio/mpeg mp3; audio/ogg ogg; audio/x-m4a m4a; audio/x-realaudio ra; video/3gpp 3gpp 3gp; video/mp2t ts; video/mp4 mp4; video/mpeg mpeg mpg; video/quicktime mov; video/webm webm; video/x-flv flv; video/x-m4v m4v; video/x-mng mng; video/x-ms-asf asx asf; video/x-ms-wmv wmv; video/x-msvideo avi; } ================================================ FILE: appdata/nginx/nginx.conf ================================================ worker_processes auto; # use " grep processor /proc/cpuinfo | wc -l " and type the number here, or stay with automatic configuration events { worker_connections 1024; # use " ulimit -n" and type the number here multi_accept on; } http { ############# NGINX conf include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; server_names_hash_bucket_size 128; types_hash_max_size 2048; server_tokens off; reset_timedout_connection on; fastcgi_read_timeout 300; # Logging Settings access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # Log format Settings #log_format rt_cache '$remote_addr $upstream_response_time $upstream_cache_status [$time_local] ' #'$http_host "$request" $status $body_bytes_sent ' #'"$http_referer" "$http_user_agent"'; # Proxy Settings real_ip_header X-Forwarded-For; set_real_ip_from 192.168.90.0/24; # Your internal Traefik network cidr # Limit Request limit_req_status 403; limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # Headers # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always; add_header Fastcgi-Cache $upstream_cache_status; # Gzip Compression Settings gzip on; gzip_static on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css text/plain text/x-component text/xml text/javascript; # Virtual Host Configs include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites/*.conf; } ================================================ FILE: appdata/nginx/sites/dash.conf ================================================ server { listen 80; server_name dash.simplehomelab.com; root /var/www/html/dash; index index.php; access_log /var/log/nginx/dash-access.log; error_log /var/log/nginx/dash-error.log; # Turn on directory listing autoindex on; include common/php8/nonwp-nfc-php.conf; include common/nonwp-common-php.conf; include common/php8/nonwp-locations-php.conf; } ================================================ FILE: appdata/nginx/sites/deployrr.conf ================================================ server { listen 80; server_name deployrr.app; return 301 $scheme://www.deployrr.app$request_uri; } server { listen 80; server_name www.deployrr.app; root /var/www/html/deployrr; index index.php; access_log /var/log/nginx/deployrr-access.log; error_log /var/log/nginx/deployrr-error.log; include common/php8/nonwp-nfc-php.conf; include common/nonwp-common-php.conf; include common/php8/nonwp-locations-php.conf; } ================================================ FILE: appdata/nginx/sites/khub.conf ================================================ server { listen 80; server_name khub.info; return 301 $scheme://www.khub.info$request_uri; } server { listen 80; server_name www.khub.info; root /var/www/html/khub; index index.php; access_log /var/log/nginx/khub-access.log; error_log /var/log/nginx/khub-error.log; include common/php8/nonwp-nfc-php.conf; include common/nonwp-common-php.conf; include common/php8/nonwp-locations-php.conf; } ================================================ FILE: appdata/nginx/sites/simplehomelab.conf ================================================ server { listen 80; server_name simplehomelab.com; return 301 $scheme://www.simplehomelab.com$request_uri; } server { listen 80; server_name www.simplehomelab.com; root /var/www/html/simplehomelab; index index.php; access_log /var/log/nginx/simplehomelab-access.log; error_log /var/log/nginx/simplehomelab-error.log; # #include common/hotlink.conf; include common/wp-rankmath-sitemap-config.conf; include common/wp-404-rewrites.conf; include common/php8/wp-nfc-php.conf; include common/php8/wp-common-php.conf; include common/wp-locations-php.conf; } ================================================ FILE: appdata/php/php7/conf.d/extensions.ini ================================================ zend_extension=opcache extension=amqp extension=bcmath extension=bz2 extension=calendar extension=event extension=exif extension=gd extension=gettext extension=imagick extension=intl extension=ldap extension=mysqli extension=pdo_mysql extension=pdo_pgsql extension=pgsql extension=redis extension=soap extension=sockets extension=xsl extension=zip ================================================ FILE: appdata/php/php7/conf.d/opcache.ini ================================================ opcache.enable=0 ; 0 means it will check on every request ;Development = 0. Production = 1 or comment out (default 1) #opcache.revalidate_freq=1 ; 0 is irrelevant if opcache.validate_timestamps=0 which is desirable in production ;Development = 1. Production = 0 or comment out (default 0) #opcache.validate_timestamps=0 ;Development = 1. Production =0 or comment out (default 0) #opcache.consistency_checks=0 opcache.max_accelerated_files=20000 opcache.memory_consumption=128 opcache.max_wasted_percentage=10 opcache.interned_strings_buffer=16 opcache.fast_shutdown=1 ================================================ FILE: appdata/php/php7/php.ini ================================================ [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization file, generally called php.ini, is responsible for ; configuring many of the aspects of PHP's behavior. ; PHP attempts to find and load this configuration from a number of locations. ; The following is a summary of its search order: ; 1. SAPI module specific location. ; 2. The PHPRC environment variable. (As of PHP 5.2.0) ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) ; 4. Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) ; 6. The directory from the --with-config-file-path compile time option, or the ; Windows directory (usually C:\windows) ; See the PHP docs for more specific information. ; http://php.net/configuration.file ; The syntax of the file is extremely simple. Whitespace and lines ; beginning with a semicolon are silently ignored (as you probably guessed). ; Section headers (e.g. [Foo]) are also silently ignored, even though ; they might mean something in the future. ; Directives following the section heading [PATH=/www/mysite] only ; apply to PHP files in the /www/mysite directory. Directives ; following the section heading [HOST=www.example.com] only apply to ; PHP files served from www.example.com. Directives set in these ; special sections cannot be overridden by user-defined INI files or ; at runtime. Currently, [PATH=] and [HOST=] sections only work under ; CGI/FastCGI. ; http://php.net/ini.sections ; Directives are specified using the following syntax: ; directive = value ; Directive names are *case sensitive* - foo=bar is different from FOO=bar. ; Directives are variables used to configure PHP or PHP extensions. ; There is no name validation. If PHP can't find an expected ; directive because it is not set or is mistyped, a default value will be used. ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression ; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a ; previously set variable or directive (e.g. ${foo}) ; Expressions in the INI file are limited to bitwise operators and parentheses: ; | bitwise OR ; ^ bitwise XOR ; & bitwise AND ; ~ bitwise NOT ; ! boolean NOT ; Boolean flags can be turned on using the values 1, On, True or Yes. ; They can be turned off using the values 0, Off, False or No. ; An empty string can be denoted by simply not writing anything after the equal ; sign, or by using the None keyword: ; foo = ; sets foo to an empty string ; foo = None ; sets foo to an empty string ; foo = "None" ; sets foo to the string 'None' ; If you use constants in your value, and these constants belong to a ; dynamically loaded extension (either a PHP extension or a Zend extension), ; you may only use these constants *after* the line that loads the extension. ;;;;;;;;;;;;;;;;;;; ; About this file ; ;;;;;;;;;;;;;;;;;;; ; PHP comes packaged with two INI files. One that is recommended to be used ; in production environments and one that is recommended to be used in ; development environments. ; php.ini-production contains settings which hold security, performance and ; best practices at its core. But please be aware, these settings may break ; compatibility with older or less security conscience applications. We ; recommending using the production ini in production and testing environments. ; php.ini-development is very similar to its production variant, except it is ; much more verbose when it comes to errors. We recommend using the ; development version only in development environments, as errors shown to ; application users can inadvertently leak otherwise secure information. ; This is the php.ini-production INI file. ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;;;;;;;;;;;;;;; ; The following are all the settings which are different in either the production ; or development versions of the INIs with respect to PHP's default behavior. ; Please see the actual settings later in the document for more details as to why ; we recommend these changes in PHP's behavior. ; display_errors ; Default Value: On ; Development Value: On ; Production Value: Off ; display_startup_errors ; Default Value: Off ; Development Value: On ; Production Value: Off ; error_reporting ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; log_errors ; Default Value: Off ; Development Value: On ; Production Value: On ; max_input_time ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; output_buffering ; Default Value: Off ; Development Value: 4096 ; Production Value: 4096 ; register_argc_argv ; Default Value: On ; Development Value: Off ; Production Value: Off ; request_order ; Default Value: None ; Development Value: "GP" ; Production Value: "GP" ; session.gc_divisor ; Default Value: 100 ; Development Value: 1000 ; Production Value: 1000 ; session.sid_bits_per_character ; Default Value: 4 ; Development Value: 5 ; Production Value: 5 ; short_open_tag ; Default Value: On ; Development Value: Off ; Production Value: Off ; variables_order ; Default Value: "EGPCS" ; Development Value: "GPCS" ; Production Value: "GPCS" ;;;;;;;;;;;;;;;;;;;; ; php.ini Options ; ;;;;;;;;;;;;;;;;;;;; ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" ;user_ini.filename = ".user.ini" ; To disable this feature set this option to an empty value ;user_ini.filename = ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) ;user_ini.cache_ttl = 300 ;;;;;;;;;;;;;;;;;;;; ; Language Options ; ;;;;;;;;;;;;;;;;;;;; ; Enable the PHP scripting language engine under Apache. ; http://php.net/engine engine = On ; This directive determines whether or not PHP will recognize code between ; and ?> tags as PHP source which should be processed as such. It is ; generally recommended that should be used and that this feature ; should be disabled, as enabling it may result in issues when generating XML ; documents, however this remains supported for backward compatibility reasons. ; Note that this directive does not control the = shorthand tag, which can be ; used regardless of this directive. ; Default Value: On ; Development Value: Off ; Production Value: Off ; http://php.net/short-open-tag short_open_tag = Off ; The number of significant digits displayed in floating point numbers. ; http://php.net/precision precision = 14 ; Output buffering is a mechanism for controlling how much output data ; (excluding headers and cookies) PHP should keep internally before pushing that ; data to the client. If your application's output exceeds this setting, PHP ; will send that data in chunks of roughly the size you specify. ; Turning on this setting and managing its maximum buffer size can yield some ; interesting side-effects depending on your application and web server. ; You may be able to send headers and cookies after you've already sent output ; through print or echo. You also may see performance benefits if your server is ; emitting less packets due to buffered output versus PHP streaming the output ; as it gets it. On production servers, 4096 bytes is a good setting for performance ; reasons. ; Note: Output buffering can also be controlled via Output Buffering Control ; functions. ; Possible Values: ; On = Enabled and buffer is unlimited. (Use with caution) ; Off = Disabled ; Integer = Enables the buffer and sets its maximum size in bytes. ; Note: This directive is hardcoded to Off for the CLI SAPI ; Default Value: Off ; Development Value: 4096 ; Production Value: 4096 ; http://php.net/output-buffering output_buffering = 4096 ; You can redirect all of the output of your scripts to a function. For ; example, if you set output_handler to "mb_output_handler", character ; encoding will be transparently converted to the specified encoding. ; Setting any output handler automatically turns on output buffering. ; Note: People who wrote portable scripts should not depend on this ini ; directive. Instead, explicitly set the output handler using ob_start(). ; Using this ini directive may cause problems unless you know what script ; is doing. ; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler" ; and you cannot use both "ob_gzhandler" and "zlib.output_compression". ; Note: output_handler must be empty if this is set 'On' !!!! ; Instead you must use zlib.output_handler. ; http://php.net/output-handler ;output_handler = ; URL rewriter function rewrites URL on the fly by using ; output buffer. You can set target tags by this configuration. ; "form" tag is special tag. It will add hidden input tag to pass values. ; Refer to session.trans_sid_tags for usage. ; Default Value: "form=" ; Development Value: "form=" ; Production Value: "form=" ;url_rewriter.tags ; URL rewriter will not rewrite absolute URL nor form by default. To enable ; absolute URL rewrite, allowed hosts must be defined at RUNTIME. ; Refer to session.trans_sid_hosts for more details. ; Default Value: "" ; Development Value: "" ; Production Value: "" ;url_rewriter.hosts ; Transparent output compression using the zlib library ; Valid values for this option are 'off', 'on', or a specific buffer size ; to be used for compression (default is 4KB) ; Note: Resulting chunk size may vary due to nature of compression. PHP ; outputs chunks that are few hundreds bytes each as a result of ; compression. If you prefer a larger chunk size for better ; performance, enable output_buffering in addition. ; Note: You need to use zlib.output_handler instead of the standard ; output_handler, or otherwise the output will be corrupted. ; http://php.net/zlib.output-compression zlib.output_compression = Off ; http://php.net/zlib.output-compression-level ;zlib.output_compression_level = -1 ; You cannot specify additional output handlers if zlib.output_compression ; is activated here. This setting does the same as output_handler but in ; a different order. ; http://php.net/zlib.output-handler ;zlib.output_handler = ; Implicit flush tells PHP to tell the output layer to flush itself ; automatically after every output block. This is equivalent to calling the ; PHP function flush() after each and every call to print() or echo() and each ; and every HTML block. Turning this option on has serious performance ; implications and is generally recommended for debugging purposes only. ; http://php.net/implicit-flush ; Note: This directive is hardcoded to On for the CLI SAPI implicit_flush = Off ; The unserialize callback function will be called (with the undefined class' ; name as parameter), if the unserializer finds an undefined class ; which should be instantiated. A warning appears if the specified function is ; not defined, or if the function doesn't include/implement the missing class. ; So only set this entry, if you really want to implement such a ; callback-function. unserialize_callback_func = ; The unserialize_max_depth specifies the default depth limit for unserialized ; structures. Setting the depth limit too high may result in stack overflows ; during unserialization. The unserialize_max_depth ini setting can be ; overridden by the max_depth option on individual unserialize() calls. ; A value of 0 disables the depth limit. ;unserialize_max_depth = 4096 ; When floats & doubles are serialized, store serialize_precision significant ; digits after the floating point. The default value ensures that when floats ; are decoded with unserialize, the data will remain the same. ; The value is also used for json_encode when encoding double values. ; If -1 is used, then dtoa mode 0 is used which automatically select the best ; precision. serialize_precision = -1 ; open_basedir, if set, limits all file operations to the defined directory ; and below. This directive makes most sense if used in a per-directory ; or per-virtualhost web server configuration file. ; Note: disables the realpath cache ; http://php.net/open-basedir ;open_basedir = ; This directive allows you to disable certain functions. ; It receives a comma-delimited list of function names. ; http://php.net/disable-functions disable_functions = ; This directive allows you to disable certain classes. ; It receives a comma-delimited list of class names. ; http://php.net/disable-classes disable_classes = ; Colors for Syntax Highlighting mode. Anything that's acceptable in ; would work. ; http://php.net/syntax-highlighting ;highlight.string = #DD0000 ;highlight.comment = #FF9900 ;highlight.keyword = #007700 ;highlight.default = #0000BB ;highlight.html = #000000 ; If enabled, the request will be allowed to complete even if the user aborts ; the request. Consider enabling it if executing long requests, which may end up ; being interrupted by the user or a browser timing out. PHP's default behavior ; is to disable this feature. ; http://php.net/ignore-user-abort ;ignore_user_abort = On ; Determines the size of the realpath cache to be used by PHP. This value should ; be increased on systems where PHP opens many files to reflect the quantity of ; the file operations performed. ; Note: if open_basedir is set, the cache is disabled ; http://php.net/realpath-cache-size ;realpath_cache_size = 4096k ; Duration of time, in seconds for which to cache realpath information for a given ; file or directory. For systems with rarely changing files, consider increasing this ; value. ; http://php.net/realpath-cache-ttl ;realpath_cache_ttl = 120 ; Enables or disables the circular reference collector. ; http://php.net/zend.enable-gc zend.enable_gc = On ; If enabled, scripts may be written in encodings that are incompatible with ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such ; encodings. To use this feature, mbstring extension must be enabled. ; Default: Off ;zend.multibyte = Off ; Allows to set the default encoding for the scripts. This value will be used ; unless "declare(encoding=...)" directive appears at the top of the script. ; Only affects if zend.multibyte is set. ; Default: "" ;zend.script_encoding = ; Allows to include or exclude arguments from stack traces generated for exceptions ; Default: Off ; In production, it is recommended to turn this setting on to prohibit the output ; of sensitive information in stack traces zend.exception_ignore_args = On ;;;;;;;;;;;;;;;;; ; Miscellaneous ; ;;;;;;;;;;;;;;;;; ; Decides whether PHP may expose the fact that it is installed on the server ; (e.g. by adding its signature to the Web server header). It is no security ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ; http://php.net/expose-php expose_php = On ;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; ; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI ;max_execution_time = 30 max_execution_time = 600 ; Maximum amount of time each script may spend parsing request data. It's a good ; idea to limit this time on productions servers in order to eliminate unexpectedly ; long running scripts. ; Note: This directive is hardcoded to -1 for the CLI SAPI ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; http://php.net/max-input-time max_input_time = 60 ; Maximum input variable nesting level ; http://php.net/max-input-nesting-level ;max_input_nesting_level = 64 ; How many GET/POST/COOKIE input variables may be accepted ;max_input_vars = 1000 max_input_vars = 25000 ; Maximum amount of memory a script may consume ; http://php.net/memory-limit ;memory_limit = 128M memory_limit = 512M ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This directive informs PHP of which errors, warnings and notices you would like ; it to take action for. The recommended way of setting values for this ; directive is through the use of the error level constants and bitwise ; operators. The error level constants are below here for convenience as well as ; some common settings and their meanings. ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT ; those related to E_NOTICE and E_STRICT, which together cover best practices and ; recommended coding standards in PHP. For performance reasons, this is the ; recommend error reporting setting. Your production server shouldn't be wasting ; resources complaining about best practices and coding standards. That's what ; development servers and development settings are for. ; Note: The php.ini-development file has this setting as E_ALL. This ; means it pretty much reports everything which is exactly what you want during ; development and early testing. ; ; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it is automatically initialized to an ; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message ; E_DEPRECATED - warn about code that will not work in future versions ; of PHP ; E_USER_DEPRECATED - user-generated deprecation warnings ; ; Common Values: ; E_ALL (Show all errors, warnings and notices including coding standards.) ; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; http://php.net/error-reporting error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = Off ; The display of errors which occur during PHP's startup sequence are handled ; separately from display_errors. PHP's default behavior is to suppress those ; errors from clients. Turning the display of startup errors on can be useful in ; debugging configuration problems. We strongly recommend you ; set this to 'off' for production servers. ; Default Value: Off ; Development Value: On ; Production Value: Off ; http://php.net/display-startup-errors display_startup_errors = Off ; Besides displaying errors, PHP can also log errors to locations such as a ; server-specific log, STDERR, or a location specified by the error_log ; directive found below. While errors should not be displayed on productions ; servers they should still be monitored and logging is a great way to do that. ; Default Value: Off ; Development Value: On ; Production Value: On ; http://php.net/log-errors log_errors = On ; Set maximum length of log_errors. In error_log information about the source is ; added. The default is 1024 and 0 allows to not apply any maximum length at all. ; http://php.net/log-errors-max-len log_errors_max_len = 1024 ; Do not log repeated messages. Repeated errors must occur in same file on same ; line unless ignore_repeated_source is set true. ; http://php.net/ignore-repeated-errors ignore_repeated_errors = Off ; Ignore source of message when ignoring repeated messages. When this setting ; is On you will not log errors with repeated messages from different files or ; source lines. ; http://php.net/ignore-repeated-source ignore_repeated_source = Off ; If this parameter is set to Off, then memory leaks will not be shown (on ; stdout or in the log). This is only effective in a debug compile, and if ; error reporting includes E_WARNING in the allowed list ; http://php.net/report-memleaks report_memleaks = On ; This setting is on by default. ;report_zend_debug = 0 ; Store the last error/warning message in $php_errormsg (boolean). Setting this value ; to On can assist in debugging and is appropriate for development servers. It should ; however be disabled on production servers. ; This directive is DEPRECATED. ; Default Value: Off ; Development Value: Off ; Production Value: Off ; http://php.net/track-errors ;track_errors = Off ; Turn off normal error reporting and emit XML-RPC error XML ; http://php.net/xmlrpc-errors ;xmlrpc_errors = 0 ; An XML-RPC faultCode ;xmlrpc_error_number = 0 ; When PHP displays or logs an error, it has the capability of formatting the ; error message as HTML for easier reading. This directive controls whether ; the error message is formatted as HTML or not. ; Note: This directive is hardcoded to Off for the CLI SAPI ; http://php.net/html-errors ;html_errors = On ; If html_errors is set to On *and* docref_root is not empty, then PHP ; produces clickable error messages that direct to a page describing the error ; or function causing the error in detail. ; You can download a copy of the PHP manual from http://php.net/docs ; and change docref_root to the base URL of your local copy including the ; leading '/'. You must also specify the file extension being used including ; the dot. PHP's default behavior is to leave these settings empty, in which ; case no links to documentation are generated. ; Note: Never use this feature for production boxes. ; http://php.net/docref-root ; Examples ;docref_root = "/phpmanual/" ; http://php.net/docref-ext ;docref_ext = .html ; String to output before an error message. PHP's default behavior is to leave ; this setting blank. ; http://php.net/error-prepend-string ; Example: ;error_prepend_string = "" ; String to output after an error message. PHP's default behavior is to leave ; this setting blank. ; http://php.net/error-append-string ; Example: ;error_append_string = "" ; Log errors to specified file. PHP's default behavior is to leave this value ; empty. ; http://php.net/error-log ; Example: ;error_log = php_errors.log ; Log errors to syslog (Event Log on Windows). ;error_log = syslog ; The syslog ident is a string which is prepended to every message logged ; to syslog. Only used when error_log is set to syslog. ;syslog.ident = php ; The syslog facility is used to specify what type of program is logging ; the message. Only used when error_log is set to syslog. ;syslog.facility = user ; Set this to disable filtering control characters (the default). ; Some loggers only accept NVT-ASCII, others accept anything that's not ; control characters. If your logger accepts everything, then no filtering ; is needed at all. ; Allowed values are: ; ascii (all printable ASCII characters and NL) ; no-ctrl (all characters except control characters) ; all (all characters) ; raw (like "all", but messages are not split at newlines) ; http://php.net/syslog.filter ;syslog.filter = ascii ;windows.show_crt_warning ; Default value: 0 ; Development value: 0 ; Production value: 0 ;;;;;;;;;;;;;;;;; ; Data Handling ; ;;;;;;;;;;;;;;;;; ; The separator used in PHP generated URLs to separate arguments. ; PHP's default setting is "&". ; http://php.net/arg-separator.output ; Example: ;arg_separator.output = "&" ; List of separator(s) used by PHP to parse input URLs into variables. ; PHP's default setting is "&". ; NOTE: Every character in this directive is considered as separator! ; http://php.net/arg-separator.input ; Example: ;arg_separator.input = ";&" ; This directive determines which super global arrays are registered when PHP ; starts up. G,P,C,E & S are abbreviations for the following respective super ; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty ; paid for the registration of these arrays and because ENV is not as commonly ; used as the others, ENV is not recommended on productions servers. You ; can still get access to the environment variables through getenv() should you ; need to. ; Default Value: "EGPCS" ; Development Value: "GPCS" ; Production Value: "GPCS"; ; http://php.net/variables-order variables_order = "GPCS" ; This directive determines which super global data (G,P & C) should be ; registered into the super global array REQUEST. If so, it also determines ; the order in which that data is registered. The values for this directive ; are specified in the same manner as the variables_order directive, ; EXCEPT one. Leaving this value empty will cause PHP to use the value set ; in the variables_order directive. It does not mean it will leave the super ; globals array REQUEST empty. ; Default Value: None ; Development Value: "GP" ; Production Value: "GP" ; http://php.net/request-order request_order = "GP" ; This directive determines whether PHP registers $argv & $argc each time it ; runs. $argv contains an array of all the arguments passed to PHP when a script ; is invoked. $argc contains an integer representing the number of arguments ; that were passed when the script was invoked. These arrays are extremely ; useful when running scripts from the command line. When this directive is ; enabled, registering these variables consumes CPU cycles and memory each time ; a script is executed. For performance reasons, this feature should be disabled ; on production servers. ; Note: This directive is hardcoded to On for the CLI SAPI ; Default Value: On ; Development Value: Off ; Production Value: Off ; http://php.net/register-argc-argv register_argc_argv = Off ; When enabled, the ENV, REQUEST and SERVER variables are created when they're ; first used (Just In Time) instead of when the script starts. If these ; variables are not used within a script, having this directive on will result ; in a performance gain. The PHP directive register_argc_argv must be disabled ; for this directive to have any effect. ; http://php.net/auto-globals-jit auto_globals_jit = On ; Whether PHP will read the POST data. ; This option is enabled by default. ; Most likely, you won't want to disable this option globally. It causes $_POST ; and $_FILES to always be empty; the only way you will be able to read the ; POST data will be through the php://input stream wrapper. This can be useful ; to proxy requests or to process the POST data in a memory efficient fashion. ; http://php.net/enable-post-data-reading ;enable_post_data_reading = Off ; Maximum size of POST data that PHP will accept. ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size ;post_max_size = 8M post_max_size = 8M ; Automatically add files before PHP document. ; http://php.net/auto-prepend-file auto_prepend_file = ; Automatically add files after PHP document. ; http://php.net/auto-append-file auto_append_file = ; By default, PHP will output a media type using the Content-Type header. To ; disable this, simply set it to be empty. ; ; PHP's built-in default media type is set to text/html. ; http://php.net/default-mimetype default_mimetype = "text/html" ; PHP's default character set is set to UTF-8. ; http://php.net/default-charset default_charset = "UTF-8" ; PHP internal character encoding is set to empty. ; If empty, default_charset is used. ; http://php.net/internal-encoding ;internal_encoding = ; PHP input character encoding is set to empty. ; If empty, default_charset is used. ; http://php.net/input-encoding ;input_encoding = ; PHP output character encoding is set to empty. ; If empty, default_charset is used. ; See also output_buffer. ; http://php.net/output-encoding ;output_encoding = ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" ; ; PHP's default setting for include_path is ".;/path/to/php/pear" ; http://php.net/include-path ; The root of the PHP pages, used only if nonempty. ; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root ; if you are running php as a CGI under any web server (other than IIS) ; see documentation for security issues. The alternate is to use the ; cgi.force_redirect configuration below ; http://php.net/doc-root doc_root = ; The directory under which PHP opens the script using /~username used only ; if nonempty. ; http://php.net/user-dir user_dir = ; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ;extension_dir = "./" ; On windows: ;extension_dir = "ext" ; Directory where the temporary files should be placed. ; Defaults to the system default (see sys_get_temp_dir) ;sys_temp_dir = "/tmp" ; Whether or not to enable the dl() function. The dl() function does NOT work ; properly in multithreaded servers, such as IIS or Zeus, and is automatically ; disabled on them. ; http://php.net/enable-dl enable_dl = Off ; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; most web servers. Left undefined, PHP turns this on by default. You can ; turn it off here AT YOUR OWN RISK ; **You CAN safely turn this off for IIS, in fact, you MUST.** ; http://php.net/cgi.force-redirect ;cgi.force_redirect = 1 ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with ; every request. PHP's default behavior is to disable this feature. ;cgi.nph = 1 ; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP ; will look for to know it is OK to continue execution. Setting this variable MAY ; cause security issues, KNOW WHAT YOU ARE DOING FIRST. ; http://php.net/cgi.redirect-status-env ;cgi.redirect_status_env = ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo ;cgi.fix_pathinfo=1 ; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside ; of the web tree and people will not be able to circumvent .htaccess security. ;cgi.discard_path=1 ; FastCGI under IIS supports the ability to impersonate ; security tokens of the calling client. This allows IIS to define the ; security context that the request runs under. mod_fastcgi under Apache ; does not currently support this feature (03/17/2002) ; Set to 1 if running under IIS. Default is zero. ; http://php.net/fastcgi.impersonate ;fastcgi.impersonate = 1 ; Disable logging through FastCGI connection. PHP's default behavior is to enable ; this feature. ;fastcgi.logging = 0 ; cgi.rfc2616_headers configuration option tells PHP what type of headers to ; use when sending HTTP response code. If set to 0, PHP sends Status: header that ; is supported by Apache. When this option is set to 1, PHP will send ; RFC2616 compliant header. ; Default is zero. ; http://php.net/cgi.rfc2616-headers ;cgi.rfc2616_headers = 0 ; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! ; (shebang) at the top of the running script. This line might be needed if the ; script support running both as stand-alone script and via PHP CGI<. PHP in CGI ; mode skips this line and ignores its content if this directive is turned on. ; http://php.net/cgi.check-shebang-line ;cgi.check_shebang_line=1 ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir ;upload_tmp_dir = ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize ;upload_max_filesize = 2M upload_max_filesize = 3M ; Maximum number of files that can be uploaded via a single request max_file_uploads = 20 ;;;;;;;;;;;;;;;;;; ; Fopen wrappers ; ;;;;;;;;;;;;;;;;;; ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. ; http://php.net/allow-url-fopen allow_url_fopen = On ; Whether to allow include/require to open URLs (like http:// or ftp://) as files. ; http://php.net/allow-url-include allow_url_include = Off ; Define the anonymous ftp password (your email address). PHP's default setting ; for this is empty. ; http://php.net/from ;from="john@doe.com" ; Define the User-Agent string. PHP's default setting for this is empty. ; http://php.net/user-agent ;user_agent="PHP" ; Default timeout for socket based streams (seconds) ; http://php.net/default-socket-timeout default_socket_timeout = 60 ; If your scripts have to deal with files from Macintosh systems, ; or you are running on a Mac and need to deal with files from ; unix or win32 systems, setting this flag will cause PHP to ; automatically detect the EOL character in those files so that ; fgets() and file() will work regardless of the source of the file. ; http://php.net/auto-detect-line-endings ;auto_detect_line_endings = Off ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ; If you wish to have an extension loaded automatically, use the following ; syntax: ; ; extension=modulename ; ; For example: ; ; extension=mysqli ; ; When the extension library to load is not located in the default extension ; directory, You may specify an absolute path to the library file: ; ; extension=/path/to/extension/mysqli.so ; ; Note : The syntax used in previous PHP versions ('extension=