diff --git a/dc-down-all-containers.sh b/dc-down-all-containers.sh index 4647d81..2a72552 100644 --- a/dc-down-all-containers.sh +++ b/dc-down-all-containers.sh @@ -1,7 +1,11 @@ #!/bin/bash docker compose -f admin/compose.yml down -docker compose -f mixed/compose.yml down +docker compose -f filebrowser/compose.yml down +docker compose -f homepage/compose.yml down +docker compose -f mixed/compose-dockerserver1.yml down +docker compose -f mixed/compose-proxyserver.yml down docker compose -f olivetin/compose.yml down +docker compose -f reverseproxy/compose.yml down docker compose -f vpn/compose.yml down docker ps diff --git a/dc-pull-all-containers.sh b/dc-pull-all-containers.sh index 10d1482..d26cb36 100644 --- a/dc-pull-all-containers.sh +++ b/dc-pull-all-containers.sh @@ -1,7 +1,11 @@ #!/bin/bash docker compose -f admin/compose.yml pull -docker compose -f mixed/compose.yml pull +docker compose -f filebrowser/compose.yml pull +docker compose -f homepage/compose.yml pull +docker compose -f mixed/compose-dockerserver1.yml pull +docker compose -f mixed/compose-proxyserver.yml pull docker compose -f olivetin/compose.yml pull +docker compose -f reverseproxy/compose.yml pull docker compose -f vpn/compose.yml pull docker ps diff --git a/dc-up-all-containers.sh b/dc-up-all-containers.sh index ac1077d..f00d79b 100644 --- a/dc-up-all-containers.sh +++ b/dc-up-all-containers.sh @@ -1,7 +1,11 @@ #!/bin/bash docker compose -f admin/compose.yml up -d -docker compose -f mixed/compose.yml up -d +docker compose -f filebrowser/compose.yml up -d +docker compose -f homepage/compose.yml up -d +docker compose -f mixed/compose-dockerserver1.yml up -d +docker compose -f mixed/compose-proxyserver.yml up -d docker compose -f olivetin/compose.yml up -d +docker compose -f reverseproxy/compose.yml up -d docker compose -f vpn/compose.yml up -d docker ps diff --git a/filebrowser/.env b/filebrowser/.env new file mode 100644 index 0000000..1b5fce9 --- /dev/null +++ b/filebrowser/.env @@ -0,0 +1,15 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=ProxyServer +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago +BACKUP_DIR=/mnt/truenas-backups +MEDIA_DIR=/mnt/truenas-media +STORAGE_DIR=/mnt/truenas-storage diff --git a/filebrowser/compose.yml b/filebrowser/compose.yml new file mode 100644 index 0000000..1e61724 --- /dev/null +++ b/filebrowser/compose.yml @@ -0,0 +1,14 @@ +version: '3' + +services: + filebrowser: + container_name: filebrowser + image: filebrowser/filebrowser:latest + ports: + - 8484:80 + restart: always + volumes: + - ${DOCKER_CONFIGS}/config/filebrowser.db:/database/filebrowser.db + - ${DOCKER_CONFIGS}/config/.filebrowser.json:/.filebrowser.json + - ${DOCKER_CONFIGS}/files:/srv + - ${STORAGE_DIR}:/truenas-storage diff --git a/filebrowser/config/.filebrowser.json b/filebrowser/config/.filebrowser.json new file mode 100755 index 0000000..ab30738 --- /dev/null +++ b/filebrowser/config/.filebrowser.json @@ -0,0 +1,8 @@ +{ + "port": 80, + "baseURL": "", + "address": "", + "log": "stdout", + "database": "/database/filebrowser.db", + "root": "/truenas-storage" + } diff --git a/homepage/.env b/homepage/.env new file mode 100644 index 0000000..ae1f2a7 --- /dev/null +++ b/homepage/.env @@ -0,0 +1,252 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=ProxyServer +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago +BACKUP_DIR=/mnt/truenas-backups +MEDIA_DIR=/mnt/truenas-media +STORAGE_DIR=/mnt/truenas-storage + + +#HOMEPAGE +# RUN AS +PUID=1000 +PGID=1000 + + +## SERVERS TAB ## +# ZABBIX +HOMEPAGE_VAR_ZABBIX_URL=https://zabbix.akanealw.com + +# PEANUT +HOMEPAGE_VAR_PEANUT_URL=https://peanut.akanealw.com + +## SERVERS ## +# PROXMOX +HOMEPAGE_VAR_PROXMOX_URL_1=https://proxmox1.akanealw.com +HOMEPAGE_VAR_PROXMOX_URL_2=https://proxmox2.akanealw.com +HOMEPAGE_VAR_PROXMOX_URL_3=https://proxmox3.akanealw.com +HOMEPAGE_VAR_PROXMOX_BACKUP_URL=https://proxmoxbackup.akanealw.com +HOMEPAGE_VAR_PROXMOX_USER=api@pam!homepage +HOMEPAGE_VAR_PROXMOX_API_KEY=9b17a715-3889-436f-8bfb-0c7173398452 +HOMEPAGE_VAR_PROXMOX_BACKUP_USER=api-access@pbs!homepage +HOMEPAGE_VAR_PROXMOX_BACKUP_API_KEY=ceca44ca-3c1c-42df-a381-a9701b47cfd7 + +# TRUENAS +HOMEPAGE_VAR_TRUENAS_URL=https://truenas.akanealw.com +HOMEPAGE_VAR_TRUENAS_API_KEY=1-y77GveXGrClL6ztuertRQYUrz8ZJ5oYCTTtdzq52PURj1BCrpCG8vNQ1USpARBDf + +## MONITORING ## +# NGINXPROXYMANAGER +HOMEPAGE_VAR_NGINXPROXYMANAGER_URL=https://npm.akanealw.com +HOMEPAGE_VAR_NGINXPROXYMANAGER_USERNAME=akanealw@gmail.com +HOMEPAGE_VAR_NGINXPROXYMANAGER_PASSWORD=kDhi*NTHDzynCPPcZjY8 + +# GLUETUN +HOMEPAGE_VAR_GLUETUN_URL=http://192.168.1.31:8777 + +# PIHOLE +HOMEPAGE_VAR_PIHOLE_URL_1=https://piholeserver1.akanealw.com +HOMEPAGE_VAR_PIHOLE_URL_2=https://piholeserver2.akanealw.com +HOMEPAGE_VAR_PIHOLE_URL_3=https://piholeserver3.akanealw.com +HOMEPAGE_VAR_PIHOLE_API_KEY=58b9598374decb080b66f8e337197cdefc66f4a55f7a73e817da6e90e7a429da + +# ADGUARD HONME +HOMEPAGE_VAR_ADGUARD_URL=https://adguard.akanealw.com +HOMEPAGE_VAR_ADGUARD_USER=akanealw +HOMEPAGE_VAR_ADGUARD_PASS=Aehaigoothohshoh1aab + +## PORTAINER ## +# PORTAINER +HOMEPAGE_VAR_PORTAINER_URL_1=https://pt-dockerserver1.akanealw.com +HOMEPAGE_VAR_PORTAINER_API_KEY_1=ptr_/GT6HCGn6Ho0tVzdcp7WS338aCifrYLP6aNZX+Xixpg= +HOMEPAGE_VAR_PORTAINER_URL_2=https://pt-dockerserver2.akanealw.com +HOMEPAGE_VAR_PORTAINER_API_KEY_2=ptr_dNUynzNttul4c6+MijZnUW+dDYP7S/VEW2+xwEUE72s= +HOMEPAGE_VAR_PORTAINER_URL_3=https://pt-proxyserver.akanealw.com +HOMEPAGE_VAR_PORTAINER_API_KEY_3=ptr_WjymUfgt8XtOdxq/kFGsi2ZRfxbrebSaH6djxFXVq58= +HOMEPAGE_VAR_PORTAINER_URL_4=https://pt-dockerservertest.akanealw.com +HOMEPAGE_VAR_PORTAINER_API_KEY_4=ptr_7UZg1D/IAU3BzAgsJ2U1WUK3fDoHZYw9uuZuHwBC63U= +HOMEPAGE_VAR_PORTAINER_URL_5=https://pt-dockerserveralpine.akanealw.com +HOMEPAGE_VAR_PORTAINER_API_KEY_5=ptr_y70KWqHCWcxorrpVDnlnXYjQmmcsXx5sR+31D556i1g= + +## DOZZLE ## +# DOZZLE +HOMEPAGE_VAR_DOZZLE_URL_1=https://dz-dockerserver1.akanealw.com +HOMEPAGE_VAR_DOZZLE_URL_2=https://dz-dockerserver2.akanealw.com +HOMEPAGE_VAR_DOZZLE_URL_3=https://dz-proxyserver.akanealw.com +HOMEPAGE_VAR_DOZZLE_URL_4=https://dz-dockerservertest.akanealw.com +HOMEPAGE_VAR_DOZZLE_URL_5=https://dz-dockerserveralpine.akanealw.com + +## DOCKGE ## +# DOCKGE +HOMEPAGE_VAR_DOCKGE_URL_1=https://dkge-dockerserver1.akanealw.com +HOMEPAGE_VAR_DOCKGE_URL_2=https://dkge-dockerserver2.akanealw.com +HOMEPAGE_VAR_DOCKGE_URL_3=https://dkge-proxyserver.akanealw.com +HOMEPAGE_VAR_DOCKGE_URL_4=https://dkge-dockerservertest.akanealw.com +HOMEPAGE_VAR_DOCKGE_URL_5=https://dkge-dockerserveralpine.akanealw.com + + +## MEDIA TAB ## + +## SEARCH ## +# NZBDHYDRA +HOMEPAGE_VAR_NZBHYDRA_URL=https://nzbhydra.akanealw.com + +# JACKETT +HOMEPAGE_VAR_JACKETT_URL=https://jackett.akanealw.com + +# PROWLARR +HOMEPAGE_VAR_PROWLARR_URL=https://prowlarr.akanealw.com +HOMEPAGE_VAR_PROWLARR_API_KEY=2f569338e49e4211be0457550eefabb2 + +# JELLYSEER +HOMEPAGE_VAR_JELLYSEERR_URL=https://jellyseerr.akanealw.com +HOMEPAGE_VAR_JELLYSEERR_API_KEY=MTcwMDcwMjU2NjI1MTIwMTVjOWIwLTEwZDYtNDU5Yy1hNmRhLTQwNmRjOGIxY2E5OQ== + +## ORGANIZE ## +# SONARR +HOMEPAGE_VAR_SONARR_URL=https://sonarr.akanealw.com +HOMEPAGE_VAR_SONARR_API_KEY=e4a9b4463bfc46b38fbe7420f54d3cd0 + +# RADARR +HOMEPAGE_VAR_RADARR_URL=https://radarr.akanealw.com +HOMEPAGE_VAR_RADARR_API_KEY=5d459ee1602945bead1be6d93810bb8a + +# TDARR +HOMEPAGE_VAR_TDARR_URL=https://tdarr.akanealw.com + +# LIDARR +HOMEPAGE_VAR_LIDARR_URL=https://lidarr.akanealw.com +HOMEPAGE_VAR_LIDARR_API_KEY=7e2e2c76db3a40249bee49ee14d4a672 + +# BAZARR +HOMEPAGE_VAR_BAZARR_URL=https://bazarr.akanealw.com +HOMEPAGE_VAR_BAZARR_API_KEY=52ffe0d71d284c95f426eaa4ac9bfa68 + +## DOWNLOAD ## +# QBITTORRENT +HOMEPAGE_VAR_QBITTORRENT_URL=https://qbittorrent.akanealw.com +HOMEPAGE_VAR_QBITTORRENT_USERNAME=akanealw +HOMEPAGE_VAR_QBITTORRENT_PASSWORD=HMsn5n4LY2H2HkqEaYZG + +# SABNZBD +HOMEPAGE_VAR_SABNZBD_URL=https://sabnzbd.akanealw.com +HOMEPAGE_VAR_SABNZBD_API_KEY=28cf1162819045f9a12916012a704bb4 + +# SPEEDTEST +HOMEPAGE_VAR_SPEEDTEST_URL=https://speedtest.akanealw.com + +# JDOWNLOADER +HOMEPAGE_VAR_JDOWNLOADER_URL=https://jdownloader.akanealw.com +HOMEPAGE_VAR_JDOWNLOADER_USERNAME=akanealw@gmail.com +HOMEPAGE_VAR_JDOWNLOADER_PASSWORD=trUKY4X8wzGiCr75ZmC9 +HOMEPAGE_VAR_JDOWNLOADER_CLIENT_NAME=jdownloader@docker + +# METUBE +HOMEPAGE_VAR_METUBE_URL=https://metube.akanealw.com + +## CONSUME ## +# JELLYFIN +HOMEPAGE_VAR_JELLYFIN_URL=https://jellyfin.akanealw.com +HOMEPAGE_VAR_JELLYFIN_API_KEY=486f43fad768421087d1fde4a93c1341 + +# NAVIDROME +HOMEPAGE_VAR_NAVIDROME_URL=https://navidrome.akanealw.com +HOMEPAGE_VAR_NAVIDROME_USERNAME=akanealw +HOMEPAGE_VAR_NAVIDROME_TOKEN=8f755b8aa25b5ae768741af53e9dc39f +HOMEPAGE_VAR_NAVIDROME_SALT=Vi2kig4ode + +# MSTREAM +HOMEPAGE_VAR_MSTREAM_URL=https://mstream.akanealw.com + +# KAVITA +HOMEPAGE_VAR_KAVITA_URL=https://kavita.akanealw.com +HOMEPAGE_VAR_KAVITA_USERNAME=akanealw +HOMEPAGE_VAR_KAVITA_PASSWORD=NneY3arvXx2FacypvEkU + + +## LINKS TAB ## + +## DOCKERSERVER1 ## +HOMEPAGE_VAR_DESKTOP_URL=https://desktop.akanealw.com/vnc.html?password=headless + +# OLIVETIN +HOMEPAGE_VAR_OLIVETIN_URL=https://olivetin.akanealw.com + +# ORGANIZR +HOMEPAGE_VAR_ORGANIZR_URL=https://organizr.akanealw.com + +# STIRLING PDF +HOMEPAGE_VAR_STIRLING_PDF_URL=https://spdf.akanealw.com + +# SYNCTHING +HOMEPAGE_VAR_SYNCTHING_URL_1=https://st-dockerserver1.akanealw.com +HOMEPAGE_VAR_SYNCTHING_URL_2=https://st-gamingpc.akanealw.com +HOMEPAGE_VAR_SYNCTHING_URL_3=https://st-laptoppc.akanealw.com + +## DOCKERSERVER2 ## +# FRESHRSS +HOMEPAGE_VAR_FRESHRSS_URL=https://freshrss.akanealw.com + +# IT TOOLS +HOMEPAGE_VAR_IT_TOOLS_URL=https://it-tools.akanealw.com + +# PAPERLESS-NGX +HOMEPAGE_VAR_PAPERLESS_NGX_URL=https://paperless.akanealw.com + +# PHOTOPRISM +HOMEPAGE_VAR_PHOTOPRISM_URL=https://photoprism.akanealw.com + +# PIPED +HOMEPAGE_VAR_PIPED_URL=https://piped.akanealw.com + +# RSS BRIDGE +HOMEPAGE_VAR_RSS_BRIDGE_URL=https://rss-bridge.akanealw.com + +# SHLINK +HOMEPAGE_VAR_SHLINK_URL=https://shlink.akanealw.com + +## PROXYSERVER ## +# ARCHIVEBOX +HOMEPAGE_VAR_ARCHIVEBOX_URL=https://archive.akanealw.com + +# BITWARDEN +HOMEPAGE_VAR_BITWARDEN_URL=https://bitwarden.akanealw.com + +# FILE BROWSER +HOMEPAGE_VAR_FILE_BROWSER_URL=https://filebrowser.akanealw.com + +# GIST +HOMEPAGE_VAR_OPEN_GIST_URL=https://gist.akanealw.com + +# GOACCESS +HOMEPAGE_VAR_GOACCESS_URL=https://goaccess.akanealw.com + +# WG-EASY +HOMEPAGE_VAR_WG_EASY_URL=https://wg-easy.akanealw.com + +## OTHER SERVERS ## +# CODESERVER +HOMEPAGE_VAR_CODESERVER_URL=https://codeserver.akanealw.com + +# CRONICLE +HOMEPAGE_VAR_CRONICLE_URL=https://cronicle.akanealw.com + +# GITEA +HOMEPAGE_VAR_GITEA_URL=https://gitea.akanealw.com + +# INVIDIOUS +HOMEPAGE_VAR_INVIDIOUS_URL=https://invidious.akanealw.com + +# NEXTCLOUD +HOMEPAGE_VAR_NEXTCLOUD_URL=https://nextcloud.akanealw.com + +# OPENWRT +HOMEPAGE_VAR_OPENWRT_URL=https://router.akanealw.com diff --git a/homepage/compose.yml b/homepage/compose.yml new file mode 100644 index 0000000..d198060 --- /dev/null +++ b/homepage/compose.yml @@ -0,0 +1,22 @@ +version: '3' + +services: + homepage: + container_name: homepage + image: ghcr.io/gethomepage/homepage:latest + environment: + PUID: ${PUID} + PGID: ${PGID} + env_file: .env + networks: + - reverse-proxy + ports: + - 3005:3000 + restart: always + volumes: + - ${DOCKER_CONFIGS}/config:/app/config + +networks: + reverse-proxy: + name: reverse-proxy + external: true diff --git a/homepage/config/bookmarks.yaml b/homepage/config/bookmarks.yaml new file mode 100644 index 0000000..bede0b4 --- /dev/null +++ b/homepage/config/bookmarks.yaml @@ -0,0 +1,3 @@ +--- +# For configuration options and examples, please see: +# https://gethomepage.dev/latest/configs/bookmarks diff --git a/homepage/config/services.yaml b/homepage/config/services.yaml new file mode 100644 index 0000000..368ad7b --- /dev/null +++ b/homepage/config/services.yaml @@ -0,0 +1,531 @@ +--- +# For configuration options and examples, please see: +# https://gethomepage.dev/latest/configs/services + +######################## +######################## +- Monitoring: + - Zabbix: + icon: "https://files.akanealw.com/icons/zabbix.png" + href: "{{HOMEPAGE_VAR_ZABBIX_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_ZABBIX_URL}}" + widget: + type: iframe + src: "{{HOMEPAGE_VAR_ZABBIX_URL}}" + height: 90 + loadingStrategy: eager + allowScrolling: no + +######################## +- Servers: + - Proxmox1: + icon: "https://files.akanealw.com/icons/proxmox.png" + href: "{{HOMEPAGE_VAR_PROXMOX_URL_1}}" + siteMonitor: "{{HOMEPAGE_VAR_PROXMOX_URL_1}}" + widget: + type: proxmox + url: "{{HOMEPAGE_VAR_PROXMOX_URL_1}}" + username: "{{HOMEPAGE_VAR_PROXMOX_USER}}" + password: "{{HOMEPAGE_VAR_PROXMOX_API_KEY}}" + node: proxmox1 + + - Proxmox2: + icon: "https://files.akanealw.com/icons/proxmox.png" + href: "{{HOMEPAGE_VAR_PROXMOX_URL_2}}" + siteMonitor: "{{HOMEPAGE_VAR_PROXMOX_URL_2}}" + widget: + type: proxmox + url: "{{HOMEPAGE_VAR_PROXMOX_URL_2}}" + username: "{{HOMEPAGE_VAR_PROXMOX_USER}}" + password: "{{HOMEPAGE_VAR_PROXMOX_API_KEY}}" + node: proxmox2 + + - Proxmox3: + icon: "https://files.akanealw.com/icons/proxmox.png" + href: "{{HOMEPAGE_VAR_PROXMOX_URL_3}}" + siteMonitor: "{{HOMEPAGE_VAR_PROXMOX_URL_3}}" + widget: + type: proxmox + url: "{{HOMEPAGE_VAR_PROXMOX_URL_3}}" + username: "{{HOMEPAGE_VAR_PROXMOX_USER}}" + password: "{{HOMEPAGE_VAR_PROXMOX_API_KEY}}" + node: proxmox3 + + - ProxmoxBackup: + icon: "https://files.akanealw.com/icons/proxmox.png" + href: "{{HOMEPAGE_VAR_PROXMOX_BACKUP_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PROXMOX_BACKUP_URL}}" + widget: + type: proxmoxbackupserver + url: "{{HOMEPAGE_VAR_PROXMOX_BACKUP_URL}}" + username: "{{HOMEPAGE_VAR_PROXMOX_BACKUP_USER}}" + password: "{{HOMEPAGE_VAR_PROXMOX_BACKUP_API_KEY}}" + + - TrueNAS: + icon: "https://files.akanealw.com/icons/truenas.png" + href: "{{HOMEPAGE_VAR_TRUENAS_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_TRUENAS_URL}}" + widget: + type: truenas + url: "{{HOMEPAGE_VAR_TRUENAS_URL}}" + key: "{{HOMEPAGE_VAR_TRUENAS_API_KEY}}" + + - UPS: + icon: "https://files.akanealw.com/icons/ups.png" + href: "{{HOMEPAGE_VAR_PEANUT_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PEANUT_URL}}" + description: CP1500PFCLCD + widget: + type: peanut + url: https://peanut.akanealw.com + key: ups + + - Nginxproxymanager: + icon: "https://files.akanealw.com/icons/nginx-proxy-manager.png" + href: "{{HOMEPAGE_VAR_NGINXPROXYMANAGER_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_NGINXPROXYMANAGER_URL}}" + widget: + type: npm + url: "{{HOMEPAGE_VAR_NGINXPROXYMANAGER_URL}}" + username: "{{HOMEPAGE_VAR_NGINXPROXYMANAGER_USERNAME}}" + password: "{{HOMEPAGE_VAR_NGINXPROXYMANAGER_PASSWORD}}" + + - Gluetun: + icon: "https://files.akanealw.com/icons/gluetun.png" + href: "{{HOMEPAGE_VAR_DESKTOP_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_GLUETUN_URL}}" + widget: + type: gluetun + url: "{{HOMEPAGE_VAR_GLUETUN_URL}}" + +######################## +- Portainer: + - DockerServer1: + icon: "https://files.akanealw.com/icons/portainer.png" + href: "{{HOMEPAGE_VAR_PORTAINER_URL_1}}" + siteMonitor: "{{HOMEPAGE_VAR_PORTAINER_URL_1}}" + widget: + type: portainer + url: "{{HOMEPAGE_VAR_PORTAINER_URL_1}}" + env: 2 + key: "{{HOMEPAGE_VAR_PORTAINER_API_KEY_1}}" + + - DockerServer2: + icon: "https://files.akanealw.com/icons/portainer.png" + href: "{{HOMEPAGE_VAR_PORTAINER_URL_2}}" + siteMonitor: "{{HOMEPAGE_VAR_PORTAINER_URL_2}}" + widget: + type: portainer + url: "{{HOMEPAGE_VAR_PORTAINER_URL_2}}" + env: 2 + key: "{{HOMEPAGE_VAR_PORTAINER_API_KEY_2}}" + + - ProxyServer: + icon: "https://files.akanealw.com/icons/portainer.png" + href: "{{HOMEPAGE_VAR_PORTAINER_URL_3}}" + siteMonitor: "{{HOMEPAGE_VAR_PORTAINER_URL_3}}" + widget: + type: portainer + url: "{{HOMEPAGE_VAR_PORTAINER_URL_3}}" + env: 2 + key: "{{HOMEPAGE_VAR_PORTAINER_API_KEY_3}}" + + - DockerServerTest: + icon: "https://files.akanealw.com/icons/portainer.png" + href: "{{HOMEPAGE_VAR_PORTAINER_URL_4}}" + siteMonitor: "{{HOMEPAGE_VAR_PORTAINER_URL_4}}" + widget: + type: portainer + url: "{{HOMEPAGE_VAR_PORTAINER_URL_4}}" + env: 2 + key: "{{HOMEPAGE_VAR_PORTAINER_API_KEY_4}}" + + - DockerServerAlpine: + icon: "https://files.akanealw.com/icons/portainer.png" + href: "{{HOMEPAGE_VAR_PORTAINER_URL_5}}" + siteMonitor: "{{HOMEPAGE_VAR_PORTAINER_URL_5}}" + widget: + type: portainer + url: "{{HOMEPAGE_VAR_PORTAINER_URL_5}}" + env: 2 + key: "{{HOMEPAGE_VAR_PORTAINER_API_KEY_5}}" + +######################## +- Docker: + - DockerServer1 Dozzle: + icon: "https://files.akanealw.com/icons/dozzle.png" + href: "{{HOMEPAGE_VAR_DOZZLE_URL_1}}" + siteMonitor: "{{HOMEPAGE_VAR_DOZZLE_URL_1}}" + + - DockerServer2 Dozzle: + icon: "https://files.akanealw.com/icons/dozzle.png" + href: "{{HOMEPAGE_VAR_DOZZLE_URL_2}}" + siteMonitor: "{{HOMEPAGE_VAR_DOZZLE_URL_2}}" + + - ProxyServer Dozzle: + icon: "https://files.akanealw.com/icons/dozzle.png" + href: "{{HOMEPAGE_VAR_DOZZLE_URL_3}}" + siteMonitor: "{{HOMEPAGE_VAR_DOZZLE_URL_3}}" + + - DockerServerTest Dozzle: + icon: "https://files.akanealw.com/icons/dozzle.png" + href: "{{HOMEPAGE_VAR_DOZZLE_URL_4}}" + siteMonitor: "{{HOMEPAGE_VAR_DOZZLE_URL_4}}" + + - DockerServerAlpine Dozzle: + icon: "https://files.akanealw.com/icons/dozzle.png" + href: "{{HOMEPAGE_VAR_DOZZLE_URL_5}}" + siteMonitor: "{{HOMEPAGE_VAR_DOZZLE_URL_5}}" + + - DockerServer1 Dockge: + icon: "https://files.akanealw.com/icons/docker-moby.png" + href: "{{HOMEPAGE_VAR_DOCKGE_URL_1}}" + siteMonitor: "{{HOMEPAGE_VAR_DOCKGE_URL_1}}" + + - DockerServer2 Dockge: + icon: "https://files.akanealw.com/icons/docker-moby.png" + href: "{{HOMEPAGE_VAR_DOCKGE_URL_2}}" + siteMonitor: "{{HOMEPAGE_VAR_DOCKGE_URL_2}}" + + - ProxyServer Dockge: + icon: "https://files.akanealw.com/icons/docker-moby.png" + href: "{{HOMEPAGE_VAR_DOCKGE_URL_3}}" + siteMonitor: "{{HOMEPAGE_VAR_DOCKGE_URL_3}}" + + - DockerServerTest Dockge: + icon: "https://files.akanealw.com/icons/docker-moby.png" + href: "{{HOMEPAGE_VAR_DOCKGE_URL_4}}" + siteMonitor: "{{HOMEPAGE_VAR_DOCKGE_URL_4}}" + + - DockerServerAlpine Dockge: + icon: "https://files.akanealw.com/icons/docker-moby.png" + href: "{{HOMEPAGE_VAR_DOCKGE_URL_5}}" + siteMonitor: "{{HOMEPAGE_VAR_DOCKGE_URL_5}}" + +######################## +- Network: + - PiHoleServer1: + icon: "https://files.akanealw.com/icons/pi-hole.png" + href: "{{HOMEPAGE_VAR_PIHOLE_URL_1}}" + siteMonitor: "{{HOMEPAGE_VAR_PIHOLE_URL_1}}" + widget: + type: pihole + url: "{{HOMEPAGE_VAR_PIHOLE_URL_1}}" + key: "{{HOMEPAGE_VAR_PIHOLE_API_KEY}}" + + - PiHoleServer2: + icon: "https://files.akanealw.com/icons/pi-hole.png" + href: "{{HOMEPAGE_VAR_PIHOLE_URL_2}}" + siteMonitor: "{{HOMEPAGE_VAR_PIHOLE_URL_2}}" + widget: + type: pihole + url: "{{HOMEPAGE_VAR_PIHOLE_URL_2}}" + key: "{{HOMEPAGE_VAR_PIHOLE_API_KEY}}" + + - PiHoleServer3: + icon: "https://files.akanealw.com/icons/pi-hole.png" + href: "{{HOMEPAGE_VAR_PIHOLE_URL_3}}" + siteMonitor: "{{HOMEPAGE_VAR_PIHOLE_URL_3}}" + widget: + type: pihole + url: "{{HOMEPAGE_VAR_PIHOLE_URL_3}}" + key: "{{HOMEPAGE_VAR_PIHOLE_API_KEY}}" + + - AdGuardHome: + icon: "https://files.akanealw.com/icons/adguard-home.png" + href: "{{HOMEPAGE_VAR_ADGUARD_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_ADGUARD_URL}}" + widget: + type: adguard + url: "{{HOMEPAGE_VAR_ADGUARD_URL}}" + username: "{{HOMEPAGE_VAR_ADGUARD_USER}}" + password: "{{HOMEPAGE_VAR_ADGUARD_PASS}}" + +######################## +######################## +- Links: + - qBittorrent: + icon: "https://files.akanealw.com/icons/qbittorrent.png" + href: "{{HOMEPAGE_VAR_QBITTORRENT_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_QBITTORRENT_URL}}" + widget: + type: qbittorrent + url: "{{HOMEPAGE_VAR_QBITTORRENT_URL}}" + username: "{{HOMEPAGE_VAR_QBITTORRENT_USERNAME}}" + password: "{{HOMEPAGE_VAR_QBITTORRENT_PASSWORD}}" + + - SABnzbd: + icon: "https://files.akanealw.com/icons/sabnzbd.png" + href: "{{HOMEPAGE_VAR_SABNZBD_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_SABNZBD_URL}}" + widget: + type: sabnzbd + url: "{{HOMEPAGE_VAR_SABNZBD_URL}}" + key: "{{HOMEPAGE_VAR_SABNZBD_API_KEY}}" + + - Tdarr: + icon: "https://files.akanealw.com/icons/tdarr.png" + href: "{{HOMEPAGE_VAR_TDARR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_TDARR_URL}}" + widget: + type: tdarr + url: "{{HOMEPAGE_VAR_TDARR_URL}}" + fields: ["queue", "processed"] + + - Speedtest: + icon: "https://files.akanealw.com/icons/speedtest-tracker.png" + href: "{{HOMEPAGE_VAR_SPEEDTEST_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_SPEEDTEST_URL}}" + widget: + type: speedtest + url: "{{HOMEPAGE_VAR_SPEEDTEST_URL}}" + + - Radarr: + icon: "https://files.akanealw.com/icons/radarr.png" + href: "{{HOMEPAGE_VAR_RADARR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_RADARR_URL}}" + # widget: + # type: radarr + # fields: ["wanted", "movies"] + # url: "{{HOMEPAGE_VAR_RADARR_URL}}" + # key: "{{HOMEPAGE_VAR_RADARR_API_KEY}}" + + - Sonarr: + icon: "https://files.akanealw.com/icons/sonarr.png" + href: "{{HOMEPAGE_VAR_SONARR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_SONARR_URL}}" + # widget: + # type: sonarr + # fields: ["wanted", "series"] + # url: "{{HOMEPAGE_VAR_SONARR_URL}}" + # key: "{{HOMEPAGE_VAR_SONARR_API_KEY}}" + + - NZBHydra: + icon: "https://files.akanealw.com/icons/nzbhydra.png" + href: "{{HOMEPAGE_VAR_NZBHYDRA_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_NZBHYDRA_URL}}" + + - Jackett: + icon: "https://files.akanealw.com/icons/jackett.png" + href: "{{HOMEPAGE_VAR_JACKETT_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_JACKETT_URL}}" + + - Jellyseerr: + icon: "https://files.akanealw.com/icons/jellyseerr.png" + href: "{{HOMEPAGE_VAR_JELLYSEERR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_JELLYSEERR_URL}}" + # widget: + # type: jellyseerr + # url: "{{HOMEPAGE_VAR_JELLYSEERR_URL}}" + # key: "{{HOMEPAGE_VAR_JELLYSEERR_API_KEY}}" + + - Jellyfin: + icon: "https://files.akanealw.com/icons/jellyfin.png" + href: "{{HOMEPAGE_VAR_JELLYFIN_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_JELLYFIN_URL}}" + # widget: + # type: jellyfin + # url: "{{HOMEPAGE_VAR_JELLYFIN_URL}}" + # key: "{{HOMEPAGE_VAR_JELLYFIN_API_KEY}}" + # fields: ["movies", "series"] + # enableBlocks: true + # enableNowPlaying: false + + - Torrent Galaxy: + icon: "https://files.akanealw.com/icons/Galaxy.png" + href: "{{HOMEPAGE_VAR_DESKTOP_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_DESKTOP_URL}}" + + - ArchiveBox: + icon: "https://files.akanealw.com/icons/archivebox.png" + href: "{{HOMEPAGE_VAR_ARCHIVEBOX_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_ARCHIVEBOX_URL}}" + + - Bazarr: + icon: "https://files.akanealw.com/icons/bazarr.png" + href: "{{HOMEPAGE_VAR_BAZARR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_BAZARR_URL}}" + + - Bitwarden: + icon: "https://files.akanealw.com/icons/bitwarden.png" + href: "{{HOMEPAGE_VAR_BITWARDEN_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_BITWARDEN_URL}}" + + - Codeserver: + icon: "https://files.akanealw.com/icons/code-server.png" + href: "{{HOMEPAGE_VAR_CODESERVER_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_CODESERVER_URL}}" + + - Cronicle: + icon: "https://files.akanealw.com/icons/c.png" + href: "{{HOMEPAGE_VAR_CRONICLE_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_CRONICLE_URL}}" + + - Desktop: + icon: "https://files.akanealw.com/icons/debian.png" + href: "{{HOMEPAGE_VAR_DESKTOP_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_DESKTOP_URL}}" + + - File Browser: + icon: "https://files.akanealw.com/icons/filebrowser.png" + href: "{{HOMEPAGE_VAR_FILE_BROWSER_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_FILE_BROWSER_URL}}" + + - FreshRSS: + icon: "https://files.akanealw.com/icons/freshrss.png" + href: "{{HOMEPAGE_VAR_FRESHRSS_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_FRESHRSS_URL}}" + + - Gist: + icon: "https://files.akanealw.com/icons/opengist.png" + href: "{{HOMEPAGE_VAR_OPEN_GIST_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_OPEN_GIST_URL}}" + + - Gitea: + icon: "https://files.akanealw.com/icons/gitea.png" + href: "{{HOMEPAGE_VAR_GITEA_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_GITEA_URL}}" + + - GoAccess: + icon: "https://files.akanealw.com/icons/goaccess.png" + href: "{{HOMEPAGE_VAR_GOACCESS_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_GOACCESS_URL}}" + + - Invidious: + icon: "https://files.akanealw.com/icons/invidious.png" + href: "{{HOMEPAGE_VAR_INVIDIOUS_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_INVIDIOUS_URL}}" + + - IT-Tools: + icon: "https://files.akanealw.com/icons/it-tools.png" + href: "{{HOMEPAGE_VAR_IT_TOOLS_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_IT_TOOLS_URL}}" + + - JDownloader: + icon: "https://files.akanealw.com/icons/jdownloader.png" + href: "{{HOMEPAGE_VAR_JDOWNLOADER_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_JDOWNLOADER_URL}}" + + - Kavita: + icon: "https://files.akanealw.com/icons/kavita.png" + href: "{{HOMEPAGE_VAR_KAVITA_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_KAVITA_URL}}" + # widget: + # type: kavita + # url: "{{HOMEPAGE_VAR_KAVITA_URL}}" + # username: "{{HOMEPAGE_VAR_KAVITA_USERNAME}}" + # password: "{{HOMEPAGE_VAR_KAVITA_PASSWORD}}" + + - Lidarr: + icon: "https://files.akanealw.com/icons/lidarr.png" + href: "{{HOMEPAGE_VAR_LIDARR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_LIDARR_URL}}" + # widget: + # type: lidarr + # url: "{{HOMEPAGE_VAR_LIDARR_URL}}" + # key: "{{HOMEPAGE_VAR_LIDARR_API_KEY}}" + + - Metube: + icon: "https://files.akanealw.com/icons/metube.png" + href: "{{HOMEPAGE_VAR_METUBE_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_METUBE_URL}}" + + - Mstream: + icon: "https://files.akanealw.com/icons/mstream.png" + href: "{{HOMEPAGE_VAR_MSTREAM_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_MSTREAM_URL}}" + + - Navidrome: + icon: "https://files.akanealw.com/icons/navidrome.png" + href: "{{HOMEPAGE_VAR_NAVIDROME_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_NAVIDROME_URL}}" + # widget: + # type: navidrome + # url: "{{HOMEPAGE_VAR_NAVIDROME_URL}}" + # user: "{{HOMEPAGE_VAR_NAVIDROME_USERNAME}}" + # token: "{{HOMEPAGE_VAR_NAVIDROME_TOKEN}}" + # salt: "{{HOMEPAGE_VAR_NAVIDROME_SALT}}" + + - Nextcloud: + icon: "https://files.akanealw.com/icons/nextcloud.png" + href: "{{HOMEPAGE_VAR_NEXTCLOUD_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_NEXTCLOUD_URL}}" + + - Olivetin: + icon: "https://files.akanealw.com/icons/olivetin.png" + href: "{{HOMEPAGE_VAR_OLIVETIN_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_OLIVETIN_URL}}" + + - OpenWRT: + icon: "https://files.akanealw.com/icons/openwrt.png" + href: "{{HOMEPAGE_VAR_OPENWRT_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_OPENWRT_URL}}" + + - Organizr: + icon: "https://files.akanealw.com/icons/organizr.png" + href: "{{HOMEPAGE_VAR_ORGANIZR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_ORGANIZR_URL}}" + + - Paperless-ngx: + icon: "https://files.akanealw.com/icons/paperless-ngx.png" + href: "{{HOMEPAGE_VAR_PAPERLESS_NGX_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PAPERLESS_NGX_URL}}" + + - PeaNUT: + icon: "https://files.akanealw.com/icons/ups.png" + href: "{{HOMEPAGE_VAR_PEANUT_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PEANUT_URL}}" + + - Photoprism: + icon: "https://files.akanealw.com/icons/photoprism.png" + href: "{{HOMEPAGE_VAR_PHOTOPRISM_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PHOTOPRISM_URL}}" + + - Piped: + icon: "https://files.akanealw.com/icons/pinry.png" + href: "{{HOMEPAGE_VAR_PIPED_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PIPED_URL}}" + + - Prowlarr: + icon: "https://files.akanealw.com/icons/prowlarr.png" + href: "{{HOMEPAGE_VAR_PROWLARR_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_PROWLARR_URL}}" + # widget: + # type: prowlarr + # url: "{{HOMEPAGE_VAR_PROWLARR_URL}}" + # key: "{{HOMEPAGE_VAR_PROWLARR_API_KEY}}" + + - RSS-Bridge: + icon: "https://files.akanealw.com/icons/rss-bridge.png" + href: "{{HOMEPAGE_VAR_RSS_BRIDGE_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_RSS_BRIDGE_URL}}" + + - Shlink: + icon: "https://files.akanealw.com/icons/shlink.png" + href: "{{HOMEPAGE_VAR_SHLINK_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_SHLINK_URL}}" + + - Sterling PDF: + icon: "https://files.akanealw.com/icons/stirling-pdf.png" + href: "{{HOMEPAGE_VAR_STIRLING_PDF_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_STIRLING_PDF_URL}}" + + - Syncthing DockerServer1: + icon: "https://files.akanealw.com/icons/syncthing.png" + href: "{{HOMEPAGE_VAR_SYNCTHING_URL_1}}" + siteMonitor: "{{HOMEPAGE_VAR_SYNCTHING_URL_1}}" + + - Syncthing GamingPC: + icon: "https://files.akanealw.com/icons/syncthing.png" + href: "{{HOMEPAGE_VAR_SYNCTHING_URL_2}}" + siteMonitor: "{{HOMEPAGE_VAR_SYNCTHING_URL_2}}" + + - Syncthing LaptopPC: + icon: "https://files.akanealw.com/icons/syncthing.png" + href: "{{HOMEPAGE_VAR_SYNCTHING_URL_3}}" + siteMonitor: "{{HOMEPAGE_VAR_SYNCTHING_URL_3}}" + + - WG-Easy: + icon: "https://files.akanealw.com/icons/wireguard.png" + href: "{{HOMEPAGE_VAR_WG_EASY_URL}}" + siteMonitor: "{{HOMEPAGE_VAR_WG_EASY_URL}}" diff --git a/homepage/config/settings.yaml b/homepage/config/settings.yaml new file mode 100644 index 0000000..db5ebe9 --- /dev/null +++ b/homepage/config/settings.yaml @@ -0,0 +1,100 @@ +--- +# For configuration options and examples, please see: +# https://gethomepage.dev/latest/configs/settings + +title: Homepage +theme: dark +color: slate + +headerStyle: clean +useEqualHeights: true +disableCollapse: true +statusStyle: dot +target: _blank + +quicklaunch: + searchDescriptions: true + hideInternetSearch: true + hideVisitURL: true + +layout: + - Monitoring: + header: false + tab: Servers + style: row + columns: 1 + + - Servers: + header: false + tab: Servers + style: row + columns: 4 + + - Network: + header: false + tab: Servers + style: row + columns: 4 + + - Portainer: + header: false + tab: Servers + style: row + columns: 5 + + - Docker: + header: false + tab: Servers + style: row + columns: 5 + +# - Search: +# header: true +# tab: Media +# style: columns +# rows: 1 + +# - Organize: +# header: true +# tab: Media +# style: columns +# rows: 1 + +# - Download: +# header: true +# tab: Media +# style: columns +# rows: 1 + +# - Consume: +# header: true +# tab: Media +# style: columns +# rows: 1 + + - Links: + header: false + tab: Links + style: row + columns: 4 + +# - DockerServer2: +# header: true +# tab: Links +# style: columns +# rows: 1 + +# - ProxyServer: +# header: true +# tab: Links +# style: columns +# rows: 1 + +# - Other Servers: +# header: true +# tab: Links +# style: columns +# rows: 1 + +providers: + openweathermap: 16babef165074bfc53ea0b84b4af8ea1 diff --git a/homepage/config/widgets.yaml b/homepage/config/widgets.yaml new file mode 100644 index 0000000..b9bd087 --- /dev/null +++ b/homepage/config/widgets.yaml @@ -0,0 +1,27 @@ +--- +# For configuration options and examples, please see: +# https://gethomepage.dev/latest/configs/service-widgets + +- resources: + cpu: true + memory: true + disk: / + +- search: + provider: duckduckgo + target: _blank + +- datetime: + text_size: md + locale: us + format: + dateStyle: long + timeStyle: long + +- openweathermap: + label: Gridley IL + latitude: 40.744550 + longitude: -88.881270 + units: imperial + provider: openweathermap + cache: 5 diff --git a/mixed/.env b/mixed/.env index 74dd6ff..e4fb4d9 100755 --- a/mixed/.env +++ b/mixed/.env @@ -13,4 +13,16 @@ TZ=America/Chicago BACKUP_DIR=/mnt/truenas-backups MEDIA_DIR=/mnt/truenas-media STORAGE_DIR=/mnt/truenas-storage -UR_BACKUPS=/mnt/truenas-urbackups + +#PIHOLE +FTLCONF_LOCAL_IPV4=192.168.1.4 +REV_SERVER=false +HOSTNAME=piholeserver3 +DOMAIN_NAME=piholeserver3.lan +PIHOLE_WEBPORT=8000 +WEBTHEME=default-dark +WEBPASSWORD=8PVkCY4FbyKWEACiG22^ + +#WIREGUARD +WG_HOST=akanealw.com +WG_PASSWORD=wBJz7wuazWWmbfTGhM7v diff --git a/mixed/compose.yml b/mixed/compose-dockerserver1.yml similarity index 100% rename from mixed/compose.yml rename to mixed/compose-dockerserver1.yml diff --git a/mixed/compose-proxyserver.yml b/mixed/compose-proxyserver.yml new file mode 100755 index 0000000..66af57f --- /dev/null +++ b/mixed/compose-proxyserver.yml @@ -0,0 +1,174 @@ +version: '3' + +services: + archivebox: + container_name: archivebox + image: archivebox/archivebox:dev + command: server --quick-init 0.0.0.0:8000 + environment: + - ALLOWED_HOSTS=* + - MEDIA_MAX_SIZE=750m + - PUBLIC_ADD_VIEW=True + - PUBLIC_INDEX=True + - PUBLIC_SNAPSHOTS=False + - SAVE_TITLE=True + - SAVE_FAVICON=True + - SAVE_WGET=False + - SAVE_WARC=False + - SAVE_PDF=True + - SAVE_SCREENSHOT=True + - SAVE_DOM=False + - SAVE_SINGLEFILE=True + - SAVE_READABILITY=True + - SAVE_MERCURY=False + - SAVE_GIT=False + - SAVE_MEDIA=False + - SAVE_ARCHIVE_DOT_ORG=False + networks: + - reverse-proxy + ports: + - 8000:8000 + restart: always + volumes: + - ${DOCKER_CONFIGS}/archivebox/data:/data + + opengist: + container_name: opengist + image: ghcr.io/thomiceli/opengist:1 + networks: + - reverse-proxy + ports: + - 6157:6157 + restart: always + volumes: + - ${DOCKER_CONFIGS}/opengist:/opengist + + orbital-sync: + container_name: orbital-sync + image: mattwebbio/orbital-sync:1 + environment: + - PRIMARY_HOST_BASE_URL=http://192.168.1.2:80 + - PRIMARY_HOST_PASSWORD=${WEBPASSWORD} + - SECONDARY_HOST_1_BASE_URL=http://192.168.1.3:80 + - SECONDARY_HOST_1_PASSWORD=${WEBPASSWORD} + - SECONDARY_HOST_2_BASE_URL=http://192.168.1.4:8180 + - SECONDARY_HOST_2_PASSWORD=${WEBPASSWORD} + - INTERVAL_MINUTES=30 + restart: always + + peanut: + container_name: peanut + image: brandawg93/peanut:latest + environment: + - NUT_HOST=192.168.1.41 + - NUT_PORT=3493 + - WEB_PORT=8080 + networks: + - reverse-proxy + ports: + - 8080:8080 + restart: unless-stopped + + pihole: + container_name: pihole + image: cbcrowe/pihole-unbound:latest + hostname: ${HOSTNAME} + domainname: ${DOMAIN_NAME} + environment: + - FTLCONF_LOCAL_IPV4=${FTLCONF_LOCAL_IPV4} + - TZ=${TZ} + - WEBPASSWORD=${WEBPASSWORD} + - WEBTHEME=${WEBTHEME:-default-dark} + - REV_SERVER=${REV_SERVER:-false} + - PIHOLE_DNS_=127.0.0.1#5335 + - DNSSEC="true" + - DNSMASQ_LISTENING=single + networks: + - reverse-proxy + ports: + - 53:53 + - 53:53/udp + - 8180:80 + restart: always + volumes: + - ${DOCKER_CONFIGS}/pihole/unbound:/etc/pihole:rw + - ${DOCKER_CONFIGS}/pihole/dnsmasq-unbound:/etc/dnsmasq.d:rw + + vaultwarden: + container_name: vaultwarden + image: vaultwarden/server:latest + environment: + - TZ=${TZ} + - ADMIN_TOKEN=h/oRssGu83I1E1WQGiSchYMAJnM0JcDXmjeI/A3QgMCasn/IK9zZldH5FXim0rSi + - DATABASE_URL=data/db.sqlite3 + - DISABLE_ADMIN_TOKEN=false + - DOMAIN=https://bitwarden.akanealw.com + - ENABLE_DB_WAL=true + - INVITATIONS_ALLOWED=false + - SHOW_PASSWORD_HINT=false + - SIGNUPS_ALLOWED=false + - SIGNUPS_VERIFY=false + - SMTP_PORT=587 + - SMTP_SSL=true + networks: + - vaultwarden + - reverse-proxy + ports: + - 8089:80 + restart: always + volumes: + - ${DOCKER_CONFIGS}/vaultwarden:/data + - /etc/localtime:/etc/localtime:ro + + vaultwarden-backup: + container_name: vaultwarden-backup + image: bruceforce/vaultwarden-backup + environment: + - BACKUP_DIR=/data/backups + - CRON_TIME=15 * * * * + - TIMESTAMP=true + - UID=${PUID} + - GID=${PGID} + networks: + - vaultwarden + depends_on: + - vaultwarden + init: true + restart: always + volumes: + - ${DOCKER_CONFIGS}/vaultwarden:/data + - /home/akanealw/backups/vaultwardenbackups:/data/backups + + wg-easy: + container_name: wg-easy + image: weejewel/wg-easy + environment: + - WG_HOST=${WG_HOST} + - PASSWORD=${WG_PASSWORD} + - WG_DEFAULT_DNS=10.8.0.6 + - WG_PORT=51830 + - WG_PERSISTENT_KEEPALIVE=25 + - WG_DEFAULT_ADDRESS=10.8.0.x + - WG_MTU=1420 + - WG_ALLOWED_IPS=10.8.0.0/24 + cap_add: + - NET_ADMIN + - SYS_MODULE + sysctls: + - net.ipv4.ip_forward=1 + - net.ipv4.conf.all.src_valid_mark=1 + networks: + - reverse-proxy + ports: + - 51830:51820/udp + - 51831:51821 + restart: always + volumes: + - ${DOCKER_CONFIGS}/wireguard:/etc/wireguard + +networks: + vaultwarden: + name: vaultwarden + reverse-proxy: + name: reverse-proxy + external: true diff --git a/reverseproxy/.env b/reverseproxy/.env new file mode 100644 index 0000000..c8bf377 --- /dev/null +++ b/reverseproxy/.env @@ -0,0 +1,12 @@ +#GLOBAL SETTINGS +COMPOSE_HTTP_TIMEOUT=120 +COMPOSE_IGNORE_ORPHANS=1 +DOCKER_CONFIGS=. +DOCKERGID=999 +DOCKERHOSTNAME=ProxyServer +DOCKERLOGGING_MAXFILE=10 +DOCKERLOGGING_MAXSIZE=200k +PGID=1000 +PUID=1000 +UMASK=000 +TZ=America/Chicago diff --git a/reverseproxy/authelia/add-to-protected-domains.conf b/reverseproxy/authelia/add-to-protected-domains.conf new file mode 100755 index 0000000..693b139 --- /dev/null +++ b/reverseproxy/authelia/add-to-protected-domains.conf @@ -0,0 +1,10 @@ +include /snippets/authelia-location.conf; + +location / { + include /snippets/authelia-proxy.conf; + include /snippets/authelia-authrequest.conf; + proxy_pass $forward_scheme://$server:$port; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection upgrade; + proxy_set_header Accept-Encoding gzip; +} diff --git a/reverseproxy/authelia/auth.domain.conf b/reverseproxy/authelia/auth.domain.conf new file mode 100755 index 0000000..a814eb0 --- /dev/null +++ b/reverseproxy/authelia/auth.domain.conf @@ -0,0 +1,4 @@ +location / { + include /snippets/authelia-proxy.conf; + proxy_pass $forward_scheme://$server:$port; +} diff --git a/reverseproxy/authelia/config/configuration.yml b/reverseproxy/authelia/config/configuration.yml new file mode 100755 index 0000000..e8013ea --- /dev/null +++ b/reverseproxy/authelia/config/configuration.yml @@ -0,0 +1,136 @@ +theme: dark +jwt_secret: 9DGPzQy8SZQ7rV57V3DJnw + +#default_redirection_url: https://akanealw.com + +server: + host: 0.0.0.0 + port: 9091 + path: "" + buffers: + read: 4096 + write: 4096 + enable_pprof: false + enable_expvars: false + disable_healthcheck: false + tls: + key: "" + certificate: "" + +ntp: + address: "0.debian.pool.ntp.org:123" + version: 3 + max_desync: 3s + disable_startup_check: true + disable_failure: true + +log: + level: info + +totp: + disable: false + issuer: akanealw.com + algorithm: sha1 + digits: 6 + period: 30 + skew: 1 + secret_size: 32 + +authentication_backend: + password_reset: + disable: true + refresh_interval: 5m + file: + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 1 + salt_length: 16 + parallelism: 8 + memory: 64 + +access_control: + default_policy: deny + networks: + - name: internal + networks: + - '10.0.0.0/8' + - '172.16.0.0/12' + - '192.168.0.0/16' + rules: + ## bypass all domains and subdomains from local ips + - domain: + - aknlw.com + - akanealw.com + - "*.akanealw.com" + networks: + - 'internal' + policy: bypass + ## bypass api for subdomains + - domain: + - "*.akanealw.com" + resources: + - "^/api([/?].*)?$" + - "^/add([/?].*)?$" + - "^/public([/?].*)?$" + policy: bypass + # bypass specific subdomains + - domain: + - aknlw.com + - bitwarden.akanealw.com + - gitea.akanealw.com + - nextcloud.akanealw.com + policy: bypass + # bypass filebrowser shares + - domain: + - "fileserver.akanealw.com" + resources: + - "^/api/public/dl/*" + - "/share/*" + - "/static/js/*" + - "/static/css/*" + - "/static/img/*" + - "/static/themes/*" + - "/static/fonts/*" + policy: bypass + # two_factor subdomains + - domain: + - akanealw.com + - "*.akanealw.com" + policy: two_factor + +session: + name: authelia_session + domain: akanealw.com + same_site: lax + secret: 8r9y4d8mY7NfQtpCe2oU + expiration: 6h + inactivity: 5m + remember_me_duration: 1w + +regulation: + max_retries: 3 + find_time: 10m + ban_time: 12h + +storage: + local: + path: /config/db.sqlite3 + encryption_key: iiB7C8Bn4A2gAhzs2fWaggUug76PZ4LU + +notifier: + disable_startup_check: true + smtp: + username: akanealw@gmail.com + password: qlvmffuzpscltdgz + host: smtp.gmail.com + port: 587 + sender: akanealw@gmail.com + identifier: dockerserver + subject: "[Authelia] {title}" + startup_check_address: akanealw@gmail.com + disable_require_tls: false + disable_html_emails: false + tls: + skip_verify: false + minimum_version: TLS1.2 diff --git a/reverseproxy/authelia/config/users_database.yml b/reverseproxy/authelia/config/users_database.yml new file mode 100755 index 0000000..35ed2b2 --- /dev/null +++ b/reverseproxy/authelia/config/users_database.yml @@ -0,0 +1,8 @@ +users: + akanealw: + displayname: "akanealw" + password: "$argon2id$v=19$m=65536,t=1,p=8$ZWJ2UGVPUDE2SnU0YXNvNg$Q3LQfN90kPI5/3Yr06WmTUjFbvIBBZPJP44YLhysT0M" + email: akanealw@gmail.com + groups: + - admins + \ No newline at end of file diff --git a/reverseproxy/compose.yml b/reverseproxy/compose.yml new file mode 100644 index 0000000..38f5238 --- /dev/null +++ b/reverseproxy/compose.yml @@ -0,0 +1,62 @@ +version: '3' + +services: + authelia: + container_name: authelia + image: authelia/authelia + environment: + - TZ=${TZ} + networks: + - reverse-proxy + ports: + - 9091:9091 + restart: always + volumes: + - ${DOCKER_CONFIGS}/authelia/config:/config + + goaccess: + container_name: goaccess + image: 'xavierh/goaccess-for-nginxproxymanager:latest' + environment: + - PUID=0 + - PGID=0 + - TZ=America/Chicago + - SKIP_ARCHIVED_LOGS=True + - DEBUG=False + - BASIC_AUTH=False + - EXCLUDE_IPS=127.0.0.1,192.168.1.1-192.168.1.255 + - LOG_TYPE=NPM + - HTML_REFRESH=5 + - KEEP_LAST=30 + networks: + - reverse-proxy + ports: + - 7880:7880 + restart: always + volumes: + - ${DOCKER_CONFIGS}/nginxproxymanager/data/logs:/opt/log + - ${DOCKER_CONFIGS}/goaccess:/opt/custom + + nginxproxymanager: + container_name: nginxproxymanager + image: jc21/nginx-proxy-manager:2.10.4 + environment: + - X_FRAME_OPTIONS=sameorigin + - DB_SQLITE_FILE=/data/database.sqlite + networks: + - reverse-proxy + ports: + - 443:443/tcp + - 80:80/tcp + - 81:81/tcp + restart: always + volumes: + - ${DOCKER_CONFIGS}/nginxproxymanager/data:/data + - ${DOCKER_CONFIGS}/nginxproxymanager/letsencrypt:/etc/letsencrypt + - ${DOCKER_CONFIGS}/nginxproxymanager/snippets:/snippets:ro + - /etc/localtime:/etc/localtime:ro + +networks: + reverse-proxy: + name: reverse-proxy + external: true diff --git a/reverseproxy/nginxproxymanager/snippets/authelia-authrequest.conf b/reverseproxy/nginxproxymanager/snippets/authelia-authrequest.conf new file mode 100755 index 0000000..08b8d0f --- /dev/null +++ b/reverseproxy/nginxproxymanager/snippets/authelia-authrequest.conf @@ -0,0 +1,25 @@ +## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. +auth_request /authelia; + +## Set the $target_url variable based on the original request. + +## Comment this line if you're using nginx without the http_set_misc module. +set_escape_uri $target_url $scheme://$http_host$request_uri; + +## Uncomment this line if you're using NGINX without the http_set_misc module. +# set $target_url $scheme://$http_host$request_uri; + +## Save the upstream response headers from Authelia to variables. +auth_request_set $user $upstream_http_remote_user; +auth_request_set $groups $upstream_http_remote_groups; +auth_request_set $name $upstream_http_remote_name; +auth_request_set $email $upstream_http_remote_email; + +## Inject the response headers from the variables into the request made to the backend. +proxy_set_header Remote-User $user; +proxy_set_header Remote-Groups $groups; +proxy_set_header Remote-Name $name; +proxy_set_header Remote-Email $email; + +## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. +error_page 401 =302 https://auth.akanealw.com/?rd=$target_url; \ No newline at end of file diff --git a/reverseproxy/nginxproxymanager/snippets/authelia-location.conf b/reverseproxy/nginxproxymanager/snippets/authelia-location.conf new file mode 100755 index 0000000..62c874d --- /dev/null +++ b/reverseproxy/nginxproxymanager/snippets/authelia-location.conf @@ -0,0 +1,36 @@ +set $upstream_authelia http://authelia:9091/api/verify; + +## Virtual endpoint created by nginx to forward auth requests. +location /authelia { + ## Essential Proxy Configuration + internal; + proxy_pass $upstream_authelia; + + ## Headers + ## The headers starting with X-* are required. + proxy_set_header X-Original-URL $scheme://$http_host$request_uri; + proxy_set_header X-Original-Method $request_method; + proxy_set_header X-Forwarded-Method $request_method; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Forwarded-Uri $request_uri; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Content-Length ""; + proxy_set_header Connection ""; + + ## Basic Proxy Configuration + proxy_pass_request_body off; + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # Timeout if the real server is dead + proxy_redirect http:// $scheme://; + proxy_http_version 1.1; + proxy_cache_bypass $cookie_session; + proxy_no_cache $cookie_session; + proxy_buffers 4 32k; + client_body_buffer_size 128k; + + ## Advanced Proxy Configuration + send_timeout 5m; + proxy_read_timeout 240; + proxy_send_timeout 240; + proxy_connect_timeout 240; +} \ No newline at end of file diff --git a/reverseproxy/nginxproxymanager/snippets/authelia-proxy.conf b/reverseproxy/nginxproxymanager/snippets/authelia-proxy.conf new file mode 100755 index 0000000..e42cecf --- /dev/null +++ b/reverseproxy/nginxproxymanager/snippets/authelia-proxy.conf @@ -0,0 +1,8 @@ +## Headers +proxy_set_header Host $host; +proxy_set_header X-Original-URL $scheme://$http_host$request_uri; +proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header X-Forwarded-Host $http_host; +proxy_set_header X-Forwarded-Uri $request_uri; +proxy_set_header X-Forwarded-Ssl on; +proxy_set_header X-Forwarded-For $remote_addr;